Маркетологи говорят нам: купи увлажнитель, купи очиститель, купи ионизатор. Но никто не говорит про главное — углекислый газ.
Ты можешь сидеть в кристально чистой комнате с идеальной влажностью, но если 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 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 рублей в вашу продуктивность.
Комментарии (9)

boingo-00
27.11.2025 10:38Многие рассказывают про мониторинг CO2, а как с проветриванием быть? Особенно чтобы стены не сверлить и чтобы по минимуму вмешиваться в конструкцию дома

zeblong
27.11.2025 10:38поделюсь своей болью на этот счет.: у меня тоже есть такие датчики. и еще на scd40. во первых как ни калибруй они все равно со временем начинают показывать каждый свое и где правда только гадать. во вторых что бы алиса на орала мне ночью "открой окно" я поставил на окно привод и оно открывается само НО бывает что датчик снова куда то калибруется (у меня автокалибровка сейчас не отключена хотя я эксперементировал по разному) и в итоге всю с ночь открытое окно - к утру квартира промерзает градуса на 4. Особенно это если на улице еще и погода безветренная. В общем поздравляю - вы в начале долгого пути видимо к бризеру :)

tortor
27.11.2025 10:38Использую монитор Даджет CO2 Monitor, он с NDIR-датчиком, насколько я понимаю. Текущая цена - от 3500 руб, дороже, чем указанный в публикации бюджет самоделки, но все-таки ниже, что озвученный бюджет для готовых мониторов от 5 до 15 тысяч рублей. Через USB-интерфейс он может выдавать данные и "на сторону", если есть интерес к какой-то интеграции, но мне хватает и встроенного LED-"светофора" (пороги сигналов регулируются) - один беглый взгляд и видишь ситуацию с "атмосферой" в комнате. Ну а на LCD и числовой уровень CO2 в ppm показывает.

tklim
27.11.2025 10:38Софт: ESPHome - магия для ленивых
Писать на C++ под Arduino IDE — это боль. Забытые точки с запятой, библиотеки, которые конфликтуют.
а вы точно программист ? esphome так-то ардуину под капотом использует.
ESP32 (любая плата разработчика). Почему не Arduino? Потому что нам нужен Wi‑Fi, чтобы слать данные в Home Assistant.
Ардуино !== "Arduino UNO или любая плата на atmega328p" . "официальные платы с есп32 тоже вполне себе существуют (https://docs.arduino.cc/hardware/nano-esp32/ )
Нюанс, о котором молчат: Калибровка
Об этом кричат в любой теме про CO2 - "не берите MH-Z19!!!!111адинадин"
Корпус я не делал — примотал синей изолентой к ножке монитора. Киберпанк, который мы заслужили.
Тут очень важно, где датчик размещать. Ножка монитора это похоже место куда идет ваш личный "выхлоп", так что превышение может быть в разы, пока вы за этим понитором находитесь.
Тоже самое и для спальни - надо ставить +- на высоте кровати. Иначе, при слабом проветривании, CO2 скапливается внизу и датчик, расположенный ближе к полу будет завышать, выше провати - занижать.
Ну и самое зло - спать на полу.
rsashka
то есть должны говорить - купи бризер? :-)
ihouser
Сначала датчик. Небольшие деньги, легко впарить. Через месяц, когда созреете - бризер. Через год полноценный рекуператор с ИИ.
mozgoffnet
потом запрет на газообразование