Датчик ZE08-CH2O — это электрохимический сенсор для измерения концентрации формальдегида (HCHO) в воздухе. В отличие от аналоговых версий, многие современные модули (включая те, что продаются как «ZE08-CH2O serial output» или «SCNK-M1 V2») имеют цифровой UART-выход и выдают данные каждую секунду в формате TTL.
В этой статье — пошаговое руководство по подключению такого датчика к микроконтроллеру ESP32, включая защиту от повреждения и рабочий код на Arduino.
ESP32 — это 3.3-вольтовый микроконтроллер, и его GPIO-пины не защищены от 5 В. Датчик ZE08-CH2O работает от 5 В и выдаёт на линию TX именно 5 В TTL-сигнал. Прямое подключение к RX-пину ESP32 может привести к повреждению чипа.
Поэтому между TX датчика и RX ESP32 обязательно нужен преобразователь уровня.
Есть два надёжных способа понизить 5 В до безопасных 3.3 В:
Простой и дешёвый способ. Подходит для UART, так как частота низкая (9600 бод).
Результат: 5 В → ~3.3 В. Работает стабильно для приёма данных.
Более профессиональное решение. Из твоих вариантов:
Вывод: HW-221 (TXS0108E) — лучший выбор, если он у тебя есть.
Каждую секунду датчик отправляет 9-байтовый пакет:
[0] 0xFF [1] 0x17 [2] HCHO_H (старший байт) [3] HCHO_L (младший байт) [4] TEMP_H [5] TEMP_L [6] TVOC_H (может быть 0 в некоторых версиях) [7] TVOC_L [8] Контрольная сумма = XOR байтов 0–7
Концентрация HCHO — в ppb (частях на миллиард). Температура — в десятых долях °C.
#includeHardwareSerial HCHO_Serial(2); // Serial2: RX=16, TX=17 void setup() { Serial.begin(115200); HCHO_Serial.begin(9600, SERIAL_8N1, 16, 17); Serial.println("Ждём данные от ZE08-CH2O..."); } void loop() { if (HCHO_Serial.available() >= 9) { byte data[9]; HCHO_Serial.readBytes(data, 9); if (data[0] == 0xFF && data[1] == 0x17) { byte chk = 0; for (int i = 0; i < 8; i++) chk ^= data[i]; if (chk == data[8]) { uint16_t hcho_ppb = (data[2] << 8) | data[3]; uint16_t temp_raw = (data[4] << 8) | data[5]; float temp_c = temp_raw / 10.0; float hcho_mg_m3 = hcho_ppb * 0.00123; // при 25°C Serial.print("HCHO: "); Serial.print(hcho_ppb); Serial.print(" ppb | "); Serial.print(hcho_mg_m3, 3); Serial.println(" mg/m³"); Serial.print("Temp: "); Serial.print(temp_c); Serial.println(" °C"); Serial.println("-------------------"); } } } delay(100); }
Датчик ZE08-CH2O с UART-выходом — отличный выбор для DIY-систем мониторинга качества воздуха. Главное — не забыть про защиту от 5 В. Используйте либо делитель напряжения, либо, что лучше, модуль вроде HW-221 на TXS0108E. После этого подключение к ESP32 займёт пару минут, а данные будут поступать стабильно.
Удачи в проектах! 🛠️
Внимание: Cтатьи здесь сгенерированны через нейросеть, не правил ошибки, да и не до этого пока. Блог только запустил. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я делал минимум один раз. Сервера стоят, клиенты довольны, дата-центры не горят.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах —
вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии