Если вы живёте в городской квартире — особенно в новостройке у МКАДа с плотно закрывающимися окнами и слабой вентиляцией — уровень углекислого газа (CO₂) может быстро расти. Головная боль, сонливость, снижение концентрации — частые спутники «затхлого» воздуха. Датчик MH-Z19B позволяет точно измерить концентрацию CO₂ и автоматизировать проветривание или включение бризера.
MH-Z19B — это компактный NDIR-датчик (Non-Dispersive Infrared) для измерения концентрации углекислого газа в диапазоне 0–5000 ppm. В отличие от «оценочных» датчиков вроде SGP30 (который даёт eCO₂), MH-Z19B измеряет CO₂ напрямую и точно.
Это один из самых популярных и доступных датчиков для DIY-проектов мониторинга воздуха.
В условиях Москвы у МКАДа:
MH-Z19B поможет понять: «Пора открывать окно?» — объективно, по цифрам.
Он измеряет только углекислый газ (CO₂), а не угарный (CO). Для контроля CO нужны другие сенсоры (электрохимические). MH-Z19B не спасёт от отравления газом — только от «затхлости».
Используем UART-интерфейс (самый надёжный способ).
MH-Z19B работает от 5 В и выдаёт на TxD сигнал 5 В TTL. ESP32 — 3.3-вольтовый и не выдерживает 5 В на входе. Без защиты можно повредить чип.
Результат: 5 В → ~3.3 В (безопасно).
Альтернатива: используйте модуль уровня, например HW-221 (TXS0108E) — он отлично подойдёт.
Пакет: 9 байт
[0] 0xFF [1] 0x86 [2] высокий байт CO₂ [3] низкий байт CO₂ [4] ... (зарезервировано) [8] контрольная сумма
Используем HardwareSerial для надёжного приёма.
#includeHardwareSerial CO2_Serial(2); // RX=16, TX=17 void setup() { Serial.begin(115200); CO2_Serial.begin(9600, SERIAL_8N1, 16, 17); Serial.println("MH-Z19B запущен"); } void loop() { // Запрос измерения byte cmd[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79}; CO2_Serial.write(cmd, 9); delay(100); if (CO2_Serial.available() >= 9) { byte response[9]; CO2_Serial.readBytes(response, 9); if (response[0] == 0xFF && response[1] == 0x86) { // Проверка контрольной суммы byte sum = 0; for (int i = 1; i < 8; i++) sum += response[i]; sum = 255 - sum + 1; if (sum == response[8]) { int co2_ppm = (response[2] << 8) | response[3]; Serial.print("CO2: "); Serial.print(co2_ppm); Serial.println(" ppm"); } } } delay(5000); // Опрос раз в 5 сек }
MH-Z19B поддерживает два типа калибровки:
Чтобы отключить ABC, отправьте команду:
0xFF, 0x01, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86
MH-Z19B — один из лучших вариантов для точного измерения CO₂ в бытовых условиях. Он особенно полезен в городских квартирах с плохой вентиляцией, где «воздух становится тяжёлым» уже через час после закрытия окон. Подключается к ESP32 за 10 минут, работает стабильно годами и даёт объективные данные для автоматизации микроклимата.
Главное — не забудьте про делитель напряжения или level converter, и ваш ESP32 останется цел!
Внимание: Cтатьи здесь сгенерированны через нейросеть, не правил ошибки, да и не до этого пока. Блог только запустил. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я делал минимум один раз. Сервера стоят, клиенты довольны, дата-центры не горят.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах —
вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!