Маркетологи говорят нам: купи увлажнитель, купи очиститель, купи ионизатор. Но никто не говорит про главное — углекислый газ.

Ты можешь сидеть в кристально чистой комнате с идеальной влажностью, но если CO2 там зашкаливает за 1500 ppm — твой мозг превращается в хлебушек. Ты устаешь, делаешь баги и хочешь спать.

Готовые мониторы стоят от 5 до 15 тысяч рублей. Внутри — датчик за тысячу и три светодиода.

Я решил, что переплачивать за пластиковый корпус не буду. Берем паяльник (или просто провода), ESP32 и делаем инструмент, который покажет правду.

Почему дешевые датчики - мусор

Сначала ликбез. Если вы купили на Алиэкспрессе датчик 5 в 1 за 10 баксов, поздравляю — вас надули. Скорее всего, там стоит электрохимический сенсор, который реагирует на пары спирта, духи и даже лак для волос, но не на CO2.

Дыхнули перегаром — уровень вырос. Брызнули дезодорантом — вырос. Это эмуляция, а не измерение.

Нам нужен NDIR (недисперсионный инфракрасный) сенсор. Он светит лампочкой сквозь газ и смотрит, сколько света поглотилось. Физику не обманешь.

Железо: джентльменский набор

  1. MH‑Z19B (или C). Золотой стандарт бюджетных NDIR сенсоров. Стоит около 1500 рублей. Если китайцы прислали вам подделку (а они любят), он не будет калиброваться. Берите в проверенных местах.

  2. ESP32 (любая плата разработчика). Почему не Arduino? Потому что нам нужен Wi‑Fi, чтобы слать данные в Home Assistant.

  3. 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)


  1. rsashka
    27.11.2025 10:38

    Маркетологи говорят нам: купи увлажнитель, купи очиститель, купи ионизатор. Но никто не говорит про главное — углекислый газ.

    то есть должны говорить - купи бризер? :-)


    1. ihouser
      27.11.2025 10:38

      Сначала датчик. Небольшие деньги, легко впарить. Через месяц, когда созреете - бризер. Через год полноценный рекуператор с ИИ.


      1. mozgoffnet
        27.11.2025 10:38

        потом запрет на газообразование


  1. Vindicar
    27.11.2025 10:38

    Берите в проверенных местах.

    А кого сегодня можно считать проверенным?


  1. nicknov_17
    27.11.2025 10:38

    Ночью Алиса будит - открывай окно!

    2500ррм к утру что-то много.


  1. boingo-00
    27.11.2025 10:38

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


  1. zeblong
    27.11.2025 10:38

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


  1. tortor
    27.11.2025 10:38

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


  1. tklim
    27.11.2025 10:38

    Софт: ESPHome - магия для ленивых

    Писать на C++ под Arduino IDE — это боль. Забытые точки с запятой, библиотеки, которые конфликтуют.

    а вы точно программист ? esphome так-то ардуину под капотом использует.

    1. ESP32 (любая плата разработчика). Почему не Arduino? Потому что нам нужен Wi‑Fi, чтобы слать данные в Home Assistant.

    Ардуино !== "Arduino UNO или любая плата на atmega328p" . "официальные платы с есп32 тоже вполне себе существуют (https://docs.arduino.cc/hardware/nano-esp32/ )

    Нюанс, о котором молчат: Калибровка

    Об этом кричат в любой теме про CO2 - "не берите MH-Z19!!!!111адинадин"

    Корпус я не делал — примотал синей изолентой к ножке монитора. Киберпанк, который мы заслужили.

    Тут очень важно, где датчик размещать. Ножка монитора это похоже место куда идет ваш личный "выхлоп", так что превышение может быть в разы, пока вы за этим понитором находитесь.

    Тоже самое и для спальни - надо ставить +- на высоте кровати. Иначе, при слабом проветривании, CO2 скапливается внизу и датчик, расположенный ближе к полу будет завышать, выше провати - занижать.
    Ну и самое зло - спать на полу.