W poprzedniej, drugiej części dodaliśmy do naszego czujnika wyświetlacz, oraz dodatkowy czujnik warunków w jakich dokonujemy pomiaru. Pamiętajmy, że przy wilgotności powyżej 70% – pomiary samego SMOGu mogą być zawyżone!
Teraz czas na dodanie ochrony czujnika smogu, oraz zapisanie danych w chmurze.
Czujnik smogu – laserowy – ma ograniczoną żywotność. Zarówno wentylator, ale i dioda nie powinny pracować ciągle – powoduje to ich zużycie i zapyla wnętrze czujnika. Będziemy więc go włączać tylko wtedy, kiedy jest to naprawdę potrzebne – na czas pomiaru. SDS011 obsługuje tryb uśpienia – programowego wyłączenia i jest to oczywiście najlepszy i naturalny sposób jego ochrony. Postanowiłem go nie stosować, ponieważ nie ma jeszcze w ESP Easy 2.0-dev-12 jego obsługi, ale także ponieważ przekaźnik daje możliwość w przyszłości włączenia dodatkowego elementu – ogrzewacza wchodzącego powietrza, tak aby uniknąć błędów pomiaru przy wilgotności > 70%, pomysł na przyszłą modyfikację projektu.
nasz działający czujnik smogu z poprzedniego wpisu, uzupełniony o OLED i BME280– SDS011
przekaźnik – w przykładzie wykorzystuję dedykowany przekaźnik dla Wemos D1 mini, ponieważ pozwala to na zredukowanie potrzebnego miejsca oraz połączeń. Oraz dlatego, że miałem go po prostu :), może to być jednak dowolny przekaźnik aktywowany stanem wysokim 3,3V i zasilany 5V.
dodatkowe kable jumper – czerwony, pomarańczowy
ESP Easy – mamy już zainstalowane na ESP8266, które kontroluje nasz czujnik
Ponownie należy wszystko razem połączyć. Znamy już schemat – zasilanie VCC na czerwonych kablach, niebieski – GND. Tym razem należy nałożyć lub połączyć nasz przekaźnik.
Łączymy zgodnie ze schematem – tym razem – zmieniamy połączenia, ze względu na użycie przez przekaźnik D1. UWAGA – nie łączmy zasilania +5V dopóki nie dokonamy zmian w ESP Easy (poniżej):
Tak prezentuje się nasz nowy układ po złożeniu – konkursu na miss domowej elektroniki by nie wygrało, ale przynajmniej zgadzają się kolory! 😉
Ponieważ mamy dodatkowy element, który pobiera prąd – sprawdźmy ile mA potrzebujemy, aby zasilić działające rozwiązanie:
Rejestrujemy 200mA podczas działania wsystkich elementów i wysyłania danych przez sieć WiFi. 50mA gdy przekaźnik i SDS011 jest wyłączony, a ESP nie nadaje wtedy danych.
Zmiany w konfiguracji ESPEasy:
zmieniamy piny do komunikacji z szyną I2C, oraz ustawiamy stan niski przy uruchomieniu dla przekaźnika (na wszelki wypadek)
w zakładce Tools -> Advanced, włączamy Rules
Zmieniamy port GPIO naszego sensora na GPIO-15 (D8) – jak na schemacie połączenia
Usuwamy informację o pyle zawieszonym z SSD1306, będziemy teraz inaczej wyświetlać te dane (zakładka Devices):
Czas na nowość – konfiguracja Rules na ESP Easy. Jest to między innymi sposób aby wykonywać cykliczne działania, które mogą zależeć od różnych parametrów. Użyjemy ich do:
włączenia po 30 sekundach od startu czujnika
„rozpędzeniu” go przez 120 sekund
dokonania zapisu pomiaru na ekran oraz do chmury – do w tym przykładzie znanego Wam domoticza i podobnie InfluxDB, co wyświetlimy w Grafanie
wyświetlenie na OLED
wyłączenia czujnika i odczekaniu 12 minut (720 sekund)
powtórzenia całego cyklu
Jak? Wpisując ten kod skryptu do Rules:
On System#Boot do //To wydarzy sie po uruchomieniu ESP8266
timerSet,1,30 //Ustaw zegar do pierwszego pomiaru na 30 sekund
endon
On Rules#Timer=1 do //Gdy czas Timer 1 uplynie to:
GPIO,5,1 //Wlacz SDS011
timerSet,2,120 //Poczekaj 120 sekund az SDS011 sie rozkreci
endon
On Rules#Timer=2 do //Gdy czas Timer 2 uplynie to:
SendToHTTP 10.20.30.40,8080,/json.htm?type=command¶m=udevice&idx=11&nvalue=0&svalue=[SDS011#PM25] //Wysylam PM2,5 do Domoticza
SendToHTTP 10.20.30.40,8080,/json.htm?type=command¶m=udevice&idx=12&nvalue=0&svalue=[SDS011#PM10] //Wysylam PM10 do Domoticza
OLED,2,1,PM2.5: [SDS011#PM25] //Wyswietlaj na OLEDzie
OLED,3,1,PM10: [SDS011#PM10] //Wyswietlaj na OLEDzie
GPIO,5,0 //Wylacz SDS011
timerSet,1,720 //Ustaw nastepny pomiar za 720 sekund
endon
Skrypt powinien wyglądać następująco po wpisaniu:
Zauważmy, że linie skryptu będą wyświetlać zmierzone wartości na ekranie OLED – tylko te, które zostaną zmierzone (inaczej przy czasowo wyłączanym – mielibyśmy na ekranie 'nan’).
Teraz należy stworzyć w Domoticzu (polecam wpis o tworzeniu czujników „dummy”) wirtualne sensory – osobno dla PM 2,5 i PM 10. Jako typ – sugeruję „Custom Sensor” z rozwijanej listy. To ich wartości w skrypcie – przykładowe 11 i 12 należy zmienić, podobnie jak adres IP i port domoticza. Uruchamiamy nasz czujnik i obserwujemy po 16 minutach pierwsze dane:
Pozostaje w domoticzu skonfigurować wysyłanie danych – tak jak robiliśmy to we wpisie o InfluxDB i Grafanie. Możemy oczywiście dodać wysyłanie do domoticza w klasyczny sposób danych z czujnika BME280 – ale wtedy nie tak często – najlepiej co pięć minut. Nasz nowy czujnik jest gotowy!