- PVSM.RU - https://www.pvsm.ru -
Маркетологи говорят нам: купи увлажнитель, купи очиститель, купи ионизатор. Но никто не говорит про главное — углекислый газ.
Ты можешь сидеть в кристально чистой комнате с идеальной влажностью, но если 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 раза дешевле аналогов.
Писать на 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 128x64"
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 рублей в вашу продуктивность.
Автор: python_developer_33
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy/437640
Ссылки в тексте:
[1] мозг: http://www.braintools.ru
[2] Источник: https://habr.com/ru/articles/970860/?utm_source=habrahabr&utm_medium=rss&utm_campaign=970860
Нажмите здесь для печати.