Construire votre propre moniteur de qualité d'air DIY : PM2.5, CO2, COV, Ozone, Temp & Humidité avec Arduino
Présentation
Vous êtes-vous déjà demandé quelle est la qualité de l'air que vous respirez, ou pourquoi vous vous sentez parfois somnolent au bureau ou fatigué le matin même après une nuit complète de sommeil ? Une mauvaise qualité de l'air peut entraîner de nombreux effets négatifs sur la santé ainsi que fatigue, maux de tête, perte de concentration, augmentation du rythme cardiaque, etc. Surveiller la qualité de l'air est peut-être plus important que vous ne le pensez. Dans ce tutoriel, nous allons apprendre à construire notre propre moniteur de qualité d'air capable de mesurer PM2.5, CO2, COV, Ozone, ainsi que la température et l'humidité.
Vous pouvez regarder la vidéo ci-dessous ou lire le tutoriel écrit.
Vue d'ensemble
J'expliquerai comment chaque paramètre de qualité de l'air nous affecte et comment fonctionnent les capteurs. Le cerveau de ce projet est une carte Arduino Pro Mini qui, combinée à un écran tactile Nextion 2,8", offre une interface utilisateur correcte.

On peut voir les mesures de tous les capteurs en temps réel, et en cliquant sur un capteur particulier, on obtient les valeurs des dernières 24 heures de ce capteur. Il y a aussi une fonction de gradation pour baisser la luminosité de l'écran ou l'éteindre complètement. C'est pratique, par exemple, pour surveiller la qualité d'air dans une chambre pendant la nuit.

On peut éteindre l'écran pour la nuit, et le lendemain consulter les valeurs de chaque capteur individuellement.
Maintenant, je vais vous guider à travers tout le processus de construction et expliquer comment tout fonctionne. À la fin, vous pourrez en construire un vous-même. Commençons.
Le capteur PM2.5 – PMS5003
Cet appareil a quatre composants principaux ou capteurs de qualité d'air. Nous utilisons le capteur PMS5003 pour mesurer les PM2.5 ou particules en suspension dans l'air d'un diamètre d'environ 2,5 microns. Les particules sont la forme la plus nocive de pollution de l'air car elles peuvent pénétrer profondément dans les poumons, la circulation sanguine et le cerveau, causant de nombreux problèmes de santé.

Ce capteur fonctionne sur le principe de la diffusion laser. Il a un ventilateur qui crée un flux d'air contrôlé pour que les particules passent à travers un faisceau laser focalisé.

Les particules causent une diffusion de la lumière détectée par une photodiode, puis convertie en concentration PM avec l'aide de son microprocesseur. J'ai trouvé les résultats de ce capteur assez fiables et en plus des PM2.5, il peut aussi sortir les valeurs PM1 et PM10.
Le capteur CO2 – MH-Z19
Ensuite, nous utilisons le capteur MH-Z19 pour mesurer le CO2 ou dioxyde de carbone. Comme les gens émettent du CO2 en respirant, la concentration intérieure peut facilement devenir très élevée. Le CO2 n'est pas seulement dangereux à haute concentration, mais peut aussi causer somnolence, fatigue, baisse de productivité, etc.

Le capteur utilise le principe infrarouge non dispersif pour mesurer le CO2 dans l'air. Une source infrarouge dirige la lumière à travers un tube rempli de l'air qu'on mesure. De l'autre côté, il y a un filtre optique et un détecteur IR qui mesure la quantité de lumière IR qui passe.

Les molécules de CO2 présentes dans l'air absorbent une bande spécifique de lumière IR en laissant passer certaines longueurs d'onde. Le niveau de CO2 est calculé selon la différence entre la lumière émise et la lumière IR reçue par le détecteur. Les résultats de ce capteur sont aussi assez précis.
Les capteurs COV et Ozone – MP503 et MQ-131
Pour mesurer les COV et l'Ozone, nous utilisons les capteurs à gaz MP503 et MQ131. Ce sont des capteurs à oxyde métallique chauffé et leur principe repose sur la détection du changement de résistance en présence des gaz ciblés.

Un courant électrique spécifique passe dans un substrat métallique et la résistance change selon la quantité de gaz présente.
Le gaz cible du capteur MQ131 est l'Ozone, qui dans un foyer normal peut être généré par des produits comme certains purificateurs d'air, vaporisateurs faciaux, lampes germicides produisant de la lumière UV, etc.

De l'autre côté, le capteur MP503 a plusieurs gaz cibles, dont l'alcool, la fumée, l'iso-butane, le méthanal et d'autres. COV signifie Composés Organiques Volatils, ce sont des émissions organiques de produits qu'on utilise quotidiennement : lessives, nettoyants, assainisseurs d'air, peinture, maquillage, etc. Les COV peuvent causer maux de tête, irritations des yeux, réactions cutanées, vertiges, etc.
Schéma de câblage du moniteur de qualité d'air Arduino DIY
Regardons maintenant le schéma de câblage et expliquons comment tout doit être connecté.

Vous pouvez vous procurer les composants nécessaires pour ce moniteur de qualité d'air Arduino via les liens ci-dessous :
- Capteur PM PMS5003 …………………….
- Capteur CO2 MH-Z19 ……………………..
- Capteur Ozone MQ-131 …………………..
- Capteur COV MP503 ……………………….
- Capteur Temp & Hum DHT22………….
- Écran Nextion 2.8″ ……………………..
- RTC DS3231 ………………………………….
- Arduino Pro Mini………………..…….…..
- Écrous écartés / Distance M3 ……………
- Connecteur Mini USB …………………….
- Connecteurs à broches (pin headers) ………………………………….
- Interrupteur 2 positions …………………………
- Condensateurs : 0,1uF céramique et 10uF électrolytique
- Transistors – 2N3904
- Interrupteur
Divulgation : Ce sont des liens d'affiliation. En tant qu'associé Amazon, je gagne sur les achats éligibles.
Valeurs correctes des résistances : R1 = 1K, R2 = 2K, R6=100K ou 1M, R7=1K
Le capteur PM2.5 communique avec l'Arduino via une interface série. Il fonctionne en 5V, mais le niveau logique de réception RX fonctionne en 3,3V, donc il faut un diviseur de tension. Le capteur CO2 et l'écran Nextion utilisent aussi la communication série. Pour lire les capteurs COV et Ozone, on utilise les entrées analogiques de l'Arduino, tandis que le capteur DHT22 température/humidité utilise une broche numérique.
Les deux transistors servent à activer les chauffages des capteurs. On utilise aussi un module horloge temps réel (RTC) pour garder la trace du temps lors de l'enregistrement des valeurs des capteurs, utilisant la communication I2C. L'appareil entier est alimenté en 5V via un connecteur Mini USB.
Voir aussi : Les 8 meilleurs kits de démarrage Arduino [Mise à jour 2021]
Si on essaie de tout connecter ensemble, on obtient un sacré bazar à cause des nombreuses connexions.

Donc, on a définitivement besoin d'un PCB pour ce projet.
Création d'un PCB pour le moniteur de qualité d'air Arduino
Pour faire un PCB, j'utilise Altium Designer, qui est en fait le sponsor de cette vidéo.

Altium Designer représente des décennies d'innovation dédiées à créer un environnement de conception vraiment unifié. Trouvant l'équilibre parfait entre puissance et facilité d'utilisation, Altium Designer s'est imposé comme la solution de conception PCB la plus utilisée sur le marché.
Je vais vous montrer comment j'ai conçu le PCB pour ce projet avec Altium Designer. J'ai commencé par faire le schéma. Altium a des bibliothèques intégrées avec des composants de base, mais encore mieux, vous pouvez rechercher des composants directement chez les fabricants, ce qui rend l'approvisionnement très pratique.

Par exemple, j'ai trouvé le connecteur Mini USB avec cette fonction de recherche fabricant. De là, on accède facilement aux données liées aux composants : modèles 3D, empreintes, dimensions, etc.
On peut aussi créer ses propres bibliothèques de composants. J'ai créé la plupart des composants pour ce projet moi-même, car je voulais créer mes propres empreintes 3D pour chaque pièce, afin d'avoir le PCB complet en 3D à la fin. Pour créer les modèles 3D des empreintes PCB, on peut utiliser n'importe quel logiciel CAO, sauvegarder en .STEP et les importer dans Altium Designer.

Une fois le schéma fini, j'ai généré le PCB. J'ai disposé les composants comme je voulais, et avec un simple clic sur la fonction Auto-routeur, le logiciel a généré toutes les pistes automatiquement.

Si besoin, on peut créer ou ajuster manuellement. On peut aussi définir des règles de conception pour l'autoroutage, définir différentes largeurs pour chaque net, etc. À ce stade, on voit aussi le PCB en 3D et on peut exporter un fichier 3D de l'assemblage PCB complet pour concevoir un boîtier plus tard.
Je tiens à remercier Altium pour le sponsoring de contenu éducatif comme celui-ci. Si vous voulez en savoir plus sur ce logiciel et l'essayer, consultez les liens ci-dessous. Vous pouvez aussi essayer le visualiseur web Altium 365 pour aperçus de projet et fichiers.
Essai gratuit Altium Designer – https://www.altium.com/yt/howtomechatronics
Visualiseur Altium 365 : https://www.altium.com/viewer
Voici les fichiers de projet Altium Designer :
Fichiers Altium Designer incluant le fichier projet, bibliothèques et fichiers .STEP des modèles 3D des composants électroniques :
Fichier Gerber PCB :
Une fois le PCB fini, j'ai généré les fichiers Gerber et NC Drill, mis dans un zip unique, et j'étais prêt à commander la fabrication du PCB.

J'ai commandé le PCB chez JCLPCB. On y glisse-dépose le zip et une fois uploadé, on a toutes les infos visuelles sur notre PCB.

Puis on sélectionne les propriétés voulues et on commande le PCB à un prix raisonnable.
Assemblage du PCB
Après quelques jours, les PCB sont arrivés. La qualité est excellente, tout correspond exactement au design.

Maintenant, on est prêt à assembler le PCB. J'ai commencé par insérer et souder les plus petits composants : résistances et les deux transistors.
Ensuite, on peut souder la carte Arduino Pro Mini en place. Mais d'abord, il faut souder les connecteurs à broches dessus. Notez qu'on n'a pas besoin de toutes ses broches, mais assurez-vous de ne pas manquer celles qu'il faut comme A4, A5 et la broche DTR. Assurez-vous aussi d'avoir exactement cette même carte Arduino Pro Mini avec cette disposition de broches, car elles peuvent parfois différer.

Ensuite, on insère le capteur DHT22 en place. Pour cela, il faut d'abord plier ses broches à 90 degrés. Parfois j'utilise aussi de la pâte adhésive Blu-tack pour maintenir les composants en place pendant le soudage.
Les deux condensateurs servent à stabiliser l'alimentation. L'alimentation arrive via un connecteur mini-USB auquel on connecte 5V.

Juste au-dessus du connecteur d'alimentation, il faut souder les deux interrupteurs. L'un pour allumer/éteindre l'appareil, l'autre pour quand on veut téléverser un sketch sur l'Arduino. Ensuite, on insère les connecteurs pour l'interface USB-UART, l'écran, le capteur PM2.5, ainsi que les capteurs COV, Ozone et CO2.
Ensuite, pour souder le module RTC DS3231, encore une fois, il faut plier les broches à 90 degrés. Une fois soudé, on insère la pile qui garde l'heure même quand le PCB principal perd l'alimentation. Avec cela, le PCB est fini, il reste à préparer les câbles pour connecter le capteur PM2.5 et l'écran au PCB. J'ai soudé des connecteurs mâles sur le câble fourni avec le capteur, pour le brancher facilement au PCB. Pour connecter l'écran au PCB, j'ai soudé quatre fils au dos du connecteur de l'écran et les ai connectés au PCB.

Et voilà, notre moniteur de qualité d'air est en fait fini. Bien sûr, il faut maintenant faire un boîtier ou une boîte. Comme on a le modèle 3D de l'assemblage PCB complet depuis Altium Designer, on peut l'importer dans un logiciel CAO et concevoir un boîtier.

J'ai utilisé SOLIDWORKS pour faire le boîtier le plus simple possible : deux pièces et quelques boulons/écrous. J'ai choisi de faire le boîtier en acrylique transparent car j'aime voir le PCB et les composants à nu, et c'est une super façon de montrer votre projet DIY.
Vous pouvez télécharger ce modèle 3D de moniteur de qualité d'air DIY, ainsi que l'explorer dans votre navigateur sur Thangs.

Télécharger le modèle 3D sur Thangs.
Fabrication du boîtier pour le moniteur de qualité d'air
L'acrylique que j'utilise fait 4 mm d'épaisseur, parfait pour l'écran. N'ayant pas de machine CNC, j'ai découpé les formes manuellement avec une scie à métaux simple.

Pour faire l'ouverture de l'écran, j'ai d'abord fait deux trous à la perceuse. Puis j'ai passé une lame de mini scie à métaux et découpé soigneusement la forme. Avec une râpe simple, j'ai lissé la forme. Puis avec un foret de 3 mm, j'ai fait tous les trous pour fixer les PCB et relier les deux plaques acryliques.

À ce stade, j'ai retiré le film protecteur de l'acrylique, ce qui est assez satisfaisant. Pour fixer le PCB sur la plaque de base, j'ai utilisé des boulons et écrous M3. Pour fixer le capteur PM2.5 sur la plaque, il faut des boulons M2.

Ensuite, avec des écrous écartés, on joint les deux plaques. En utilisant un écrou écarté femelle et un mâle, j'ai pu obtenir facilement la distance désirée entre les deux plaques.

J'aime vraiment comment ce boîtier est sorti, en plus c'est fonctionnel car l'air circule facilement autour des capteurs.
Programmation
Très bien, maintenant on peut alimenter l'appareil et téléverser le programme. On alimente le moniteur via le connecteur Mini USB avec un adaptateur 5V USB, un chargeur 5V téléphone ou une power bank.

Pour téléverser le programme sur l'Arduino Pro Mini, il faut une interface USB-série UART connectée à l'en-tête de programmation. Avant de la connecter à l'USB de l'ordinateur, il faut d'abord allumer l'alimentation principale de l'appareil, car sinon l'alimentation de l'USB ordinateur (seulement 500 mA) pourrait ne pas suffire. Lors du téléversement du sketch Arduino, il faut aussi activer l'interrupteur d'upload sur le PCB.
Ici vous pouvez télécharger le code Arduino et le programme pour l'écran Nextion :
Pour téléverser un sketch sur un Arduino Pro Mini, dans l'IDE Arduino, il faut d'abord sélectionner cette carte, la bonne version du processeur, le port et la méthode de programmation « USBasp ».

Une fois le code téléversé sur l'Arduino, il faut aussi téléverser un code sur l'écran Nextion. Les écrans Nextion ont un contrôleur ARM intégré qui gère l'affichage de façon autonome.

Tous les graphismes comme boutons, textes, images, variables, etc., sont générés et contrôlés par l'écran lui-même. L'écran Nextion a un éditeur Nextion dédié où on crée tout ça. L'écran et l'Arduino communiquent avec deux fils via la communication série. L'Arduino envoie simplement les valeurs des capteurs à l'écran et inversement, l'écran envoie des données à l'Arduino quand nécessaire.
Pour téléverser le programme de l'écran, il faut une carte microSD où sauvegarder le fichier .TFT de sortie de l'éditeur Nextion.

L'écran a un lecteur de carte où on insère la microSD hors tension. Puis on alimente l'appareil et le programme se téléverse sur l'écran. Il suffit de retirer la carte, rallumer, et notre moniteur de qualité d'air commence à fonctionner.

Explication du code
On utilise des bibliothèques pour chaque capteur : MHZ19, PMS, MQ131, DHT, DS3231. Pour mieux comprendre comment on lit les données de chaque capteur, je recommande de lire la documentation des bibliothèques et d'essayer leurs exemples.
On utilise aussi la bibliothèque SoftwareSerial car le MH-Z19 et le PMS5003 utilisent la communication série. L'Arduino et l'écran Nextion utilisent aussi le port série, et ici on utilise le port série matériel par défaut.

L'Arduino lit les capteurs et envoie ces données à l'écran Nextion. Voici un exemple.
Serial.print("tempV.val="); Serial.print(temp); Serial.write(0xff); Serial.write(0xff); Serial.write(0xff);Langage : Arduino (arduino)
On a une variable sur l'écran Nextion appelée « tempV » et pour mettre à jour sa valeur, il faut envoyer une commande comme « tempV.val=22 ». Nom de variable, puis « .val », puis la valeur, disons 22. Les deux premières lignes du font, et pour que l'écran Nextion accepte cette commande (ou n'importe laquelle), il faut envoyer les trois commandes « write » uniques.
Dans le programme de l'écran Nextion, on a un timer qui tourne en boucle, comme la loop Arduino, et met constamment à jour les chiffres sur l'écran.

Dans cet événement timer, on a aussi un code pour changer la couleur de fond de chaque capteur selon sa valeur.
Sur la deuxième page, on a une forme d'onde qui récupère les valeurs stockées par l'Arduino. Notez que vous trouverez plus d'infos dans le code Arduino lui-même, il y a des explications dans les commentaires.

Les heures et les valeurs de l'axe Y récupèrent aussi leurs valeurs de l'Arduino.
Au-dessus de la forme d'onde, ainsi que les chiffres sur l'écran principal, vous remarquez des objets transparents, appelés « Hotspots » dans l'éditeur Nextion, qui agissent comme boutons. Si on appuie sur le hotspot de la forme d'onde, on voit dans la section Événement qu'il nous renvoie à « page 0 ».
Dans l'ensemble, c'est comme ça que marche le programme de ce moniteur de qualité d'air Arduino. Bien sûr, pour bien comprendre, il faut connaître le fonctionnement de chaque capteur avec sa bibliothèque, ainsi que celui de l'écran Nextion.
Notez que pour le capteur COV, on ne lit que des données brutes, pas des valeurs en ppm ou ppb. Juste des valeurs analogiques de 0 à 1024. Des valeurs plus hautes indiquent la présence de COV.
Pour le capteur Ozone, pour obtenir des sorties plus précises, il faut bien régler setTimeToRead() et setR0() selon l'exemple de calibration de la bibliothèque. Mais un setTimeToRead plus long bloque le programme pendant l'échantillonnage et tout gèle. Il y a des contournements. Je suggérerais même de ne pas utiliser le capteur ozone sauf si vous en avez vraiment besoin.
J'espère que vous avez apprécié cette vidéo et appris quelque chose. Si c'est le cas, pensez à me soutenir sur Patreon. N'hésitez pas à poser vos questions dans les commentaires et consultez ma collection de projets Arduino.
Processus de fabrication
- 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
- Capteur de qualité de l'air solaire basé sur Helium : Guide de conception et déploiement
- Créer un système Ambilight spectaculaire pour moniteur avec Arduino
- Capteur CO2 K30 : Surveillance en temps réel de la qualité de l'air intérieur
- Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
- Moniteur de Fréquence Cardiaque IoT en Temps Réel avec Arduino et MAX30100
- Moniteur de Température et Horloge Temps Réel Arduino avec Écran TFT 3.2"
- Construisez un skateboard VR DIY avec Arduino, Google Cardboard et Bluetooth