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ę.
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.
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.
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.
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