Пришёл датчик ENS160+AHT21 в сборке TZT — отличная штука для домашнего мониторинга воздуха. В этой статье расскажу, что он умеет, как его подключить к ESP32, какой код залить и какие реально бытовые ситуации он «ловит».
Что внутри?
- ENS160 — датчик газов: оценивает качество воздуха на основе летучих органических соединений (VOC) и эквивалентного CO₂ (eCO₂).
- AHT21 — датчик температуры и влажности, нужен для компенсации показаний ENS160 (он чувствителен к окружающим условиям).
Оба датчика работают по шине I²C — удобно, мало проводов.
Что может поймать дома?
- Запах из окна: выхлопы с дороги, особенно в безветренную погоду или при инверсии.
- Разлитый ацетон, спирт, растворитель в гараже или кладовке.
- Горелая пища или запах гари от утюга/техники.
- Повышенный уровень CO₂ от скопления людей (вечеринка, семинар, душная комната).
- Выделения от новых мебели, краски, линолеума (VOC).
ENS160 не показывает состав газов (типа: «это ацетон»), но даёт общую оценку — по шкале от «отлично» до «плохо», а также числа eCO₂ (ppm) и TVOC (ppb).
Подключение к ESP32
Стандартное I²C-подключение:
- VCC → 3.3V (не 5V!)
- GND → GND
- SCL → GPIO22 (по умолчанию)
- SDA → GPIO21 (по умолчанию)
Датчик 3.3В-совместим. Питать от 5V нельзя — спалите.
Потребление
- ENS160: ~45 мА при непрерывной работе, но в режиме измерения ~10–15 мА.
- AHT21: ~0.25 мА.
Если использовать периодические замеры (например, раз в 30 сек), среднее потребление будет около 1–2 мА — нормально для питания от power bank или солнечной панели.
Код для ESP32 (Arduino IDE)
Потребуются библиотеки:
#include <Wire.h>
#include <ENS160.h>
#include <AHT21.h>
ENS160 ens160;
AHT21 aht21;
void setup() {
Serial.begin(115200);
Wire.begin();
if (!aht21.begin()) {
Serial.println("AHT21 не найден!");
while (1);
}
if (!ens160.begin()) {
Serial.println("ENS160 не найден!");
while (1);
}
// Обязательно передаём T и RH для компенсации
ens160.setTempAndHum(25.0, 50.0); // временные значения
}
void loop() {
aht21.read();
float temp = aht21.getTemperature_C();
float hum = aht21.getHumidity_RH();
// Передаём актуальные данные в ENS160
ens160.setTempAndHum(temp, hum);
ens160.read();
Serial.print("T: "); Serial.print(temp, 1);
Serial.print("°C, RH: "); Serial.print(hum, 1);
Serial.print("% | eCO2: "); Serial.print(ens160.CO2);
Serial.print(" ppm, TVOC: "); Serial.print(ens160.TVOC);
Serial.print(" ppb | Air Quality: ");
switch (ens160.AQI) {
case 1: Serial.println("Отлично"); break;
case 2: Serial.println("Хорошо"); break;
case 3: Serial.println("Умеренно"); break;
case 4: Serial.println("Плохо"); break;
case 5: Serial.println("Очень плохо"); break;
default: Serial.println("?");
}
delay(2000);
}
Советы
- Первые 24–48 часов после включения датчик «прогревается» — показания могут быть неточными.
- Размещайте модуль в зоне естественного воздухообмена, но не рядом с окном (сквозняк мешает).
- ENS160 не предназначен для измерения угарного газа (CO) — только eCO₂ и VOC.
Итог
ENS160+AHT21 — отличный стартовый датчик для домашнего IoT-эксперимента с качеством воздуха. Он не заменит профессиональный газоанализатор, но покажет, когда стоит проветрить комнату, проверить химию в кладовке или заподозрить скопление выхлопов с улицы.
Удачного тестирования! Пишите в комменты, какие бытовые «ароматы» поймал ваш ENS160.
Комментарии
Пока нет комментариев. Будьте первым!