Skip to Content

Capteur de gaz monoxyde de carbone MEMS Fermion GM-702B avec Arduino

Capteur de gaz monoxyde de carbone MEMS Fermion GM-702B avec Arduino

Le Fermion : capteur de détection de gaz CO MEMS est un capteur compact sur carte d’extension conçu pour détecter le monoxyde de carbone (CO) grâce à la technologie moderne des systèmes microélectromécaniques (MEMS). Il intègre un élément de détection MEMS GM-702B qui réagit aux concentrations de CO dans l’air en fournissant une tension analogique proportionnelle à la présence de gaz.

Le CO est extrêmement toxique et cause environ 400 décès par an aux États-Unis. Les sources courantes incluent un équipement de chauffage mal entretenu ou mal utilisé, des appareils à gaz, des barbecues au charbon de bois et des moteurs en marche dans des espaces confinés. Comme il est indétectable par les sens humains, un détecteur de CO est le seul moyen de détecter sa présence.

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

Pièces requises

Vous aurez besoin d’un capteur CO Fermion de DFRobot. Pour le microcontrôleur, j’ai utilisé un Arduino Uno pour ce projet, mais tout autre Arduino ou ESP32 fonctionnera é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 la valeur mesurée de CO.

Capteur CO 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 capteur de monoxyde de carbone (CO) Fermion

Le capteur de monoxyde de carbone MEMS Fermion est construit autour d’un petit élément de détection MEMS. Cet élément est une structure microélectromécanique recouverte d’un film sensible propriétaire qui modifie ses caractéristiques électriques lorsqu’il est exposé aux molécules de CO.

La carte d’extension inclut des composants passifs de support et fournit un signal de sortie analogique unique. L’alimentation et la masse sont fournies via des niveaux logiques standards 3,3 V/5 V.

Principe de détection

Le cœur de détection utilise la technologie MEMS pour détecter le gaz CO. Cette technologie repose sur l’interaction entre les molécules de CO et une surface chimiquement sensible sur la structure MEMS. En présence de CO, la résistance du matériau sensible change.

Le circuit interne de la carte d’extension convertit ce changement de résistance en une tension analogique proportionnelle sur la broche de sortie. Il n’y a pas de traitement numérique embarqué, donc le signal analogique brut doit être lu et interprété par le microcontrôleur.

Caractéristiques électriques

Le capteur fonctionne avec une tension d’alimentation comprise entre 3,3 V et 5 V. Le courant de fonctionnement typique est faible, de l’ordre de quelques dizaines de milliampères, ce qui permet une utilisation dans des systèmes alimentés par batterie avec une gestion d’énergie appropriée.

La tension de sortie analogique varie avec la concentration de gaz mais n’est pas référencée à des unités calibrées. La sortie doit être échantillonnée via un convertisseur analogique-numérique sur le microcontrôleur hôte.

Comportement du signal et temps de chauffe

Le capteur nécessite une courte période de chauffe après la mise sous tension avant que les mesures ne se stabilisent. Pendant ce temps, l’élément MEMS atteint un équilibre thermique et électrique. Après la chauffe, la tension de sortie varie en fonction des changements de concentration de CO.

Limitations

Le capteur ne comprend pas de compensation embarquée de la température ou de l’humidité. Ces facteurs environnementaux peuvent influencer la sortie analogique, donc des capteurs supplémentaires peuvent être utilisés dans un système nécessitant des mesures plus stables. De plus, comme la sortie n’est pas calibrée, les estimations absolues de concentration de CO nécessitent une calibration externe avec des niveaux de référence connus.

Spécifications techniques

Le tableau suivant résume les spécifications techniques du capteur CO Fermion GM-702B :

Paramètre Spécification
Élément de détection Capteur de gaz MEMS GM-702B
Gaz ciblé Monoxyde de carbone (CO)
Plage de détection 5 ppm à 5000 ppm (typique)
Signal de sortie Tension analogique
Tension d’alimentation 3,3 V à 5 V DC
Courant de fonctionnement < 20 mA (typique)
Type d’interface Broche de sortie analogique unique
Type de réponse Changement de résistance converti en tension
Température de fonctionnement −10 °C à +50 °C
Humidité de fonctionnement 15 % à 90 % HR (sans condensation)
Calibration Aucune calibration d’usine fournie

Brochage

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

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

Schémas

L’image suivante montre le schéma de la carte Fermion CO Gas Sensor GM-702B :

Schematics of Fermion CO Sensor GM-702B
Schéma du capteur CO Fermion GM-702B (source)

Vous pouvez voir le régulateur de tension et la puce capteur GM-702B avec une résistance de charge de 10K à la sortie VOUT.

Préparation

Le capteur est livré avec un film protecteur que vous devez 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 le film. Les photos ci-dessous montrent le capteur avec le film protecteur, à moitié retiré et 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 soient stables. 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 de fumée GM-702B (source)

Spécifications techniques

Le tableau suivant résume les spécifications techniques du capteur CO Fermion GM-702B :

Spécification Détail
Modèle du capteur GM-702B
Gaz détecté Monoxyde de carbone (CO)
Plage de détection ~5 ppm à 5000 ppm CO
Type de sortie Tension analogique (proportionnelle/indicative)
Tension d’alimentation 3,3 V – 5 V DC
Courant de fonctionnement < 20 mA
Sensibilité R₀ (dans l’air) / Rₛ (dans 150 ppm CO) ≥ 3
Température de fonctionnement -10 °C à +50 °C
Humidité de fonctionnement 15 % – 90 % HR (sans condensation)
Temps de chauffe Recommandé ≥ 5 min (plus long après stockage)
Durée de vie ≥ 5 ans (dans l’air)
Dimensions de la carte d’extension ~13×13×2,5 mm (PCB inclus)
Interface 3 broches : A (sortie analogique), VCC, GND
Applications typiques Alarmes de fuite de CO, surveillance environnementale, systèmes de détection de sécurité

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

Capteur CO Fermion GM-702B versus capteur CO MQ-7

Le capteur de monoxyde de carbone MEMS Fermion et le capteur de gaz CO MQ-7 sont tous deux couramment utilisés dans les applications de loisirs pour détecter le monoxyde de carbone, mais ils diffèrent par leur principe de détection, leurs caractéristiques de performance et leurs exigences d’intégration.

Technologie de détection

Le capteur MEMS Fermion utilise un élément de détection microélectromécanique qui réagit à la présence de CO par un changement de ses propriétés électriques. Ce changement est converti sur la carte d’extension en une tension analogique proportionnelle.

Le MQ-7, en revanche, est un capteur à semi-conducteur à oxyde métallique (MOX). Il repose sur une surface chauffée en oxyde d’étain dont la résistance varie lorsque les molécules de CO interagissent avec la couche sensible chauffée. Ce mécanisme signifie que le MQ-7 consomme généralement plus d’énergie en moyenne que le capteur MEMS Fermion.

Alimentation et temps de chauffe

En termes d’alimentation et de comportement au démarrage, le capteur MEMS se stabilise généralement plus rapidement et consomme moins d’énergie car il ne pilote pas un chauffage séparé à fort courant.

Le MQ-7, quant à lui, utilise un cycle périodique de chauffage pour atteindre sa sensibilité et doit être alimenté à des tensions et temps spécifiques pour produire des mesures répétables, ce qui ajoute de la complexité au firmware et augmente la consommation d’énergie.

Sortie

Les deux capteurs fournissent une sortie analogique qui doit être lue par un convertisseur analogique-numérique sur un microcontrôleur comme un Arduino ou un ESP32. Cependant, aucun des deux ne fournit une valeur numérique calibrée de concentration directement.

Sélectivité et stabilité

En termes de sélectivité et de stabilité, le capteur MEMS présente généralement une moindre sensibilité croisée et une meilleure stabilité de base à long terme comparé aux capteurs MOX comme le MQ-7, qui peuvent réagir à plusieurs gaz réducteurs et sont influencés par l’humidité et la température ambiantes.

Résumé

Globalement, le capteur CO MEMS Fermion est mieux adapté aux projets qui valorisent une faible consommation, une réponse rapide et une intégration simple, tandis que le MQ-7 est attractif pour une détection basique du CO à moindre coût mais nécessite un contrôle d’alimentation, une calibration et une compensation environnementale plus rigoureux dans le firmware.

Connexion du capteur CO Fermion à l’Arduino UNO

La connexion du 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 CO à l’Arduino UNO

Exemples de code

Lecture de la concentration de monoxyde de carbone

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 monoxyde de carbone 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. Voir ci-dessous :

Après plusieurs minutes, les mesures se stabiliseront. Dans mon cas, autour de la valeur 130. Vous pouvez tester le capteur en soufflant dessus. 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 concentrations réelles en ppm (parties par million) ou mg/m 3 . Cependant, vous pouvez l’utiliser pour construire une alarme de monoxyde de carbone, ce que nous ferons dans la section suivante.

Alarme de monoxyde de carbone avec LED

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

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

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 pouvez vouloir ajouter un capteur de température et d’humidité, car les mesures du capteur sont affectées par la température et l’humidité. Alternativement, vous pouvez aussi utiliser une fenêtre glissante pour compenser la dérive du capteur due à la température et à l’humidité.

Alarme de monoxyde de carbone avec buzzer passif

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

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

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

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

L’image 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, voir le Active and Passive Piezo Buzzers with Arduino tutoriel.

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().

Affichage de la concentration de monoxyde de carbone sur OLED

Dans ce dernier exemple, nous affichons les valeurs mesurées de concentration de fumée sur un petit écran OLED. Le code affiche « CO » 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(50, 10);  
  oled.print("CO");

  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 Adafruit_SSD1306 bibliothèque pour contrôler l’OLED. Vous pouvez l’installer via le gestionnaire de bibliothèques comme d’habitude :

Adafruit_SSD1306 library installed in Library Manager
Bibliothèque Adafruit_SSD1306 installée dans le gestionnaire de bibliothèques

La connexion de l’OLED à l’Arduino est facile. 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. L’image 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 Use SSD1306 I2C OLED Display With Arduino tutoriel.

Conclusion

Dans ce tutoriel, vous avez appris à utiliser le capteur CO Fermion avec un Arduino UNO pour détecter le monoxyde de carbone. Le capteur peut aussi être facilement utilisé avec d’autres microcontrôleurs comme un 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 sont toujours affectés par la température et l’humidité ambiantes.

De plus, le capteur de monoxyde de carbone Fermion n’est pas calibré et ne peut donc pas être utilisé directement pour mesurer des concentrations réelles en unités ppm.

Notez qu’il existe toute une série de capteurs MEMS différents. Pour un aperçu, voir 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 😉