Composants · 7 min de lecture

Capteur de gaz MQ-2 : alarme gaz et fumée avec Arduino

Comment fonctionne le capteur de gaz MQ-2 ? Détection du GPL, du méthane et de la fumée, broches du module, préchauffage, lecture analogique et numérique, calibration de R0, famille MQ, alarme avec ESP32 et Pico.

Le MQ-2 est un capteur de gaz bon marché et très répandu qui détecte les gaz combustibles et la fumée dans l'air. Il réagit au GPL (gaz en bouteille), au propane, au butane, au méthane (gaz naturel), à l'hydrogène, aux vapeurs d'alcool et à la fumée. Dans les projets Arduino, on s'en sert pour réaliser des alarmes de gaz pour la cuisine, des détecteurs de fumée et des indicateurs de qualité de l'air. Dans cet article, tu verras pas à pas ce qu'il y a dans le capteur, comment le câbler correctement, pourquoi le préchauffage est indispensable et comment interpréter les valeurs lues.

Module capteur de gaz MQ-2
Module capteur de gaz MQ-2 : l'élément sensible chauffé se trouve sous la grille métallique ; le module a 4 broches : VCC, GND, DO et AO.

Comment fonctionne le MQ-2 ?

Sous la grille métallique se trouvent un petit élément en céramique recouvert de dioxyde d'étain (SnO₂) et un fil chauffant qui le porte à quelques centaines de degrés. Dans l'air pur, la résistance de l'élément est élevée. Quand un gaz combustible ou de la fumée l'atteint, une réaction chimique à la surface fait baisser la résistance ; plus le gaz est dense, plus la résistance diminue. Le module convertit cette variation de résistance en tension grâce à un pont diviseur : plus il y a de gaz, plus la tension sur la broche AO monte.

CaractéristiqueValeur
Tension d'alimentation5 V
Courant de chauffe~150 mA (800 mW au maximum)
Gaz détectésGPL, propane, butane, méthane, hydrogène, alcool, fumée
Plage de mesure300–10 000 ppm
PréchauffageQuelques minutes à chaque mise sous tension, 24–48 heures à la première utilisation
SortiesAO (analogique), DO (numérique, comparateur LM393)

Broches du module et câblage

Le capteur MQ-2 nu a 6 pattes, mais on utilise généralement un module tout prêt. Le module porte la résistance de charge, un comparateur LM393, un petit potentiomètre pour régler le seuil, une LED d'alimentation et une LED d'alarme. La broche AO fournit une tension proportionnelle à la concentration de gaz, tandis que la broche DO change d'état dès que le niveau de gaz dépasse le seuil réglé avec le potentiomètre.

Broche du moduleRôleArduino Uno
VCCAlimentation (chauffage compris)5V
GNDMasseGND
AOSortie analogique, monte avec le gazA0
DOSortie numérique, LOW quand le seuil est dépasséD2
Recto et verso d'un module capteur MQ
Verso d'un module de la série MQ (à gauche) : comparateur LM393, potentiomètre de seuil bleu, LED POWER et DOUT. Le MQ-135 à droite utilise la même conception de module.
Pour régler le seuil de DO, laisse chauffer le capteur quelques minutes dans l'air pur, puis tourne le potentiomètre jusqu'au point où la LED DOUT vient juste de s'éteindre, et tourne encore un peu. Ainsi, les petites fluctuations ne déclenchent pas l'alarme, alors qu'une vraie hausse de gaz allume la LED immédiatement.

Pourquoi le préchauffage est-il important ?

L'élément sensible ne réagit correctement qu'une fois sa température de fonctionnement atteinte. Dans les premières minutes après la mise sous tension, la valeur de AO démarre haut puis baisse lentement avant de se stabiliser ; les mesures prises pendant ce temps sont trompeuses. C'est pourquoi il est bon de ne pas vérifier l'alarme dans le code pendant les 1 à 3 premières minutes. Si tu utilises un capteur neuf pour la première fois, il est conseillé de le faire fonctionner en continu pendant 24 à 48 heures (rodage, ou burn-in) pour obtenir des valeurs stables. Pendant que le chauffage fonctionne, la grille métallique devient nettement chaude ; c'est normal, mais ne place pas de matériaux inflammables à côté du capteur.

Une alarme gaz et fumée avec Arduino

Le code ci-dessous lit la valeur analogique, l'affiche dans le moniteur série et vérifie aussi la broche DO. Si la valeur analogique dépasse le seuil ou si DO passe à LOW, un buzzer retentit :

Arduino (C++)
1const int AO_PIN = A0;
2const int DO_PIN = 2;
3const int BUZZER = 8;
4const int LIMIT = 400;          // analog eşik (0–1023) / analog threshold
5
6void setup() {
7  Serial.begin(9600);
8  pinMode(DO_PIN, INPUT);
9  pinMode(BUZZER, OUTPUT);
10  delay(60000);                 // 1 dk ön ısıtma / 1 min warm-up
11}
12
13void loop() {
14  int value = analogRead(AO_PIN);
15  bool gas = digitalRead(DO_PIN) == LOW;   // çoğu modülde LOW = gaz / LOW = gas on most modules
16
17  Serial.println(value);
18
19  if (value > LIMIT || gas) {
20    tone(BUZZER, 2000, 300);    // alarm sesi / alarm tone
21  }
22  delay(500);
23}

La valeur 400 n'est pas une règle fixe : la valeur dans l'air pur peut varier entre 100 et 300 selon le capteur, la température et l'humidité. Fais d'abord fonctionner le capteur quelques minutes, relève la valeur dans l'air pur dans le moniteur série, puis place le seuil nettement au-dessus. Pour tester, il suffit d'approcher un instant le gaz d'un briquet du capteur, sans l'allumer ; la valeur monte en quelques secondes.

De la valeur analogique aux ppm : calibration de R0

Sur le module, le capteur forme un pont diviseur avec une résistance de charge (RL, 1 kΩ sur la plupart des modules). À partir de la tension de AO, tu peux calculer la résistance du capteur (Rs). Les courbes de la fiche technique ne donnent pas la concentration de gaz en fonction de Rs directement, mais du rapport Rs/R0 ; R0 est la résistance du capteur dans 1000 ppm d'hydrogène, et dans l'air pur Rs/R0 vaut environ 9,8. On trouve donc R0 en mesurant le capteur dans l'air pur et en divisant par 9,8 :

Arduino (C++)
1const float RL = 1.0;           // yük direnci (kΩ) / load resistor (kΩ)
2const float CLEAN_AIR = 9.8;    // temiz havada Rs/R0 / Rs/R0 in clean air
3float R0;
4
5float readRs() {
6  float v = analogRead(A0) * 5.0 / 1023.0;
7  if (v < 0.01) v = 0.01;       // sıfıra bölmeyi önle / avoid dividing by zero
8  return RL * (5.0 - v) / v;    // bölücüden Rs / Rs from the divider
9}
10
11void setup() {
12  Serial.begin(9600);
13  delay(60000);                 // ön ısıtma / warm-up
14  float sum = 0;
15  for (int i = 0; i < 50; i++) {
16    sum += readRs();
17    delay(100);
18  }
19  R0 = (sum / 50) / CLEAN_AIR;  // temiz havada kalibrasyon / clean-air calibration
20}
21
22void loop() {
23  float ratio = readRs() / R0;  // gaz arttıkça küçülür / falls as gas rises
24  Serial.println(ratio);
25  delay(1000);
26}

Si le rapport tourne autour de 9,8, l'air est pur ; s'il descend sous 1, la concentration de gaz est élevée. Pour convertir ce rapport en ppm, on utilise les courbes logarithmiques de la fiche technique ; des bibliothèques comme MQUnifiedsensor les intègrent déjà. Considère toutefois le résultat comme une approximation : la température, l'humidité et l'âge du capteur influencent la mesure, et comme le MQ-2 réagit à de nombreux gaz à la fois, il ne peut pas savoir avec certitude quel gaz il mesure. Ajouter un DHT11 pour surveiller la température et l'humidité est une bonne idée.

Le MQ-2 est un capteur d'apprentissage et de loisir, pas un détecteur de gaz certifié. Ne l'utilise jamais chez toi comme seule protection contre les fuites de gaz ou l'intoxication au monoxyde de carbone ; utilise pour cela des détecteurs du commerce conformes aux normes (par exemple EN 50194 ou EN 50291). Considère ta propre alarme comme un système complémentaire.

La famille de capteurs MQ : lequel choisir ?

CapteurLe plus sensible àUsage typique
MQ-2GPL, propane, méthane, hydrogène, fuméeAlarme gaz et fumée générale
MQ-3AlcoolÉthylotest
MQ-4Méthane (gaz naturel)Alarme de fuite de gaz naturel
MQ-5GPL, gaz naturelAlarme gaz pour la cuisine
MQ-7Monoxyde de carbone (CO)Surveillance du CO (cycle de chauffe nécessaire)
MQ-9CO et gaz combustiblesAutour des poêles et chaudières
MQ-135Ammoniac, benzène, fumée, NOxQualité de l'air intérieur

Le MQ-2 avec l'ESP32 et le Raspberry Pi Pico

Le chauffage du MQ-2 a besoin de 5 V : branche donc la broche VCC du module sur la broche VIN (5V) de l'ESP32. Mais quand le module est alimenté en 5 V, la sortie AO peut monter jusqu'à 5 V, alors que les entrées analogiques de l'ESP32 et du Pico acceptent au maximum 3,3 V. Place un pont diviseur de 10 kΩ et 20 kΩ entre AO et la broche analogique pour ramener le signal à un niveau sûr. Avec l'ESP32, il est très simple d'envoyer une notification sur ton téléphone quand du gaz est détecté, ou de mettre en marche un ventilateur via un relais. Sur le Raspberry Pi Pico, la même alarme s'écrit ainsi en MicroPython :

MicroPython
1from machine import ADC, Pin
2import time
3
4gas = ADC(26)                  # GP26 (ADC0), AO bölücü üzerinden / AO through a divider
5buzzer = Pin(15, Pin.OUT)
6LIMIT = 30000                  # 0–65535 arası eşik / threshold
7
8time.sleep(60)                 # ön ısıtma / warm-up
9while True:
10    value = gas.read_u16()
11    print(value)
12    buzzer.value(1 if value > LIMIT else 0)
13    time.sleep(0.5)

Idées de projets avec le MQ-2

  • Alarme gaz pour la cuisine : une alarme qui fait sonner un buzzer et allume une LED rouge en cas de fuite de bouteille ou de gaz naturel.
  • Détecteur de fumée : un système qui prévient dans l'atelier en cas de fumée de soudure ou d'odeur de brûlé.
  • Ventilation automatique : un circuit qui met en marche un extracteur via un relais quand le niveau de gaz monte.
  • Alarme flamme et gaz : associe le MQ-2 à un capteur de flamme pour surveiller les deux dangers à la fois.
  • Détecteur ESP32 avec notifications : envoie un message Telegram sur ton téléphone quand du gaz est détecté.
  • Indicateur de qualité de l'air : affiche le rapport mesuré sous forme de graphique sur un écran OLED.

Erreurs fréquentes et solutions

  • L'alarme se déclenche dès la mise sous tension : le capteur n'a pas encore chauffé ; ignore la vérification d'alarme pendant les 1 à 3 premières minutes.
  • La valeur ne change jamais : la broche DO est branchée sur l'entrée analogique au lieu de AO, ou le module ne reçoit pas 5 V.
  • La LED DOUT reste toujours allumée : le seuil du potentiomètre est réglé trop bas ; tourne-le dans l'air pur jusqu'à ce que la LED s'éteigne.
  • Les valeurs dérivent au cours de la journée : la température et l'humidité changent ; redéfinis le seuil dans l'air pur de temps en temps.
  • Sur l'ESP32, la valeur analogique est toujours au maximum : le signal AO en 5 V est branché directement ; utilise un pont diviseur.
  • La batterie se vide vite : le chauffage consomme environ 150 mA en continu ; le MQ-2 n'est pas fait pour fonctionner longtemps sur batterie.

Associer le MQ-2 à un buzzer et une LED est le moyen le plus simple de passer des capteurs à un vrai système d'alerte. Dans l'application BlueGrays, tu trouveras des projets de prise en main du capteur de gaz, une alarme avec capteurs de flamme et de gaz et une alarme de détection de gaz et de fumée avec ESP32 et MQ-2, avec schémas et code.

Questions fréquentes

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

Le MQ-2 est sensible au GPL, au propane, au butane, au méthane (gaz naturel), à l'hydrogène, aux vapeurs d'alcool et à la fumée. Il ne réagit que faiblement au monoxyde de carbone. Comme il réagit à de nombreux gaz à la fois, il ne peut pas, à lui seul, distinguer quel gaz est présent.

Combien de temps le MQ-2 doit-il chauffer ?

À chaque mise sous tension, attends quelques minutes (1 à 3 minutes en pratique) que les mesures se stabilisent. Si tu utilises un capteur neuf pour la première fois, il est conseillé de le faire fonctionner en continu pendant 24 à 48 heures pour obtenir les résultats les plus stables.

MQ-2 ou MQ-4 pour les fuites de gaz naturel ?

Le MQ-2 détecte aussi le méthane, mais il réagit à de nombreux gaz. Pour le gaz naturel (méthane), le MQ-4, plus sélectif, est mieux adapté. Dans tous les cas, ne remplace pas un détecteur de gaz certifié par un capteur de loisir.

Peut-on mesurer le monoxyde de carbone avec le MQ-2 ?

Le MQ-2 ne réagit que faiblement au monoxyde de carbone. Pour le CO, on utilise le MQ-7, dont le chauffage alterne entre une tension haute et une tension basse ; mais pour ta sécurité, utilise impérativement un détecteur de CO conforme à la norme EN 50291.

Est-il normal que le capteur chauffe ?

Oui. Le chauffage interne maintient en permanence l'élément sensible à haute température, c'est pourquoi la grille métallique est nettement chaude au toucher. Tiens le capteur éloigné des matériaux inflammables et ne le touche pas pendant qu'il fonctionne.

Peut-on alimenter le MQ-2 sur batterie ?

Oui, mais pas longtemps : le chauffage consomme environ 150 mA en continu. Une batterie externe de 2000 mAh tient environ 13 heures. Tu peux calculer l'autonomie de ton projet avec l'outil Autonomie batterie ; là où une surveillance continue est nécessaire, utilise un adaptateur secteur.

Voir tous les projets

Apprends pas à pas comment fonctionne le capteur de gaz MQ-2, pourquoi il doit chauffer, comment le brancher sur un Arduino, régler le seuil et réaliser une alarme gaz et fumée avec un buzzer.