#122Intermédiaire

Alarme de détection de gaz/fumée ESP32 MQ-2

Dans ce projet, la détection de gaz combustibles (GPL, méthane, propane) et de fumée est assurée par un module capteur de gaz MQ-2 ; dès la détection, une alarme sonore semblable à une sirène retentit via un buzzer passif. La sortie numérique de seuil (DO) du capteur est connectée au GPIO 4 de l'ESP32 ; quand le gaz ou la fumée dépasse le seuil, DO passe à LOW et l'alarme se déclenche. La sensibilité se règle via le potentiomètre du module. Le buzzer est piloté par `tone()`.

4.7(27)
41 terminé
Alarme de détection de gaz/fumée ESP32 MQ-2
Une fuite de gaz dans la cuisine ou de la fumée dans un coin peut s'aggraver sans que personne ne la remarque : cette petite alarme renifle l'air à ta place. Dès que le capteur de gaz MQ-2 détecte du gaz inflammable ou de la fumée, la LED rouge s'allume et le buzzer joue une sirène qui alterne entre un son grave et un son aigu. Quand l'air redevient sain, la lumière et le son s'arrêtent tout seuls. À la mise sous tension, la LED clignote lentement pendant une minute, le temps que le capteur chauffe, et l'alarme attend jusque-là.

Vidéo

Schéma du circuit

Alarme de détection de gaz/fumée ESP32 MQ-2 - Circuit

Code source

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Alarme de détection de gaz/fumée ESP32 MQ-2
4// ─────────────────────────────────────────
5// Lit la sortie numérique à seuil (DO) du module MQ-2. Quand le gaz ou la
6// fumée dépasse le seuil, la LED d'avertissement s'allume et le buzzer
7// passif joue une sirène alternant entre 800 et 1200 Hz toutes les 0.2 s.
8// Règle le seuil avec le potentiomètre ajustable du module (Arduino Core
9// 3.0+).
10//
11// Broches :
12//   GPIO 4  -> DO du MQ-2 (sortie à seuil numérique)
13//   GPIO 18 -> Patte + du buzzer
14//   GPIO 5  -> LED rouge (avec une résistance de 220 ohm)
15//   MQ-2 VCC -> VCC du MQ-2 -> 5V (VIN), GND -> GND
16
17// Définitions des broches
18const int MQ2_DO_PIN  = 4;    // D0 du MQ-2 (sortie à seuil numérique)
19const int BUZZER_PIN  = 18;   // Buzzer passif
20const int LED_PIN     = 5;    // LED d'avertissement + 220R
21
22// Temps de chauffe (ms) : la résistance du MQ-2 met des minutes à chauffer. Dans Wokwi, 2000
23// suffit.
24const unsigned long WARMUP_MS = 60000;
25bool warmedUp = false;        // La chauffe est-elle terminée
26
27void setup() {
28  pinMode(MQ2_DO_PIN, INPUT);
29  pinMode(BUZZER_PIN, OUTPUT);
30  pinMode(LED_PIN, OUTPUT);
31  digitalWrite(BUZZER_PIN, LOW);
32  digitalWrite(LED_PIN, LOW);
33}
34
35void loop() {
36  // Chauffe : la lecture de DO est ignorée, la LED clignote lentement sans bloquer
37  if (!warmedUp) {
38    if (millis() < WARMUP_MS) {
39      digitalWrite(LED_PIN, (millis() / 500) % 2);   // 0.5 s allumée, 0.5 s éteinte
40      return;
41    }
42    warmedUp = true;
43  }
44
45  // D0 du MQ-2 est normalement HIGH et passe à LOW au-dessus du seuil
46  int gasState = digitalRead(MQ2_DO_PIN);
47
48  if (gasState == LOW) {
49    // Alarme : la LED s'allume, le buzzer joue une sirène à deux tons
50    digitalWrite(LED_PIN, HIGH);
51    tone(BUZZER_PIN, 800);    // Son grave
52    delay(200);
53    tone(BUZZER_PIN, 1200);   // Son aigu
54    delay(200);
55  } else {
56    // Repos : LED et buzzer éteints
57    digitalWrite(LED_PIN, LOW);
58    noTone(BUZZER_PIN);
59    delay(50);
60  }
61}
62

FAQ

Quels gaz le MQ-2 détecte-t-il ?▾

Le MQ-2 est sensible au GPL, au propane, au méthane, à l'hydrogène, aux vapeurs d'alcool et à la fumée. Il ne peut pas distinguer les différents gaz ; il détecte uniquement l'augmentation globale de la densité.

La sortie analogique du MQ-2 peut-elle être connectée directement à l'ESP32 ?▾

Le MQ-2 est alimenté en 5 V et sa sortie analogique peut atteindre 5 V. L'entrée ADC de l'ESP32 n'acceptant pas plus de 3,3 V, il est nécessaire d'utiliser un diviseur de tension (par exemple 10 kΩ + 20 kΩ).

Le capteur affiche une valeur élevée lors de la première mise en marche, pourquoi ?▾

Il faut quelques minutes pour que le chauffage des capteurs MQ atteigne son équilibre ; pendant ce temps, les valeurs affichées sont élevées. Désactiver l'alarme pendant quelques minutes après la mise en marche permet d'éviter les fausses alarmes.

Comment crée-t-on un effet de sirène ?▾

Le buzzer passif est piloté à l'aide de la fonction tone() de manière à alterner rapidement entre deux fréquences différentes (par exemple, 800 Hz et 1 200 Hz). Cette alternance imite le son d'une alarme classique.

Alarme de détection de gaz/fumée ESP32 MQ-2 | BlueGrays