Le capteur multi-gaz MEMS Fermion est un module compact de détection de concentration de gaz basé sur le capteur MiCS-5524, conçu pour une intégration avec des microcontrôleurs comme Arduino et ESP32.
Il utilise la technologie de détection MEMS (Micro-Electro-Mechanical Systems) pour détecter plusieurs gaz courants, notamment le monoxyde de carbone (CO), le méthane (CH₄), l’éthanol (C₂H₅OH), le propane (C₃H₈), le butane (C₄H₁₀), l’hydrogène (H₂), le sulfure d’hydrogène (H₂S) et l’ammoniac (NH₃).
Dans ce tutoriel, vous apprendrez comment connecter le capteur multi-gaz MEMS Fermion à un Arduino UNO pour mesurer ces gaz.
Pièces requises
Vous aurez besoin d’un capteur multi-gaz Fermion de DFRobot. Pour le microcontrôleur, j’ai utilisé un Arduino Uno pour ce projet, mais tout autre Arduino ou ESP32 fonctionnera également.

Capteur multi-gaz MEMS Fermion

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 capteur multi-gaz MEMS Fermion MiCS-5524
La carte breakout du capteur multi-gaz MEMS Fermion pour le MiCS-5524 mesure environ 12 mm sur 16 mm et comprend un connecteur à quatre pastilles pour l’alimentation et les lignes de signal.

Les pastilles correspondent à une entrée d’alimentation 5 V, une référence de masse (GND) et une sortie analogique (A0) proportionnelle à la concentration de gaz. La broche enable (EN) permet d’activer ou de désactiver l’alimentation interne du capteur. Cela permet de le mettre en mode basse consommation lorsque la détection continue n’est pas nécessaire.
L’image ci-dessous montre le schéma de la carte breakout du capteur multi-gaz MEMS Fermion :

Caractéristiques électriques et d’alimentation
Électriquement, le SEN0440 est conçu pour fonctionner avec une alimentation régulée en 5 V DC et une dissipation de puissance nominale d’environ 0,45 W.
Bien que l’interface logique du capteur fournisse une tension analogique dans la plage 0–5 V, il est compatible avec des microcontrôleurs et cartes de développement dont les entrées acceptent des niveaux de 3,3 V à 5,5 V, comme de nombreux modèles Arduino et ESP32.
La sortie principale est une tension analogique proportionnelle à la concentration du gaz cible, qui doit être lue via un convertisseur analogique-numérique sur le contrôleur hôte pour un traitement ou une conversion en parties par million (PPM).
Mécanisme de détection des gaz et plage cible
Au cœur du SEN0440 se trouve le MiCS-5524 capteur de gaz résistif MEMS. Cet élément de détection contient une couche semi-conductrice à oxyde métallique dont la résistance varie en présence de certains gaz réducteurs.
Le module est calibré et réglé de manière à ce que les variations de cette résistance soient converties en une sortie de tension analogique, que le code d’exemple fourni peut transformer en concentrations approximatives des gaz courants.
Le capteur permet de détecter le monoxyde de carbone (CO) de 1 ppm à environ 1000 ppm, l’hydrogène (H₂) dans une plage similaire, l’éthanol (C₂H₅OH) de 10 ppm à 500 ppm, et l’ammoniac (NH₃) de 1 ppm à 500 ppm. Le méthane (CH₄) et d’autres hydrocarbures légers comme le propane et le butane sont détectables entre environ 3000 ppm et 15000 ppm. Le graphique suivant montre les caractéristiques de sensibilité aux gaz du capteur MiCS‑5524 pour les différents gaz :

Performance du capteur et limites environnementales
L’élément de détection du SEN0440 nécessite une période de chauffe avant d’obtenir des mesures fiables.
Le module est spécifié pour fonctionner dans une large plage de températures ambiantes allant d’environ −30 °C à 85 °C, et il peut tolérer des niveaux d’humidité relative de 5 % à 95 % sans condensation.
Spécifications techniques
Le tableau suivant résume les spécifications techniques du capteur multi-gaz MEMS Fermion MiCS-5524 :
| Spécification | Détails |
|---|---|
| Modèle du capteur | Capteur de gaz MEMS MiCS-5524 |
| Principe de détection | Détection résistive de gaz par semi-conducteur à oxyde métallique |
| Gaz détectables | CO, H₂, C₂H₅OH, NH₃, CH₄, C₃H₈, C₄H₁₀ (multi-gaz, sélectivité limitée) |
| Plage de concentration des gaz | CO : ~1 ppm–1000 ppm ; H₂ : ~1 ppm–1000 ppm ; Éthanol : ~10 ppm–500 ppm ; NH₃ : ~1 ppm–500 ppm ; hydrocarbures détectables à des ppm plus élevés |
| Type de sortie | Tension analogique proportionnelle à la concentration |
| Plage de tension de sortie | 0 V–5 V (proportionnelle au niveau de gaz) |
| Tension d’alimentation | 5 V DC nominal |
| Temps de chauffe | Quelques dizaines de secondes (typique pour des lectures stables) |
| Température de fonctionnement | −30 °C à +85 °C |
| Humidité de fonctionnement | 5 % à 95 % HR (sans condensation) |
| Consommation électrique typique | ~0,45 W (à 5 V) |
| Compatibilité d’interface | Entrée analogique microcontrôleur compatible 3,3 V–5,5 V |
| Durée de vie | >2 ans |
Voici un lien vers la fiche technique du capteur MiCS-5524 avec des données techniques supplémentaires :
Connexion du capteur multi-gaz MEMS Fermion à Arduino UNO
La connexion du capteur à un Arduino UNO est simple. Connectez VCC au 5V, GND à la masse, A0 à l’entrée analogique A0, et EN au GPIO 10 comme montré ci-dessous :

Installation de la bibliothèque DFRobot_MICS
Nous allons utiliser la bibliothèque DFRobot_MICS pour lire les données du capteur MiCS-5524. Pour l’installer, téléchargez la DFRobot_MICS bibliothèque au format ZIP (DFRobot_MICS-master.zip) sur votre ordinateur.
Puis ouvrez un nouveau Sketch, allez dans Sketch -> Include Library -> Add .ZIP Library … pour installer la bibliothèque ZIP téléchargée (DFRobot_MICS-master.zip) :

Code pour la lecture des concentrations de gaz
Le code suivant montre comment utiliser le capteur multi-gaz MEMS Fermion MiCS-5524 avec une carte Arduino.
Le capteur détecte des gaz tels que le monoxyde de carbone, le méthane, l’éthanol, l’hydrogène, l’ammoniac et le dioxyde d’azote, fournissant leurs concentrations en parties par million (PPM).
Le programme initialise le capteur, effectue une calibration de chauffe, puis lit et affiche en continu les concentrations de gaz via le moniteur série.
// https://github.com/dfrobot/DFRobot_MICS V 1.0.0
// www.makerguides.com
#include "DFRobot_MICS.h"
#define CALIBRATION_TIME 3 // mins
#define ADC_PIN A0
#define POWER_PIN 10
DFRobot_MICS_ADC mics(ADC_PIN, POWER_PIN);
void display(const char* text, float value) {
Serial.print(text);
Serial.print(value, 1);
Serial.println(" PPM");
}
void setup() {
Serial.begin(115200);
while (!mics.begin()) {
Serial.println("Can't find Sensor!");
delay(1000);
}
uint8_t mode = mics.getPowerState();
if (mode == SLEEP_MODE) {
mics.wakeUpMode();
Serial.println("Sensor is awake!");
}
Serial.print("Warming up, do not touch sensor");
while (!mics.warmUpTime(CALIBRATION_TIME)) {
Serial.print(".");
delay(1000);
}
Serial.println("ready!");
}
void loop() {
Serial.println("\nGas concentrations ----------");
display("CO (Carbon Monoxide) : ", mics.getGasData(CO));
display("CH4 (Methane) : ", mics.getGasData(CH4));
display("C2H5OH (Ethanol) : ", mics.getGasData(C2H5OH));
display("H2 (Hydrogen) : ", mics.getGasData(H2));
display("NH3 (Ammonia) : ", mics.getGasData(NH3));
display("NO2 (Nitrogen Dioxide): ", mics.getGasData(NO2));
delay(1000);
mics.sleepMode();
}
Décomposons le code en ses principales parties pour comprendre son fonctionnement.
Importations
Le code commence par inclure la DFRobot_MICS.h bibliothèque, qui fournit les fonctions et définitions nécessaires pour interfacer le capteur MiCS-5524.
#include "DFRobot_MICS.h"
Constantes
Ensuite, plusieurs constantes sont définies. CALIBRATION_TIME spécifie la durée de chauffe du capteur en minutes, essentielle pour des lectures précises. ADC_PIN et POWER_PIN définissent respectivement la broche d’entrée analogique Arduino connectée à la sortie du capteur et la broche numérique contrôlant l’alimentation du capteur.
#define CALIBRATION_TIME 3 // mins #define ADC_PIN A0 #define POWER_PIN 10
Objet capteur
Une instance de la DFRobot_MICS_ADC classe nommée mics est créée, en passant la broche ADC et la broche d’alimentation à son constructeur. Cet objet gère la communication avec le capteur et contrôle son fonctionnement.
DFRobot_MICS_ADC mics(ADC_PIN, POWER_PIN);
Fonction d’affichage
La fonction display() est une aide qui prend un texte descriptif et une valeur flottante de concentration de gaz. Elle affiche le texte suivi de la valeur formatée à une décimale et ajoute l’unité « PPM » sur le moniteur série. Cette fonction simplifie la mise en forme de la sortie dans la boucle principale.
void display(const char* text, float value) {
Serial.print(text);
Serial.print(value, 1);
Serial.println(" PPM");
}
Fonction setup
Dans la fonction setup(), la communication série est initialisée à 115200 bauds pour permettre la sortie des données sur le moniteur série. Le programme tente ensuite d’initialiser le capteur en appelant mics.begin() en boucle jusqu’à succès, affichant un message d’erreur chaque seconde si le capteur n’est pas détecté.
Après une initialisation réussie, l’état d’alimentation du capteur est vérifié. Si le capteur est en mode veille, il est réveillé avec wakeUpMode() et un message de confirmation est affiché.
Le capteur nécessite une période de chauffe pour la calibration afin d’assurer des mesures précises. Le code affiche un message et attend que le temps de chauffe spécifié par CALIBRATION_TIME minutes soit écoulé, affichant un point chaque seconde pour indiquer la progression. Une fois prêt, il affiche une confirmation.
void setup() {
Serial.begin(115200);
while (!mics.begin()) {
Serial.println("Can't find Sensor!");
delay(1000);
}
uint8_t mode = mics.getPowerState();
if (mode == SLEEP_MODE) {
mics.wakeUpMode();
Serial.println("Sensor is awake!");
}
Serial.print("Warming up, do not touch sensor");
while (!mics.warmUpTime(CALIBRATION_TIME)) {
Serial.print(".");
delay(1000);
}
Serial.println("ready!");
}
Fonction loop
La fonction loop() s’exécute en boucle après setup. Elle commence par afficher un en-tête sur le moniteur série pour indiquer le début des lectures de concentration de gaz. Ensuite, elle appelle la fonction display() pour chaque type de gaz supporté par le capteur : monoxyde de carbone (CO), méthane (CH4), éthanol (C2H5OH), hydrogène (H2), ammoniac (NH3) et dioxyde d’azote (NO2). Pour chaque gaz, elle récupère la concentration en PPM via mics.getGasData() avec l’identifiant de gaz correspondant.
Après avoir affiché toutes les concentrations, le programme attend une seconde. Vous pouvez mettre le capteur en mode veille avec mics.sleepMode() pour économiser de l’énergie jusqu’au prochain cycle de lecture.
void loop() {
Serial.println("\nGas concentrations ----------");
display("CO (Carbon Monoxide) : ", mics.getGasData(CO));
display("CH4 (Methane) : ", mics.getGasData(CH4));
display("C2H5OH (Ethanol) : ", mics.getGasData(C2H5OH));
display("H2 (Hydrogen) : ", mics.getGasData(H2));
display("NH3 (Ammonia) : ", mics.getGasData(NH3));
display("NO2 (Nitrogen Dioxide): ", mics.getGasData(NO2));
delay(1000);
// mics.sleepMode();
}
Exemple de sortie
L’exemple suivant montre la sortie sur le moniteur série. Après la chauffe, le code affiche les concentrations de gaz pour un premier échantillon, toutes à 0.
Lors de la deuxième période d’échantillonnage, j’ai vaporisé un nettoyant pour vitres près du capteur et vous pouvez voir les valeurs augmentées pour le méthane et l’ammoniac dans les données du capteur.
Sensor is awake! Warming up, do not touch sensor.....................ready! Gas concentrations ---------- CO (Carbon Monoxide) : 0.0 PPM CH4 (Methane) : 0.0 PPM C2H5OH (Ethanol) : 0.0 PPM H2 (Hydrogen) : 0.0 PPM NH3 (Ammonia) : 0.0 PPM NO2 (Nitrogen Dioxide): 0.0 PPM Gas concentrations ---------- CO (Carbon Monoxide) : 0.0 PPM CH4 (Methane) : 5402.4 PPM C2H5OH (Ethanol) : 0.0 PPM H2 (Hydrogen) : 0.0 PPM NH3 (Ammonia) : 87.7 PPM NO2 (Nitrogen Dioxide): 0.0 PPM
Conclusion
Dans ce tutoriel, vous avez appris à utiliser le capteur multi-gaz MEMS Fermion avec un Arduino UNO pour détecter divers gaz. Le capteur peut également être facilement utilisé avec d’autres microcontrôleurs comme un ESP32.
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 spécifiques, nos articles dédiés :
- Fermion MEMS VOC Gas Sensor GM-502B with Arduino
- Fermion MEMS Smoke Sensor GM-202B with Arduino
- Fermion MEMS Odor Sensor GM-512B with Arduino
- Fermion MEMS Carbon Monoxide CO Gas Sensor GM-702B with Arduino
Si vous avez des questions, n’hésitez pas à les laisser dans la section commentaires.
Bon bricolage 😉

