Calculer l’Indice de Qualité de l’Air (IAQ, IQA) avec un DSM501 sur Arduino ou ESP8266

Gagnez jusqu'à 500€ en bon d'achat sur Amazon Promos de Noël jusqu'à -70% sur Banggood

DSM501 PINOUT PM10 PM25

L’indice de qualité de l’air (IAQ ou IQA en anglais) est assez facile a déterminer à l’aide d’un Arduino (ou ESP8266) et un capteur DSM501. Le capteur DSM501A est un détecteur capable de mesurer la présence de fines particules en suspension dans l’atmosphère suivant les normes PM2.5 et PM10. Le DSM501A est un capteur très économique (environ 4,80€) qui pourra servir de base pour fabriquer une station de mesure de la qualité de l’air connectée à l’aide d’un ESP8266. Le DSM501A est capable de réaliser des mesures aux standard PM2.5 et PM10. C’est à dire qu’il est capable de détecter les particules dont le diamètre est inférieur à 2,5µm pour PM2.5 et inférieure à 1µm pour PM1.0.

Principe de fonctionnement du capteur

Le DSM501 est un détecteur optique à Led plus économique à fabriquer que les modèles Laser. Le principe de fonctionnement est similaire aux détecteurs de fumées utilisés dans les détecteurs d’incendie. La led illumine les particules dans une chambre noire. Un photo-détecteur collecte la lumière. Le signal mesuré est alors proportionnel à la taille et à la quantité de particules en suspension.

Attention. Il ne faut pas utiliser ce type de détecteur pour détecter des fumées provenant d’un incendie.

source : http://doc.lijun.li/misc-dust-detector-with-arduino-serial-comm.html

Le DSM501 est capable de classifier et de mesurer les particules en suspension dans l’air dont la taille est inférieure à 1 micromètre (PM1.0) et 2,5 micromètres (PM2,5).

Remarque. Il existe deux modèles (A et B à la fin de la désignation). Les deux modèles sont parfaitement identiques. C’est le pas du connecteur qui change. 2mm pour le modèle A et 2.5mm pour le B.

Principe de communication avec l’Arduino / ESP8266

Le DSM501 n’envoi pas directement sa mesure. Il utilise le système PWM. Il va donc falloir mesurer le ratio entre le temps passé à l’état haut (+4.5V) et le temps passé à l’état bas(0V). Ensuite grâce à cette courbe, il est possible de déterminer la quantité de particules dans l’air.

source : http://www.samyoungsnc.com/products/3-1%20Specification%20DSM501.pdf

Peut-on utiliser le DSM501 sur un ESP8266 ?

Certains d’entre vous vont certainement hurler en voyant les sorties 4,5V du capteurs branchées sur l’ESP8266. En théorie il ne faut pas dépasser en tension de 3,3V sur les entrées de l’ESP8266. C’est parfaitement exact, mais l’ESP8266 semble tolérer un dépassement de tension si l’intensité reste faible d’après cette étude publiée par Digital Me. On risque surtout de détériorer son ESP en branchant directement le +5V sur la borne 3,3V ou une sortie GPIO par erreur.

Détermination de la concentration en particules

Heureusement, des Makers ont fait le travail pour nous ! Voici la fonction qui permet de récupérer le signal PWM et de déterminer le ratio. Connaissant le ratio, il est possible d’en déduire la concentration en particules en suspension dans l’air en mg/m3.

Source : https://github.com/mysensors/MySensors/blob/master/examples/DustSensorDSM/DustSensorDSM.ino

Calculer l’Indice de Qualité de l’Air (IQA ou AQI)

l’Indice de Qualité de l’Air en français (IQA) ou Air Quality Indice (AIQ) en anglais est un indicateur qui permet de déterminer un niveau de qualité d’air. Plusieurs polluants sont pris en compte. Dioxyde d’ozone (NO2), oxydes d’azotes (NOx), dioxyde de soufre (SO2), Plomb (Pb), particules fines de moins de 10µm (PM10), moins de 2.5µm (PM2,5), monoxyde de carbone (CO), Benzène (C6H6) et ozone (O3).

Le gros problème, c’est qu’il n’y n’existe pas de standard international. En France, c’est par exemple l’ATMO. La qualité de l’air est déterminée par un indice qui va de 1 (très bon) à 10 (dangereux). L’ATMO est dérivé du système Européen. En Europe, c’est le Common Air Quality Index (CAQI) qui va de 0 à 100 (5 niveaux). Aux USA et en Chine, l’indice AQI comporte 6 niveaux allant 0 à 500 (ou plus).

Pour trouver les seuils qui correspondent à votre pays, allez visiter cette page Wikipedia.

Comment calculer l’indice ATMO français

En France, pour rendre plus visible la qualité de l’air, deux indices ont été élaborés. Tout est expliqué en détail sur cette page Wikipedia :

  • L’indice ATMO pour les agglomérations dont la population dépasse 100 000 habitants. C’est le seuil maximum de quatre polluants. L’indice varie de 1 à 10. 
  • L’indice IQA pour les agglomérations de taille inférieure à 100 000 habitants. C’est un un indice simplifié, qui peut reposer sur la mesure d’un nombre plus réduit de polluants (de 1 à 3). D’après l’article 4 du décret français JORF n°274 du 25 novembre 2004, l’indice de qualité de l’air simplifié (IQA / AQI) est égal au plus grand des sous-indices des substances polluantes effectivement mesurées dans la zone géographique considérée. L’indice comprend 6 niveaux (très bon, bon, moyen, médiocre, mauvais, dangereux).

Pour déterminer l’IQA, il nous suffit donc d’avoir au moins une mesure. Si on a plusieurs capteurs à notre disposition, ce sera le sous-indice le plus défavorable qui sera retenu comme indice IQA. Les seuils sont imposés par la directive 2008/50/CE du 21 mai 2008.

Ce tableau de synthèse (tiré de l’article Wikipedia) permet de déterminer l’indice ATMO. En l’absence de seuils pour PM2.5, j’ai utilisé ceux de l’Angleterre, très proches des niveaux Européens.

Par exemple, si on trouve un PM10 = 15,5, l’indice ATMO simplifié (IQA) sera 3. Si on a plusieurs mesures, c’est le plus mauvais indice (la plus haute note) qui devient l’indice ATMO.

Indice ATMO O3

(moyenne horaire)

SO2

(moyenne horaire)

NO2

(moyenne horaire)

PM2,5

(moyenne journalière)

PM10

(moyenne journalière)

Niveau
1 0 à  29 0 à  39 0 à  29  0 à 11 0 à 6 Très bon
2 30 à  54 40 à  79 30 à 54 12 à 23 7 à 13 Très bon
3 55 à  79 80 à 119 55 à 84 24 à 35 14 à 20 Bon
4 80 à 104 120 à 159 85 à 109 36 à 41 21 à 27 Bon
5 105 à 129 160 à 199 110 à 134 42 à 47 28 à 34 Moyen
6 130 à 149 200 à 249 135 à 164 48 à 53 35 à 41 Médiocre
7 150 à 179 250 à 299 165 à 199 54 à 58 42 à 49 Médiocre
8 180 à 209 300 à 399 200 à 274 59 à 64 50 à 64 Mauvais
9 210 à 239 400 à 499 275 à 399 65 à 69 65 à 79 Mauvais
10 ≥ 240 ≥ 500 ≥ 400 > 70 ≥ 80 Très mauvais

Comment déterminer l’indice Européen CAQI (aussi appelé Citeair)

Le calcul est similaire à l’ATMO français. Il est obtenu à l’aide de la grille suivante publiée sur le site airqualitynow.eu. Au minimum, la mesure doit durer 1 heure (PM10 ou PM2,5).

caqi europe common air quality index grid

Source : https://www.airqualitynow.eu/about_indices_definition.php

Comment calculer l’AQI en Chine et aux USA

La Chine et les USA ont le même système de calcul. Le niveau de qualité de l’air comporte 6 niveaux (bon, modéré, médiocre, mauvais pour la santé, très mauvais pour la santé, dangereux). Le seuil va donc donc de 0 à 500 (ou plus) au lieu d’aller de 1 à 10 en Europe (ATMO). C’est très souvent la méthode de calcul que l’on retrouve dans les exemples de codes Arduino. Il existe également un calculateur en ligne ici.

Air Quality Index (AQI) Values Levels of Health Concern Colors
0 to 50 Good Green
51 to 100 Moderate Yellow
101 to 150 Unhealthy for Sensitive Groups Orange
151 to 200 Unhealthy Red
201 to 300 Very Unhealthy Purple
301 to 500 Hazardous Maroon

Pour calculer le seuil, il faut utiliser cette formule.

Les constantes sont extraites de ce tableau pour les différents polluants testés.

O3 (ppb) O3 (ppb) PM2.5 (µg/m3) PM10 (µg/m3) CO (ppm) SO2 (ppb) NO2 (ppb) AQI AQI
ClowChigh (avg) ClowChigh (avg) ClowChigh (avg) ClowChigh (avg) ClowChigh (avg) ClowChigh (avg) ClowChigh (avg) IlowIhigh Categorie
0-54 (8-hr) 0.0-12.0 (24-hr) 0-54 (24-hr) 0.0-4.4 (8-hr) 0-35 (1-hr) 0-53 (1-hr) 0-50 Good
55-70 (8-hr) 12.1-35.4 (24-hr) 55-154 (24-hr) 4.5-9.4 (8-hr) 36-75 (1-hr) 54-100 (1-hr) 51-100 Moderate
71-85 (8-hr) 125-164 (1-hr) 35.5-55.4 (24-hr) 155-254 (24-hr) 9.5-12.4 (8-hr) 76-185 (1-hr) 101-360 (1-hr) 101-150 Unhealthy for Sensitive Groups
86-105 (8-hr) 165-204 (1-hr) 55.5-150.4 (24-hr) 255-354 (24-hr) 12.5-15.4 (8-hr) 186-304 (1-hr) 361-649 (1-hr) 151-200 Unhealthy
106-200 (8-hr) 205-404 (1-hr) 150.5-250.4 (24-hr) 355-424 (24-hr) 15.5-30.4 (8-hr) 305-604 (24-hr) 650-1249 (1-hr) 201-300 Very Unhealthy
405-504 (1-hr) 250.5-350.4 (24-hr) 425-504 (24-hr) 30.5-40.4 (8-hr) 605-804 (24-hr) 1250-1649 (1-hr) 301-400 Hazardous
505-604 (1-hr) 350.5-500.4 (24-hr) 505-604 (24-hr) 40.5-50.4 (8-hr) 805-1004 (24-hr) 1650-2049 (1-hr) 401-500

Circuit

Branchez le DSM501 sur un Arduino ou un ESP8266 à l’aide du repérage suivant

Broche DSM501 Couleur Signification
2 (jaune) jaune Vout2 (PM1.0)
3 (blanc) blanc Vcc (+5V de l’Arduino ou ESP8266)
4 (rouge) rouge Vout1 (PM2.5)
5 (noir) noir GND

DSM501 PINOUT PM10 PM25

Source : http://www.samyoungsnc.com/products/3-1%20Specification%20DSM501.pdf

Code Arduino / ESP8266 pour le DSM501

Impossible donc de vous proposer une méthode de calcul universelle. Il faudra adapter le code Arduino à votre pays. Voici une base de travail qui permet déjà de calculer l’ATMO français, le CAQI European et l’AQI Américain et Chinois. Le code source sera publié sur GitHub pour permettre à chacun de proposer la méthode de calcul correspondant à son son pays.

Remarque. Le capteur nécessite un pré-chauffage de 60 secondes avant de pouvoir réaliser la première mesure.

Il faut donc réaliser une mesure assez longue pour pouvoir estimer correctement l’AQI. Vous pouvez modifier la durée de mesure à l’aide de la variable sampletime_ms (en millisecondes). La mesure est ensuite extrapolée à 24 heures. Plus le temps de mesure sera long, meilleure sera l’estimation de l’indice AQI. Il faudra être patient au démarrage.



Vous pouvez maintenant suivre le niveau de pollution en particules fines à votre domicile. Nous verrons dans les prochains tutoriels comment ajouter d’autres capteurs pour constituer une véritable station de monitoring de qualité de l’air 100% DIY !

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

  • Steph Des

    Hello !

    Le boulet que je représente est de retour ! Mon objectif est de surveiller la qualité de l’air de mon intérieur et d’envoyer l’info à Domoticz. Pour cela je compte utiliser un Wemos mini D1 et un DSM501. (j’ai également un PCF8591 au cas où ce soit utile). Désolé mais je suis débutant et je souhaite apprendre. Je ne sais pas par où commencer mais voici mes questions (je vais essayer d’aller dans l’ordre et d’être court)

    – Est-il nécessaire d’utiliser un PCF8591 ? Le sketch mentionne D3 et D5 mais ce ne sont pas des pin ADC donc si pas besoin d’ADC et que les pin du Wemos supportent le voltage : pas besoin de PCF8591 correct ?

    – Etant boulet j’ai pour habitude d’utiliser EspEasy… Vous me confirmez que le sketch donné plus haut n’est pas compatible avec EspEasy ?

    – Du coup, il va falloir que je compile avec Arduino IDE il va me falloir :

    * Le core ESP8266 for Arduino
    * Le code que tu as donné mais quel nom faut-il lui donner + le morceau de code donné en premier…

    Et comment faire pour envoyer la mesure ou lancer une mesure avec Domoticz…. Enfin voila, je bloque pour le cablage et pour la programmation. Je remercie d’avance toute personne pouvant me donner des pistes

  • Steph Des

    Ah et au fait :

    “Nous verrons dans les prochains tutoriels comment ajouter d’autres
    capteurs pour constituer une véritable station de monitoring de qualité
    de l’air 100% DIY”

    Le reste !!! Le reste !!! le reste !!! 🙂 🙂 🙂

    • Bonjour Steph. Oui ça arriiiive 🙂 Sonoff a sorti une station de mesure, la Sonoff SC que je trouve très bien http://s.click.aliexpress.com/e/uNfYVVN … et surtout moins chère (environ 30€) que d’acheter séparément les capteurs (DHT11, GM55, microphone, Sharp GP2Y1010AU0F). Comme je dois acheter pas mal de matériel pour les tutos, j’étale un peu les dépenses pour laisser souffler mon porte monnaie 😉

      • Steph Des

        Je comprends et je te remercie encore pour la mine d’infos que tu mets à dispo.
        Je n’avais pas vu la Sonoff SC. Dommage qu’il ne mesure pas le CO2 etc… Dans mon projet, j’envisage de rajouter un MQ135 quand je serai plus familier avec le DSM501 et la programmation…

        • Oui mais j’ai l’intention d’en faire un hack pour ajouter des capteurs supplémentaires. j’ai déjà le capteur CO2. Par contre j’ai laissé de coté le MQ135. Il ne me semble pas très précis. A la place, j’ai acheté un MH Z19 http://s.click.aliexpress.com/e/UFMJq7Y mais pas encore trouvé le temps de tester. Bonne soirée

  • Steph Des

    Je viens de refaire le tour du site et j’ai trouvé beaucoup de tutos intéressants ! Il me tarde de piger comment faire… J’aimerais bien également envoyer l’info sur un petit écran OLED connecté au Wemos.

  • Bonjour Steph. Super projet, félicitations ! Si tu veux le publier sous la forme d’un article sur le blog, ce sera avec plaisir. Bon dianche

    • Steph Des

      Si tu le souhaites, dis moi juste ce que tu attends de moi ! 😉

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