Skip to Content

Capteur de fumée MEMS Fermion GM-202B avec Arduino

Capteur de fumée MEMS Fermion GM-202B avec Arduino

Le Fermion Smoke Sensor de DFRobot est une petite carte d’extension autour du capteur GM-202B, conçue pour une intégration avec des plateformes microcontrôleurs comme Arduino et ESP32.

Il utilise la technologie des systèmes microélectromécaniques (MEMS) pour offrir une haute sensibilité à la fumée et à l’éthanol dans une plage de 10 à 1000 ppm. Le capteur consomme peu d’énergie (<20mA), répond rapidement et génère peu de chaleur comparé aux capteurs de gaz traditionnels.

Dans ce tutoriel, vous apprendrez à détecter la fumée avec ce capteur. Nous construirons un système d’alarme simple qui fait clignoter une LED ou émettre un buzzer si la concentration de fumée devient trop élevée.

Pièces requises

Vous aurez besoin d’un Fermion Smoke sensor de DFRobot. Pour le microcontrôleur, j’ai utilisé un Arduino Uno pour ce projet, mais tout autre Arduino ou ESP32 conviendra également.

Pour notre système d’alarme, nous aurons aussi besoin d’une LED et d’un buzzer, que vous pouvez trouver sur Amazon. De plus, nous utiliserons un petit écran OLED SSD1306 pour afficher les concentrations de fumée mesurées.

Capteur d’odeur MEMS Fermion

Buzzer passif

Kit Résistance & LED

OLED display

Écran OLED

Arduino

Arduino Uno

USB Data Sync cable Arduino

Câble USB pour Arduino UNO

Dupont wire set

Jeu de fils Dupont

Half_breadboard56a

Plaque d’essai (breadboard)

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Matériel du Fermion Smoke Sensor

Le Fermion Smoke Sensor de DFRobot est une petite carte de détection de gaz conçue pour détecter la fumée (ou l’alcool).

Il est basé sur la puce GM-202B, qui utilise la technologie des systèmes microélectromécaniques (MEMS) pour obtenir un format compact avec une faible consommation d’énergie et une réponse rapide.

La carte mesure environ 13 mm sur 13 mm avec une épaisseur d’environ 2,5 mm. La photo ci-dessous montre la carte avec le capteur GM-202B en haut et un régulateur de tension en dessous :

Fermion Smoke Sensor Board with GM-202B
Carte Fermion Smoke Sensor avec GM-202B

Le module est destiné à une détection qualitative des concentrations de fumée plutôt qu’à une analyse quantitative précise. Notez que DFRobot propose aussi des capteurs calibrés, mais ils sont plus grands et plus coûteux (link).

Caractéristiques électriques et sortie

Le capteur fonctionne avec une tension d’alimentation de 3,3 V à 5 V, ce qui correspond aux niveaux logiques de la plupart des cartes Arduino et ESP32. Lorsqu’il est alimenté, le dispositif consomme moins de 20 mA et génère très peu de chaleur grâce à sa conception MEMS.

La concentration de gaz est représentée par une sortie analogique en tension qui varie proportionnellement à la quantité de fumée détectée dans l’air ambiant. La tension de sortie est comprise entre 0 et VCC.

Plage de détection et sensibilité

Le capteur peut détecter des composés organiques volatils courants (COV) comme l’éthanol ou des produits de combustion comme la fumée dans une plage de 10 ppm à 1000 ppm. La sensibilité est quantifiée par le rapport de résistance en air pur (R0) à la résistance dans une concentration connue (Rs). Comme mentionné, la sortie du capteur n’est pas une valeur calibrée de concentration.

Spécifications environnementales et durée de vie

L’élément de détection est conçu pour fonctionner dans une plage de température ambiante d’environ -10 °C à +50 °C et une humidité relative de 15 % à 90 % (sans condensation). Le fabricant spécifie une durée de vie d’au moins cinq ans lorsque le capteur est utilisé dans des conditions atmosphériques normales sans contamination excessive.

Comme les capteurs réagissent à une large gamme de gaz organiques, des facteurs environnementaux tels que l’humidité, la température et la présence d’autres gaz peuvent également influencer la sortie.

Brochage

Physiquement, la carte expose trois broches pour la connexion : sortie analogique (A), alimentation (VCC) et masse (GND). La photo ci-dessous montre le brochage de la carte :

Pinout of Fermion Smoke Sensor GM-202B Board
Brochage de la carte Fermion Smoke Sensor GM-202B

Schémas

L’image suivante montre le schéma de la carte Fermion Smoke Sensor GM-202B :

Schematics of Fermion Smoke Sensor GM-202B
Schéma du Fermion Smoke Sensor GM-202B (source)

Vous pouvez voir le régulateur de tension, le capteur GM-202B avec la résistance de charge de 4,7 kΩ en sortie VOUT.

Préparation

Le capteur est livré avec un film protecteur qu’il faut retirer. Si vous regardez le dessus du capteur, vous trouverez un film jaune couvrant les trous d’entrée d’air. Utilisez une pince à épiler pour décoller ce film. Les photos ci-dessous montrent le capteur avec le film protecteur, à moitié retiré, puis complètement retiré (de gauche à droite) :

Décollage du film protecteur

Notez que le capteur nécessite une période de chauffe pour atteindre une stabilité opérationnelle. Cela peut prendre plusieurs minutes lors de la première utilisation jusqu’à ce que les mesures se stabilisent. Si vous n’avez pas utilisé le capteur depuis longtemps, il est recommandé de le faire fonctionner entre 48 et 168 heures :

Preheating times for GM-202B Smoke sensor
Temps de rodage pour le capteur GM-202B Smoke (source)

Spécifications techniques

Le tableau suivant résume les spécifications techniques du Fermion Smoke Sensor GM-202B :

Spécification Valeur
Type de capteur Capteur de fumée MEMS
Gaz détecté Fumée (réagit aussi à l’éthanol)
Plage de détection 10 – 1000 ppm
Tension d’alimentation 3,3 V – 5 V
Courant de fonctionnement <20 mA
Signal de sortie Tension analogique
Résistance de charge (RL) 4,7 kΩ
Sensibilité R₀ (dans l’air) / Rₛ (dans 200 ppm d’éthanol) ≥ 3
Température de fonctionnement −10 °C à +50 °C
Humidité de fonctionnement 15 – 90 % HR (sans condensation)
Durée de vie ≥ 5 ans (dans l’air)
Dimensions 13 × 13 × 2,5 mm

Voici un lien vers la fiche technique du capteur GM-202B avec des données techniques supplémentaires :

Capteur Fermion GM-202B versus capteur MQ-2

Une alternative courante au Fermion GM-202B Smoke Sensor est l’ancien capteur MQ-2 de gaz MQ-2. Voici une brève comparaison des deux capteurs.

Technologie de détection et mécanisme

Le capteur GM-202B utilise la technologie MEMS à semi-conducteur à oxyde métallique, où une micro-puissance chauffante et une couche sensible au gaz modifient leur résistance en réponse aux COV et à la fumée, avec une faible consommation et une réponse thermique rapide. La fabrication MEMS permet un élément compact qui atteint rapidement la température de fonctionnement et consomme peu d’énergie pour le chauffage.

En revanche, le MQ-2 utilise un élément de détection en semi-conducteur massif (SnO₂) logé dans un boîtier plus grand en métal ou bakélite. Il détecte les gaz inflammables et la fumée par un changement de résistivité de son matériau chauffé, mais nécessite une puissance de chauffage plus élevée et un temps de préchauffage plus long.

Plage de fonctionnement et sensibilité

La plage de détection du GM-202B est typiquement de 10 à 1000 ppm pour des gaz comme le propane, la vapeur d’éthanol et la fumée, offrant une sensibilité adaptée à la détection de faibles concentrations dans des applications de qualité d’air ou d’alarme. La sensibilité est souvent exprimée par le rapport de résistance R₀/Rₛ ≥ 3 à 200 ppm de gaz test.

En comparaison, le MQ-2 a une plage de détection beaucoup plus large pour les gaz inflammables (≈300–10000 ppm) et un seuil de sensibilité plus élevé (R₀/Rₛ ≥ 5 à 2000 ppm de propane), ce qui le destine à une détection plus large incluant les fuites de gaz combustibles, pas seulement de faibles concentrations de fumée.

Exigences électriques et caractéristiques du chauffage

Une différence pratique clé est la consommation d’énergie. Le chauffage du GM-202B fonctionne à environ 2,5 V avec une consommation ≤50 mW, ce qui maintient la consommation globale basse et un préchauffage rapide.

Le chauffage du MQ-2 fonctionne à environ 5 V avec une consommation pouvant atteindre ≈950 mW, nécessitant donc beaucoup plus d’énergie et un temps de préchauffage important (souvent plusieurs dizaines de minutes à heures avant d’obtenir des mesures stables).

Intégration circuit et sortie

Les deux capteurs produisent une sortie analogique proportionnelle à la concentration de gaz via un diviseur de tension avec une résistance de charge.

Le module GM-202B utilise typiquement une résistance de charge plus petite (≈4,7 kΩ sur les cartes intégrées) et peut s’interfacer directement avec les ADC basse tension des microcontrôleurs comme Arduino ou ESP32 aux niveaux logiques 3,3–5 V.

Les modules MQ-2 incluent souvent un potentiomètre et un comparateur sur la carte pour une sortie numérique à seuil, mais lorsqu’ils sont utilisés avec des entrées ADC, la résistance de charge peut être ≈10 kΩ ou plus. Le MQ-2 fait partie d’un diviseur de tension simple qui nécessite une calibration et souvent une amplification supplémentaire pour des mesures précises.

Taille physique et durée de vie

Physiquement, l’élément MEMS GM-202B est beaucoup plus petit (≈5 × 5 × 1,55 mm sur le capteur nu et ~13 × 13 × 2,5 mm sur la carte) avec une consommation globale plus faible, et généralement une longue durée de vie en air propre (≥5 ans sur les modules).

Le capteur MQ-2 peut être plus grand en raison de son emballage conventionnel et de son assemblage chauffant, et bien qu’il ait aussi une longue durée de vie nominale, sa forte consommation de chauffage et sa structure massive le rendent moins adapté aux conceptions embarquées à faible consommation.

Adaptation à l’application

En raison de sa faible consommation et de sa plage de détection plus restreinte, le GM-202B est plus approprié pour la détection de fumée et la surveillance des COV où de faibles concentrations sont pertinentes et où la consommation est limitée (par exemple, projets microcontrôleurs sur batterie).

Le MQ-2 est mieux adapté à la détection de gaz inflammables et aux environnements où une large plage de détection et une robustesse face à plusieurs types de gaz sont nécessaires (fuites de GPL, alarmes gaz en atelier), au prix d’une consommation plus élevée et d’un long temps de préchauffage.

Dans les deux cas, aucun des capteurs ne fournit une concentration absolue sans calibration. Ils fournissent des variations relatives qui doivent être interprétées par rapport à une base pour chaque application cible.

Connexion du capteur de fumée à l’Arduino UNO

Brancher le capteur à un Arduino UNO est simple. Connectez VCC à 5V (ou 3,3V), GND à la masse et A à l’entrée analogique A0 comme montré ci-dessous :

Connecting Smoke Sensor to Arduino UNO
Connexion du capteur de fumée à l’Arduino UNO

Exemples de code

Lecture de la concentration de fumée

Dans ce premier exemple, nous lisons simplement les valeurs mesurées par le capteur et les affichons dans le moniteur série toutes les secondes :

void setup() {
  Serial.begin(9600);
}

void loop() {
  int val = analogRead(A0);
  Serial.println(val);
  delay(1000);
}

Vous verrez des valeurs entre 0 et 1023, selon la quantité de fumée dans l’environnement.

Si le capteur n’est pas complètement chauffé, vous verrez une séquence de valeurs décroissantes en continu dans le moniteur série. Après plusieurs minutes, les mesures se stabiliseront. Dans mon cas, autour de 135.

Si vous exposez ensuite le capteur à de la fumée (ou de l’alcool), vous verrez une augmentation soudaine de la valeur mesurée :

Comme le capteur n’est pas calibré, vous ne pouvez pas l’utiliser pour mesurer des ppm (parties par million) ou des concentrations en mg/m 3 . Cependant, vous pouvez l’utiliser pour construire une alarme de fumée, ce que nous ferons dans la section suivante.

Alarme de fumée avec LED

Le code suivant implémente une alarme de fumée simple. Il allume une LED si la valeur mesurée dépasse un seuil prédéfini de 140 :

byte sensorPin = A0;
byte ledPin = 13;
int threshold = 140;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int val = analogRead(sensorPin);
  digitalWrite(ledPin, val > threshold ? HIGH: LOW);
  delay(100);
}

J’ai connecté la LED avec une résistance de 220 Ohms au GPIO 13 comme LED d’alarme, comme montré ci-dessous :

Connexion de la LED d’alarme à l’Arduino UNO

Notez que pour un système d’alarme fiable, vous voudrez peut-être ajouter un capteur de température et d’humidité, car les mesures du capteur sont affectées par la température et l’humidité. La figure ci-dessous montre la dépendance de la résistance du capteur, proportionnelle à la tension lue par l’Arduino, en fonction de l’humidité relative :

Caractéristiques typiques température/humidité (source)

Alarme de fumée avec buzzer passif

Au lieu d’une LED, vous pouvez aussi utiliser un buzzer comme signal d’alarme. Dans le code suivant, un buzzer passif est activé si la concentration de fumée mesurée dépasse le seuil :

byte sensorPin = A0;
byte buzzerPin = 11;
int threshold = 140;

void setup() {
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  int val = analogRead(sensorPin);
  if (val > threshold) {
     tone(buzzerPin, 500);
  } else {
    noTone(buzzerPin);
  }
  delay(100);
}

La photo suivante montre comment ajouter le buzzer au circuit. Commencez par connecter la borne négative du buzzer à la masse de l’Arduino (fil noir). Puis connectez la borne positive via une résistance de 100Ω au GPIO 11 (fil rouge) :

Connecting alarm buzzer to Arduino UNO
Connexion du buzzer d’alarme à l’Arduino UNO

Assurez-vous que la polarité du buzzer est correcte et qu’il s’agit d’un buzzer passif connecté à un port GPIO capable de PWM. Pour plus d’informations, consultez le tutoriel Active and Passive Piezo Buzzers with Arduino.

Si vous avez un buzzer actif, vous devez utiliser le code d’alarme LED précédent, car il ne fonctionnera pas correctement avec la commande tone().

Afficher la concentration de fumée sur OLED

Dans ce dernier exemple, nous affichons les valeurs de concentration de fumée mesurées sur un petit écran OLED. Le code affiche « Smoke » et la valeur au centre de l’écran et met à jour la valeur affichée toutes les 100 ms :

#include "Adafruit_SSD1306.h"  // Version 2.5.16

Adafruit_SSD1306 oled(128, 64, &Wire, -1);

void setup() {
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  oled.setTextColor(WHITE, BLACK);
  oled.clearDisplay();
}

void loop() {
  static char text[30];

  int val = analogRead(A0);

  oled.setTextSize(2);
  oled.setCursor(40, 10);  
  oled.print("Smoke");

  sprintf(text, " %d ", val);
  oled.setTextSize(2);
  oled.setCursor(35, 40);
  oled.print(text);

  oled.display();

  delay(100);
}

Notez que vous avez besoin de la bibliothèque Adafruit_SSD1306 pour contrôler l’OLED. Vous pouvez l’installer via le Library Manager comme d’habitude :

Adafruit_SSD1306 library installed in Library Manager
Bibliothèque Adafruit_SSD1306 installée dans le Library Manager

Brancher l’OLED à l’Arduino est simple. Connectez SDA et SCL de l’OLED aux broches A4 et A5 de l’Arduino. Pour l’alimentation : comme l’OLED peut fonctionner en 5V, nous pouvons partager les lignes d’alimentation. Connectez VCC à 5V et GND à la masse. La photo ci-dessous montre le câblage complet :

Connecting OLED and Sensor to Arduino UNO
Connexion de l’OLED et du capteur à l’Arduino UNO

Si vous avez besoin d’aide avec l’OLED, consultez le tutoriel Use SSD1306 I2C OLED Display With Arduino.

Conclusion

Dans ce tutoriel, vous avez appris à utiliser le Fermion Smoke sensor avec un Arduino UNO pour détecter la fumée. Le capteur peut aussi être facilement utilisé avec d’autres microcontrôleurs comme l’ESP32.

Les capteurs de gaz MEMS ont l’avantage d’être petits, de consommer très peu d’énergie (< 20mA) et d’avoir un temps de chauffe court. Cependant, ils restent sensibles à la température ambiante et à l’humidité.

De plus, le Fermion Smoke sensor n’est pas calibré et ne peut donc pas être utilisé directement pour mesurer des concentrations réelles en ppm. En théorie, vous pourriez calibrer le capteur vous-même, mais en pratique cela serait difficile. DFRobot propose aussi des capteurs calibrés, mais ils sont plus grands et plus coûteux (link).

Notez qu’il existe toute une série de capteurs MEMS différents. Pour un aperçu, consultez l’article Review of the DFRobot Fermion MEMS Gas Sensor Series et pour des détails nos articles dédiés :

Si vous avez des questions, n’hésitez pas à les poser dans la section commentaires.

Bon bricolage 😉