#122Intermedio

Alarma de detector de gas/humo ESP32 MQ-2

En este proyecto, la detección de gases combustibles (GLP, metano, propano) y humo se realiza mediante un módulo sensor de gas MQ-2; al detectarlos, se emite un sonido de alarma similar a una sirena a través de un zumbador pasivo. La salida digital de umbral (DO) del sensor se conecta al GPIO 4 del ESP32; cuando el gas o el humo superan el umbral, DO pasa a LOW y se activa la alarma. La sensibilidad se ajusta con el potenciómetro del módulo. El zumbador se controla con `tone()`.

4.7(27)
41 completado
Alarma de detector de gas/humo ESP32 MQ-2
Una fuga de gas en la cocina o un poco de humo en una esquina pueden crecer sin que nadie se dé cuenta, así que esta pequeña alarma olfatea por ti. Cuando el sensor de gas MQ-2 detecta gas inflamable o humo en el aire, se enciende el LED rojo y el zumbador suena como una sirena que va de un tono grave a uno agudo. En cuanto el aire se limpia, la luz y el sonido se apagan solos. Al encenderlo, el LED parpadea despacio durante un minuto mientras el sensor se calienta, y la alarma espera hasta entonces.

Video

Diagrama del circuito

Alarma de detector de gas/humo ESP32 MQ-2 - Circuit

Código fuente

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Alarma de detector de gas/humo ESP32 MQ-2
4// ─────────────────────────────────────────
5// Lee la salida digital de umbral (DO) del módulo MQ-2. Cuando el gas o el
6// humo superan el umbral, el LED de aviso se enciende y el zumbador pasivo
7// toca una sirena que alterna entre 800 y 1200 Hz cada 0.2 s. Ajusta el
8// umbral con el trimmer del módulo (Arduino Core 3.0+).
9//
10// Pines:
11//   GPIO 4  -> DO del MQ-2 (salida digital de umbral)
12//   GPIO 18 -> Patilla + del zumbador
13//   GPIO 5  -> LED rojo (con una resistencia de 220 ohmios)
14//   MQ-2 VCC -> VCC del MQ-2 -> 5V (VIN), GND -> GND
15
16// Definición de pines
17const int MQ2_DO_PIN  = 4;    // D0 del MQ-2 (salida digital de umbral)
18const int BUZZER_PIN  = 18;   // Zumbador pasivo
19const int LED_PIN     = 5;    // LED de aviso + 220R
20
21// Tiempo de calentamiento (ms): el calentador del MQ-2 tarda minutos. En Wokwi basta con 2000.
22const unsigned long WARMUP_MS = 60000;
23bool warmedUp = false;        // ¿Terminó el calentamiento?
24
25void setup() {
26  pinMode(MQ2_DO_PIN, INPUT);
27  pinMode(BUZZER_PIN, OUTPUT);
28  pinMode(LED_PIN, OUTPUT);
29  digitalWrite(BUZZER_PIN, LOW);
30  digitalWrite(LED_PIN, LOW);
31}
32
33void loop() {
34  // Calentamiento: se ignora la lectura de DO y el LED parpadea despacio sin bloquear
35  if (!warmedUp) {
36    if (millis() < WARMUP_MS) {
37      digitalWrite(LED_PIN, (millis() / 500) % 2);   // 0.5 s encendido, 0.5 s apagado
38      return;
39    }
40    warmedUp = true;
41  }
42
43  // D0 del MQ-2 está normalmente en HIGH y pasa a LOW por encima del umbral
44  int gasState = digitalRead(MQ2_DO_PIN);
45
46  if (gasState == LOW) {
47    // Alarma: el LED se enciende, el zumbador toca una sirena de dos tonos
48    digitalWrite(LED_PIN, HIGH);
49    tone(BUZZER_PIN, 800);    // Tono grave
50    delay(200);
51    tone(BUZZER_PIN, 1200);   // Tono agudo
52    delay(200);
53  } else {
54    // Reposo: LED y zumbador apagados
55    digitalWrite(LED_PIN, LOW);
56    noTone(BUZZER_PIN);
57    delay(50);
58  }
59}
60

Preguntas frecuentes

¿Qué gases detecta el MQ-2?▾

El MQ-2 es sensible al GLP, el propano, el metano, el hidrógeno, los vapores de alcohol y el humo. No puede distinguir de qué gas se trata; solo detecta el aumento de la densidad total.

¿Se puede conectar la salida analógica del MQ-2 directamente al ESP32?▾

El MQ-2 se alimenta a 5 V y su salida analógica puede alcanzar los 5 V. Dado que la entrada del ADC del ESP32 admite un máximo de 3,3 V, es necesario utilizar un divisor de tensión (por ejemplo, 10 kΩ + 20 kΩ).

El sensor muestra un valor alto al encenderse por primera vez, ¿por qué?▾

El calentador de los sensores MQ tarda unos minutos en estabilizarse; durante ese tiempo, los valores leídos son elevados. Desactivar la alarma durante unos minutos tras el arranque evita las falsas alarmas.

¿Cómo se crea el efecto de sirena?▾

El zumbador pasivo se controla mediante la función tone(), de modo que alterna rápidamente entre dos frecuencias diferentes (por ejemplo, 800 Hz y 1200 Hz). Esta alternancia imita el sonido clásico de una alarma.

Alarma de detector de gas/humo ESP32 MQ-2 | BlueGrays