Skip to Content

Capteur de gaz VOC MEMS Fermion GM-502B avec Arduino

Capteur de gaz VOC MEMS Fermion GM-502B avec Arduino

Le capteur de gaz analogique Fermion VOC de DFRobot est un module compact de détection de composés organiques volatils (COV) conçu 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é à une gamme de COV, incluant l’éthanol, le formaldéhyde et le toluène dans une plage approximative de 1 à 500 ppm.

Dans ce tutoriel, vous apprendrez à mesurer les concentrations de COV et à déclencher une alarme sonore ou à faire clignoter une LED si la concentration de COV devient trop élevée.

Pièces requises

Vous aurez besoin d’un capteur de gaz Fermion VOC 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 gaz, nous aurons besoin d’une LED ou d’un buzzer, que vous pouvez trouver sur Amazon. Nous utiliserons aussi un écran OLED pour afficher les valeurs mesurées de COV. J’ai listé ci-dessous le petit OLED SSD1306 128×64 que j’ai utilisé.

Capteur de gaz MEMS Fermion VOC

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 gaz Fermion VOC

Le capteur de gaz analogique Fermion VOC de DFRobot est une carte compacte conçue pour détecter les composés organiques volatils (COV), tels que l’éthanol, le formaldéhyde, le toluène et d’autres.

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

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

Fermion VOC Analog Gas Sensor Board
Carte capteur de gaz analogique Fermion VOC

Le module est destiné à une détection qualitative des concentrations de COV 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é, l’appareil consomme moins de 20 mA et génère très peu d’auto-chauffage grâce à sa conception MEMS.

La concentration de gaz est représentée par une sortie de tension analogique qui varie proportionnellement à la quantité de COV 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 COV courants tels que l’éthanol, le formaldéhyde et le toluène dans une plage de 1 ppm à 500 ppm. La sensibilité est quantifiée par le rapport de la résistance en air pur (R0) à la résistance dans une concentration connue de COV (Rs), avec une spécification typique de R0/Rs ≥ 3 à une concentration d’éthanol de 50 ppm. Comme mentionné précédemment, la sortie du capteur n’est pas une valeur de concentration calibrée.

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 de COV réagissent à une large classe 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 breakout expose trois broches pour la connexion : sortie analogique (A), tension d’alimentation (VCC) et masse (GND). La photo ci-dessous montre le brochage de la carte :

Pinout of VOC Analog Gas Sensor Board
Brochage de la carte capteur de gaz analogique VOC

Schémas

L’image suivante montre le schéma de la carte capteur de gaz Fermion VOC :

Schéma du capteur de gaz analogique Fermion VOC (source)

Vous pouvez voir le régulateur de tension, ainsi que la puce capteur GM-502B avec la résistance de charge de 20K à la sortie VOUT.

Préparation

Le capteur de gaz est livré avec un film protecteur que vous devez retirer. Si vous regardez le dessus du capteur, vous verrez 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 complet, à moitié retiré et complètement retiré :

Peeling of protective film
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 pendant longtemps, il est recommandé de le faire fonctionner pendant 24 à 72 heures :

Preheating times for GM-502B VOC Sensor
Temps de préchauffage pour le capteur VOC GM-502B (source)

Spécifications techniques

Le tableau suivant résume les spécifications techniques du capteur de gaz Fermion VOC :

Paramètre Spécification
Type de capteur Capteur de gaz VOC basé sur MEMS
Gaz ciblés Composés organiques volatils (par ex., éthanol, formaldéhyde, toluène)
Plage de détection Environ 1 ppm à 500 ppm
Type de sortie Sortie de tension analogique
Tension de fonctionnement 3,3 V à 5 V DC
Courant de fonctionnement < 20 mA
Résistance de charge (RL) 20 kΩ (intégrée)
Température de fonctionnement -10 °C à +50 °C
Humidité de fonctionnement 15 % à 90 % HR (sans condensation)
Caractéristique de réponse La tension de sortie augmente avec la concentration de COV
Temps de chauffe Plusieurs minutes (stabilisation initiale requise)
Durée de vie attendue ≥ 5 ans (dans des conditions normales)
Dimensions Environ 13 mm × 13 mm × 2,5 mm (élément capteur)
Broches d’interface VCC, GND, sortie analogique

Voici un lien vers la fiche technique du GM-502B avec plus de données techniques :

Capteur de gaz Fermion VOC versus capteur de gaz MQ-135

Une alternative courante au capteur Fermion VOC est l’ancien capteur de gaz MQ-135. Voici une brève comparaison des deux capteurs.

Technologie de détection et principe

Le capteur Fermion VOC utilise la technologie MEMS (systèmes microélectromécaniques) qui réagit aux composés organiques volatils en modifiant la résistance interne et en produisant une tension analogique proportionnelle. Sa conception est optimisée pour une faible consommation, une taille compacte et une détection qualitative des COV dans la plage 1–500 ppm, avec un auto-chauffage minimal et une récupération rapide.

En revanche, le MQ-135 est un capteur à semi-conducteur à oxyde métallique (MOS) qui intègre une couche chauffée de dioxyde d’étain (SnO₂). Ce capteur présente une large sensibilité croisée à des gaz comme l’ammoniac, le benzène, les composés liés au CO₂ et la fumée. Les capteurs MOS comme le MQ-135 consomment beaucoup plus d’énergie et nécessitent une période de chauffe plus longue avant que les mesures ne se stabilisent.

Conditions de fonctionnement et consommation

Le capteur Fermion VOC fonctionne de 3,3 V à 5 V avec un courant très faible (< 20 mA), ce qui le rend adapté aux systèmes embarqués basse consommation et à la surveillance continue sans chauffage séparé.

Le MQ-135, cependant, fonctionne normalement autour de 5 V et utilise un courant de chauffage important (souvent ~100–200 mA ou plus), ce qui augmente la consommation globale.

Gaz ciblés et sensibilité

Les deux capteurs réagissent aux COV, mais le Fermion est spécifiquement calibré pour détecter les COV typiques d’intérieur comme l’éthanol, le formaldéhyde et le toluène, et il peut fournir une réponse analogique relativement constante dans sa plage spécifiée.

Le MQ-135, en revanche, a une sensibilité large à de nombreux gaz, y compris l’ammoniac, la fumée et divers polluants atmosphériques ; cela peut être un avantage pour une indication générale de la qualité de l’air, mais le manque de sélectivité rend difficile la distinction d’un gaz à un autre ou la calibration pour des concentrations précises.

Calibration et stabilité

Les capteurs MEMS comme le Fermion ont tendance à se stabiliser plus rapidement, avec un temps de rodage minimal, et ils sont moins affectés par la température ambiante car ils ne dépendent pas d’une chambre chauffée.

Les capteurs MQ-135 nécessitent généralement un pré-rodage (souvent 24–48 heures) et un recalibrage régulier pour des résultats stables, et leurs mesures sont fortement influencées par la température et l’humidité.

Connexion du capteur de gaz VOC à 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 VOC Gas Sensor to Arduino UNO
Connexion du capteur de gaz VOC à l’Arduino UNO

Exemples de code

Lecture de la concentration de gaz

Dans ce premier exemple, nous lisons simplement les valeurs mesurées par le capteur de gaz et les affichons sur le moniteur série :

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

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

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

Si le capteur n’est pas complètement chauffé, vous verrez une séquence de valeurs décroissantes en continu sur le moniteur série :

Après plusieurs minutes, les mesures se stabiliseront. Dans mon cas, autour de la valeur 643 :

Si vous exposez ensuite le capteur à un parfum ou à un autre gaz COV, 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 en mg/m 3 de gaz COV. Cependant, vous pouvez l’utiliser pour construire une alarme gaz, ce que nous ferons dans la section suivante.

Alarme gaz avec LED

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

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

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 :

Connecting alarm LED to Arduino Uno
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 de gaz sont affectées par la température et l’humidité. La figure ci-dessous montre la dépendance de la résistance du capteur, qui est proportionnelle à la tension lue par l’Arduino, en fonction de l’humidité relative :

Typical temperature/humidity characteristics
Caractéristiques typiques température/humidité (source)

Alarme gaz 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 valeur mesurée de COV dépasse le seuil :

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

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

Affichage de la concentration de COV sur OLED

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

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

  oled.display();

  delay(100);
}

Notez que vous devrez installer 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

La connexion de 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 to Arduino Uno
Connexion de l’OLED à 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 capteur de gaz Fermion VOC avec un Arduino UNO pour mesurer les gaz composés organiques volatils (COV). 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 restent affectés par la température ambiante et l’humidité.

De plus, le capteur de gaz Fermion VOC utilisé ici n’est pas calibré et ne peut donc pas être utilisé directement pour mesurer des concentrations réelles de COV en unités ppm, par exemple. 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 😉