#Test du CCS811 IAQ, capteur de qualité de l’air TVOC, eCO2 bus i2C (Arduino, ESP8266)

Le capteur CCS811 est un capteur environnemental qui permet de détecteur la présence de COV dans l’atmosphère et d’en déduire le niveau de composés organiques volatils totaux (TVOC en anglais). Le CCS811 permet également de déterminer le taux de CO2 équivalent (eCO2) présent dans l’atmosphère. Le capteur CCS811 est produit par le spécialiste Autrichien ams AG (site internet). Il équipe les cartes Adafruit (environ 35€) et Sparkfun (SparkFun Air Quality Breakout ou SparkFun Environmental Combo Breakout – CCS811/BME280, environ 58€).  Je vous propose de tester une version beaucoup plus économique du fabricant chinois CJMCU. 

 

 

Vous pourrez la trouver un direct de chine pour moins de 8€. Si vous préférez les solutions de Bosch Sensortec, le BME680 est un capteur équivalent. On le trouve pour moins de 15€.

C’est quoi les COV ?

Les COV (Composés Organiques Volatiles) sont des molécules chimiques produites par les matériaux de construction, produits de nettoyage, peintures, produits cosmétiques et même le corps humain. Ce sont des polluants qui peuvent être à l’origine de problèmes de santé. Pour en savoir plus, vous pouvez commencer par cet article publié sur  Wikipedia. Voici les  polluants les plus courants que l’on trouve dans nos habitations.

Source de contamination Exemple Contaminant de l’atmosphére intérieure
Matériaux de construction Adhésifs, Tapis, Ciment, Revêtement de sol, Solvants Formaldéhyde, Alcanes, Alcools, Aldéhydes, cétones
Combustion Moteurs à combustion, électroménagers, hydrocarbures à fumée Hydrocarbures
Produits de nettoyage Produits de nettoyage ménagers Acétone, alcool, spiritueux
Meubles Bois, polychlorure de vinyle (PVC), colles Formaldéhyde, toluène, xylène, Decane
Corps humain Cosmétique, respiration Acétone, Ethanol, Isoprène, Méthane, Hydrogène
Matériel de bureau Imprimantes, photocopieurs, PC Ozone, Benzène, Styrène, Phénol

D’après https://ams.com/documents/20143/36005/CCS811_WP000103_1-00.pdf/2da5de97-7c63-f605-aaf0-7320c5ec9101

Caractéristiques du CCS811 (CMJCU et autres fabricants)

Le CCS811 d’ams AG est un capteur de type MOX (Metal oxide) qui est sensible à la présence de polluant de l’air

  • Tension d’alimentation : 1,8V à 3,6V
  • Courant consommé : 30mA (pic à 54mA)
  • Puissance consommée : 60mW
  • Plage de température de fonctionnement : -40°C à +85°C
  • Plage d’humidité de fonctionnement : 10% à 95%
  • Durée de vie du capteur : > 5 ans
  • Fréquence du bus I2C : 10 à 400 kHz
  • eCO2 : de 400ppm à 64000ppm
  • TVOC : de 0ppb à 64000ppb

Toutes les caractéristiques techniques

4 modes de mesures sont disponibles (en détail page 8 de la documentation technique)

  • Mode 0 (idle), fonctionnement au ralenti, basse consommation (0,034 mW)
  • Mode 1, alimentation continue, mesure chaque seconde (46 mW)
  • Mode 2, alimentation pulsée, mesure toutes les 10 secondes (7 mW)
  • Mode 3, alimentation pulsée basse consommation, mesure toutes les 60 secondes (1,2 W)
  • Mode 4, alimentation permanente, mesure possible toutes les 250ms (46 mW). Mode inadapté à un fonctionnement sur batterie

Comme la plupart des capteurs physico-chimiques, il faudra faire fonctionner le CCS-811 d’ams est continue durant au moins 48 heures avant que les mesures soient représentatives. En fonctionnement normal, il faudra attendre environ 30 minutes pour obtenir une mesure fiable

ccs811 ams mox sensor warmup demarrage

Source : https://ams.com/documents/20143/36005/CCS811_AN000370_1-00.pdf/5753a519-0a6f-be87-ed5f-eb069c652bb5

 

Ajouter la librairie Adafruit à l’IDE Arduino

J’ai testé plusieurs librairies permettant de communiquer avec le CCS811. J’ai finalement opté pour la librairie d’Adafruit qui est très bien supportée par l’ESP8266 (la Wemos d1 mini en l’occurence). Vous pouvez la récupérer sur GuitHub ici. Comme d’habitude, commercez par télécharger la librairie sans la décompresser.

Lancez l’IDE Arduino. Dans le menu croquis, allez dans le menu Inclure une bibliothèque puis  Ajouter la bibliothèque ZIP. Indiquez le chemin vers la librairie Adafruit que vous venez de télécharger.

D’autres librairies au cas où :

Comparaison du taux de eCO2 (équivalent) avec une mesure réelle faite avec le MHZ19

Le CCS811 retourne donc deux valeurs. Le TVOC qui est la somme de tous les composés organiques volatils (COV) trouvés dans l’atmosphère et l’eCO2. Le eCO2 est un taux de CO2 calculé mathématiquement par le capteur. ams a publié notamment cette courbe comparative entre le taux de COV dans l’atmosphère et le taux de CO2.

relation co2 voc iaq qualite air ccs811 ams ag

D’après https://ams.com/documents/20143/36005/CCS811_WP000103_1-00.pdf/2da5de97-7c63-f605-aaf0-7320c5ec9101

Ce n’est donc pas une mesure réelle. Attention, c’est un indicateur théorique qu’il faut lire avec précaution. En présence de polluant(s), l’indicateur eCO2 risque de s’envoler sans pour autant représenter la teneur réelle en CO2 dans l’atmosphère. Pour connaître tous les seuils, vous pouvez lire ce document de l’INRS.

Branchement du CCS811 en I2C sur un ESP8266 (Wemos d1 mini)

Contrairement aux autres capteurs qui fonctionnent sur le bus de données I2C, il est nécessaire de connecter la broche WAK (wakup, réveil) pour démarrer le capteur. On peut le faire manuellement (ans ce cas le capteur reste en permanence sous tension) ou depuis le programme. Dans ce cas, il faudra s’assurer que la librairie prennent en compte le réveil du capteur avant chaque mesure. Ici, nous allons forcer le démarrage du capteur en reliant la broche WAK au GND de l’Arduino ou de l’ESP8266.

Pour améliorer la précision du CCS811, vous pouvez également compenser la température et l’humidité en utilisant la méthode setEnvironmentalData de la librairie Adafruit. Vous pouvez par exemple utiliser un DHT22, un BME280 ou un SHT30 pour cela.

ESP8266 + MHZ19 + CCS811

 

Nous avons déjà pu utiliser le détecteur de CO2 MH-Z9 a plusieurs reprises. Nous utiliserons le port série pour récupérer les mesures du MH-Z19. Câblez le port série en croisant les broches comme d’habitude. La broche RX du MH-Z19 sur la D6 de l’ESP8266. La broche TX du MH-Z19 sur la D7 de l’ESP8266. Le MH-Z19 peut être alimenté avec une tension comprise entre 3,6V et 5,6V, il faudra donc l’alimenter depuis la broche +5V de l’Arduino ou de l’ESP8266. Connectez la broche Vin du MH-Z19 sur la broche 5V de l’ESP8266. Fermez le circuit en connectant les broches GND.

Deux adresses I2C peuvent être sélectionnées (0x5A ou 0x5B). Par défaut le capteur se trouve à l’adresse 0x5A. Pour attribuer l’adresse 0x5B, reliez la broche ADD (ADDress à la broche GND de l’Arduino, ESP8266). Dans le code, vous devrez également indiquer la nouvelle adresse lors à l’initialisation de l’objet css ( ccs.begin(0x5B)).

Pour vérifier l’adresse du capteur, vous pouvez utiliser ce scanner I2C dont le code source est disponible un peu partout (GitHub par exemple)

Code du projet

Créez un nouveau croquis et collez le code ci-dessous. C’est une adaptation d’exemple livré avec la librairie Adafruit. Ici, le CCS811 est passé en mode 2 qui optimise la consommation pour une mesure toutes les 10 secondes. La fréquence de mesure peut être facilement modifiée en utilisant la méthode setDriveMode de la librairie Adafruit. Utilisez ensuite la clé pour le mode souhaité

  • Mode 0: CCS811_DRIVE_MODE_IDLE, mode basse consommation
  • Mode 1: CCS811_DRIVE_MODE_1SEC, une mesure par seconde
  • Mode 2: CCS811_DRIVE_MODE_10SEC, une mesure toutes les 10 secondes
  • Mode 3: CCS811_DRIVE_MODE_60SEC, une mesure par minute
  • Mode 4: CCS811_DRIVE_MODE_250MS, mesure en continu (4 fois par seconde)

On utilisera la librairie SerialSoftware pour communiquer avec le MH-Z19. Cela nous permettra de conserver le port série natif pour mettre au point le programme et récupérer le journal des mesures depuis le moniteur série de l’IDE Arduino.

Téléversez le programme et ouvrez le moniteur série de l’IDE Arduino. Si c’est la première fois que vous utilisez le CCS811, vous risquez d’obtenir des mesures très au dessus de la réalité. Il faut au moins le faire fonctionner en continu (mode 4) durant 48 heures. Comme vous pouvez le constater, on peut observer un écart d’environ 400ppm entre le niveau de CO2 mesuré à l’aide du MH-Z19 et le taux de CO2 équivalent calculé par l’algorithme du CCS811. Comme je vous l’avais annoncé dans l’introduction, c’est plus un indicateur qui donne un aperçu de la teneur en CO2.

ccs811 bme280 mh-z19 esp8266 arduino code

Avec compensation de température et d’humidité

Et les résultats en retirant la compensation de température et d’humidité.

ccs811 no compensated

Sans compensation de température et d’humidité

Bilan

La carte CJMCU CCS811 est une carte low cost de bonne qualité. Lorsque j’ai rédigé l’article, le capteur était placé sur mon bureau en face de moi. J’ai cependant pu observer de grandes variations d’une minute à l’autre du TVOC. Il pouvait passer de 42ppb à 1156 sans aucune explication. J’ai d’abord pensé que l’air de mon bureau était pollué et donc ouvert la fenêtre, mais rien ni a changé. C’est peut être normal mais je n’ai pas encore assez de retour ni d’autres capteurs similaires pour comparer les mesures (pour le moment). Je suis bien tenté de tester le BME680 de Bosch Sensortech, mais celui-ci est beaucoup plus cher.

Si vous avez pu tester d’autres cartes (Adafruit ou Sparkfun), profitez des commentaires pour partager vos expériences.

Autre remarque, dans vos programmes, ne tenez jamais compte de la première mesure (au démarrage de l’Arduino / ESP8266). Elle est en général nulle ou au maximum

ams ccs811 startup first values

COVcomposés organiques volatils. VOC en anglais. Ce sont des polluants qui peuvent être dangereux pour la santé.

TVOC, Total Volatile Organic Compunds (niveau de composés organiques volatils totaux) est une mesure de la somme de tous les composés organiques volatils (COV) trouvés dans un échantillon d’air. C’est un très bon indicateur de la qualité de l’air dans un bâtiment.

I2C (pour en savoir plus sur le bus

ppb (unité), parts per billion, parties par milliard

Tous les documents techniques

Print Friendly, PDF & Email

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous dés inscrire à tout moment.

Comparateur de prix

Bons plans

Les offres suivantes se terminent bientôt. Utilisez le coupon indiqué pour profiter du prix promo

Projets DIY - Domotique et objets connectés à faire soi-même