ESP8266 + BME280 – odczyt warunków atmosferycznych

Witam,

Dziś pokażę jak w łatwy sposób odczytać temperaturę, wilgotność i ciśnienie przy użyciu ESP8266 i czujnika BME280.

 

BME280

Miniaturowy czujnik typu all-in-one produkcji Bosch. Potrafi mierzyć temperaturę, wilgotność i ciśnienie. Do komunikacji z nim możemy użyć I2C albo SPI. Dodatkowo imponująca dokładność pozwala na pomiar wysokości na jakiej znajduje się czujnik – względem poziomu morza. Dość dużo, jak na czujnik który od Chińczyka możemy mieć już za 11pln. Czujnik sam w sobie wygląda tak:

Natomiast wygodna w użyciu implementacja następująco:

 

ESP8266 + BME280 – połączenie

W naszej implementacji do komunikacji użyjemy I2C – w celu oszczędności pinów, dzięki temu będziemy potrzebować 4 przewodów połączeniowych:

  • zasilanie: VCC, GND
  • komunikacja SDA(SDI) i SCL(SCK)

łączymy je jak na zdjęciu poniżej:

Flash ESP8266

Po poprawnym połączeniu czas przejść do programowania. Do tego celu użyjemy zbudowanej do naszych celów binarki dla NodeMCU i języka LUA.

1. Generowanie pliku *.bin dla NodeMCU

Wchodzimy na stronę https://nodemcu-build.com/  W pierwszym kroku podajemy naszego maila – na którego przyjdzie wygenerowany plik wsadowy. Następnie z dostępnej listy bibliotek zaznaczamy te których będziemy używać, czyli w naszym przypadku do domyślnie zaznaczonych dodajemy tylko BME280 i I2C. Na koniec klikamy na dole „Start Build”.

ProTip: obok nazwy biblioteki jest mała niebieska książeczka, po kliknięciu w nią przechodzimy bezpośrednio do rozdziału danego modułu w fenomenalnej dokumentacji NodeMCU. Wszystko jest napisane jasno, przejrzyście i podparte prostymi przykładami.

Po kilku minutach dostaniemy maila, że nasza paczka jest zbudowana i gotowa do pobrania – w dwóch wersjach integer i float – my będziemy potrzebować wersji zmienno-przecinkowej – więc pobieramy plik float.

 

2. Flashowanie ESP8266

Pobieramy i instalujemy sterowniki dla naszego układu konwertującego USB-UART, nazwę układu możemy odczytać z opisu na spodzie płytki, lub bezpośrednio z wlutowanego układu, zazwyczaj będą to:

  • CH340G, lub
  • CP2102

Pamiętamy o uruchomieniu komputera po instalacji sterowników!

Podłączamy nasz ESP8266 NodeMcu v3 do portu USB – niebieska dioda powinna dać oznakę życia, a w Menadżerze urządzeń powinniśmy znaleźć naszą płytkę:

Ze strony https://github.com/nodemcu/nodemcu-flasher całą paczkę klikając w .
Po pobraniu rozpakowujemy paczkę i uruchamiamy program:
\nodemcu-flasher-master\Win64\Release\ESP8266Flasher.exe

W opcji ComPort wybieram port który odczytaliśmy w Menadżerze urządzeń, teraz przechodzimy do zakładki Config i wskazujemy pobrane oprogramowanie poprzez kliknięcie w „zębatkę” – offset zostawiamy na wartości 0x0000, a z lewej strony zaznaczamy X:

Wracamy do zakładki „Operation” i klik „Flash” – operacja flashowana została rozpoczęta:

ProTip:domyślnie prędkość przesyłu ustawiona jest na 11520, doświadczalnie sprawdziłem, że można ją podwoić, większość płytek z którymi pracowałem nie miała z tym problemu – zawsze to 50% czasu zaoszczędzane 😀

ESPlorer ESP8266 – LUA

Najwygodniej pracować w programie ESPLorer, którego pobieramy stąd: https://esp8266.ru/esplorer/ i wypakowujemy. Uruchamiamy program „ESPlorer.jar(oczywiście musimy mieć zainstalowane środowisko JAVA)

W prawej części programu wybieramy numer portu COM naszego układu, prędkość 11520 i wybieramy OPEN.

Program powinien połączyć się z naszą płytką. Gdy natomiast przez długi czas będziemy widzieli komunikat
PORT OPEN 115200
Communication with MCU..”
i nic się więcej nie będzie działo, wtedy wciskamy przycisk RESET na płytce NODEMCU – teraz powinno być już OK.

Podczas pierwszego podłączenia układu, przez kilka sekund będziemy widzieć formatowanie systemu plików:

Po chwili układ będzie gotowy do pracy:


ProTip: te szlaczki które widać na powyższych dwóch screenach, to informacje od samego układu – możecie je podejrzeć zmieniając prędkość komunikacji z układem na 74880:

Czas na Hello World!

Przechodzimy do lewej części programu i wpisujemy następujący kod:

klikamy ctrl+s wtedy program poprosi nas o zapisanie pliku, a po kliknięciu save automatycznie uruchomi skrypt na ESP8266. Naszą uwagę powinno przykuć prawe okno gdzie widzimy proces wgrywania skryptu *.lua i co najważniejsze, jego efekt:

Możemy trochę zrefaktorować nasz kod i wywołać funkcję print z dwoma argumentami:

i otrzymać:

Ok, podstawy mamy za sobą, czas połączyć się z czujnikiem.

 

ESP8266 + BME280 – odczyt wartości

Ok, mamy podłączony BME280, ESP8266 jest widoczny w ESPlorer, czas wreszcie odczytać jaką mamy temperaturę.

i efekt:

zwróćcie proszę uwagę, ze komentarze w jezyku LUA zaczynają się od „–„.

 

Jeśli natomiast zobaczyć błąd podobny do tego:

Funkcja bme280.temp() nie wykonała się poprawnie i zwrócono ‚nil’ – wszystko wskazuje na to, że albo czujnik jest uszkodzony, albo źle podłączony!

 

Rozszerzmy nasz skrypt o odczyt pozostałych wartości:

 

 

Powyższy kod możemy lekko usprawnić i skrócić:

 

Ok, odczyt sensora mamy za sobą, w następnym wpisie spróbujemy połączyć się z siecią Wi-Fi!

pozdro,
mVn

 

 

Leave a Reply

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *