8 x DS na ESP

Awatar użytkownika
wojtas567
Posty: 1989
Rejestracja: ndz kwie 03, 2016 7:16 pm
Lokalizacja: Olsztyn

pn paź 29, 2018 8:15 pm

Na początek muszę powiedzieć, że nie jest to jeszcze ideał ale działa :) przynajmniej na biurku
a teraz do rzeczy.
Udało mi się poprawić i dodać kilka drobiazgów dzięki którym 8 czujników DS działa.
W załączeniu soft który na początku odczytuje do 8 czujników i podaje takie informacje:
  • czy czujnik/czujniki są zasilane pasożytniczo
  • adresy urządzeń
  • rozdzielczość (o tym później za chwilę)
  • no i temperatury z poszczególnych DS
Oczywiście działa opcja aktualizacji przez www

Po odczytaniu adresów najlepiej przepisać je do linijek jak poniżej:
DeviceAddress jeden = { 0x28, 0xFF, 0xE8, 0x00, 0xB6, 0x16, 0x03, 0x65 };

na początku skieczu opisałem też co należy usunąć jak już wpiszemy wszystkie adresy.

Teraz trochę informacji o tym co to jest "rozdzielczość" odczytu czujników DS.

Dla 9 bitów są 2 podziałki między kolejnymi stopniami: 0,0 0,5
Czyli możemy odczytać temperaturę z rozdzielczością 0,5 °C. Dla tej rozdzielczości czas pomiaru wynosi 93,75 ms. Czyli możemy wykonywać 10,6 pomiarów na sekundę.

Dla 10 bitów są 4 podziałki między kolejnymi stopniami: 0,0 0,25 0,5 0,75
Tu odczytujemy temperaturę z rozdzielczością 0,25 °C. Czas pomiaru dla tej rozdzielczości wynosi 187,5 ms, co pozwala na 5,3 pomiarów na sekundę

Dla 11 bitów jest 8 podziałek między kolejnymi stopniami: 0,0 0,125 0,25 0,375 0,5 0,625 0,75 0,875
Czyli rozdzielczość wynosi 0,125 °C Czas pomiaru dla tej rozdzielczości wynosi 375 ms. co pozwala na 2,6 pomiaru na sekundę.

Dla 12 bitów jest 16 podziałek między kolejnymi stopniami: 0,0 0,0625 0,125 0,1875 0,25 0,3125 0,375 0,4375 0,5 0,5625 0,625 0,6875 0,75 0,8125 0,875 0,9375
Czyli rozdzielczość jest na poziomie 0,0625 °C Czas pomiaru wynosi w tym przypadku 750 ms, czyli możesz dokonać 1,3 pomiaru na sekundę.

Standardowo DS jest ustawiony na 12 bitów i w zasadzie jeden pomiar na ok 1 sekundę to teoretycznie ESP daje radę razem z SUPLĄ ale,
pytanie czy nam jest potrzebna taka dokładność? schodząc do 10 bitów odczyt z czujników jest już na poziomie zadowalającym ni najważniejsze działa odczyt z 8 czujników.

Druga sprawa i tu zwracam się z pytaniem i prośbą o pomoc odnośnie pętli odczytu czujników, zauważyłem, że funkcja
sensors.requestTemperatures();
odczytuje wszystkie czujniki na raz i w zasadzie wystarczyło by teraz te dane rozesłać na poszczególne kanały, w programie natomiast jest tak, że odczyt z czujników jest 8 razy a to spowalnia wyświetlanie pomiarów.
Na dzień dzisiejszy nie potrafię tego w SUPLI zmienić, ale może komuś się to uda.

*************************
Zmodyfikowałem odczyt i wysyłkę z DS odczyt jest tylko raz a potem wysyłka i faktycznie różnica jest widoczna :).
Dzięki Espablo za podpowiedz.
Załączniki
Supla_DS8_START.rar
(3.06 KiB) Pobrany 473 razy
Ostatnio zmieniony wt paź 30, 2018 9:14 pm przez wojtas567, łącznie zmieniany 1 raz.
Pozdrawiam
Wojtek
PioKar
Posty: 387
Rejestracja: czw maja 03, 2018 5:56 am

wt paź 30, 2018 4:34 pm

Jak ja bym chciał dostać łopatologię do odczytania adresów i wgrania na "coś co zadziała".
Naprawdę Was szanuję :)
Awatar użytkownika
slawek
Posty: 2225
Rejestracja: pn mar 14, 2016 11:48 pm
Lokalizacja: Biała Podlaska

wt paź 30, 2018 4:51 pm

Adresy odczyta ci po starcie i wyświetli w konsoli - potwierdzam - działa...
Gdy wszystkie możliwe sposoby zawiodą - pozostaje przeczytać instrukcję...
Awatar użytkownika
wojtas567
Posty: 1989
Rejestracja: ndz kwie 03, 2016 7:16 pm
Lokalizacja: Olsztyn

wt paź 30, 2018 4:52 pm

Wgraj soft przez arduino, włącz terminal i adresy Ci się wyświetlą.
w takiej postaci : 28371BCB050000E2 a trzeba zmienić na postać jak poniżej

Kod: Zaznacz cały

DeviceAddress osiem = { 0x28, 0x37, 0x1B, 0xCB, 0x05, 0x00, 0x00, 0xE2 }; 
Pozdrawiam
Wojtek
Awatar użytkownika
Espablo
Posty: 1465
Rejestracja: śr cze 29, 2016 5:04 pm
Lokalizacja: Oświęcim
Kontaktowanie:

wt paź 30, 2018 5:00 pm

A testowałeś tak, raz uruchomić

Kod: Zaznacz cały

sensors.requestTemperatures() 
I potem odczytywać stany z poszczególnych czujników np tak

Kod: Zaznacz cały

t1= sensors.getTempC(jeden);
t2 = sensors.getTempC(dwa);
itd... 
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
https://github.com/Espablo
Awatar użytkownika
wojtas567
Posty: 1989
Rejestracja: ndz kwie 03, 2016 7:16 pm
Lokalizacja: Olsztyn

wt paź 30, 2018 5:09 pm

Trochę inaczej w sumie podobnie ale wtedy jest tylko jeden odczyt przy starcie i już koniec ale sprawdzę tą kombinację.
Pozdrawiam
Wojtek
Awatar użytkownika
Espablo
Posty: 1465
Rejestracja: śr cze 29, 2016 5:04 pm
Lokalizacja: Oświęcim
Kontaktowanie:

wt paź 30, 2018 5:21 pm

Tak sobie jeszcze myślę, że z tymi adresami to trochę kłopot jest. Możesz zrobić tak że na początku tworzysz pustą tablicę adresów w eepromie. W setup sprawdzasz czy tablica jest pusta. Jeśli tak, to sprawdzasz adresy czujników i zapisujesz do tablicy. Potem tylko odnosisz się już do adresów w tablicy. Gdy tablica będzie już zapisana to już nie odczytujesz adresów.
Można jeszcze dołożyć jakąś funkcję gdy będziesz chciał wymienić czujnik na nowy. Zerowanie tej tablicy lub jeszcze inaczej.
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
https://github.com/Espablo
Awatar użytkownika
bulek68
Posty: 156
Rejestracja: czw lut 08, 2018 6:51 pm
Lokalizacja: Podkarpackie

wt paź 30, 2018 5:34 pm

Zielony jestem więc wybaczcie:
Rozumem że 8xDS to na jednym GPIO?
Czy nie łatwiej jest ogarnąć multipomiar wykorzystując różne GPIO?

Wiem, wiem takie rozwiązanie pozwala użyć w zasadzie każde urządzenie oparte o esp8266. Ale z drugiej strony taki wemos majątku nie kosztuje a ma wprowadzone kilka GPIO.

Jeśli coś porecilem proszę bez nagonki 😅
7x inCan
4x SRW-01
1x SLW-01
1x ROW-02
1x WEMOS Supla Button 8 direct links by Elmaya
1x Yunshan 8xDS+DHT22+TIMER.CWU+OLED by Zybi
1x Sonoff Dual R2 2xGATE+DHT22 by Zybi
1x Sonoff BASIC
2x MELINK
Zari
Posty: 42
Rejestracja: ndz wrz 17, 2017 12:30 pm

wt paź 30, 2018 5:45 pm

Panowie kombinujcie kombinujcie :D Ja w te klocki za słaby jestem a potrzebuję dla znajomego pomiar temperatury z kilku czujników.
Wgrałem mu już raz soft od Zybiego ale niestety był on dla konkretnego nodemcu i 8 sztuk DS18b20 to za mało ;)
Nadmienię że poza tym że soft był kompilowany dla konkretnego ESP8266 adresy czujników nie miały znaczenia, przynajmniej z punktu widzenia użytkownika.

8 DS na jednym GPIO nie jest raczej problemem. Problem leży w połączeniu z Suplą, tak mi się przynajmniej wydaje.
Ostatnio wgrałem sobie soft z elektrody https://www.elektroda.pl/rtvforum/topic3357545.html i na thingspeak ładnie idzie odczyt z 3 DS na jednym GPIO.
Awatar użytkownika
slawek
Posty: 2225
Rejestracja: pn mar 14, 2016 11:48 pm
Lokalizacja: Biała Podlaska

wt paź 30, 2018 5:49 pm

Zari pisze:
wt paź 30, 2018 5:45 pm
... adresy czujników nie miały znaczenia, przynajmniej z punktu widzenia użytkownika.
A co będzie gdy jeden się uszkodzi/odetnie?
A z adresami wiesz, który zaszwankował lub zginął
Gdy wszystkie możliwe sposoby zawiodą - pozostaje przeczytać instrukcję...
ODPOWIEDZ