Czujnik temperatury i wilgotności to podstawowe urządzenie w każdym smartHouse. Znając temperaturę w pomieszczeniach możemy odpowiednio sterować ogrzewaniem, klimatyzacją, czy regulować wilgotność w łazience.
Analizując dane historyczne możemy dostrzec, że w pomieszczeniach jest za ciepło kiedy jesteśmy poza domem, np. w pracy. To znowu pozwala nam odpowiednio zmodyfikować nasz system ogrzewania i może przy okazji zaoszczędzić PLN. W podobny sposób możemy reagować na zmieniającą się wilgotność. Niekorzystna wilgotność dla człowieka jest wtedy, kiedy jej wartość nie mieści się w zakresie 30-60%.
Poniżej amatorska wersja, zbudowana z praktycznie gotowych komponentów, wymagająca niewiele zabawy z lutownicą. Urządzonko zbudowane jest na popularnym chip'ie WiFI ESP8266, czujniku temperatury i wilgotności DHT22, zasilana ładowarką USB 5V oraz wgranym AFE Firmware T2.
Oprogramowanie w takim zestawie umożliwia:
- odczyt temperatury i wilgotności w zdefiniowanych interwałach czasowych,
- przesyłanie danych przez protokół MQTT do naszego systemu do automatyki lub
- odczyt temperatury / wilgotności na żądania protokołem MQTT lub HTTP do formatu JSON
Części do zbudowania takiego czujnika
Wymagane elementy do zbudowania takiego czujnika. Wszystkie zakupione na aliExpress w Chinach. Ceny z grudnia 2017
- ESP8266 D1 Mini (z goldpin'ami): $2,55
- Czujnik DH22: $2,45
- Rezystor 10k: $0,004
- 2x płytki do prototypownia (PCB) 3x7cm - $0,52
- Kilka drucików
Razem: $5,52 jakieś 18zł
Do dzieła
Zaczynam od końca, żeby było wiadomo do czego zmierzamy.
- Mamy dwie płytki PCB do prototypowania, złożone razem z niewielką przerwą między nimi ok 2mm. Między nimi znajdują się kabelki łączące poszczególne elementy razem
- Płytki połączone są przylutowanymi do nich goldpin'ami, które wchodziły w skład zakupionego ESP8266 D1 Mini
- Z jednej strony mamy ESP8266, z wyjściem USB do podawania zasilania, z drugiej strony jest czujnik DH22, a między nimi rezystor 4,7k
W szczegółach:
- W ESP8266 identyfikujemy: 3.3V, GND, GPIO14 - do nich podepniemy czujnik DH22. Oczywiście również można użyć innego GPIO zamiast 14stego.
- ESP8266 łączymy do PCB za pomocą goldpin'ów. Na każdym rogu ESP będzie montowany jeden, żeby ESP8266 stabilnie był przymocowany do płytki PCB
- W czujniku DH22 będą wykorzystane tylko 3 nóżki. Trzecia nóżka, nie będzie używana.
- Nóżkę 1 łączymy z 3.3V, nóżkę 2 z GPIO14, nóżkę 4 z GND w ESP8266
- Rezystor 4,7k będzie łączony między połączenie/ kabelek 3.3v, a GPIO14 idące do drugiej nóżki w DH22.
- Łączymy wszystko razem.
- Sprawdzamy 2x zanim podłączymy zasilanie, czy nie ma zwarcia między drucikami, połączeniami, itp
Wgrywanie firmware
- Pobieramy firmware AFE Firmware T2
- Instalujemy, praktycznie tak samo jak w tej instrukcji. W przypadku ESP8266 D1 Mini łączymy się kablem USB do komputera i wciskamy przycisk reset w ESP przed włożeniem kabla do portu USB w komputerze
- Wgrywamy oprogramowanie
- Po wgraniu oprogramowania wciskamy ponownie przycisk reset (lub odłączamy kabel USB od komputera, a następnie włączamy go ponownie)
Konfiguracja firmware
- Podczas pierwszego uruchomienia, urządzenie automatycznie wejdzie w tryb konfiguracji
- Po ok. 1min od wgrania oprogramowania i wciśnięciu przycisku reset połącz się z siecią WiFi o nazwie AFE-Device, a po podłączeniu się do niej w przeglądarce wejdź na adres: http://192.168.5.1
- Powinien uruchomić się panel konfiguracyjny
- W konfiguracji urządzenia wybieramy: czujnik DH22 oraz diodę LED. Przekaźnik oraz przycisk nie powinny być zaznaczone
- Wybieramy API do sterowania MQTT i/lub HTTP
- W konfiguracji LED wybieramy: GPIO: 2 (będzie to dioda wbudowana do ESP8266 D1 Mini)
- W konfiguracji czujnika temperatury:
- wybieramy GPIO 14 lub inny, do którego podłączony jest czujnik DH22
- typ czujnika: DH22 (no chyba, że zamiast DH22 podłączony został DH11 lub DH21)
- ustawiamy częstotliwość odczytu temperatury i wilgotności (jeśli nie używamy MQTT to nie ruszamy tego parametru)
- Konfigurujemy sieć WiFi, MQTT jeśli wybraliśmy i kończymy konfigurację
Test odczytu danych z czujnika
- W routerze WiFi możemy sprawdzić, jaki adres IP został przydzielony urządzeniu
- Odczyt temperatury:
- http://adres-ip-urzadzenia/?device=dht&name=temperature&command=get
- Odczyt wilgotności:
- http://adres-ip-urzadzenia/?device=dht&name=humidity&command=get
- Odczyt temperatury odczuwalnej:
- http://adres-ip-urzadzenia/?device=dht&name=heatIndex&command=get
Poniżej wykres temperatury oraz wilgotności z danych zebranych przez to urządzonko z jednej doby.
Informacje uzupełniające
- Dokumentacja AFE Firmware
- Komendy MQTT
- Komendy HTTP
Też zrobiłem podobny tylko DHT był po drugiej stronie D1.
Teraz muzę wymyślić:
1. Zasilanie bateryjne automatyczne przełączane przy zaniku prądu.
2. Ładne opakowanie które "oddycha" żeby czujnik miał dostęp do świeżego powietrza.
Ad1 to co widziałem niektóre osoby robia to podłączają takie urządzonka przez power banki, które są podłączone na stałe do ładowania. Nie jestem pewien, czy to jest b.bezpieczne - jak padnie taki kontroler (BMS) zabezpieczający baterie przed nadmiernym rozładowaniem / przeładowaniem to bateria może spuchnąć i w konsekwencji nawet się zapalić. I tez niektóre z tych power banków maja automatyczne wyłączanie jeśli nie pobierana jst z nich energia. Taki ESP nie ciągnie za wiele tej energii i może być poza progiem wykrywalności przez power bank, że jakieś urządzenie pobiera energię z niego. Też coś takiego planuje zrobić, ale na razie inne priorytety.
Czy heatIndex jest osiągalny przez mqtt?
Tak, ale nie jest wysyłany w interwałach. Jak wyślesz komendę: mqtt://temat/cmd wiadomośc getHeatIndex to zwróci temperaturę odczuwalną. Zobacz opis do czujnika DH https://www.smartnydom.pl/afe-firmware-pl/integracja/mqtt/
Dziękuję za pomoc. To wiele wyjaśnia. Warto opisywać każdy parametr mierzalny, czy jest podawany automatycznie, czy dostępny na żądanie.
kiedyś napiszę 😉 - czasu braku
w opisie powtarza Pan, że adres IP urządzenia "powinien" znaleźć się w menu routera.jakoś nie mogę go znaleźć.
gdzie go szukać ?
czy jest inny sposób,aby ten adres odczytać ?
to gdzie szukac jest specyficzne dla każdego routera (prosze może podać model / typ routera). Jeśli ma pan trudność odszukać to można zainstalowac jakiś programik, który przeszukuje lokalną sieć. Pierwszy lepszy jaki znalazłem http://www.advanced-ip-scanner.com/
Witam, to bardzo dziwne, bo w chwili wysyłania informacji o temp.(co 60sek.) pokazuje się w menu routera na chwilę adres MAC, i nic więcej...
Tak było jak wgrałem do esp-12f, natomiast w ESP-01 wszystko działa.
Wysyłałem polecenia przez http i dostałem potwierdzenie wykonania.
będę dalej próbował, bo przyznam, że mnie to trochę wciągnęło.
dziękuję za odpowiedz
Witam mam problem z odczytem temperatury i wilgotności. Układ zwraca mi wartość "nan" zamiast wartości liczbowych czy to temp. wilgot. Co to może być ?
Program mam wgrany do :Moduł WiFi ESP8266 Wemos NodeMCU V3 32MB.
Wygląda na to że układ nie działa.
- źle podłączone kable
- za długie kable
- nie to GPIO w konfiguracji wybrane, do którego fizycznie jest podłączony czujnik
- za niskie napięcie - musi być co najmniej 5V
- brak opornika między zasilaniem, a linią z danymi - 10k
- za częste odczytywanie danych (mniej niż 2 sek) - ale tutaj od czasu do czasu powinien odczytać
Program mam wgrany do :Moduł WiFi ESP8266 Wemos NodeMCU V3 32MB.
Wygląda na to że układ nie działa.
a możesz napisać coś więcej, co znaczy że nie działa - to jest to co napisałeś wyżej, że dostajesz NaN? czy coś jeszcze innego?
Witaj, wgrałem program T1 i odczytałem temperaturę na takim samym układzie. Więc układ sprawdziłem i działał. Jak zamieniłem z T2 to dostaje "nan" jak sprawdzam w MQTT.fx czyli układ nie widzi czujnika, mam dwa i je zamieniłem, zasilanie też 5V z ładowarki. Dzis próbuje wgrać inne wsady i sprawdzę na nich czujniki. A tak przy okazji czy mogę podłączyć więcej niż jeden czujnik temperatury pod program T1 ?. Potrzebuję podpiąć 3 i wystawić ich w OpenHAB-ie.
ale rozumiem, że z T1 używasz czujnika DS18B20, a do T2 używasz czujnika DH11, DH21 lub DH22.
Oprogramowanie obsługuje teraz jeden czujnik per urządzenie. Na razie nie mam w planach robić więcej, kilka innych projektów, czeka mi w kolejce.
tak jak piszesz mam DTH 22
Podeślij zdjęcie jak masz to podłaczone
Wszystko pięknie 🙂 Ale "bezprzewodowy" powinno oprócz połączenia bezprzewodowego z serwerem powinno wskazywać też na zasilanie bateryjne 🙂 Przy takim zasilaniu czujniki ustawiasz gdzie chcesz. Przy zastosowaniu akumulatora 18650 i odpowiedniego ustawienia odczytów, baterię wymieniam na "naładowaną" raz na 3-4 miesiące.
Wczoraj w ramach testu, zainstalowałem na moim esp8266 S0-1 AFE DHT. Wszystko jest ok , ale raczej na baterii długo nie pociągnie przy ciągle włączonym wifi w module.
Rozumie zamysł AFE i dlaczego tak jest 🙂
Załóżmy jednak sytuację w której dodałbyś taką opcję:
1. dodatkowe pole typu " praca autoniomiczna"
a. wybieramy interwał czasu odczytu ( opcja już jest ) np:.ustawiamy co 5 minut
b. wybieramy czy odczyt ma być bezwzględnie co 5 minut czy też urządzenie robi zapis do pamięci ostatniego zapisu i po uruchomieniu funkcji z opcji "a" porównuje wynik - jeśli bez zmian to nic nie wysyła i się usypia czyli esp przechodzi w tryb "sleep mode"
Takim sposobem czujnik na baterii wytrzyma bardzo długo 🙂
Można zapytać : jak w takim razie dostać się do konfiguracji urządzenia ?
Nie ma takiej potrzeby 🙂 Skoro wybraliśmy tryb autonomiczny to ile razy będziemy zmieniać konfigurację ?
Ja mam w domu 15 szt różnych sensorów - programuję je raz przy pierwszym uruchomieniu i tyle 🙂
Do czego zmierza mój wywód...
AFE jest idealne w sumie dla każdego kto ma mało czasu , małą wiedzę a chce tanio i szybko zrobić sobie namiastkę inteligentnego domu 🙂 Dokładając do AFE taką funkcję czynimy soft i urządzenia w pełni skalowalnym rozwiązaniem zapewniającą też dużą elastyczność..
Oprogramowanie w moich esp jest napisane w lua.. Niestety na dziś brakuje mi informacji czy biblioteka w nodemcu do DHT11, 21, 22, 33, 44 , nie jest skopana ponieważ nie gada z moim DHT które ma zakres pomiaru temperatury od -20 do +60 stopni.
Natomiast firmware oparty o ESPEASY i AFE działa. ( napisany w C )
tak, masz racje. Bezprzewodowe jest tylko wysyłanie danych. Na razie na jednej baterii 18650 z usypianiem / odczytami co 1h udało mi się wyciągnąc ciut ponad miesiąc. Baterie mam dobrej jakości Panasonica NCR, mam je w rowerze i daja radę bez strat od roku. Zamówiłem w stanach lepszą przetwornicę, która powina dawać mniej strat i pocągnąć liczę ok 2-3 miesiący. No i nie może to być układ, jak ten tutaj Mini D1, który sam w sobie ma niepotrzebne elemeny, które zabieraja prąd. Goły ESP + przetwornica + rezystor i czujnik - wystarczą. Zadne z AFE nie jest pisane pod usypianie układu teraz bo w sumie czujniki temperatury są tam, jako dodatek do przekaźników. Temat mam na radarze, ale na razie na zrobieniu dobrego wydajengo sprzętu. Soft jest drugorzędny i najmniejszy problem.