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.
UWAGA: Na początku 2018 pojawiła się nowsza wersja ESPEasy MEGA 2.0 – która ułatwia pracę z SDS011. Jeśli skończysz ten projekt – sprawdź nowszą wersję
===
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.
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:
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install python-serial python-pip
$ sudo pip install esptool
Jeśli ostatnia komenda zwróci błędy, możemy spróbować:
$ python -m pip install esptool
Poprawny wynik to:
$ pip install esptool
Collecting esptool
Downloading esptool-2.1.tar.gz (68kB)
100% |████████████████████████████████| 71kB 1.0MB/s
Collecting ecdsa (from esptool)
Downloading ecdsa-0.13-py2.py3-none-any.whl (86kB)
100% |████████████████████████████████| 92kB 1.8MB/s
Collecting pyaes (from esptool)
Downloading pyaes-1.6.1.tar.gz
Requirement already satisfied: pyserial>;=2.5 in /usr/lib/python2.7/dist-packages (from esptool)
Building wheels for collected packages: esptool, pyaes
Running setup.py bdist_wheel for esptool ... done
Stored in directory: /root/.cache/pip/wheels/26/5f/f6/af94c2b40c53d3b78ubeaXXc000272XXd0e1abXXada2a24f1
Running setup.py bdist_wheel for pyaes ... done
Stored in directory: /root/.cache/pip/wheels/ca/86/ff/a5a7674159155c92caXXbe7d374XXcfbf3dfeXX386fead1b21
Successfully built esptool pyaes
Installing collected packages: ecdsa, pyaes, esptool
Successfully installed ecdsa-0.13 esptool-2.1 pyaes-1.6.1
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:
[38450.504000] usb 2-2: new full-speed USB device number 14 using xhci_hcd
[38450.644831] usb 2-2: New USB device found, idVendor=1a86, idProduct=7523
[38450.644834] usb 2-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[38450.644836] usb 2-2: Product: USB2.0-Serial
[38451.248808] usbcore: registered new interface driver ch341
[38451.248823] usbserial: USB Serial support registered for ch341-uart
[38451.248838] ch341 2-2:1.0: ch341-uart converter detected
[38451.249237] usb 2-2: ch341-uart converter now attached to ttyUSB0
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:
$ sudo -i
# mkdir esp_flash
# cd esp_flash
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:
# wget https://github.com/letscontrolit/ESPEasy/releases/download/v2.0.0-dev12/ESPEasy_v2.0.0-dev12.zip
# unzip ESPEasy_v2.0.0-dev12.zip
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:
# esptool.py --chip esp8266 --port /dev/ttyUSB0 --baud 115200 write_flash -fm dio -fs 4MB 0x00000 ESPEasy_v2.0.0-dev12_dev_4096.bin
Prawidłowy wynik:
esptool.py v2.1
Connecting....
Chip is ESP8266
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Compressed 634240 bytes to 414279...
Wrote 634240 bytes (414279 compressed) at 0x00000000 in 36.5 seconds (effective 138.9 kbit/s)...
Hash of data verified.
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:
Jak widać, podłączone jest zasilanie (+5V, GND) oraz TX z portu szeregowego. Następnie łączymy się z ESP8266:
Podłączyliśmy się do D6. Zasilanie podłączamy odpowiednio do +5V i GND:
Całość przedstawia się następująco:
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ępu 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:
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:
Po około 30 sekundach od zapisania – sprawdźmy w Devices wynik:
Mamy więc 22,86 μg/m3 cząsteczek PM2,5 μm oraz 32,92 cząsteczek PM10μm.
Uwaga – zauważmy, że nazwy są obecnie wybrane po to aby prezentowały się dobrze do odczytu na stronie WWW ESP8266. Tak więc – PM2.5 poprawnie mówi który to typ, ale w następnych częściach i kolejnych wersjach – będzie się nazywać PM25, bez kropki!
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.