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

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

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 ATMOO3

(moyenne horaire)

SO2

(moyenne horaire)

NO2

(moyenne horaire)

PM2,5

(moyenne journalière)

PM10

(moyenne journalière)

Niveau
10 à  290 à  390 à  29 0 à 110 à 6Très bon
230 à  5440 à  7930 à 5412 à 237 à 13Très bon
355 à  7980 à 11955 à 8424 à 3514 à 20Bon
480 à 104120 à 15985 à 10936 à 4121 à 27Bon
5105 à 129160 à 199110 à 13442 à 4728 à 34Moyen
6130 à 149200 à 249135 à 16448 à 5335 à 41Médiocre
7150 à 179250 à 299165 à 19954 à 5842 à 49Médiocre
8180 à 209300 à 399200 à 27459 à 6450 à 64Mauvais
9210 à 239400 à 499275 à 39965 à 6965 à 79Mauvais
10≥ 240≥ 500≥ 400> 70≥ 80Trè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) ValuesLevels of Health ConcernColors
0 to 50GoodGreen
51 to 100ModerateYellow
101 to 150Unhealthy for Sensitive GroupsOrange
151 to 200UnhealthyRed
201 to 300Very UnhealthyPurple
301 to 500HazardousMaroon

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)AQIAQI
ClowChigh (avg)ClowChigh (avg)ClowChigh (avg)ClowChigh (avg)ClowChigh (avg)ClowChigh (avg)ClowChigh (avg)IlowIhighCategorie
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-50Good
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-100Moderate
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-150Unhealthy 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-200Unhealthy
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-300Very 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-400Hazardous
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 DSM501CouleurSignification
2 (jaune)jauneVout2 (PM1.0)
3 (blanc)blancVcc (+5V de l’Arduino ou ESP8266)
4 (rouge)rougeVout1 (MP2.5)
5 (noir)noirGND

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 !