Système de capteur de qualité de l'air ESPHome (SEN6x)
Table des matières
Un simple capteur de CO2 ne suffit souvent pas pour une surveillance précise de la qualité de l’air intérieur. Dans ce projet, je montre la construction d'un moniteur de qualité de l'air entièrement dynamique basé sur ESPHome. La particularité : le système peut être entièrement configuré au moment de l'exécution via une interface Web sans reflasher et résout les défis matériels spécifiques des capteurs professionnels.
Base matérielle des matrices
Le système s'appuie sur des composants compacts et de haute qualité :
-
Microcontrôleur : Un ESP32-C3-DevKitM-1 fournit suffisamment de puissance pour l'écran et assure une connexion WLAN stable.
-
Sensoriel: Le Sensirion SEN66 (compatible avec SEN6x/SEN5x) est un capteur tout-en-un pour mesurer le CO2, les particules (PM1,0, PM2,5, PM4,0, PM10), les composés organiques volatils (COV), les oxydes d'azote (NOx), ainsi que la température et l'humidité.
-
Afficher: Un écran LCD rond de 1,28 pouces avec GC9A01 Contrôleur, contrôlé via SPI.
J'ai également conçu un boîtier adapté au projet qui assure un flux d'air optimal pour le capteur et accueille tous les composants de manière compacte.
Fonctionnalités logicielles et points forts techniques
Le firmware est basé sur ESPHome et utilise la bibliothèque LVGL pour l'interface graphique. Lors du développement, l'accent a été mis sur une flexibilité et une précision physique maximales.
1. Interface utilisateur entièrement dynamique et fonctionnement sans tête
L'appareil est conçu comme un véritable système autonome. Cela ne nécessite pas nécessairement un cloud ni même une instance active de Home Assistant. Grâce au serveur Web ESPHome intégré, l'appareil peut être utilisé sans tête via n'importe quel navigateur du réseau local. Toutes les affectations (quelle valeur mesurée est affichée sur quel emplacement d'affichage), les couleurs, les paramètres de thème (mode sombre/clair) et les taux de rafraîchissement peuvent être modifiés en direct dans l'interface utilisateur Web. L'affichage s'ajuste en temps réel.
2. Logique spécifique au moteur gaz Sensirion
Les capteurs de gaz pour le CO2, les COV et les NOx nécessitent une période de préchauffage continue pour calculer des lignes de base correctes. Le simple redémarrage du minuteur de requête entraînerait une réinitialisation matérielle du capteur et fausserait les valeurs mesurées. Le firmware utilise donc une logique de requête découplée : le capteur fonctionne en interne en fonctionnement continu à intervalle de 24 heures, tandis qu'un script séparé et personnalisable récupère les données de manière douce et asynchrone à l'intervalle souhaité (par exemple toutes les 30 secondes) via le bus I2C.
3. Compensation dynamique de l'humidité (formule Magnus)
Les boîtiers compacts génèrent de la chaleur perdue, ce qui nécessite un décalage de température dans le logiciel. Cependant, l’humidité relative dépend physiquement directement de la température. Si seule la température est calibrée, la précision de l'humidité affichée diminue. Le firmware calcule donc via le Formule Magnus-Tetens la pression de vapeur saturante actuelle et corrige l'humidité relative pour qu'elle corresponde au décalage de température défini. Cela signifie que les valeurs mesurées affichées restent physiquement cohérentes.
4. Limites d'alarme individuelles
Afin de pouvoir évaluer la qualité de l'air d'un seul coup d'œil, 21 valeurs limites individuelles (trois niveaux chacune pour sept capteurs) ont été mises en œuvre. Si une valeur dépasse la limite définie, la feuille ou le texte correspondant sur l'écran se transforme automatiquement en la couleur d'avertissement souhaitée (par exemple jaune, orange ou rouge). Ces valeurs seuils et couleurs peuvent également être facilement définies via l’interface utilisateur.
Ressources et téléchargement
Le projet est entièrement open source. Je réalise le code ESPHome complet (YAML) et le modèle 3D du logement disponible sur GitHub et Thingiverse :
-
Micrologiciel/code source : Cliquez ici pour le référentiel GitHub
-
Boîtier d'impression 3D (STL/STEP) : Cliquez ici pour le projet Thingiverse
-
Conducteur: L'excellent pilote SEN6x du référentiel est utilisé comme composant personnalisé tuct/esphome-projets utilisé.









J'ai essayé de le malmener mais j'ai eu du chignon partout.
Ce qui s'est passé?
Hello iam interested in building the same project can you please ask for more details?
Cause i dont know how to program arduino.
Thx
Can you send me the diagram of the cables? how to connect?