Notifications
Clear all

DIY: Bezprzewodowy czujnik temperatury oraz wilgotności za mniej niż 20zł  

Strona 1 / 3
  RSS
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

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 D1 Mini

 

  • 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

 

 

 

Termometr WiFI

 

  • W czujniku DH22 będą wykorzystane tylko 3 nóżki. Trzecia nóżka, nie będzie używana.

Czujnik DHT

 

 

 

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

Wykres pomiaru temperatury oraz wilgotności z czujnika DH22 na ESP8266 i AFE Firmware

Informacje uzupełniające
Cytuj
Dodane : 26/01/2018 11:04 pm
Radek
(@radek)
Stażysta

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.

OdpowiedzCytuj
Dodane : 27/01/2018 10:01 am
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

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.

OdpowiedzCytuj
Dodane : 08/02/2018 7:24 am
stan
 stan
(@stan)
Młodzik

Czy heatIndex jest osiągalny przez mqtt?

OdpowiedzCytuj
Dodane : 12/02/2018 7:42 pm
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

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/

OdpowiedzCytuj
Dodane : 12/02/2018 7:46 pm
stan
 stan
(@stan)
Młodzik

Dziękuję za pomoc. To wiele wyjaśnia. Warto opisywać każdy parametr mierzalny, czy jest podawany automatycznie, czy dostępny na żądanie.

OdpowiedzCytuj
Dodane : 12/02/2018 8:26 pm
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

kiedyś napiszę 😉 - czasu braku

OdpowiedzCytuj
Dodane : 12/02/2018 8:29 pm
marcin
(@marcin)
Młodzik

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ć ?

OdpowiedzCytuj
Dodane : 13/02/2018 1:46 pm
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

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/

OdpowiedzCytuj
Dodane : 13/02/2018 4:51 pm
marcin
(@marcin)
Młodzik

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

OdpowiedzCytuj
Dodane : 14/02/2018 8:25 am
1paul11
(@1paul11)
Początkujący

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ć ?

OdpowiedzCytuj
Dodane : 19/02/2018 7:42 pm
1paul11
(@1paul11)
Początkujący

Program mam wgrany do :Moduł WiFi ESP8266 Wemos NodeMCU V3 32MB.

Wygląda na to że układ nie działa.

OdpowiedzCytuj
Dodane : 19/02/2018 7:54 pm
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

@1paul11

  • ź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ć
OdpowiedzCytuj
Dodane : 19/02/2018 8:02 pm
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony
Dodane przez: 1paul11

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?

OdpowiedzCytuj
Dodane : 19/02/2018 8:43 pm
1paul11
(@1paul11)
Początkujący

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.

OdpowiedzCytuj
Dodane : 20/02/2018 2:43 pm
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

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.

OdpowiedzCytuj
Dodane : 20/02/2018 3:11 pm
1paul11
(@1paul11)
Początkujący

tak jak piszesz mam DTH 22

OdpowiedzCytuj
Dodane : 20/02/2018 4:00 pm
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

Podeślij zdjęcie jak masz to podłaczone

OdpowiedzCytuj
Dodane : 20/02/2018 11:19 pm
7keys
(@7keys)
Stażysta

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 )

OdpowiedzCytuj
Dodane : 08/03/2018 7:39 am
adrian
(@adrian)
Prezes Zasłużony dla Forum, Patron Strony

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.

OdpowiedzCytuj
Dodane : 08/03/2018 8:19 am
Strona 1 / 3
Udostępnij: