Датчик ZE08-CH2O — это электрохимический сенсор для измерения концентрации формальдегида (HCHO) в воздухе. В отличие от аналоговых версий, многие современные модули (включая те, что продаются как «ZE08-CH2O serial output» или «SCNK-M1 V2») имеют цифровой UART-выход и выдают данные каждую секунду в формате TTL.
В этой статье — пошаговое руководство по подключению такого датчика к микроконтроллеру ESP32, включая защиту от повреждения и рабочий код на Arduino.
1. Характеристики датчика
- Измеряемое вещество: формальдегид (HCHO)
- Выход: UART (TTL)
- Скорость обмена: 9600 бод, 8N1
- Питание: 5 В (обязательно!)
- Потребляемый ток: до 150 мА
- Формат данных: 9 байт на пакет
- Периодичность: 1 раз в секунду
2. Почему нельзя подключать напрямую к ESP32?
ESP32 — это 3.3-вольтовый микроконтроллер, и его GPIO-пины не защищены от 5 В. Датчик ZE08-CH2O работает от 5 В и выдаёт на линию TX именно 5 В TTL-сигнал. Прямое подключение к RX-пину ESP32 может привести к повреждению чипа.
Поэтому между TX датчика и RX ESP32 обязательно нужен преобразователь уровня.
3. Варианты защиты: делитель или level converter?
Есть два надёжных способа понизить 5 В до безопасных 3.3 В:
Вариант A: Резистивный делитель напряжения
Простой и дешёвый способ. Подходит для UART, так как частота низкая (9600 бод).
- R1 = 10 кОм — между TX датчика и RX ESP32
- R2 = 20 кОм — между RX ESP32 и GND
Результат: 5 В → ~3.3 В. Работает стабильно для приёма данных.
Вариант B: Модуль преобразователя уровня (level converter)
Более профессиональное решение. Из твоих вариантов:
- MH level converter (двунаправленный, на MOSFET) — подходит, но убедись, что он поддерживает 5 В → 3.3 В.
- HW-221 на базе TXS0108E — отлично подходит! Это двунаправленный преобразователь с автоподстройкой направления, отлично работает с UART, I2C и GPIO. Подключи:
- Сторону HV к 5 В и TX датчика
- Сторону LV к 3.3 В и RX ESP32
Вывод: HW-221 (TXS0108E) — лучший выбор, если он у тебя есть.
4. Схема подключения
- Красный провод (VCC) → 5 В
- Чёрный провод (GND) → GND ESP32
- Жёлтый/зелёный (TX) → вход level converter (HV) или через делитель → GPIO16 (RX2)
- Синий/белый (RX, если есть) → можно не подключать (датчик обычно только передаёт)
5. Формат данных
Каждую секунду датчик отправляет 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.
6. Код для ESP32 (Arduino IDE)
#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); }
7. Советы по эксплуатации
- Прогрев: первые 20–30 минут показания нестабильны. Для точности — дайте поработать 1–2 часа.
- Питание: используйте внешний 5 В источник с током ≥ 500 мА.
- Калибровка: датчик частично откалиброван на заводе, но со временем возможен дрейф.
- TVOC: в некоторых дешёвых модулях байты TVOC — мусор. Основывайтесь на HCHO.
Заключение
Датчик ZE08-CH2O с UART-выходом — отличный выбор для DIY-систем мониторинга качества воздуха. Главное — не забыть про защиту от 5 В. Используйте либо делитель напряжения, либо, что лучше, модуль вроде HW-221 на TXS0108E. После этого подключение к ESP32 займёт пару минут, а данные будут поступать стабильно.
Удачи в проектах! 🛠️
Комментарии