4-kanałowy termometr z interfejsem Wi-Fi

4-kanałowy termometr z interfejsem Wi-Fi
Pobierz PDF Download icon

Termometr elektroniczny z 4-punktowym odczytem temperatury przez lokalną sieć Wi-Fi. Wyniki pomiarów są prezentowane z pomocą aplikacji Termik4Temp na wyświetlaczu telefonu komórkowego lub tabletu z systemem operacyjnym Android. Jako czujniki temperatury zastosowano popularne układy cyfrowe DS18B20. Rekomendacje: dzięki możliwości wprowadzania ustawień widoków w aplikacji termometr może znaleźć liczne zastosowania w wielu dziedzinach życia.

Od lat starałem się zbudować elektroniczny termometr do pomiaru temperatury wewnętrznej, zewnętrznej i… nawet kilka zbudowałem. Niestety, zawsze brakowało mi postawienia przysłowiowej kropki nad i, czyli wykonania estetycznej obudowy, która przypadłaby do gustu pozostałym domownikom. Ostatecznie z braku determinacji i akceptacji rodziny (z uwagi na walory estetyczne obudowy) większość projektów lądowała na strychu w „skrzyni skarbów” i tak z sześć razy…

Po latach usilnych starań udało mi się jednak zbudować termometr bez konieczności wykonywania obudowy, który przypadł do gustu wszystkim domownikom. Może on pracować z czterema czujnikami temperatury, a odpowiednio do ich liczby, w specjalnej aplikacji możemy wybrać odpowiadający im widok oraz nadać unikatową nazwę.

Budowa

Schemat ideowy termometru pokazano na rysunku 1. Wykonano go w oparciu o moduł ESP8266-01 realizujący aplikację użytkownika. To dzięki temu „maleństwu” tak wiele skomplikowanych działań jest możliwych do realizacji w tak prosty i wręcz banalny sposób, i to bez stosowania dodatkowych układów elektronicznych. Moduł ten szeroko opisywany był na łamach Elektroniki Praktycznej, zatem odsyłam do wcześniejszych artykułów i publikacji na jego temat.

Jako czujniki temperatury zastosowano termometry z interfejsem 1-Wire typu DS18B20. Są one dołączane do złączy oznaczonych T1…T4. Wyjścia czujników są polaryzowane za pomocą rezystora R2 i dołączone do wyprowadzenia GPIO2 modułu ESP8266. Kondensatory C3 i C4 pełnią funkcję filtra przeciwzakłóceniowego. Dioda prostownicza D1 stanowi zabezpieczenie przed odwrotną polaryzacją napięcia zasilającego. Układ LF33CV stabilizuje napięcie zasilania na poziomie 3,3 V. Kondensatory C1 i C2 to kolejne filtry przeciwzakłóceniowe.

Moduł ESP8266 jest dość „prądożerny” i w czasie pracy pobiera prawie 300 mA, więc zaleca się zastosowanie zasilacza impulsowego o odpowiedniej wydajności prądowej. Dioda Led1 to wskaźnik obecności napięcia zasilania, który można wyprowadzić na zewnątrz obudowy.

Ostatnia grupa elementów przyciski S1 i S2, rezystory R3 i R4 oraz złącze ZŁ.PROG. Są one używane jedynie podczas programowania modułu ESP, które to zostanie szerzej omówione w dalszej części artykułu.

Zasada działania

Urządzenie współpracuje z aplikacją Termik4Temp (całkowicie darmowa do pobrania ze sklepu Google Play). Dane są przesyłane za pomocą protokołu UDP.

Termometr nasłuchuje w sieci Wi-Fi na określonym porcie. Jeżeli nadejdzie pakiet od aplikacji z żądaniem odczytu temperatur, urządzenie dokonuje pomiaru i odsyła pakiet danych z pomiarem na adres IP, z którego nadeszło zgłoszenie. Dla odświeżania wyników pomiarów, żądanie pomiaru z aplikacji wysyłane jest co 2 sekundy. Kiedy nadejdzie pakiet zwrotny z pomiarem, aplikacja przetwarza dane i wyświetla je na ekranie. Gdy „milczy” aplikacja, to „milczy” również termometr. Odczyt temperatur możliwy jest za pomocą wielu telefonów czy tabletów w tym samym czasie.

Montaż i uruchomienie

Schemat montażowy termometru pokazano na rysunku 2. Montaż rozpoczynamy typowo – od najniższych elementów (zwora, rezystory itp.). Po zmontowaniu całości, sprawdzamy poprawność montażu, mierzymy wartość napięcia zasilania (3,3 V) itp.

Do komunikacji termometru z komputerem potrzebować będziemy środowiska programistycznego Arduino oraz konwertera USB-UART, który to dołączamy z przeplotem (Rx-Tx, Tx-Rx) do gniazda ZŁ.PROG termometru. Nie zapomnijmy też o połączeniu masy.

Na komputerze uruchamiamy środowisko Arduino pamiętając, aby ustawić odpowiedni numer portu, do którego jest dołączony konwerter. Jeśli wszystko jest przyłączone i skonfigurowane poprawnie, możemy przystąpić do pierwszego uruchomienia termometru.

Po włączeniu napięcia zasilania powinna zaświecić się czerwona dioda LED na module ESP, a niebieska może „błysnąć” kilka razy. Teraz z menu „Narzędzia” środowiska Arduino wybieramy zakładkę „Monitor portu szeregowego” i wysyłamy komendę AT (wpisujemy AT+enter). Gdy otrzymamy odpowiedź OK możemy uznać, że nasz układ jest sprawny. Za pomocą komend AT sprawdzamy jeszcze wersję firmware modułu ESP, którą w razie potrzeby należy uaktualnić do najnowszej dostępnej wersji.

Na listingu 1 pokazano szkic ARDUINO, który należy wgrać do naszego modułu ESP8266 (wsad o nazwie termometr4xds18b20AVT). Zanim jednak to nastąpi musimy odpowiednio przygotować szkic, tak, aby mógł pracować w sieci Wi-Fi. W pierwszej kolejności nadajemy adres IP termometrowi. Dzięki temu adres będzie stały i DHCP po restarcie rutera nie zmieni go. Uwaga! Wprowadzony adres nie może kolidować z innym adresem w naszej sieci. W kolejnym kroku wprowadzamy pozostałe dane, które możemy uzyskać w łatwy sposób wpisując polecenie w wyszukiwarce systemu Windows cmd+enter, a następnie w otwartym okienku „wiersz polecenia” ipconfig+ enter. Dzięki tym czynnościom uzyskamy widok, z którego odczytamy konfigurację naszej sieci Wi-Fi. Określamy jeszcze port, na którym będzie odbywać się komunikacja (powyżej wartości 1024). W przykładzie jest to port 12346. W szkicu znajdują się liczne komentarze, które ułatwią samodzielną konfigurację oprogramowania.

Teraz rzecz najtrudniejsza. Musimy odczytać adresy czujników DS18B20 i odpowiednio przypisać je do t1, t2, t3, t4 w kodzie naszego szkicu. W tym celu możemy wykorzystać inny szkic Arduino zaczerpnięty ze strony internetowej http://bit.ly/2H1Go9L oznaczony „wsad_odczytserialds18b20”. Tutaj wprowadzamy tylko nazwę sieci i hasło dostępu.

Procedura wgrywania szkicu (dotyczy obu wersji)

Przy wyłączonym napięciu zasilania dołączamy czujniki DS18B20 do złącz T1…T4. Następnie włączamy napięcie zasilające i po chwili naciskamy przycisk S2 (RESET). Trzymając wciśnięty S2 wciskamy S1 (PROG), puszczamy S2 (RESET) i puszczamy S1 (PROG). Moduł ESP8266 wprowadzony został w tryb programowania. Teraz możemy wgrać nasz szkic.

Dzięki tej procedurze możemy również dokonać zmiany firmware modułu ESP8266. W niektórych jednak przypadkach przycisk S2 (RESET) może nie działać. Należy wówczas wyłączyć napięcie zasilania, wcisnąć przycisk S1 (PROG) i trzymając wciśnięty podać napięcie zasilania. Po chwili zwolnić przycisk i przystąpić do procedury wgrywania nowego firmware.

Po udanym wgraniu naszego pomocniczego szkicu przechodzimy do monitora portu szeregowego (Arduino) i naciskamy S2 (RESET). Naszym oczom powinien ukazać się widok pokazany na rysunku 3. Teraz możemy odczytać adresy czujników i przypisać je we właściwym szkicu. Odczytany adres IP naszego ESP, który tymczasowo został przydzielony przez DHCP (w tym przykładzie 192.168.8.109) możemy wpisać na pasku adresu przeglądarki internetowej. Po nawiązaniu połączenia uzyskamy widok pokazany na rysunku 4 – z tabeli możemy odczytać numery seryjne czujników temperatury. Ten adres możemy wykorzystać i przypisać go na stałe naszemu termometrowi. Dzięki temu uzyskamy pewność, że nie wejdziemy w kolizję z innym adresem IP.

Tak przygotowany szkic możemy wgrać teraz do modułu ESP8266 we wcześniej opisany sposób. Po restarcie na monitorze szeregowym powinien wyświetlić się nadany wcześniej adres IP, nazwa sieci oraz status połączenia. Pozostało już tylko zainstalowanie i skonfigurowanie aplikacji Termik4Temp na telefonie lub tablecie z systemem Android. W aplikacji należy ustawić port oraz nadany wcześniej termometrowi adres IP oraz zrestartować aplikację (łącznie z rzutem w tle).

Po ponownym uruchomieniu aplikacji nawiązuje ona połączenie z modułem ESP termometru i całość rozpoczyna pracę. Niebieska dioda LED na module ESP zaczyna cyklicznie „błyskać”, a po chwili na ekranie telefonu pojawiają się wyniki pomiarów temperatury (rysunek 6).

Przewidywane są dalsze modyfikacje i rozbudowa aplikacji o pomiar z wielu różnych modułów ESP8266 oraz umożliwienie zdalnego dostępu przez Internet.

Krzysztof Gruca
kisoftgk@gmail.com

 

 


Artykuł ukazał się w
Elektronika Praktyczna
kwiecień 2018
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik czerwiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje czerwiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna czerwiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich czerwiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów