Najmniejszy system weryfikacji smogu

ESP8266 i SMOG – część pierwsza: Prosty i szybki czujnik smogu z odczytem przez WiFi – pierwsza wersja, podstawowa

Ostatnio budowaliśmy razem czujnik smogu – dla pyłu zawieszonego PM2,5 i PM10 ppm. Tym razem spróbujemy czegoś prostszego, na początek bez kwestii zajmowana się żywotnością, usypianiem czy wyłączaniem.  Czujnik Nova Fitness SDS011 (także wersje 018 lub 015) okazał się całkiem precyzyjnym urządzeniem, o niezłej żywotności, dający nawet całkiem zbliżone rezultaty przy teoretycznie nieobsługiwanej wilgotności powietrza powyżej 70%. Dzisiaj postaram się od podstaw pokazać Wam mobilną wersję czujnika, przy użyciu najtańszych elementów oraz rozbudować ją następnie o czujnik temperatury i wilgotności, wyświetlacz – aż do wersji ‚chmurowej’. Na początek – wersja podstawowa.

Najmniejszy system weryfikacji smogu
Najmniejszy system weryfikacji smogu

Jest to bardzo łatwy projekt,  który można ukończyć w 10 minut.
„Wgrywamy” odpowiedni software, podłączamy 3 kable i odczytujemy wynik przez WWW.  Coś co można pokazać w szkole (albo wykonać jako szkolny projekt), w lokalnej społeczności – jako skuteczny miernik SMOGu.

Czego będziemy potrzebować?

Sprzęt

  • ESP8226 – najlepiej w wersji na płytce NodeMCU v2 lub Wemos D1 mini. Użyjemy tutaj tego drugiego.
    Chip ESP8266 występuje w tych wersjach razem z wygodnym interfejsem USB, służącym do zasilania (5V), oraz programowania (tzw. „flashowania”). Jednocześnie takie płytyki mają dodatkowe ułatwienia – przyciski RESET lub/i  FLASH, poprawnie przenoszą w „Deep Sleep”, oraz mają najczęściej najnowsze wersje – np: ESP-12S, z lepszą anteną. Ważne aby była to wersja z 4MB pamięci FLASH (32Mbit), NodeMCU czy Wemos D1 mini posiadają taka ilość pamięci stałej.
    Samo urządzenie powinno kosztować około $4-$5 z przesyłką, lub trochę drożej w sklepach na miejscu w Polsce.
  • Czujnik smogu – Nova Fitness SDS011. Tak jak poprzednio użyjemy dobrze już znanego czujnika, który dość precyzyjnie jak na cenę około $22 w Chinach – potrafi wskazać poziom SMOGu dla 2,5 oraz 10 ppm. Jeśli nie chcesz czekać miesiąc na przesyłkę – Nettigo ma obecnie promocję z kodem DIY_SMOG_15 dającym 15% rabatu na ten czujnik. Czytelnicy donoszą, że kod działa też na PMS5003, którego nie testowałem.
  • Trzy kable (zwykle tzw. jumper cables)
  • Zasilacz/ładowarkę od telefonu komórkowego ze złączem USB oraz kabel USB – microUSB. Wystarczy ładowarka o wydajności prądowej min 750mA, ale może być też właściwie dowolna – 1A, 2,1A etc. Płytka z ESP8266 oraz czujnik pobierze tyle prądu ile jej będzie potrzebne (zwykle maksylalnie 650mA)

Software/Narzędzia

  • ESPEasy 2.0-dev – wersja deweloperska oprogramowania ESPEasy rozwijanego teraz w wersji 2.0, przez wielu programistów, następca wersji 1.x. W momecie pisania, ostatnią wersją jaką możemy już wykorzystać jest  dev12, która obsługuje czujnik SDS011, dzięki włączeniu jej przez Jochen Krapf’a – który opracowuje także bardzo ciekawe obudowy do Nova SDS011. Mimo, że jest to wersja „deweloperska” – doskonale nadaje się do naszych zastosowań.
  • Linux – dowolna wersja, w której możemy możemy pobrać i uruchomić oprogramowanie służące do zaprogramowania ESPEasy. Jest to także możliwe z Microsoft Windows czy Mac OS X, wymaga jednak instalacji sterownika dla portu szeregowego-do-USB, co jest często problematyczne. Linux ma sterownik od razu w jądrze. Najlepszy będzie PC z kartą WiFi oraz wolnym portem USB, a więc np: stary netbook za 150-250PLN (używam Acer Aspire One ZG5 z Mint Cinnamon)

Do dzieła!

Uruchamiamy komputer z Linuksem, może to być PC albo Raspberry Pi – najlepiej wersję z pochodzącą od Debiana dystrybucją Linuksa. Instalujemy esptool.py, program służący do zapisu w pamięci FLASH nowego oprogramowania w ESP8266 czy też nowszym ESP32:

Jeśli ostatnia komenda zwróci błędy, możemy spróbować:

Poprawny wynik to:

Następnie podłączamy przez kabel USB – microUSB naszą płytkę z ESP8266. Upewnij się, że nie masz już w systemie konwertera USB do portu szeregowego,
inaczej będziesz musiał zmienić port.
Wynik komendy dmesg na Linuksie powinien być podobny do tego:

Nasze ESP8266 jest więc widoczne w systemie jako urządzenie ttyUSB0 a ściślej /dev/ttyUSB0, o ile jest to twoje jedyne urządzenie tego typu w systemie.

Dla wygody, przejdzmy do trybu administratora, stwórzmy roboczy katalog:

Pobieramy z https://github.com/letscontrolit/ESPEasy/releases/ najnowszą wersję binarną (zwykle jest to plik ZIP) – np: dziś jest to: wersja dev12. Po pobraniu rozpakowujemy:

Pozostaje nam wgrać do pamięci flash ESP8266 odpowiednią wersję, 4MB – dev, plik dla flash 4MB – ESPEasy_v2.0.0-dev12_dev_4096.bin. Jeśli posiadasz Wemos D1 mini, uruchamiasz komendę, dla niektórych NodeMCU, należy nacisnąć FLASH a poterm trzymająć FLASH – reset:

Prawidłowy wynik:

Teraz kolej na część sprzętową, wraz z SDS011 otrzymaliście kabel do podłączenia oraz konwerter USB na port szeregowy (popularny gadżet ten port szeregowy, prawda?). Ponieważ ESP8266 ma na pokładzie port szeregowy, pracujący z napięciami 0 i 3,3V, nie potrzebujemy konwertera, można go odłączyć. Następnie wtykamy trzy kable do załączonego kabla w miejsce gdzie był konwerter USB – zauważ jaka jest orientacja złącza:

Podłączenie SDS011 do ESP8266
Podłączenie SDS011 do ESP8266

Jak widać, podłączone jest zasilanie (+5V, GND) oraz TX z portu szeregowego. Następnie łączymy się z ESP8266:

Pin z czujnika SMOGu TX->RX na ESP8266
Pin z czujnika SMOGu TX->RX na ESP8266

Podłączyliśmy się do D6. Zasilanie podłączamy odpowiednio do +5V i GND:

Podłączenie zasilania SDS011 przez Wemos D1 mini
Podłączenie zasilania SDS011 przez Wemos D1 mini

Całość przedstawia się następująco:

Najmniejszy system weryfikacji smogu
Najmniejszy system weryfikacji smogu

Interfejs WWW ESPEasy jest dostępny dzięki podłączeniu się przez WiFi do sieci ESP_XXXX – a więc tworzony jest access point, WPA2 z domyślnym hasłem „configesp”. „XXXX” to adres MAC ESP8266, pozwalający na zidentyfikowanie AP. Po chwili powinniśmy dostać adres 192.168.4.X, a łączyć możemy się przez przeglądarkę od razu na adres 192.168.4.1

Następny krok to skonfigurowanie na płytce dostęþu do naszej domowej sieci WiFi, co spowoduje zmianę adresu IP na taki jaki mam skonfigurowany w domu – tak jak poniżej z zakładki Main:

Wersja ESPEasy
Wersja ESPEasy

Przechodzimy do zakładki Devices i wybieramy Edit dla pierwszej linii. Z Menu – SDS011 oraz wypełniamy jak na zdjęciu – zauważmy że używamy GPIO-12 (D6) do odbierania danych, jednocześnie nic nie wysyłamy do SDS011. Stąd tylko jeden kabelek:

Konfiguracja SDS011 w ESPEasy dev12
Konfiguracja SDS011 w ESPEasy dev12

Po około 30 sekundach od zapisania – sprawdźmy w Devices wynik:

Pomiar i wynik z ESPEasy
Pomiar i wynik z ESPEasy

Mamy więc 22,86 μg/m3  cząsteczek PM2,5 μm  oraz 32,92 cząsteczek PM10μm.

To wszystko – urządzenie jest gotowe do pracy – możemy zasilać je z power banku i używać mobilnie, wraz z np: smartfonem, który będzie miał skonfigurowany Hotspot z takim samym dostępem jak domowa sieć WiFi. Jeśli chcesz ułatwić sobie odczyt – przejdź do drugiej części.