Подключение датчика газа MQ-2 к ESP32
Датчик горючих газов и дыма
MQ-2 к ESP32 — питание от VIN (5 В), земля и AO на вход АЦП через делитель напряжения. Нагреватель потребляет заметный ток, поэтому питание модуля — отдельная забота.
Схема подключения датчика газа MQ-2 к ESP32
| MQ-2 | ESP32 |
|---|---|
| AO | GPIO34 |
| VCC | VIN |
| GND | GND |
Схема из примера «Датчик газа MQ-2: сигнализация с порогом».
Выводы MQ-2
| Вывод | Назначение |
|---|---|
| AO | аналоговый выход: выше напряжение — больше газа |
| DO | цифровой выход компаратора, низкий при превышении порога |
| VCC | питание нагревателя и платы, 5 В |
| GND | общий провод |
Код для ESP32
// Сигнализация утечки газа на MQ-2.
//
// Датчик греет внутренний нагреватель, и первые минуты его показания
// плавают. Здесь прогрев сокращён до пяти секунд, чтобы было видно
// работу; на настоящем датчике ждут минимум пару минут.
//
// Порогов два: включаем при высоком, выключаем только при заметно более
// низком. Иначе у границы сигнал будет дребезжать от шума АЦП.
//
// Внимание: у модуля на 5 В выход AO доходит до 5 В, а вход ESP32
// терпит 3,3 В. На настоящей плате AO ставят через делитель (например,
// 10 кОм и 20 кОм).
const int GAS = 34;
const int LED = 2;
const int ALARM_ON = 2400;
const int ALARM_OFF = 1800;
const unsigned long WARMUP_MS = 5000;
bool gasAlarm = false;
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
Serial.println("прогрев датчика...");
}
void loop() {
if (millis() < WARMUP_MS) {
delay(200);
return;
}
int level = analogRead(GAS);
if (!gasAlarm && level > ALARM_ON) {
gasAlarm = true;
Serial.println("ГАЗ! превышен порог");
} else if (gasAlarm && level < ALARM_OFF) {
gasAlarm = false;
Serial.println("воздух чистый");
}
digitalWrite(LED, gasAlarm);
Serial.printf("уровень: %d\n", level);
delay(300);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на ESP32
- AO делится до 3,3 В резисторами (например, 10 кОм и 20 кОм): без делителя вход ESP32 выйдет из строя.
- Используйте выводы АЦП1 (GPIO32–39), если в проекте есть Wi‑Fi. Цифровой DO у модуля на 5 В тоже выдаёт 5 В, его нужно делить так же.
В железе
Нагреватель потребляет заметный ток и рассчитан на 5 В: питайте модуль от USB-5 В платы, а не от вывода 3,3 В. Выход AO у такого модуля доходит до 5 В, поэтому для входа ESP32 его нужно пропустить через делитель. Датчик нельзя считать защитным устройством: для настоящей сигнализации утечки газа нужен сертифицированный прибор.
Частые ошибки при подключении к ESP32
- Питание модуля от 3V3: нагреватель не выходит на режим, датчик «слепой».
- DO или AO на GPIO напрямую при питании модуля 5 В: уровень на входе выше допустимого.
- Читать значения сразу после включения: нагреватель ещё холодный, и показания плывут. Подождите прогрева.
- AO напрямую на вход ESP32 при питании 5 В: на выходе может быть больше 3,3 В. Нужен делитель.
- Перевод в ppm по формулам из интернета без калибровки в чистом воздухе: числа получаются красивые, но неверные.
- Порог без гистерезиса: на границе сигнал включается и выключается от шума АЦП.
Ещё по теме
- плата Подключение датчика газа MQ-2 к Arduino
- деталь MQ-2: подключение к ESP32 и Arduino
- калькулятор Делитель напряжения
Другие детали для ESP32
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637MPU6050 (GY-521)Модуль релеWS2812B (NeoPixel)KY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595ИК-приёмник (VS1838B)TFT ST7735 1,8″Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодDS18B20Ползунковый переключательHC-SR501TTP223Датчик влажности почвыLM35Джойстик KY-023DHT11HTU21DSN65HVD230