Termometr wi-fi oparty o esp8266 i DS18B20

Uniwersalny software do obsługi tandemu NodeMCU esp8266 i DB18B20.


Spis treści:



Podstawowe informacje.

Kod źródłowy softwaru jest dostępny pod adresem https://github.com/kalamlacki/wifi_thermometer . Aplikacja bazuje na połączeniu termometru cyfrowego one wire Dallas Semicondactor DS18B20 z płytką NodeMCU opartą o układ ESP8266. Wyniki z termometru można zczytywać pasywnie, to znaczy że mój soft nigdzie ich nie przesyła tylko oczekuje na żądania w trybie serwera www. Gdy przychodzi request od clienta do termometru na adres

http://192.168.4.1/temp

w tym czasie układ ESP8266 komunikuje się z termometrem cyfrowym DS18B20 i zczytuje z niego temperature, wynik jest wysyłany w postaci 1 linijkowej odpowiedzi TXT do klienta http, który zainicjował żądanie. Przykładowa odpowiedź z termometru wygląda następująco:

DS18B20 Temperature=20.06C

Odpowiedź tą można w łatwy sposób użyć w waszych skryptach automatycznego sterowania np ogrzewaniem w domu.
Aplikacja korzysta z platformy Arduino i integracji z rozszeżeniem esp8266 dla tej platformy, konieczne będzie również doinstalowanie bibliotek OneWire, DallasTermometer, CRC32, i EEPROM w platformie Arduino. Skąpilowaną aplikację można wgrać do NodeMCU dzięki wbudowanemu w Arduino bootloaderowi. Tuż po wgraniu aplikacji do płytki i zresetowaniu jej, znajduje się ona w trybie access pointa z dostępem dla wszystkich. Nazwa AP:

lk_e8266_thermo.

Należy się do tego AP podłączyć przy pomocy laptopa i przeglądarki i płytkę skonfigurować pod adresem

http://192.168.4.1/

Po skonfigurowaniu płytka podłączy się pod wskazanego access pointa i przyjmie adres z twojej podsieci np: 192.168.1.100 itp. i stanie się klientem twojego accesspointa. Adres do zczytania temperatury z czujnika będzie teraz dla przykładu

http://192.168.1.100/temp.

Jeśli podasz błędną konfigurację to istnieje możliwość przywrócenia jej do stanu początkowego przez podpięcie się kablem USB do NodeMCU do laptopa i przez aplikację Putty na porcie COM poprzez wciśnięcie klawisza "R" w terminalu, wtedy płytka na powrót stanie się access pointem dostępnym dla wszystkich i będzie można przeprowadzić konfigurację od początku.


Schematy połączeń NodeMCU i DS18B20

NodeMCU i jego wyprowadzenia wyglądają jak na obrazku poniżej:



Termometr cyfrowy DS18B20 wygląda jak na obrazku poniżej:



Wyprowadzenia pinów DS18B20:



I teraz aby spiąć wszystko ze sobą potrzebujemy 3 kabelków z jednej strony zakończonymi golpinami żeńskimi a z drugiej zalutowanymi przewodami do DS18B20. Nie jest to jakoś skomplikowane lutowanie, ważne jest jednak aby od strony termometru były piny zaizolowane np. termokurczkami aby piny termometru nie zwierały się ze sobą. I tak łączymy Vdd termometru do lini 3.3V, GND DS18B20 do GND NodeMCU, DQ termometru do GPIO2 NodeMCU.


Parowanie za access pointem.

Tuż po wgraniu softwaru do NodeNCU i pierwszym uruchomieniu NodeMCU działa w trybie access pointa z dostępem do wszystkich z siecią o nazwie: lk_e8266_thermo. Należy podpiąć się do niej laptopem i wejść na w przeglądarce internetowej na stronę http://192.168.4.1 pojawi się strona jak na obrazku poniżej:



W polu "Name of the thermometer" wpisujemy dowolną nawę naszego termometru, która będzie później widoczna w naszej sieci w polu konfuguracji.
W polu "Wi-Fi network name:" wpisujemy prawdziwą nazwę twojego access pointa z którym łączysz się do internetu na swoim laptopie i nie jest to lk_e8266_thermo bo to nazwa tymczasowa tylko dla konfiguracji.
W polu "WI-FI password:" wpisujesz sekretne hasło do twojej sieci.
Po wpisaniu trzech powyszszych klikasz przycisk "Set up config" i resetujesz NodeMCU. Po tych operacjach NodeMCU będzie się próbowało w nieskończoność podpiąć do skonfigurowanego AP i jeśli się podepnie będzie pobierać adres z twojej sieci przed protokół DHCP. Nowy adres NodeMCU w twojej sieci będzie widoczny na twoim routerze w sekcji DHCP lub możesz go pobrać przy pomocy jakiegoś programu do wyszukiwania hostów w sieci np. NMAP.


Przykłady użycia.

Jak już wszystko podłączymy i skonfigurujemy to możemy przetestować czy wszystko działa poprawnie. I teraz zakładam że znaleziony adres IP NodeMCU w twojej sieci to 192.168.1.101 to możemy teraz w przeglądarce albo przy użyciu aplikacji curl na Linuxie wywołać

curl http://192.168.1.101/temp

i w odpowiedzi na terminalu otrzymujemy:

DS18B20 Temperature=20.06C

i to będzie znaczyło że wszystko działa poprawnie i możemy takiego termometru używać np do kontroli temperatury w mieszkaniu przy użyciu własnych skryptów


Informacje o sieci w której będzie używany termometr

Sieć z którą się będzie łączyć NodeMCU musi obsługiwać 2.4GHz w standardzie n i kożystać s szyfrowania WPA-PSK/WPA2-PSK ponieważ w takich sieciach może działać NodeMCU. Plytka nie obsługuje 5GHz ani szyfrowania WPA2-Enterprise.


Bezpieczeństwo softwaru

Gdy NodeMCU jest podpięty do twojej sieci WI-FI, po skonfigurowaniu, wtedy jest na tyle bezpieczny ile bezpieczna jest twoja sieć. Jeśli tylko ty masz dostęp do sieci, to tylko ty możesz zmieniać konfiguracje. W dzisiejszych czasach większość routerów WI-FI konfiguruje klientów nadając im adresy z sieci prywatnej więc domyślnie nie będą one dostępne w sieci internet, chyba że na swoje potrzeby będziesz robił przekierowania portów, ale wtedy pamiętaj aby nie dawać nikomu z zewnętrznych adresów IP dostępu do NodeMCU i powinieneś ograniczyć dostęp tylko dla tego IP, które faktycznie mają mieć dostęp w internecie do twoich termometrów.

Ten soft nie ma żadnych mechanizmów ograniczania dostępu do niego więc pamiętaj o bezpieczeństwie swoich termometrów.