Розумний дім #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 размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Arduino SIM800 GPRS HTTP GET запит

Arduino SIM800 GPRS HTTP GET запит

Привіт друзі! Ми з кожним разом знаємо все більш цікаві застосування GSM-модуля SIM800. На цей раз н..

Як звільнити пам'ять Arduino?

Як звільнити пам'ять Arduino?

Програмуючи контролери Arduino ми часто потрапляємо в ситуацію, коли компілятор лається на нестачу п..

Датчик обертання енкодер KY-040

Датчик обертання енкодер KY-040

Енкодер обертання KY-040 - це обертальний датчик, який характеризує ступінь повороту вісі та в якому..

37.93грн.

Гвинт М2,5х14мм нержавійка

Гвинт М2,5х14мм нержавійка

Гвинт з нержавійки з різьбою М2,5 для кріплення елементів любительських проектівДовжина різьби 14 мм..

1.11грн.

Arduino Nano SIM800 SMS команди

Arduino Nano SIM800 SMS команди

Привіт друзі! Ми з кожним разом знаємо все більш цікаві застосування GSM-модуля SIM800. Цього разу я..