Kit Capteur Qualité d'Air Intérieur & Confort Basé sur Arduino
Composants et fournitures
| Composant | Quantité |
|---|---|
| Arduino Nano R3 | 1 |
| Capteur Température & Humidité DHT11 (3 broches) | 1 |
| Capteur Qualité d'Air MQ135 | 1 |
| Écran OLED I2C 0,96" | 1 |
Outils et machines nécessaires
- Fer à souder (générique)
- Imprimante 3D (générique) — Optionnel
Applications et services en ligne
- Arduino IDE
À propos de ce projet
Il arrive souvent de se sentir fatigué au réveil malgré une bonne nuit de sommeil. Cela peut être dû à une mauvaise qualité de l'air dans la chambre fermée pendant la nuit.

Ce moniteur de qualité d'air à faible coût surveille la qualité de l'air d'une pièce grâce au capteur MQ135. Il mesure également la température et l'humidité ambiantes via le DHT11 et affiche les données sur un écran OLED. Un projet ludique et très utile.
Câblage




Connexions :
- Arduino D2 → Sortie DHT11
- Arduino A0 → Sortie analogique MQ135 (Ao)
- Arduino A5 → SCL OLED
- Arduino A4 → SDA OLED
Programmation
Vous devrez installer les bibliothèques suivantes via le gestionnaire de bibliothèques de l'Arduino IDE :
Adafruit_SSD1306.hAdafruit_GFX.hDHT.h
Le code comporte deux fonctions principales : sendSensor() et air_sensor().
air_sensor(): lit la valeur analogique du capteur de qualité d'air (gasLevel = analogRead(sensor);) et détermine la qualité d'air correspondante.sendSensor(): mesure la température et l'humidité avec la bibliothèquedhtet les affiche sur l'écran OLED.


Calibration du capteur MQ135 : Dans la fonction air_sensor(), vous devrez peut-être ajuster les seuils de gasLevel pour votre capteur. Alimentez le MQ135 en 5 V et placez-le dans un environnement propre pendant au moins 24 heures avant utilisation. Cette période de « rodage » est nécessaire car le capteur arrive pollué d'usine ; le rodage permet de le nettoyer pour des résultats plus précis.
Ensuite, connectez le capteur à votre circuit, emmenez-le à l'extérieur et ajustez les valeurs pour votre environnement.
Code
Moniteur Qualité d'Air Arduino Arduino
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h>
#include <Fonts/FreeMonoOblique9pt7b.h>
#include <DHT.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define sensor A0
#define DHTPIN 2
#define DHTTYPE DHT11
int gasLevel = 0;
String quality = "";
DHT dht(DHTPIN, DHTTYPE);
void sendSensor() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Échec lecture capteur DHT !");
return;
}
display.setTextColor(WHITE);
display.setTextSize(1);
display.setFont();
display.setCursor(0, 43);
display.println("Temp :");
display.setCursor(80, 43);
display.println(t);
display.setCursor(114, 43);
display.println("C");
display.setCursor(0, 56);
display.println("RH :");
display.setCursor(80, 56);
display.println(h);
display.setCursor(114, 56);
display.println("%");
}
void air_sensor() {
gasLevel = analogRead(sensor);
if (gasLevel < 181) {
quality = " BON !";
} else if (gasLevel > 181 && gasLevel < 225) {
quality = " Médiocre !";
} else if (gasLevel > 225 && gasLevel < 300) {
quality = " Très mauvais !";
} else if (gasLevel > 300 && gasLevel < 350) {
quality = " Critique !";
} else {
quality = " Toxique";
}
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(1, 5);
display.setFont();
display.println("Qualité Air :");
display.setTextSize(1);
display.setCursor(20, 23);
display.setFont(&FreeMonoOblique9pt7b);
display.println(quality);
}
void setup() {
Serial.begin(9600);
pinMode(sensor, INPUT);
dht.begin();
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) {
Serial.println(F("Échec allocation SSD1306"));
}
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(50, 0);
display.println("Air");
display.setTextSize(1);
display.setCursor(23, 20);
display.println("Moniteur Qualité");
display.display();
delay(1200);
display.clearDisplay();
display.setTextSize(2);
display.setCursor(20, 20);
display.println("Par Abid");
display.display();
delay(1000);
display.clearDisplay();
}
void loop() {
display.clearDisplay();
air_sensor();
sendSensor();
display.display();
}
Pièces personnalisées et boîtiers
Voici un boîtier 3D que j'ai conçu pour le projet. Mais vous n'avez pas besoin d'imprimante 3D : vous pouvez fabriquer votre propre boîtier avec du carton ou d'autres matériaux.
Schémas

Processus de fabrication
- De minuscules capteurs PM2,5 et VOC offrent un monitoring personnel de la qualité de l'air en temps réel
- Bosch Sensortec dévoile le capteur de qualité d'air BME688 avec IA pour réduire le risque de transmission virale
- Renesas enrichit sa plateforme capteur qualité d'air intérieur ZMOD4410 avec IA embarquée pour une détection d'odeurs améliorée
- Construire une station météo et qualité de l'air Raspberry Pi avec InfluxDB et Grafana
- Mesurer la qualité de l'air avec OpenSensors : Guide Arduino et Python
- Moniteur de qualité de l'air DIY : Détecteur économique conforme EPA
- Capteur de qualité de l'air solaire basé sur Helium : Guide de conception et déploiement
- Système de surveillance de la qualité de l'air pour ville intelligente basé sur LoRa
- Capteur NO₂ avancé à base de carbone pour une surveillance de la qualité de l'air intérieur améliorée