SOMMAIRE ►
Découvrons comment connecter le capteur CCS811. Le CCS811 est un capteur de qualité d’air qui mesure le dioxyde de carbone équivalent (eCO₂) et les composés organiques volatils totaux (TVOC). Il intègre un microcontrôleur et un capteur MEMS qui chauffe une couche sensible aux gaz, modifiant sa résistance en fonction de la concentration de polluants. Les données sont lues via une interface I²C, ce qui rend son utilisation très simple.
Pour cette activité, nous aurons besoin:
- Arduino Uno / Arduino Nano / Arduino Mega
- capteur de qualité d’air CCS81
- résistances 4,7 kΩ (si le module ne les intègre pas)
- fils de connexion
Capteur de qualité d’air CCS81 datasheet, pinout
Le CCS811 est souvent comparé au SGP30 (également eCO₂/TVOC) et au MH-Z19B (CO₂ réel). Le CCS811 est plus compact et moins coûteux que les capteurs NDIR, mais sa précision est moindre et dépend des conditions environnementales. Il convient bien aux projets éducatifs et à la détection de tendances, mais pas aux mesures scientifiques exigeantes. Il est plus simple à I²C que les capteurs analogiques MQ-3 qui nécessitent un étalonnage.

- Tension d’alimentation : 1,8 – 3,6 V (3,3 V recommandé)
- Consommation : ~20 mA en actif, ~5 µA en veille
- Interface : I²C (adresses 0x5A ou 0x5B selon état de la broche ADDR)
- Mesures : eCO₂ de 400 à 8192 ppm, TVOC de 0 à 1187 ppb
- Précision : dépend de la compensation en température/humidité
- Fréquence d’échantillonnage : modes 1s, 10s, 60s, 250ms (réglable)
- Temps de chauffe : 48 heures pour une stabilisation complète
- Compensation : nécessite une mesure de température et d’humidité externe
- Boîtier : LGA 2,7×4,0 mm (module avec connecteurs)
Le module CCS811 utilise I²C. La connexion dépend de la version du module. La plupart des modules vendus pour Arduino intègrent un régulateur 3,3 V et un convertisseur de niveau, ce qui permet de les alimenter en 5V et de connecter directement SDA/SCL à l’Arduino. Si votre module n’a pas de convertisseur, vous devrez utiliser un diviseur de tension ou un convertisseur de niveau pour les lignes SDA et SCL, car le CCS811 fonctionne en 3,3 V.
Comment brancher capteur CCS81 Arduino

Voici le branchement standard pour un module avec convertisseur (ex : Adafruit) :
- VIN → 5V de l’Arduino
- GND → GND
- SDA → A4 (sur Uno/Nano) ou SDA (sur Mega)
- SCL → A5 (ou SCL)
- WAKE → GND (pour maintenir le capteur actif)
- INT → facultatif (broche d’interruption)
Si votre module ne possède pas de convertisseur, alimentez-le en 3,3 V de carte l’Arduino (broche 3.3V) et connectez SDA/SCL directement (car l’Arduino en 3,3 V n’est pas détruit par des signaux 5V, mais pour une sécurité absolue, utilisez un convertisseur). Il est conseillé d’ajouter des résistances de tirage de 4,7 kΩ sur SDA et SCL si le module ne les inclut pas.
Programme Arduino pour le capteur CCS81
#include "Wire.h" #include "Adafruit_CCS811.h" Adafruit_CCS811 ccs; void setup() { Serial.begin(9600); Serial.println("Test CCS811"); if (!ccs.begin()) { Serial.println("Erreur d'initialisation ! Vérifiez le câblage."); while (1); } // Définir le mode de mesure : 1 seconde ccs.setDriveMode(CCS811_DRIVE_MODE_1SEC); Serial.println("Capteur prêt. Les 20 premières minutes peuvent être instables."); } void loop() { if (ccs.available()) { if (!ccs.readData()) { float eCO2 = ccs.geteCO2(); float TVOC = ccs.getTVOC(); Serial.print("eCO₂ : "); Serial.print(eCO2); Serial.print(" ppm\tTVOC : "); Serial.print(TVOC); Serial.println(" ppb"); // Indication simplifiée de la qualité de l'air if (eCO2 > 1000) { Serial.println("Air vicié ! Aérez la pièce."); } else if (eCO2 > 600) { Serial.println("Air correct, mais une aération serait bénéfique."); } else { Serial.println("Air frais."); } } else { Serial.println("Erreur de lecture !"); } } delay(1000); }
Explication du code pour le capteur de pH (pH-mètre) :
- La bibliothèque Adafruit_CCS811 simplifie la communication I²C et la gestion des modes.
ccs.begin()initialise le capteur à l’adresse 0x5A par défaut (ou 0x5B si la broche ADDR est reliée à VCC).setDriveMode(CCS811_DRIVE_MODE_1SEC)configure une mesure chaque seconde (d’autres modes existent pour économiser l’énergie).ccs.available()vérifie si des nouvelles données sont prêtes.readData()lit les données ; si elle renvoie faux, une erreur est survenue (capteur non prêt, thermocouple ouvert, etc.).geteCO2()etgetTVOC()retournent les valeurs en ppm et ppb.
Erreurs fréquentes et solutions
- Le capteur n’est pas détecté (échec de l’initialisation) : vérifiez le câblage (SDA, SCL, alimentation). Assurez-vous que les résistances de tirage sont présentes. Utilisez un scanner I²C pour confirmer l’adresse (0x5A ou 0x5B).
- Les valeurs restent à 400 ppm eCO₂ et 0 ppb TVOC : le capteur est en mode veille. Assurez-vous que la broche WAKE est reliée à GND pour le maintenir actif.
- Lectures instables ou très élevées : le capteur est sensible aux composés volatils (alcool, parfums, vapeurs de solvants). Éloignez-le de ces sources et aérez la pièce. Un temps de chauffe de 48 heures est nécessaire pour des mesures stables.
- Erreur de lecture retournée par readData() : cela peut se produire si le capteur est en cours de chauffe ou si l’intervalle de mesure est trop court. Augmentez le délai entre les lectures (par exemple, 2 secondes).
- Valeurs dérivantes : le capteur nécessite une compensation en température/humidité. Si vous ne fournissez pas ces données, les valeurs peuvent dériver. Utilisez un capteur externe pour améliorer la précision.
Conclusion. Le CCS811 est un capteur facile à utiliser grâce à son interface I²C et sa bibliothèque dédiée. Bien qu’il nécessite un temps de chauffe et une compensation environnementale, il offre une mesure relative de l’eCO₂ et du TVOC qui est suffisante pour la plupart des projets de domotique et de surveillance. Son faible coût et sa petite taille en font un composant de choix pour initier les makers à la mesure des polluants intérieurs.








Laisser un commentaire