Lecture capteur de dioxyde de carbone ENS160 + AHT21, CO2 eCO2 TVOC avec arduino UNO
Description :
Projet permettant de lire les données d’un capteur de qualité de l’air ENS160 et d’un capteur de température et humidité AHT21 avec un Arduino Uno.
L’ENS160 fournit des mesures de CO2, eCO2 et TVOC, tandis que l’AHT21 donne la température et l’humidité ambiantes. L’Arduino lit ces valeurs via le protocole I2C et peut les afficher sur un moniteur série, offrant ainsi un suivi en temps réel de la qualité de l’air et des conditions environnementales.
Cette configuration est idéale pour des projets de monitoring intérieur, stations météo intelligentes, ou tout système nécessitant un suivi précis de l’air et du climat ambiant.
Prérequis :
- 1 x Carte Arduino Uno
- 1 x Capteur de dioxyde de carbone ENS160 + AHT21
- 1 x Breadboard
- Fils de connexion
Version IDE :
- Arduino IDE 2.3.5
Bibliothèque :
- Adafruit_AHTX0 (version: 2.0.5 par Adafruit)
- Adafruit_BusIO (version: 1.17.2 par Adafruit)
- Adafruit_Unified_Sensor (version: 1.1.15 par Adafruit)
- ENS160_-_Adafruit_Fork (version: 3.0.1 par Adafruit)
Vidéo de démonstration :
Schéma de câblage :


Code :
#include <Wire.h>
///// AHT20 start
#include <Adafruit_AHTX0.h>
Adafruit_AHTX0 aht;
int tempC; //Pour stocker la température en °C
int tempF; //température en F
int humidity; //Pour stocker l'humidité
///// AHT20
#include "ScioSense_ENS160.h" // ENS160 library
//ScioSense_ENS160 ens160(ENS160_I2CADDR_0); //0x52
ScioSense_ENS160 ens160(ENS160_I2CADDR_1); //0x53..ENS160+AHT21
void setup() {
Serial.begin(9600);
while (!Serial) {}
Serial.println("------------------------------------------------------------");
Serial.println("ENS160 - Capteur numérique de qualité de l'air");
Serial.println();
Serial.println("Lecture du capteur en mode standard");
Serial.println();
Serial.println("------------------------------------------------------------");
delay(1000);
Serial.print("ENS160...");
ens160.begin();
Serial.println(ens160.available() ? "fait." : "échoué !");
if (ens160.available()) {
// Imprimer les versions ENS160
Serial.print("\tRev: "); Serial.print(ens160.getMajorRev());
Serial.print("."); Serial.print(ens160.getMinorRev());
Serial.print("."); Serial.println(ens160.getBuild());
Serial.print("\tMode standard ");
Serial.println(ens160.setMode(ENS160_OPMODE_STD) ? "fait." : "échoué !");
}
// AHT20 start
Serial.println("Adafruit AHT10/AHT20 demo!");
if (! aht.begin()) {
Serial.println("Impossible de trouver l'AHT ? Vérifiez le câblage.");
while (1) delay(10);
}
Serial.println("AHT10 ou AHT20 trouvé");
//AHT20 end
}
void loop() {
///// AHT20 start
sensors_event_t humidity1, temp;
aht.getEvent(&humidity1, &temp);
tempC = (temp.temperature);
tempF = (temp.temperature)*1.8+32;
humidity = (humidity1.relative_humidity);
Serial.println("------------------------------------------------------------");
Serial.print("Température: ");
Serial.print(tempC);
Serial.println(" degrees C");
//Serial.print("Température: ");
//Serial.print(tempF);
//Serial.println(" degrees F");
Serial.print("Humidité relative: ");
Serial.print(humidity);
Serial.println("% rH");
delay(1000);
///// AHT20 end
if (ens160.available()) {
// Give values to Air Quality Sensor.
ens160.set_envdata(tempC, humidity);
ens160.measure(true);
ens160.measureRaw(true);
Serial.print("AQI: ");Serial.println(ens160.getAQI());
Serial.print("TVOC: ");Serial.print(ens160.getTVOC());Serial.println("ppb");
Serial.print("eCO2: ");Serial.print(ens160.geteCO2());Serial.println("ppm");
Serial.print("R HP0: ");Serial.print(ens160.getHP0());Serial.println("Ohm");
Serial.print("R HP1: ");Serial.print(ens160.getHP1());Serial.println("Ohm");
Serial.print("R HP2: ");Serial.print(ens160.getHP2());Serial.println("Ohm");
Serial.print("R HP3: ");Serial.print(ens160.getHP3());Serial.println("Ohm");
}
delay(1000);
}
