Czujnik CO2 na ESP8266 (CP2102) / ESPHome

Czujnik CO2 na ESP8266 (CP2102) / ESPHome

Wzrost CO2 (dwutlenku węgla) w pomieszczeniu w którym przebywamy powoduje brak koncentracji, przygnębienie i spadek wydajności. Tym granicznym poziomem jest stężenie 1500ppm. 

Co jest potrzebne?

Mój czujnik został zbudowany w oparciu o płytkę  ESP8266 (CP2102) dostępny na aliexpress w cenie ok 15 zł (3,50$) oraz sam czujnik MH-Z19B, również na aliexpress w cenie ok 78 zł (17,50$)

Czujnik CO2 na ESP8266 (CP2102) / ESPHome_8

Potrzebne są również przewody (najlepiej female-female) oraz jakiś zasilacz np. od starego telefonu z końcówka micro usb.

Czujnik CO2 na ESP8266 (CP2102) / ESPHome_9 

Sam nie posiadałem przewodów female-female więc przerobiłem moje, ściągając plastikową końcówkę i odcinając piny.

Ja używam ładowarki Koppla z Ikea w cenie 30 zł + kabel micro USB

Czujnik CO2 na ESP8266 (CP2102) / ESPHome_14

Połączenie czujnika i płytki

Na uproszczonym schemacie widać zastosowane przeze mnie połączenie.

Czujnik CO2 na ESP8266 (CP2102) / ESPHome_15

Pin RX płytki to D7, a TX to D6

Czujnik CO2 na ESP8266 (CP2102) / ESPHome_10 Czujnik CO2 na ESP8266 (CP2102) / ESPHome_11

Łączymy je krzyżowo z TX i RX czujnika MH-Z19

Czujnik CO2 na ESP8266 (CP2102) / ESPHome_13 Czujnik CO2 na ESP8266 (CP2102) / ESPHome_12 

Flashowanie ESP8266

  1. Dodajemy repozytorium ESP Home w sekcji Supervisor > Add-on Store naszego Home Assistant. Wklejamy tam link do repo: https://github.com/esphome/hassio kończymy klikając Add. Powinny pojawić się nowe dodatki do instalacji, wybieramy i instalujemy ESP Home stabilny (nie beta, nie dev). 

    Czujnik CO2 na ESP8266 (CP2102) / ESPHome_16

  2. Po ukończonej instalacji uruchamiamy ESP Home

    Czujnik CO2 na ESP8266 (CP2102) / ESPHome_17

  3. Dodajemy nowe urządzenie, wchodząc na panel ESP Home i klikając w plusik.
  4. Name of Node - to nazwa naszego urządzenia
  5. Device type - wybieramy NodeMCU
  6. Wifi SSID - nazwa naszego wifi
  7. Wifi Password - hasło do naszego wifi
  8. Access Password - hasło do naszego urządzenia, wykorzystywane do aktualizacji firmware przez Wifi oraz dostępu do API
  9. Gdy ukończymy wstępna konfigurację, klikamy Validate, jesli wszystko jest ok otwieramy menu klikając na trzy kropki i budujemy firmware klikając Compile

    Czujnik CO2 na ESP8266 (CP2102) / ESPHome_1

  10. Gdy kompilacja dobiegnie końca klikamy Download Binary. Jeśli firmware pobierze się prawidłowo to jest dobrze. Firmware zajmuje ok 390KB. 

    Czujnik CO2 na ESP8266 (CP2102) / ESPHome_2

    W moim przypadku miałem problem z pobraniem. Musiałem wejść przez SAMBA na dysk i pobrać go manualnie. Jeśli ktoś ma podobny problem to najlepiej przeszukać katalog addons w poszukiwaniu folderu .pioenvs. W środku będzie folder nazwany tak samo jak nasze urządzenie z kroku 4, a w tym folderze poszukiwany plik firmware.bin

    Czujnik CO2 na ESP8266 (CP2102) / ESPHome_3 

    Moja ścieżka dostępu może się różnić od standardowej z uwagi na instalację Home Assistant na Linuxie oraz użycie Linuxowego serwera SAMBA zamiast tego z Home Assistant. Przy okazji wyjaśniam że wolę takie rozwiązanie z uwagi na to że w razie awarii HA, addon Samba Share również się nie uruchomi i nie dam rady wgrać backupa.

  11. Teraz nasz firmware należy wgrać na płytkę ESP8266. Użyłem do tego programu ESP Home Flasher, do pobrania z adresu https://github.com/esphome/esphome-flasher/releases

    Należy podłączyć płytkę ESP8266 do komputera kablem USB, w programie wybrać plik binary z firmwarem oraz serial port. Port pewnie będzie jeden do wyboru, jednak jeśli po podłączeniu płytki lista pozostaje pusta najprawdopodobniej w systemie brakuje sterowników. Sterowniki są do pobrania na stronie https://esphome.io/guides/faq.html

    Note: teoretycznie płytkę można flashować z poziomu Home Assistant, wybierając nasz Serial Port zamiast OTA, ten sposób jednak u mnie nie działał. 

  12. Po kliknięciu Flash ESP w logu powinien pojawić się tekst “Done! Flashing is complete!”. Można zamknąc program, w panelu ESP Home w Home Assistant lampka przy naszym urządzeniu powinna zmienić kolor z czerwonego na zielony (online). Urządzenie musi połączyć się z wifi aby przeprowadzić dalszą konfigurację. Jeśli jest jakiś problem z połączeniem proponuję skasować to urządzenie i skonfigurować ponownie zwracając uwagę na literówki w Wifi SSID oraz haśle.

    Czujnik CO2 na ESP8266 (CP2102) / ESPHome_4

  13. Gdy urządzenie jest już online można go flashować przez wifi. Otwieramy panel ESP Home w Home Assistant, klikamy Edit i wprowadzamy nasza konfigurację

    To moja konfiguracja która może być użyta po zmianie nazw urządzeń i IP na własne.

    esphome:
    #Tutaj nazwa naszego urzadzenia, to samo co widac w panelu ESP Home w Home Assistant
      name: esp_mh_z19_co2
      platform: ESP8266
      board: nodemcuv2
     
    substitutions:
      hostname: esp_mh_z19_co2
     
    wifi:
      ssid: !secret wifi_ssid
      password: !secret wifi_password
      manual_ip:
    # Tutaj oczywiscie nasze IP i adres routera
        static_ip: 192.168.1.103
        gateway: 192.168.1.1
        subnet: 255.255.255.0
         
     
    # Enable Web
    web_server:
      port: 80
     
    # Enable logging
    logger:
      level: DEBUG
     
    # Enable Home Assistant API
    api:
      password: !secret esp_password
      services:
        - service: mhz19_calibrate_zero
          then:
            - mhz19.calibrate_zero: mhz19sensor1
    ota:
      safe_mode: True
      password: !secret esp_password
     
    uart:
      rx_pin: D7
      tx_pin: D6
      baud_rate: 9600
     
    switch:
      - platform: template
        name: "MH-Z19 Calibration"
        optimistic: true
        on_turn_on:
          - mhz19.abc_enable: mhz19sensor1
        on_turn_off:
          - mhz19.abc_disable: mhz19sensor1
      - platform: restart
        name: $hostname restart  
     
     
    sensor:
      - platform: mhz19
        co2:
          name: "MH-Z19 CO2 Value"
        temperature:
          name: "MH-Z19 Temperature"
        id: mhz19sensor1
        update_interval: 60s
        automatic_baseline_calibration: true
     
    binary_sensor:
      - platform: status
        name: $hostname status​


    Note: aby w pliku użyć !secret należy wejść do katalogu config naszego homeassistant i w folderze esphome utworzyć plik secrets.yaml a w nim wkleić tekst: <<: !include ../secrets.yaml 
    Pozwala to korzystać z jednego pliku secrets zlokalizowanego w katalogu głównym config.

    Gdy konfiguracja jest gotowa, zawsze uprzednio klikamy Validate i upewniamy się że wszystko jest ok. Klikamy Upload any zbudować i wysłać nowy firmware do urządzenia. Tym razem cały transfer przebiegnie bezprzewodowo. Powinniśmy zacząć otrzymywać Log z czujnika. Jeśli otrzymujemy informacje o błędzie należy sprawdzić kable, połączenie z pinami, poprawność połączenia.

 

Dodanie czujnika do Home Assistant

Gdy nasz customowy firmware jest na urządzeniu, urządzenie jest online i otrzymujemy Log z odczytów, pozostaje tylko dodać czujnik do Home Assistant.

W zakładce Configuration > Integration powinno pojawić się nowo odkryte urządzenie

Czujnik CO2 na ESP8266 (CP2102) / ESPHome_5  

Aby dodać wykres Co2 do panelu w Home Assistent można użyć np: Sensor Card lub History Graph

Czujnik CO2 na ESP8266 (CP2102) / ESPHome_6

Wykresy ustawione mam na cykl 24h, widać na nich że podczas snu stężenie CO2 w sypialni rośnie, a rano po otwarciu okna maleje. 

Czujnik CO2 na ESP8266 (CP2102) / ESPHome_7 

Podsumowanie

Projekt jest stosunkowo prosty do wykonania, dużym atutem jest cena części. Całkowity koszt to poniżej 100zł (bez ładowarki którą pewnie każdy ma w domu np. po starym telefonie). Sklepowe czujniki to koszt kilkukrotnie wyższy. Czujnik może być wykorzystany do stworzenia automatyzacji, która przypomni nam o przewietrzeniu pomieszczenia w którym pracujemy podczas home office. Czujnik kalibruje się automatycznie co 24h, nie wiem jednak na ile dokładne są odczyty gdyz nie posiadam urządzenia porównawczego. Jeśli ktoś czuje się słabo z lutowania, czujnik można kupić z dolutowanymi pinami. Wtedy jednak trudniej będzie zamknąć go w zgrabnym pudełku z uwagi na odstające przewody. 

Co dalej?

Po pierwsze zaprojektować i wydrukować pudełko na płytę i czujnik.

Można stworzyć automatyzację, np odegranie TTS gdy poziom CO2 jest powyżej ustalonego poziomu.
Można dodać do zestawu inny czujnik, np wilgotności lub wyświetlacz LCD.


Przydatne strony:
https://esphome.io/index.htmlhttps://esphome.io/components/sensor/mhz19.html
https://esphome.io/guides/faq.html
https://gadget-freakz.com/build-your-own-diy-air-quality-meter-based-on-the-mh-z19-sensor/
https://diyprojects.io/publish-co2-concentration-mh-z19-sensor-domoticz-arduino-code-compatible-esp32-esp8266/#.Xseadmgzabh
DIY ESPHome Multisensor - Temp, Humidity, RGB LED, Motion and LUX

Chcesz wiedzieć więcej? Dołącz do grupy na FB. Będzie nam też miło jak polubisz Fanpage!

Odkurzacz pionowy bezprzewodowy Roborock H6

Od: 1550 zł 1799 zł | Powiadom gdy cena spadnie

Bardzo dobry odkurzacz w bardzo dobrej cenie - lekki zwrotny, mocny i łatwy w przechowywaniu - ciekawa alternatywa dla Dreame V11/

Dziwi brak reklam? Przeczytaj dlaczego i wesprzyj bloga na  ||