Domácí monitor vzduchu se dvěma čidly CO2, čidlem teploty a vlhkosti, ePaper a odesíláním dat do IoTGuruCloud - to vše s ESP32.
- November 04 2021
- ESP32, ESP8266, NodeMCU , Wemos, RTLDuino...
- 2573x Přečteno
Vytvořil jsem si domů monitor vzduchu, který měří koncentraci CO2 pomocí čidel SCD41 a CozIR-LP a teplotu a vlhkost s SHT40. Data jsou odesílána do The IoTGuruCloud a celé to běží na ESP32.
Celé zařízení je zapájeno na univerzální pájecí desce a jednotlivé komponenty jsou propojeny drátky.
Hlavní deska
Jako hlavní desku jsem si vybral mnou navrženou desku ESP32MiniKit-LP, kterou jsem navrhl jako velmi úspornou. V režimu spánku odebírá pouhách 6 uA.
Modul je založen na ESP32S.
ePaper
Jako ePaper jsem použil tříbarevný o velikosti 4.2" s driverem GxGDEW042Z15. Můj ePaper sloužil jako ecenovka v obchodě - funguje ale výborně i po delší době používání a aktualizaci jedenkrát za 15 minut.
ePaper driver jsem použil ze stránky easyeda od Miraculix200 - https://chiptron.cz/news.php?readmore=1093.
Desek ještě několik mám - stačí mě kontaktovat na chiptron(zavinac)chiptron.cz
ePaper používá SPI sběrnici a je zapojená následovně:
MOSI (23), CLK (18), CS (5), DC (26), RST (15), BUSY (13)
Čidlo teploty a vlhkosti SHT40
Jako čidlo teploty a vlhkosti jsem použil SHT40 od Sensirion na desce od pklosko. Čidlo jsem pájel tady.
Můžete zakoupit už přímo i zapájený modul od laskarduino.
Čidlo je připojeno k ESP32 přes I2C sběrnici - SCL (22), SDA (21).
Čidlo koncentrace CO2 - SCD41
SCD41 funguje je fotoakustickém principu. Čidlo tedy měří "zvuk" v komoře a ten se mění s různou koncentrací CO2. Více podrobností najdete na https://chiptron.cz/articles.php?article_id=294.
Kromě CO2 má v sobě čidlo i teploty a vlhkosti.
Čidlo je připojeno k ESP32 přes I2C sběrnici - SCL (22), SDA (21).
Čidlo koncentrace CozIR-LP
Čidlo CozIR-LP měří koncentraci CO2 a posílá data skrze UART. Detailně jsem se rozepsal o tom čidle v tomto článku https://chiptron.cz/articles.php?article_id=259
CozIR-LP komunikuje skrze UART2 (Serial2) ESP32: RX (16), TX (17)
Napájení desky, nabíjení akumulátoru a měření napětí na akumulátoru
ESP32MiniKit-LP neobsahuje stabilizátor - ten je umístěný na oddělené desce s názvem SolarBatteryCharger.
Tento modul má jako vstup USB-C konektor nebo konektor pro solární panel. Jeho výstup slouží jak k nabíjení baterie (přes nabíjecí obvod) tak i jako stabilizované napájení 3.3V do projektu - jako stabilizátor je použit stabilizátor s velmi nízkou vlastní spotřebou.
Modul má i jeden výstup do AD převodníku a jako vstup může být napětí akumulátoru nebo solárního panelu. Napětí je přivedeno na pin 36 (ADC kanál převodníku ADC1).
Desek ještě několik mám - stačí mě kontaktovat na chiptron(zavinac)chiptron.cz
Kód do ESP32
Kód je vytvořen v jazyce Wiring a studiu Arduino IDE 2.0. Všechna čidla mají podporu v Arduino IDE.
Nejdříve se provede nezbytná inicializace periférií i čidel.
Poté se změří napětí (v mém případě) akumulátoru a vypočítá výsledné napětí akumulátoru - nabíjecí modul obsahuje dělič napětí.
Následuje změření koncentrace CO2 z čidla SCD41, poté i z čidla CozIR-LP. Kód neobsahuje automatickou kalibraci v případě, že by čidlo změřilo hodnotu CO2 menší než 400ppm. Implementace je ale jednoduchá a obě knihovny pro čidla CO2 jí obsahují.
Poté se změří teplota a vlhkost s SHT40 (vlhkost a teplotu pro porovnání měří i SCD41).
Dále se údaje vypíší na ePaper displej, který se následně aktualizuje a poté následuje poslední čast kódu, kde se ESP32 připojí k Wi-Fi, následně i ke službě The Iot Guru Cloud a odešle naměřené údaje.
Poté se ESP32 uspí.
Kód jsem nahrál na github - https://github.com/petus/ESP32_SCD41_CozIR-LP_SHT40_ePaper-home-monitor
Stavba
Jak jsem zmínil na začátku, celý monitor je postaven na univerzálním pájivém plošném spoji a komponenty mezi sebou jsem popropojoval drátkama.
Čidla běží už několik týdnů a hodnoty mezi čidly CO2 jsou velmi podobné. Co jsem ale zjistil je, že čidlo SCD41 má pomalejší ustálení oproti CozIR-LP, na druhou stranu je ale o polovinu levnější a také úspornější.
Měření teploty a vlhkosti čidlem SCD41 je velmi podobné měřeným hodnotám z SHT40.