ESP8266 na NodeMCU Amica Board z zasilaniem bateryjnym oraz czujnikiem DHT22

Domoticz część 3: ESP Easy – sensor do stacji pogodowej na ESP8266

ESP8266 zdobyło już tak dużą popularność, że pojawiły się gotowe firmware/projekty, które początkujący może bardzo łatwo zaadaptować. Również zaawansowani użytkownicy IoT docenią szybkość i stabilność. Dziś zajmiemy się projektem Richarda Ten Kloostera – czyli ESPEasy (https://github.com/ESP8266nu/ESPEasy). W skrócie jest to firmware, który po uruchomieniu na ESP8266 daje możliwość skonfigurowania przez przeglądarkę WWW potrzebnych czujników oraz wysłanie automatycznie danych do domoticz. Tak więc pozostaje nam podłączyć czujniki, które wybraliśmy, ustawić wysyłania danych do np: domoticz’a – można przy wprawie w 10 minut uruchomić czujnik bezprzewodowy do stacji pogodowej! ESPEasy jest tak uprzejme, że po uruchomieniu samo uruchamia sieć bezprzewodową ESP_XXYYZZ, do której łączymy się bez hasła, w przeglądarkę wpisując domyślny adres 192.168.4.1

Więcej na stronie projektu: http://www.esp8266.nu/index.php/Main_Page

Podsumowując – jeśli kiedykolwiek frustrowałaś się skomplikowaniem poradników, ESPEasy jest dla Ciebie!

Co będzie potrzebne ?

ESPEasy wymaga minimalnie ESP8266, najlepiej w wersji ESP-12E lub nowszej ESP-12F (stabilniejszy chip). Aby było nam jeszcze łatwiej proponuję spojrzeć na gotowe płytki z chipem ESP8266, wyprowadzeniami na goldpin i układem zasilania, który wymaga 5V na micro USB. Dzięki temu, możemy użyć zasilacza do telefonu komórkowego, albo powerbanku z wyjściem USB. Dodatkowo w projekcie wybierzemy ciekawy czujnik – na początek, uniwersalny, pozwalający na osiągnięcie precyzyjnych rezultatów – DHT22, który podaje temperaturę i wilgotność. Zaawansowani użytkownicy mogą po prostu lutować ESP-12E, zasilić je 3,3V.
Oprogramowanie jest trochę bardziej skomplikowane, ale można także użyć szybkiej ścieżki – gotowych plików *.bin. Nauczmy się jednak (opcjonalnie) co trzeba zrobić w przypadku budowania ze źródeł – pobrać Arduino Studio, odpowiednie biblioteki i źródła ESP Easy, wykonać kompilację – a następnie załadować na płytkę.

Hardware:

  • płytka NodeMCU (2.0) z ESP-12E w wersji V2 (np: Amica NodeMCU)
  • czujnik DHT22

    ESP8266 na NodeMCU Amica Board z czujnikiem DHT22
    ESP8266 na NodeMCU Amica Board z czujnikiem DHT22
  • kilka kabli typu jumper do podłączenia
  • rezystor o mocy 0,125W – 4,7k do 10k Ohm
  • OPCJONALNIE: Raspberry Pi służące do flashowania

Software:

  • gotowy firmware ESPEasy w formie binarnej
  • Arduino Studio w wersji 1.6.5
  • źródła i biblioteki ze strony ESP Easy

OPCJONALNIE: Budowanie firmware ESPEasy

Kiedy mamy już wybraną płytkę – możemy zbudować ze źródeł firmware ESPEasy, albo możemy użyć gotowej – skompilowanej wersji w postaci pliku bin. Można więc przeskoczyć ten krok, jak zauważył w komentarzach huczas – użyć wersji 078, w której mamy trzy gotowe, zbudowane (skompilowane) firmware – dla różnych rozmiarów flash. W przykładzie mamy płytkę NodeMCU – wybieramy największy plik. Jeśli jednak nie działa poprawnie – należy pobrać tzw. środowisko Arduino IDE. Jest to program, który pozwala ze źródeł tworzyć m.in. firmware dla ESP8266. Dlaczego akurat Arduino IDE, czy będę potrzebował Arduino ? Nie, ponieważ łatwo w nim przygotować projekt TAKŻE dla ESP8266 – nie potrzebujesz Arduino.
Pobieramy i instalujemy (Windows lub inne systemy operacyjne) KONIECZNIE wersję 1.6.5: https://www.arduino.cc/en/Main/OldSoftwareReleases#previous.
Dlaczego koniecznie? Inne wersje nie są przystosowane do naszej płytki (nowsze) – w rezultacie nasz firmware nie skompiluje się. Po zainstalowaniu,

Arduino IDE
Arduino IDE

należy pobrać opis naszego ESP8266 (zarządcy płytek) – wpisujemy w preferencjach:

Arduino IDE - preferencje
Arduino IDE – preferencje

W pole „Additional Boards Manager URLs:” wpisujemy adres http://arduino.esp8266.com/stable/package_esp8266com_index.json który zawiera definicję ESPEasy 2.0.0 – którą instalujemy w menu Tools/Narzędzia -> Boards Manager:

Arduino IDE - Boards Manager - instalacja płytki ESP8266
Arduino IDE – Boards Manager – instalacja płytki ESP8266

Następnie, z menu Tools – wybieramy odpowiednią płytkę:

Wybór płytki ESP
Wybór płytki ESP

Kierujemy się teraz po źródła – w trakcie pisania przetestowałem wersję 048, a pojawiła się już 120: http://www.letscontrolit.com/

Podbieramy plik, rozpakowujemy go w katalogu ESPEasy w Arduino IDE, a następnie kopiujemy biblioteki – katalogi z folderu Libraries do katalogu Arduino IDE – libraries.

Teraz należy otworzyć plik ESPEasy.ino poprzez Arduino IDE i wybrać Eksport compiled binary

Eksport firmware ESP8266
Eksport firmware ESP8266

Nastąpi teraz kompilacja,

Kompilacja w toku...
Kompilacja w toku…

która powinna zakończyć się tak:

Ukończona kompilacja ESPEasy
Ukończona kompilacja ESPEasy

W rezultacie w katalogu ESPEasy dostajemy plik ESPEasy.cpp.thing.bin

Flash firmware ESPEasy

Zakładam, że masz płytkę NodeMCU jak na zdjęciu, więc wybieramy odpowiedni flash do niej podczas kompilacji, lub korzystając z nowszych wersji (078) mamy do wyboru co najmniej trzy pliki *.bin dla różnej pojemności SPI flash. Sprawdźmy więc który wybrać, podłączając jak w poprzednim przykładzie przez konsolę – a następnie wydając komendy dla firmware NodeMCU:

a dla klasycznego firmware AT –

Ponieważ większość konwerterów UART na Windows ma albo kłopot z nieoryginalnym chipem, albo ogólny problem sterowników – przenosimy się tak jak w poprzednio – na RaspberryPi. Transferujemy plik do folderu z esptool.py i wykonujemy po podłączeniu identycznie jak w przykładzie (z ekstra komendami dla SPI flash 4M): https://blog.jokielowie.com/2015/10/domoticz-cz-2-termometr-wifi-z-precyzja-do-dwoch-miejsc-po-przecinku-czyli-esp8266-dla-poczatkujach-w-praktyce/ komendę:

Jeśli flashowanie przebiegło sprawnie – zauważ ekstra parametry wobec flashowania ESP-01 – mamy działający ESPEasy!

Podłączenie DHT22 i konfiguracja z Domoticzem

Jak zapewne zauważyłeś na pierwszym zdjęciu, podłączenie czujnika DHT22 – podającego z dużą precyzją temperaturę i wilgotność przeprowadziłem bez rezystora podciągającego (pull-up). Zgodnie ze sztuką powinno się umieścić pomiędzy PIN DATA (środkowym) a PIN VCC – rezystor około 10k. Tymczasem – podłączyłem z ciekawości – do płytki NodeMCU PIN DATA i działa! Niemniej – gorąco polecam dołączenie rezystora.

Podłączenie

Płytka NodeMCU ma nad napisem WiFi interesujące nas PINy, które łączymy:

ESP8266 na NodeMCU Amica Board z czujnikiem DHT22 - podłączenie z boku
ESP8266 na NodeMCU Amica Board z czujnikiem DHT22 – podłączenie z boku
  • PIN +3,3V -> pierwsza nóżka po lewej DHT22 (patrząc od frontu na czujnik)
  • PIN GND -> ostatnia, czwarta nóżka od lewej DHT22
  • PIN D4 -> druga nóżka od lewej DHT22, przy czym łączymy ją także przez rezystor 10k z PIN +3,3V

Konfiguracja

Płytkę NodeMCU v 1.0/2.0 zasilamy +5V z zasilacza ze złączem microUSB – czyli takim samym jak RaspberryPi, przy czym może to być stara ładowarka do telefonu o wydajności 300-500mA (jeśli masz 2A to też nic nie zaszkodzi). Po uruchomieniu – wyszukaj na komputerze nową, niezabezpieczoną (lub zabezpieczoną od wersji 078 – wtedy hasło >stron>configesp) sieć bezprzewodową – ESP_XXYYZZ (ostatnie sześć znaków to część adresu MAC interfejsu WiFi ESP8266). Połącz się z siecią, wpisz w przeglądarkę adres: http://192.168.4.1/ a uzyskasz następujący, lub podobny widok:

ESPEasy - Main Screen
ESPEasy – Main Screen

W przykładzie mamy już zmienione adresy IP, więc zauważ – jest na odwrót. Kierujemy się do zakładki Config i uzupełniamy ją naszymi danymi:

ESPEasy - konfiguracja sieciowa
ESPEasy – konfiguracja sieciowa

Po kolei – dajemy czujnikowi nazwę, ustawiamy hasło dostępu przez WWW. Następnie podajemy sieć WiFi i hasło dzięki której ESP przejdzie do naszej sieci i będzie mógł wysyłać dane do Domoticz – konfigurujemy go tak jak inne urządzenia w naszej sieci, a adres IP pobierze z DHCP. WP Ap Mode Key pozostawiamy domyślnie, ustawiamy protokół na Domoticz HTTP, adres IP domoticz’a odbierającego dane, jego port oraz Sensor Delay – czyli jak często wysyłamy dane z naszych czujników – tutaj 300 sekund czyli co pięć minut.
UWAGA: jeśli zapomnimy hasła do WiFi, albo ustawimy hasło do DOSTĘPU do ESP8266 przez WWW – i zapomnimy – możemy przywrócić nasze ESP do ustawień domyślnych z konsoli (patrz poprzedni wpis) – wydając komendę reset.

Następnie dodajemy nasz czujnik – już podłaczony – DHT22 w zakładce Hardware:

ESPEasy-devces

Kluczowe jest wybranie odpowiedniego PIN płytki NodeMCU – D4 to GPIO2 oraz IDX – numeru indeksu czujnika jaki występuje w Domoticz. Co to takiego ? Tworzyliśmy go jak czujnik wirtualny w Domoticz w pierwszym przykładzie: https://blog.jokielowie.com/2015/07/przekazniki-kontaktrony-wake-on-lan-oraz-z-wave-czyli-domoticz-w-sluzbie-domu/. Tym razem tworzymy czujnik Temp+Humidity!

Dodawanie wirtualnego czujnika temperatury i wilgotności
Dodawanie wirtualnego czujnika temperatury i wilgotności

Podobnie jak poprzedni w sekcji Domoticz – Ustawienia -> Urządzenia odnajdujemy nasz czujnik i notujemy wartość IDX – którą wpisujemy w IDX / Var ESPEasy. To już… wszysto!

Oto wykres jakiego należy się spodziewać po kilku dniach pracy:

Wykres z czujnika ESPEasy
Wykres z czujnika ESPEasy

Aktualnie – u mnie – czujnik pracuje na zasilaniu bateryjnym, na wiosnę, gdy temperatura wzrośnie – będzie ładowany z panelu solarnego.