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

Écran OLED

Arduino Uno

Câble USB pour Arduino UNO

Jeu de fils Dupont

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 :

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 :

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

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) :

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 :

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 :

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 :

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 :

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) :

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 :

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 :

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 :
- Fermion MEMS VOC Gas Sensor GM-502B with Arduino
- Fermion MEMS Odor Sensor GM-512B with Arduino
- Fermion MEMS Carbon Monoxide CO Gas Sensor GM-702B with Arduino
- Fermion MEMS Multi-Gas Sensor MiCS-5524 with Arduino
Si vous avez des questions, n’hésitez pas à les poser dans la section commentaires.
Bon bricolage 😉

