Умный дом #10: Датчик CO₂

Контроль качества воздуха в помещении — один из ключевых элементов системы умного дома. Концентрация углекислого газа напрямую влияет на самочувствие, концентрацию внимания и работоспособность. В этой статье мы рассмотрим, как подключить датчик CO₂ к контроллеру ESP32, обработать данные и интегрировать их в систему умного дома. Материал будет полезен как новичкам, так и опытным разработчикам, которые хотят реализовать автоматизацию мониторинга воздуха.

Список оборудования и компонентов

  • Микроконтроллер ESP32 (поддержка Wi-Fi, возможность интеграции с MQTT/Blynk)
  • Датчик CO₂ (например, MH-Z19B или CCS811)
  • Датчик температуры и влажности (опционально, для комплексного мониторинга)
  • Реле или модуль управления вентиляцией
  • Блок питания 5В (или USB-адаптер)
  • Соединительные провода, макетная плата или готовая плата

Схема подключения и описание принципа работы

В качестве примера возьмём популярный датчик MH-Z19B, который измеряет концентрацию CO₂ методом инфракрасной абсорбции. Он поддерживает UART и PWM интерфейсы. В связке с ESP32 чаще всего используется UART. Принцип работы следующий:

Вывод датчика MH-Z19B Подключение к ESP32
VCC 5V
GND GND
TX GPIO16 (RX)
RX GPIO17 (TX)

Контроллер ESP32 опрашивает датчик и получает значение в ppm (parts per million — частей на миллион). Эти данные можно вывести в Serial Monitor, передать в мобильное приложение или использовать для управления системой вентиляции.

Пример кода


// Пример работы с датчиком MH-Z19B на ESP32
#include 
#include 

MHZ19 myMHZ19;
HardwareSerial mySerial(2); // Используем второй UART

#define RX_PIN 16  // RX ESP32
#define TX_PIN 17  // TX ESP32

unsigned long timer = 0;

void setup() {
  Serial.begin(115200);
  mySerial.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);
  myMHZ19.begin(mySerial);

  Serial.println("MH-Z19B CO2 sensor init...");
}

void loop() {
  if (millis() - timer >= 2000) { // каждые 2 секунды
    int co2 = myMHZ19.getCO2();
    Serial.print("CO2: ");
    Serial.print(co2);
    Serial.println(" ppm");

    // Пример: если CO₂ выше нормы — включить вентиляцию
    if (co2 > 1000) {
      Serial.println("Включаем вентиляцию!");
      // digitalWrite(pinRelay, HIGH);
    } else {
      // digitalWrite(pinRelay, LOW);
    }

    timer = millis();
  }
}

Короткое объяснение кода

В коде используется библиотека MHZ19.h для работы с датчиком MH-Z19B. Через второй аппаратный UART ESP32 считываются данные концентрации CO₂. Каждые 2 секунды контроллер получает показания, выводит их в консоль и сравнивает с порогом (например, 1000 ppm). При превышении значения можно автоматически включать вентиляцию, открывать окна через сервопривод или отправлять уведомления в мобильное приложение.

Применение и расширение проекта

  • Мониторинг качества воздуха в квартире или офисе
  • Автоматическое включение вентиляции или кондиционера
  • Интеграция с системами «умного дома» (Home Assistant, MQTT, Blynk)
  • Отправка уведомлений при превышении пороговых значений
  • Комбинирование с датчиками температуры и влажности для комплексного анализа микроклимата
  • Использование в теплицах и зимних садах для контроля уровня CO₂
  • Создание портативного CO₂-монитора с отображением на OLED-дисплее

Заключение

Использование датчика CO₂ в умном доме позволяет контролировать микроклимат и автоматически поддерживать оптимальные условия для здоровья и комфорта. С помощью ESP32 и датчиков, таких как MH-Z19B, можно построить гибкую систему мониторинга, которая предупредит о повышенной концентрации углекислого газа и поможет вовремя принять меры.

Если вам нужен индивидуальный проект под ваши задачи, мы можем разработать схему, изготовить печатные платы и полностью реализовать решение под ключ. Ознакомьтесь с примерами в нашем портфолио.

<< Проекты << Все товары >> Статьи, уроки >>

Написать отзыв

Примечание: HTML разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Переменный резистор многооборотистый

Переменный резистор многооборотистый

Потенциометр для сверхточной подстройки сопротивления.Мощность 2 ВтУгол вращения 3600°Размеры указан..

73.09грн.

Модуль MOSFET-транзистора N-channel

Модуль MOSFET-транзистора N-channel

Модуль (драйвер) силового MOSFET-транзистора для подключения мощной нагрузки на выход контролле..

48.22грн.

Обмен информацией между контроллерами Arduino Nano по Ethernet

Обмен информацией между контроллерами Arduino Nano по Ethernet

Двухсторонняя связь модулями ENC28J60 между контроллерами Arduino Я покажу здесь решение, казалос..

Модуль расширения входов-выходов 4 реле и 4 DI  I2C

Модуль расширения входов-выходов 4 реле и 4 DI I2C

Интересный модуль расширения 4-х входов и 4 релейных выходов с коммуникацией I2C на основе микросхем..

475.88грн.

Штекер Micro USB 2.0 разборный

Штекер Micro USB 2.0 разборный

Разборный штекер микро-USB с выводами под пайкуЦвет чорный..

12.78грн.