Bezprzewodowe czujniki wilgotności DHT11 na ESP8266

Bardzo się cieszę, że mój poprzedni wpis o bezprzewodowych czujnikach temperatury DS18B20 na ESP8266 cieszył się tak dużym zainteresowaniem bo ok 8tyś wyświetleń. Wiem, że było trochę problemów z wgrywaniem programów na ESP ale mam nadzieję, że teraz pójdzie wszystkim lepiej. Tym razem chciałbym pokazać jak podłączyć pod ESP8266 czujnik wilgotności i temperatury DHT11.

Od razu napisze dlaczego nie DHT22, bo nie mam teraz na stanie. Jak będzie to też coś napiszę/zrobię. Jak by się ktoś zastanawiał czy bezprzewodowe czujniki DHT11/22 będą obsługiwane w nettemp to zapewniam, że tak.

Podłączenie

UWAGA: ESP8266 pracuje z 3.3V, trzeba pamiętać aby ustawić odpowiednie napięcie na FTDI lub innej przejściówce.

Trzeba się zaopatrzyć w ESP8266, FTDI FT232RL, DHT11 rezystor i 4,7k. Poniżej mały schemacik:

ESP8266_DHT11-22

 Nodemcu

Wersja nodemcu którą wgrałem na ESP8266 to 0.9.5 2015014. Wgrywam ją tak jak zawsze poprzez esptool.py z https://github.com/themadinventor/esptool. GPIO0 musi być zwarte do GND aby wgrać sam firmware. Potem trzeba rozłączyć GPIO0 od GND.

./esptool.py --port /dev/ttyUSB0 write_flash 0x00000 nodemcu.bin

Aby połączyć się do ESP poprzez terminal polecam użyć Cutecom i prędkości 9600. Ale to nie wszystko czas na program. Poniżej screen z cutecom.

ESP8266_DHT11_nettemppl

Program

Program pochodzi z http://scottsnowden.co.uk/?p=431 a ja go zmieniłem na swoje potrzeby i dołożyłem serwer www. Generalanie jest to jedyna działająca wersja programu. Inne, nawet z nodemcu pokazywały głupoty. Oba pliki znajdują się już w repozytorium nettempa i trzeba je ściągnąć:

https://raw.githubusercontent.com/sosprz/nettemp/beta/modules/sensors/wireless/DHT11/dht.lua

https://raw.githubusercontent.com/sosprz/nettemp/beta/modules/sensors/wireless/DHT11/init.lua

Trzeba pamiętać aby w init.lua dodać swój ssid i hasło do wifi.

Ja wgrywam programy za pomocą luatool z https://github.com/4refr0nt/luatool, można zrobić to przy pomocy specjalnej wersji Arduino https://github.com/esp8266/arduino.

./luatool.py -p /dev/ttyUSB0 -f init.lua -t init.lua
./luatool.py -p /dev/ttyUSB0 -f dht.lua -t dht.lua

Po wgraniu tych plików, po restarcie za pomocą komendy node.restart(); wydanej w cutecom albo wyłaczeniu zasilania i włączeniu. ESP8266 powinien połączyć się do twojej sieci WiFi. A po wpisaniu w przeglądarce adresu który uzyskał powinny pojawić się wartości czujnika wilgotności i temperatury. Aby dowiedzieć się jaki adres uzyskał układ z DHCP wydaj dwa polecenia w cutecom:

ip = wifi.sta.getip()
print(ip)

 

ESP8266_DHT11_nettemppl_server_www

Teraz tylko zostało dorobienie obsługi w nettemp… Mam nadzieje, że wam wszystko działa. Nawet jak działa napiszcie w komentarzach. Dzięki.

Share Button

Przemek

Twórca portalu techfreak, elektronik, pasjonat wszystkiego co fajnie, co można przerobić. W wolnym czasie grzebie przy nettemp. A sport jaki uprawia to mini drony klasy 250.

  • Irek

    Póki co u mnie nie działa, mam firmware NodeMCU 0.9.6 build 20150704 powered by Lua 5.1.4 i DHT22.

    Pozmieniałem na DHT22 w tych miejscach:

    sensorType=”dht22″ — set sensor type dht11 or dht22

    (…)

    if sensorType==”dht22″then

    ale nie działa. Niby widzę ESP na routerze pod adresem 192.168.0.10 ale jak daję wifi.ap.getip() to dostaję nil.

    Coś można zaradzić?

  • JB007

    U mnie bez problemu łączy się z wifi, ale serwer http zawiesza się na funkcji ReadDHT()

    Pojawia się w niej błąd:
    > PANIC: unprotected error in call to Lua API (init.lua:23: attempt to call field ‚getHumidity’ (a nil value))
    c_ÇRSöfJSúâFjĂvęX˙

    Ustawiłem config w init.lua tak:

    sensorType=”dht22″ — set sensor type dht11 or dht22

    PIN = 4 — data pin, GPIO0
    humi=0
    temp=0

    Moje firmware to:

    NodeMCU custom build by frightanic.com
    branch: master
    commit: c8037568571edb5c568c2f8231e4f8ce0683b883
    SSL: false
    modules: node,file,gpio,wifi,net,i2c,tmr,uart,ow,dht
    build built on: 2016-01-02 12:13
    powered by Lua 5.1.4 on SDK 1.4.0
    nil
    >