SDS011, ESP8266, BME280, SSD130 and Wemos Relay Shield - Relay ON

ESP8266 i SMOG część trzecia: ochrona czujnika, wysyłanie danych do własnej chmury

W poprzedniej, drugiej części dodaliśmy do naszego czujnika wyświetlacz, oraz dodatkowy czujnik warunków w jakich dokonujemy pomiaru, ponieważ jak pamiętamy, ż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.

Dlaczego trzeba chronić SMOGU czujnik i czy można to robić lepiej?

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.

Czego będziemy potrzebować?

Sprzęt

  • nasz działający czujnik smogu z poprzedniego wpisu, uzupełniony o OLED i BME280 – przypominam, że w Nettigo jest promocja z kodem DIY_SMOG_15 –  dostaniesz 15% rabatu
  • 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

Software

  • ESP Easy – mamy już zainstalowane na ESP8266, które kontroluje nasz czujnik

Do dzieła!

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):SMOG sensor with relay

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! 😉

SDS011, ESP8266, BME280, SSD130 and Wemos Relay Shield - Relay ON
SDS011, ESP8266, BME280, SSD130 and Wemos Relay Shield

Ponieważ mamy dodatkowy element, który pobiera prąd – sprawdźmy ile mA potrzebujemy, aby zasilić działające rozwiązanie:

ESP and SDS011 - power usage
ESP and SDS011 – power usage

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)

    Setup I2C
    Setup I2C
  • w zakładce Tools -> Advanced, włączamy Rules

    ESP Easy 2.0-dev12-dev - rules
    ESP Easy 2.0-dev12-dev – rules
  • Zmieniamy port GPIO naszego sensora na GPIO-15 (D8) – jak na schemacie połączenia

SDS011 - GPIO-15 (D8)

SDS011 – GPIO-15 (D8)

  • Usuwamy informację o pyle zawieszonym z SSD1306, będziemy teraz inaczej wyświetlać te dane (zakładka Devices):
SSD1306 - change to get new way of data display
SSD1306 – change to get new way of data display

Rules

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:

Skrypt powinien wyglądać następująco po wpisaniu:

Rules: SDS011 with relay
Rules: SDS011 with relay

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’).

SDS011, ESP8266, BME280, SSD130 and Wemos Relay Shield - Relay ON
SDS011, ESP8266, BME280, SSD130 and Wemos Relay Shield – Relay ON

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:

Domoticz PM sensors
Domoticz PM sensors

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!

SMOG data from Domoticz in Grafana
SMOG data from Domoticz in Grafana