Выдыхай, бобёр: как я перестал тупить и собрал монитор CO2, который не врет — Habr

Из песочницы Маркетологи говорят нам: купи увлажнитель, купи очиститель, купи ионизатор. Но никто не говорит про главное — углекислый газ. Ты можешь сидеть в кристально чистой комнате с идеальной влажностью, но если CO2 там зашкаливает за 1500 ppm — твой мозг превращается в хлебушек. Ты устаешь, делаешь баги и хочешь спать. Готовые мониторы стоят от 5 до 15 тысяч рублей. Внутри — датчик за тысячу и три светодиода. Я решил, что переплачивать за пластиковый корпус не буду. Берем паяльник (или просто провода), ESP32 и делаем инструмент, который покажет правду. Почему дешевые датчики — мусор Сначала ликбез. Если вы купили на Алиэкспрессе датчик 5 в 1 за 10 баксов, поздравляю — вас надули. Скорее всего, там стоит электрохимический сенсор, который реагирует на пары спирта, духи и даже лак для волос, но не на CO2. Дыхнули перегаром — уровень вырос. Брызнули дезодорантом — вырос. Это эмуляция, а не измерение. Нам нужен NDIR (недисперсионный инфракрасный) сенсор. Он светит лампочкой сквозь газ и смотрит, сколько света поглотилось. Физику не обманешь. Железо: джентльменский набор MH‑Z19B (или C). Золотой стандарт бюджетных NDIR сенсоров. Стоит около 1500 рублей. Если китайцы прислали вам подделку (а они любят), он не будет калиброваться. Берите в проверенных местах. ESP32 (любая плата разработчика). Почему не Arduino? Потому что нам нужен Wi‑Fi, чтобы слать данные в Home Assistant. SSD1306. Маленький OLED экранчик, чтобы видеть цифры без телефона. Итого бюджет — около 2000–2500 рублей. В 3–4 раза дешевле аналогов. Софт: ESPHome — магия для ленивых Писать на C++ под Arduino IDE — это боль. Забытые точки с запятой, библиотеки, которые конфликтуют. Я использую ESPHome. Это прошивка‑конструктор. Вы пишите YAML‑файл, где говорите системе, что у вас есть датчик на таких‑то пинах и экран на таких‑то. ESPHome сам компилирует прошивку, сам заливает ее по воздуху (OTA) и сам интегрируется в Home Assistant. Вот конфиг, который делает всё: YAML esphome: name: co2-bedroom platform: ESP32 board: nodemcu-32s wifi: ssid: "MyWiFi" password: "SecretPassword" # Включаем логирование по кабелю (для отладки) logger: # Включаем API для Home Assistant api: i2c: sda: 21 scl: 22 uart: rx_pin: 16 tx_pin: 17 baud_rate: 9600 sensor: — platform: mhz19 co2: name: "Bedroom CO2 Value" temperature: name: "Bedroom Temperature" update_interval: 60s automatic_baseline_calibration: false # Важно! Отключаем автокалибровку font: — file: "arial.ttf" id: my_font size: 20 display: — platform: ssd1306_i2c model: "SSD1306 128×64" address: 0x3C lambda: |- it.printf(0, 0, id(my_font), "CO2: %.0f ppm", id(bedroom_co2_value).state); Нюанс, о котором молчат: Калибровка Датчик MH‑Z19 имеет встроенную функцию ABC (Automatic Baseline Calibration). Раз в сутки он берет минимальное значение, которое намерил, и считает его за 400 ppm (чистый уличный воздух). Если вы живете в герметичной квартире и не открываете окна сутками — датчик сойдет с ума и начнет показывать заниженные значения. В конфиге выше я отключил это (automatic_baseline_calibration: false). Раз в месяц я просто выношу датчик на балкон на 20 минут и посылаю ему команду калибровки вручную. Так надежнее. Результаты: ужас на графике Когда я собрал это устройство и оставил на ночь в спальне, я офигел. График в Grafana показал, что при закрытом окне к 3 часам ночи уровень CO2 достигает 2500 ppm. Норма — до 800. 1000–1500 — вялость. Выше 2000 — голова ватная, сон не освежает. Я годами просыпался разбитым, думал на стресс, кофе, магнитные бури. А оказалось, я просто спал в газовой камере. Теперь у меня настроена автоматизация: если CO2 выше 900 — Алиса (или уведомление в телегу) орет, что пора проветрить. А в идеале — нужен бризер, но это уже другая история и другой бюджет. Сборка заняла вечер. Пайка там элементарная — 4 провода для датчика, 4 для экрана. Можно вообще на макетной плате собрать без пайки. Корпус я не делал — примотал синей изолентой к ножке монитора. Киберпанк, который мы заслужили. Не экономьте на воздухе. Это лучшее вложение 2000 рублей в вашу продуктивность. Теги: Source: https://habr.com/ru/articles/970860/