Le capteur de formaldéhyde (HCHO) SFA40 de DFRobot est un module compact conçu pour mesurer la concentration de formaldéhyde dans l’air.
Le capteur est basé sur la puce Sensirion SFA40 et fournit des mesures précises dans une plage de 0 à 1000 ppb. La technologie de détection SFA40 est conçue pour une faible sensibilité croisée. Ainsi, des substances courantes comme l’alcool, le parfum ou les vapeurs d’agrumes sont moins susceptibles de provoquer des lectures erronées.
Le module intègre également une compensation environnementale grâce à un capteur de température et d’humidité embarqué, ce qui permet de maintenir des mesures stables et précises malgré les variations des conditions ambiantes.
La carte capteur communique avec les microcontrôleurs via une interface I²C, facilitant son intégration avec des plateformes telles qu’Arduino, ESP32 ou Raspberry Pi.
Dans ce tutoriel, vous apprendrez comment connecter le capteur SFA40 à un Arduino UNO et comment lire les données du capteur.
Pièces requises
Vous aurez besoin d’un capteur Gravity : SFA40 Formaldehyde (HCHO) de DFRobot. Pour le microcontrôleur, j’ai utilisé un Arduino UNO pour ce projet, mais tout autre Arduino ou ESP32 fonctionnera également.

Gravity : SFA40 Formaldehyde (HCHO) Sensor

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 SFA40 HCHO
Le module capteur est basé sur l’ Sensirion SFA40 élément de détection du formaldéhyde. Cet élément utilise une technologie électrochimique pour détecter les molécules de formaldéhyde dans l’air ambiant.
Dans un capteur de gaz électrochimique, une réaction chimique se produit à la surface d’une électrode en présence du gaz cible. Cette réaction génère un petit signal électrique proportionnel à la concentration du gaz. L’électronique du capteur convertit ce signal en une valeur de mesure numérique.
Le système de détection est optimisé spécifiquement pour le formaldéhyde (HCHO). La chimie interne et les structures de filtrage sont conçues pour minimiser les réactions avec d’autres composés organiques volatils. Cette haute sélectivité permet au capteur de distinguer le formaldéhyde de nombreux gaz interférents courants.
Le capteur fournit une sortie entièrement calibrée. La calibration est effectuée en usine et stockée dans l’appareil. L’utilisateur n’a pas besoin de réaliser une calibration supplémentaire en fonctionnement normal.
Plage de mesure et précision
Le capteur SFA40 mesure les concentrations de formaldéhyde dans une plage de 0 à 1000 parties par milliard (ppb). Cette plage couvre les concentrations typiques en intérieur ainsi que les niveaux élevés pouvant survenir dans des environnements mal ventilés ou dans des pièces avec du mobilier et des matériaux de construction neufs.
La valeur de sortie est directement exprimée en parties par milliard, ce qui simplifie le traitement des données sur les microcontrôleurs car aucune conversion ou mise à l’échelle supplémentaire n’est nécessaire.
Caractéristiques électriques
L’élément de détection fonctionne avec une tension d’alimentation comprise entre 1,62 V et 3,6 V. Le module Gravity inclut une électronique supplémentaire permettant une alimentation en 3,3 V ou 5 V lorsqu’il est connecté à des plateformes microcontrôleurs.
La consommation d’énergie est optimisée pour des applications de surveillance continue. Le courant moyen est d’environ 80 µA en mode mesure avec une fréquence d’échantillonnage d’environ 2 Hz. Le courant de pointe peut atteindre jusqu’à 2 mA pendant les cycles de mesure.
Conception physique et intégration du module
L’élément de détection SFA40 a un boîtier très compact d’environ 13 mm × 10 mm × 2,4 mm. Le module Gravity SEN0661 intègre cet élément sur une carte breakout plus grande. La taille de la carte est d’environ 32 mm × 22 mm. Elle inclut la régulation de tension et l’électronique d’interface nécessaires pour les plateformes microcontrôleurs.
Le module fournit également un connecteur standard Gravity 4 broches, ce qui simplifie le câblage et permet une connexion plug-and-play aux cartes de développement. Vous trouverez ci-dessous le brochage du connecteur :

Le capteur contient une membrane de protection ventilée sur la chambre de détection. Cette membrane permet la diffusion des gaz tout en protégeant les éléments internes de la poussière et des contaminants. Ne retirez pas cette membrane et ne l’exposez pas à des solvants organiques !

Conditions d’utilisation environnementales
Le module est conçu pour fonctionner dans une large gamme de conditions environnementales. La plage de température de fonctionnement va de −40 °C à +125 °C. Le capteur peut fonctionner dans des niveaux d’humidité relative entre 0 % et 100 % tant qu’il n’y a pas de condensation. L’élément de détection intègre des algorithmes internes de compensation de température.
Spécifications techniques
Le tableau suivant résume les spécifications techniques du capteur de formaldéhyde (HCHO) SFA40 :
| Paramètre | Spécification |
|---|---|
| Type de capteur | Capteur électrochimique de formaldéhyde (HCHO) |
| Élément de détection | Sensirion SFA40 |
| Plage de mesure | 0 à 1000 ppb (parties par milliard) |
| Limite de détection | < 20 ppb (typique) |
| Précision | ±20 ppb ou ±20 % de la valeur mesurée (typique) |
| Sensibilité croisée à l’éthanol | < 0,3 % |
| Interface | Interface numérique I²C |
| Adresse I²C | 0x5D |
| Tension d’alimentation (capteur) | 1,62 V – 3,6 V |
| Tension d’alimentation (module) | 3,3 V – 5 V |
| Consommation moyenne | ~80 µA |
| Courant de pointe | Jusqu’à ~2 mA pendant la mesure |
| Fréquence de mise à jour des mesures | Jusqu’à ~2 mesures par seconde |
| Température de fonctionnement | −40 °C à +125 °C |
| Humidité de fonctionnement | 0 % – 100 % HR (sans condensation) |
| Dimensions du module | ~32 mm × 22 mm |
| Dimensions du boîtier du capteur | ~13 mm × 10 mm × 2,4 mm |
| Unité de sortie | Concentration de formaldéhyde en ppb |
| Calibration | Calibré en usine |
Installation de la bibliothèque DFRobot_SFA40
Nous allons utiliser la bibliothèque DFRobot_SFA40 pour lire les données du capteur SFA40. Pour l’installer, rendez-vous sur la github repo de la bibliothèque, cliquez sur le bouton vert « <> Code » puis sur « Download ZIP » comme montré ci-dessous :

Cela télécharge la bibliothèque DFRobot_SFA40 sous forme de fichier ZIP (DFRobot_SFA40-master.zip) sur votre ordinateur.
Ensuite, ouvrez un nouveau Sketch, allez dans Sketch -> Include Library -> Add .ZIP Library … pour installer la bibliothèque ZIP téléchargée (DFRobot_SFA40-master.zip) :

Connexion du capteur SFA40 à l’Arduino UNO
Le capteur SFA40 utilise l’interface I2C pour la communication et est facile à connecter. Commencez par relier VCC à 5V et GND à la masse. Puis connectez simplement l’interface I2C : SDA–SDA et SCL–SCL comme indiqué ci-dessous :

Code pour lire les données du capteur SFA40
Le code suivant montre comment interfacer le capteur SFA40 avec une carte Arduino. Le capteur mesure la température, l’humidité et la concentration de formaldéhyde en parties par milliard (ppb). Les relevés sont affichés sur le moniteur série toutes les secondes.
// https://github.com/DFRobot/DFRobot_SFA40 V 1.0.3
// www.makerguides.com
#include "DFRobot_SFA40.h"
DFRobot_SFA40 SFA40;
void display(const char* text, float value, const char* unit) {
Serial.print(text);
Serial.print(value, 1);
Serial.print(" ");
Serial.println(unit);
}
void setup() {
Serial.begin(115200);
while (SFA40.begin() != 0) {
Serial.println("Could not find sensor!");
delay(1000);
}
SFA40.startMeasurement();
}
void loop() {
uint8_t status = SFA40.readMeasurementData();
if (status == 0) {
Serial.println("\n----------------------------");
display("Temperature: ", SFA40.temperatureC, "C");
display("Temperature: ", SFA40.temperatureF, "F");
display("Humidity : ", SFA40.humidity, "%RH");
display("HOCO : ", SFA40.HCHO, "ppb");
}
delay(1000);
}
Importations
Au début, le code inclut la bibliothèque pour le capteur SFA40. Cette bibliothèque contient toutes les fonctions nécessaires pour communiquer avec le capteur et récupérer les données de mesure.
#include "DFRobot_SFA40.h"
Initialisation de l’objet
Ensuite, un objet nommé SFA40 de la classe DFRobot_SFA40 est créé. Cet objet sera utilisé pour interagir avec le capteur tout au long du programme.
DFRobot_SFA40 SFA40;
Fonction d’affichage
La fonction display() est une fonction utilitaire conçue pour afficher les relevés du capteur sur le moniteur série de manière formatée. Elle prend trois paramètres : un label texte, une valeur flottante et une unité. La valeur est affichée avec une décimale.
void display(const char* text, float value, const char* unit) {
Serial.print(text);
Serial.print(value, 1);
Serial.print(" ");
Serial.println(unit);
}
Fonction setup
La fonction setup() initialise la communication série à 115200 bauds pour permettre la sortie des données vers le moniteur série. Elle tente ensuite d’initialiser le capteur en appelant SFA40.begin(). Si le capteur n’est pas détecté, un message d’erreur est affiché toutes les secondes jusqu’à ce que le capteur soit trouvé. Une fois le capteur initialisé avec succès, il démarre le mode de mesure continue avec SFA40.startMeasurement().
void setup() {
Serial.begin(115200);
while (SFA40.begin() != 0) {
Serial.println("Could not find sensor!");
delay(1000);
}
SFA40.startMeasurement();
}
Fonction loop
Dans la fonction loop(), le code lit les dernières données de mesure du capteur en appelant SFA40.readMeasurementData(). Cette fonction retourne un code d’état, où 0 indique une lecture réussie. Si la lecture est réussie, le programme affiche une ligne de séparation puis utilise la fonction display() pour afficher la température en Celsius et Fahrenheit, l’humidité relative et la concentration de formaldéhyde (HCHO) en parties par milliard. Enfin, le programme attend 1 seconde avant de répéter le processus.
void loop() {
uint8_t status = SFA40.readMeasurementData();
if (status == 0) {
Serial.println("\n----------------------------");
display("Temperature: ", SFA40.temperatureC, "C");
display("Temperature: ", SFA40.temperatureF, "F");
display("Humidity : ", SFA40.humidity, "%RH");
display("HOCO : ", SFA40.HCHO, "ppb");
}
delay(1000);
}
Exemple de sortie
L’exemple suivant montre la sortie sur le moniteur série :
---------------------------- Temperature: 22.1 C Temperature: 71.8 F Humidity : 43.2 %RH HOCO : 39.0 ppb
Conclusion
Dans ce tutoriel, vous avez appris à utiliser le capteur de formaldéhyde (HCHO) SFA40 avec un Arduino UNO. Le capteur peut également être facilement utilisé avec d’autres microcontrôleurs comme l’ESP32.
Si vous cherchez d’autres capteurs de gaz, consultez les articles suivants :
- 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
- How to use the MQ-2 Gas Sensor with Arduino and an OLED
- How to use the MQ-4 Methane Gas Sensor With Arduino
- How to use the MQ-7 Gas Sensor with an LCD display and Arduino
- Measure Air Quality with BME680
Si vous avez des questions, n’hésitez pas à les poser dans la section des commentaires.
Bon bricolage 😉

