J'ouvre ce sujet pour le suivi d'un projet électonique / informatique dans lequel je me lance : la création d'une station de monitoring de la pollution.
En effet, j'habite une grande ville notoirement assez polluée et je souhaite surveiller cette pollution, aussi bien à l'intérieur qu'à l'extérieur.
Sans plus tarder, voici mon plan.
Cahier des charges
Avoir un affichage "temps réel" des mesures effectuées (spot - 10min pour certaines grandeurs)
Fournir un indice représentant la qualité de l'air en comparant les mesures aux recommandations de l'OMS
Garder un historique des mesures
Pouvoir consulter ces mesures par internet (page web)
Open-sourcer le projet et fournir un guide pas à pas pour ceux qui voudraient répliquer le dispositif
Grandeurs physiques
Température
Humidité
Concentration en O3
Concentration en NO2
Concentration en SO2
Concentration en CO
Concentration des PM 10
Concentration des PM 2.5
À faire
Sélectionner les capteurs à utiliser et les commander
Sélectionner la plateforme pour interagir avec ces capteurs (micro-controlleur, Arduino, Raspberry Pi, …)
Pour le moment, je pense faire les mesures uniquement pour moi.
S'il s'avère que je gagne confiance dans mes mesures et que les gens autour de moi manifestent de l'intérêt dans celles-ci, je les publierai peut-être, avec un gros disclaimer indiquant que je ne suis pas un pro et que mes mesures seront sans doute moins justes que celles des organismes spécialisés.
Les PM 2.5 sont les particules dites "fines", de moins de 2.5 micromètres de diamètre.
Elles sont parmis les plus dangereuses pour la santé car elles sont assez petites pour entrer profondémment dans les bronches et passer dans le sang, causant potentiellement des dommages aux autres organes.
Certaines études parlent d'une augmentation de 36% de chance du cancer des poumons par tranche de 10µg/m3 de ces particules.
Les PM 2.5 ont beaucoup de sources, mais dans notre cas, c'est la pollution issue de la combustion qui constitue sans nul doute la majeure part de leur émission (trafic routier et maritime + centrales électriques au charbon).
Du point de vue du capteur, les choses se compliquent rapidement.
Les PM 2.5 sont difficiles à mesurer, plus plusieurs raisons :
Elles sont très petites, parfois beaucoup plus petites que 2.5 micromètres. L'appellation PM 2.5 englobe en effet toutes les particules inférieures à cette taille.
Elles sont mélées aux particules plus grosses, qu'il faut exclure de la mesure (les PM 10 entre autres).
Toutes les normes et recommandations sont données µg/m3 (voir plus haut), mais difficile de les peser. Il faut donc les compter et effectuer une conversion (risque d'erreur).
Il existe plusieurs fabriquants de "dust sensors" qui mesurent la poussière, comme Sharp ou Shinyei.
Le problème c'est que la grande majorité de ces capteurs détectent toutes les particules au dessus d'une certaine taille et ce n'est pas ce que nous voulons mesurer là.
Le seul capteur intéressant que j'ai trouvé pour le moment, est le Sharp DN7C3JA001 (ou DN7C3JA006 dans sa version actuelle).
Il s'agit en fait d'un bête capteur Sharp de poussière GP2Y101**** (qui détecte tout donc), encastré dans un boitier créant un impacteur virtuel.
Un impacteur virtuel c'est quoi ?
C'est un dispositif physique qui permet de séparer les aerosols d'un flux d'air pour les isoler dans un flux différent. (pour plus de détails: http://www.esrl.noaa.gov/csd/groups/csd2/instruments/pcvi/)
Le capteur de Sharp permet donc, théoriquement du moins, la séparation des PM 2.5 du reste du flow et le comptage de ces dernières, sans avoir besoin d'user de filtre, graisse, ou autre dispositif demandant une maintenance régulière.
Le dernier avantage de ce capteur (ou inconvénient, c'est selon), c'est que sa sortie est directement proportionnelle à la concentration en µg/m3 des PM 2.5.
Il s'agit donc d'appliquer un simple facteur à la mesure constatée pour obtenir la concentration.
La grande question est : quel facteur ?
Et malheureusement, cela dépend pas mal de l'environnement et du type de particules en suspension.
Sharp indique dans sa datasheet (voir plus haut) que 0.6 est un facteur correct dans des conditions "normales", mais que du au fait de ce facteur, la marge d'erreur sur la mesure peut varier jusqu'à 40%.
40% c'est beaucoup, surtout quand on veut être précis à 10µg/m3 près, mais c'est déjà mieux que rien.
L'autre souci, c'est le seuil de détection qui est donné à 25µg/m3. Ca n'a l'air de rien, mais c'est déjà la limite haute de l'OMS.
Dans notre cas, ça ne devrait pas être un gros problème vu que la pollution ambiante est plus ou moins tout le temps au dessus de ce seuil. Mais c'est à garder à l'esprit dans le cadre de mesures d'air filtré en intérieur.
Par ailleurs, Sharp avait annoncé un révision de son capteur il y a quelques mois, annoncant une détection de 1µg/m3 à 1000µg/m3.
Peut-être que nous verrons arriver des capteurs avec de plus grands domaines de détection dans un futur proche.
On continue aujourd'hui avec le capteur pour les PM10.
Les PM10 sont, par définition, toutes les particules de taille inférieure à 10µm.
Vous l'avez compris, les PM10 contiennent donc les PM2.5.
Il existe une autre catégorie, les PM Coarse, définie par l'US-EPA (US Environmental Protection Agency), qui inclue les particules de taille supérieure à 2.5µm mais inférieure à 10µm.
En ayant déjà la mesure des PM2.5, on devrait donc pouvoir calculer l'un en ayant l'autre.
Du coup, pour le capteur de PM10, on a le choix. On peut se concentrer soit sur un capteur pour les PM10 ou un capteur pour les PM Coarse.
Pour le moment, ma liste contient les capteurs suivants:
Le Shinyei présente un avantage de taille, la présence de 2 pin d'output P1 et P2. P1 donne la mesure pour les particules > 1µm et P2 pour les particules > 2.5µm.
En théorie, cela nous permet donc d'isoler la lecture des particules de taille > 2.5µm pour obtenir notre mesure de PM10 :
Le problème c'est que rien n'indique que la détection s'arrête à 10µm, donc en l'état, sans préfiltre, ce capteur doit aussi mesurer les particules plus grosses, ce qui fausse davantage la mesure des PM10.
Il existe des filtres pour s'assurer que tout ce qui est plus gros que 10µm ne passe pas par le capteur, mais je suis un peu réticent quant à l'idée d'introduire des élément requérant une maintenance régulière du dispositif.
L'autre souci c'est que ce capteur ne donne pas la mesure en µg/m3, mais en nombre de particules par unité de volume.
Il faut donc effectuer une conversion, sinon on va additionner des choux et des patates.
Le rapport mentionne aussi la possibilité d'appliquer un facteur d'ajustement à cette concentration, lié à l'humidité relative.
Vu que nous avons aussi un capteur d'humidité dans ce projet, cela ne devrait pas être un problème.
Comme vous le voyez, la question n'est pas simple.
Je vais partir sur ça pour le moment, mais on est pas à l'abris de changement radicaux à cette approche, si je trouve quelque chose de mieux pendant mes recherches.
Hop, je m'incruste pour te souhaiter un bon courage et espère vivement que tu continueras a partager. C'est un projet vraiment intéressant et important.
Juste une question. Pourquoi ne pas commencer par un POC histoire d'avoir un truc qui marche (et donc est motivant) avec des capteurs simples (CO2) pour ensuite partir sur d'autres capteurs plus complique ?
A vrai dire, je pense commencer à bidouiller avec le côté circuit, callibration et exploitation des données, dès que j'aurais choisi les premiers capteurs et une plateforme.
Je n'y connais pas grand chose en électronique, en dehors de ce que j'ai vu en prépa et de quelques bidouilages persos avec des PIC et l'Arduino Uno avec lequel j'ai commencé à jouer depuis Noël.
En étant réaliste, je pense que ça va me demander pas mal de temps avant d'arriver à une solution correcte, mais l'air vicié que l'on respire en permanence ici présente une motivation constante pour avancer dans ce projet.
Pour ce qui est des capteurs pour les gaz, je viens de commencer à regarder et ça n'a pas l'air spécialement plus simple. Je lis sur les datasheet des recommendations d'utilisation de circuits AFE (dont je viens d'apprendre l'existence) en conjonction avec les capteurs.
Concernant la précision des mesures, il y a aussi le souci de la cross-détection des autres gaz.
Bref, ce projet est passionnant, mais loin d'être simple et je pense que je vais tâtonner un bon moment avant d'arriver à quelque chose. Bien entendu, je continuerai à faire part de mes découvertes et avancées
Je ne connaissais pas cette association. Dommage que nous ne soyons pas sur le même fuseau horaire, mais je penserai à eux si j'ai des questions spécifiques ou des points bloquant m'empechant d'avancer dans le projet.
Désolé de ne pas avoir posté de mise à jour ces derniers jours, mais j'ai été pas mal occupé au bureau.
Je pensais faire une revue des capteurs pour les gaz avant de passer au prototypage, mais Sharp a décidé de m'envoyer gentiment un échantillon du capteur PM2.5 (merci Sharp :D) donc je suis tombé dans le bidouillage et je n'ai pas avancé sur la partie théorique.
Mais bon, du coup ça va faire plaisir à @Eskimon
La version du capteur est la DN7C3JA006. Notez le 6 qui indique que c'est déjà la 6ème révision en moins d'un an.
Sharp m'a gentiment envoyé la dernière datasheet que je vous joint ici au cas où ça vous intéresserait.
J'ai commencé à expérimenter avec vendredi soir, mais n'ayant pas les bonnes résistances pour le couple RC de la constante de temps (Pin 6), j'ai du attendre aujourd'hui dimanche pour aller faire les courses en boutique d'électronique et prendre les composants qui me manquaient.
Je n'ai pas encore fait le schéma du montage de test (honte à moi), mais vous trouverez déjà plus bas le code (brouillon) pour le faire fonctionner. Notez que je me suis appuyé sur le code présent sur ce site pour faire mes tests: http://www.geek-workshop.com/thread-11505-1-1.html
En bonus, voici aussi une petite photo du montage (EDIT : j'ai corrigé la position du potentiomètre):
A noter, je n'ai pas encore calibré le capteur, donc les constantes utilisées dans le code ne sont là qu'à titre de test et les mesures sont donc, selon toute vraissemblance, incorrectes.
Voilà, c'est tout pour aujourd'hui.
Le schéma et la calibration suivront bientôt.
#include <LiquidCrystal.h>LiquidCrystallcd(12,11,5,4,3,2);constintsensorPin=A0;unsignedlongtimer=0;unsignedlongA=0;unsignedlongB=0;intcount=0;floataverageP=0;floathistoryP=0;floatvalueP=0;voidsetup(){// put your setup code here, to run once:Serial.begin(9600);pinMode(8,OUTPUT);lcd.begin(16,2);lcd.print("Setup");}voidloop(){if((micros()-timer)>=10000){// per 10mstimer=micros();digitalWrite(8,LOW);// turn on ledA=micros();// measure pulse begin time delayMicroseconds(230);// Arduino ADC need about 100usvalueP=analogRead(sensorPin);// PM2.5 readingB=micros();// measure pulse end timedigitalWrite(8,HIGH);// turn off leddelayMicroseconds(200);count++;averageP=(averageP*(count-1)+valueP*(5000.0/1024.0))/count;if(count>=100){// 100 times average, 1 secondfloatdifferent=averageP-(1100+(20-24.9)*6);// test values.floatpm25ug=different*0.6;if(historyP==0){historyP=pm25ug;}else{historyP=(historyP*9+pm25ug)/10;}// Serial monitorSerial.print("tV: ");Serial.print(averageP,2);Serial.print(" mV\t P: ");Serial.print(pm25ug,2);Serial.print(" ug/m3\t avgP: ");Serial.print(historyP,2);Serial.print(" ug/m3\t Pulse: ");Serial.println(B-A);lcd.clear();lcd.setCursor(0,0);lcd.print("PM25: ");lcd.print(historyP);// averagelcd.setCursor(14,0);lcd.print("ug");lcd.setCursor(0,1);// resetcount=0;valueP=0;averageP=0;}}}
(je n'oublie pas le schema du montage pour les PM2.5, mais j'ai besoin d'un peu de temps)
L'ozone est un gaz naturellement présent dans la stratosphère. Vous avez sans doute entendu parler de la "couche d'ozone" et de son trou. Eh bien, c'est de ce gaz là dont il s'agit.
De formule chimique $O_3$, l'ozone est aussi techniquement appellé le "trioxygène".
Autant, dans la stratosphère, il nous protège des UV qui sont nocifs pour la santé (cancer de la peau, mutation de l'adn, activateurs de maladies auto-immune, …), autant au niveau du sol, l'ozone est mauvais pour la santé lorsqu'on le respire.
Comme toutes les formes de pollution, il augmente les chances de maladies respiratoires mais son effet est plus souvent comparé à celui d'un coup de soleil sur la peau, transposé dans les poumons ; c'est à dire à une inflamation de l'appareil respiratoire.
Une dernière petite anecdote sur l'ozone : vous connaissez probablement son odeur caractéristique si vous êtes entré dans une salle "photocopie" active. En effet, l'ozone peut être produit par une forte décharge électrique dans l'air (comme la foudre par exemple) ou plus simplement, par le mécanisme des photocopieurs qui utilise des décharges électriques pour fixer l'encre sur le papier.
La principale source d'ozone dans le milieu urbain ne sont pas les émissions directes. En effet, les voitures et les usines n'émettent pas directement de l'ozone, mais produisent des oxydes d'azote ($NO$ et $NO_2$) qui sont ensuite décomposés par les UV en ozone ($0_3$).
Voici une simplification du processus de création des oxydes d'azote et de l'ozone:
Dans un moteur (il faut de la chaleur, sinon l'azote ($N_2$) n'est pas très réactif):
$$N_2 + O_2 \xrightarrow{chaleur} 2 NO$$
$$2 NO + O_2 \xrightarrow{ } 2 NO2$$
$$NO_2 \xrightarrow{lumière} NO + O$$
L'oxygène ainsi produit est très réacif et ne tarde pas à réagir :
$$O + O_2 \xrightarrow{ } O_3$$
Et paf, voilà notre ozone !
On comprend donc pourquoi quand la pollution humaine est élevée, celle à l'ozone augmente donc significativement.
Bon, j'ai du perdre la moitié de mon audience de 2 personnes en route, donc merci à toi, le dernier à lire ces lignes. Et ne t'en fais pas, on passe à la partie fun : les capteurs.
Autant sur les capteurs de poussière et particules, on avait pas des masses de choix, autant sur les capteurs pour les gaz, il y a beaucoup plus de fabriquants.
Idéalement, il nous faut un capteur assez sensible pour détecter l'ozone à des niveaux correspondant aux recommendations des professionnels de la santé.
Pour l'ozone, on utilisera donc 0.05102. Donc pour notre recherche de capteur, il faudrait un trouver un qui descend au moins jusqu'à 529 pphm (27/0.05102), ce qui donne 5290 ppb ou 5.29ppm.
La pollution à l'ozone pour aujourd'hui est montée jusqu'à 70μ/m3, d'après le site de l'agence officielle, ce qui me pose déjà on premier problème. En effet, 70 μ/m^3, ça nous donne 1 372 pphm, donc dans les 13 720 ppb.
Si on regarde les datasheet des principaux capteurs d'ozone, on trouve des limites hautes autour de 1000 ou 2000ppb. (MICS-2614 ou MQ131)
Du coup je suis dans l'impasse concernant le choix de ce capteur. Des idées ?
Est-ce que vous voyez une erreur flagrante de raisonnement ?
Bon, j'ai du perdre la moitié de mon audience de 2 personnes en route, donc merci à toi, le dernier à lire ces lignes. Et ne t'en fais pas, on passe à la partie fun : les capteurs.
Perso j'ai trouvée ca intéressant ! (Mais ne peux point t'aider sur cette histoire de capteurs)
Voilà donc le tant attendu schéma du POC du capteur PM2.5, fait avec Fritzing. Notez que je n'ai pas réussi à obtenir un routage correct pour le schéma électrique, donc pour le moment, vous aurez juste droit à la version breadboard qui est la seule à ne pas trop ressembler à un noeud de spaghettis.
La barre noire de 5 connecteurs à gauche (E20-E25) représente le connecteur du DN7C3JA006, avec la Pin 1 à gauche (cable rouge sur la photo plus haut)
Pour le capteur d'ozone, je suis toujours autant paumé. Je pense que je vais mettre ça de côté pour le moment et me pencher sur un autre gaz (et la calibration du PM2.5 si j'arrive à me motiver).
Bon, j'ai du perdre la moitié de mon audience de 2 personnes en route, donc merci à toi, le dernier à lire ces lignes. Et ne t'en fais pas, on passe à la partie fun : les capteurs.
Pas parce que peu de personnes postent que personne d'autre ne suit le sujet. D'autant plus qu'il est intéressant.
Aujourd'hui est une très bonne journée pour les chasseurs de pollution que nous sommes, car en effet, aujourd'hui la pollution bat des records à Hong Kong.
C'est une bonne nouvelle (si on écarte le fait que votre serviteur va mourir d'un cancer des poumons), car cela nous donne une idée des maximum de concentration que nos capteurs doivent mesurer.
Sans plus attendre, donc, voici ces données pour aujourd'hui:
source: EPD
General Stations
Pollutant Concentrations(μg/m3)
Station Names
NO2
O3
SO2
CO
PM10
PM2.5
AQHI
Central/Western
235.9
58.2
59.1
-
242.9
184.3
9
Eastern
186.4
52.3
27.8
-
159.3
109.2
9
Kwun Tong
268.5
44.5
43.9
-
203.9
132
10
Sham Shui Po
224.8
46.3
63.7
-
-
101.1
9
Kwai Chung
251.6
16.2
153.4
-
182.9
128
10
Tsuen Wan
252.5
27.9
80.2
1229.5
179.1
113.1
10
Yuen Long
-
-
-
-
241.2
166.7
10+
Tuen Mun
186.6
190.2
78.5
1390.7
320.6
215.5
10+
Tung Chung
226.9
143.5
90
1294.6
259.2
174.4
10+
Tai Po
105.2
227.1
37.7
-
191.5
143.2
10+
Sha Tin
245.1
13.2
101.5
-
223.7
172.3
10+
Tap Mun
38.2
215.9
24.9
1008
156.9
116.7
10
Roadside Stations
Pollutant Concentrations(μg/m3)
Station Names
NO2
O3
SO2
CO
PM10
PM2.5
AQHI
Causeway Bay
433.7
7.2
62.7
1808.9
223.3
263.8
10+
Central
355.6
4.5
61.7
1550
218.7
166
10+
Mong Kok
277.4
8.2
58.5
1589.1
-
-
10+
Voilà, je sais que c'est pas grand chose, mais ça nous servira de référence pour la suite du projet.
EDIT: J'ai réparé les tableaux et mis en gras le maximum par polluant.
Je spamme, certes, mais je spamme des informations utiles.
Etant rentré chez moi, je me dis "tiens, et si j'essayais de calibrer le DN7C3" ? (oui, j'ai une vie passionnante, je sais). Je boot donc l'Arduino et le montage et jette un oeil aux mesures en intérieur, avec le purificateur d'air ayant tourné à fond toute la journée.
Voici les données issues de la liaison série de l'Arduino, produites avec le code quelques posts au dessus:
Puis, pour comparer, je passe le capteur par la fenêtre grâce à un dispositif high-tech impliquant le coinçage du carton d'emballage du capteur dans la fenêtre fermée pour tenir le montage tout en éviter de polluer tout l'appartement.
C'est une bonne nouvelle (si on écarte le fait que votre serviteur va mourir d'un cancer des poumons)
On n'a jamais dit que c'était exempt de risques
Ce serait bien d'avoir des données sur les variations de mesure entre les concentrations observées et la concentration moyenne, le "seuil référant". Cela pourrait être utile dans le cadre d'études du taux de pollution selon la semaine/mois/année et les conditions particulières.
Tu veux dire l'écart-type ? Je ne suis pas sûr d'avoir compris ce que tu voulais dire par là, désolé :/
Bon, sinon, ma calibration ne va pas comme je veux.
D'après la datasheet $PM_{2.5} = \alpha * \beta * (V_0 - V_S)$, avec $\alpha = 0.6$, $\beta$ étant fonction de l'humidité (je prends 1 pour le moment pour simplier et parce que l'humidité était environ de 50% pendant mes mesures) et $V_0$ la tension mesurée et $V_S$ la tension de référence dans de l'air "propre".
Dans le code que j'avais "pompé" (oui, no shame) pour tester le capteur, $\beta = 1$ et $V_S = 1100$, le reste étant conforme à la formule au dessus, à l'exception d'un facteur fonction de la température ( $(\theta$ - \theta_{25°C}) * 6$)
Donc pour résumer:
Formule officielle : $PM_{2.5} = 0.6 * (V_0 - V_S)$
Formule que j'ai utilisé pour mon test plus haut : $PM_{2.5} = 0.6 * (V_0 - (1100 + (\theta - \theta_{24.9°C}) * 6))$, avec $\theta = 20°C$
Dans mes données plus haut (voir l'extrait complet sur dropbox), on remarque que la valeur seuil retournée par le capteur est plus petite que 1100mV, 1066mV pour être précis.
Du coup, normalement et si j'ai bien compris ce qui est inscris sur la datasheet, on devrait utiliser cette valeur comme notre référence au lieu de 1100.
Sauf que voilà, en faisant ça, on réduit encore le membre retiré à la tension mesurée ($V_0$) et que du coup, cette différence multipliée par 0.6 est encore plus grande. Ce qui n'arrange pas nos affaires car les valeurs calculées pour les concentrations étaient déjà au dessus des valeurs constatées par le réseau officiel.
En fait, même en virant la conversion douteuse (je ne la comprends pas encore) pour la température, on obtient (1502-1066)*0.6 = 261 μ/m3, ce qui est nettement au dessus des 199.2μ/m^3 reportés par l'agence officielle.
A ce niveau, je ne sais plus trop dans quel sens prendre le problème… Des idées ?
EDIT: LaTeX a l'air de déconner sur une des formules. Je ne sais pas pourquoi non plus. Désolé…
EDIT 2: Alternativement, je pourrais ajuster le facteur de conversion donné par Sharp. En faisant un calcul sur un seul point (oui, c'est bancal), 1502mV => une cible de 199μ/m3 donc $\alpha = 199/(1502-1066) = 0.456$
Je vais tenter de vérifier ça dans les jours à venir.
Tu veux dire l'écart-type ? Je ne suis pas sûr d'avoir compris ce que tu voulais dire par là, désolé :/
Exactement. On aurait alors comme données les concentrations moyennes (ton seuil de référence), l'écart-type, et les concentrations journalières maximales observées. On pourrait comparer par la suite aux statistiques d'autres sources
J'ai pas tout lu, mais ton projet m'a fait pensé à celui d'un autre : Nicolas Baldeck, un grenoblois, a lancé sa startup il y a quelques mois pour pouvoir commercialiser une balise météo low-cost. Pour le moment cette station ne fait qu'anémomètre, mais il prévoit de développer plein de fonctionnalité supplémentaire avec le temps.
C'est un passionné d'électronique et d'informatique, un féru de l'open data, et à 23 ans il a déjà un joli palmarès. Il a notamment réussi à faire plier Météo France qui ouvrira les données des runs de ces modèles. Il a aussi fondé l'Open Meteo Foundation, et son travail le plus populaire reste probablement le calcul à J+1 d'un modèle météo très précieux pour tous les pratiquants de "sports aériens" et le site web associé.
Grâce à la communauté du vol libre qui le supporte fortement, il peut maintenant vivre de ses deux passions grâce à sa startup, et il semble mort de faim en terme d'innovation. Il utilise notamment le réseau Sigfox, qui pourrait être utile pour ton projet également, si tu souhaites placer des stations loin de la civilisation. Car si les villes sont pollués, le haut des montagnes le sont aussi (j'imagine que la pression étant plus faible en altitude on y retrouve aussi tout un tas de cochonneries légères).
Connectez-vous pour pouvoir poster un message.
Connexion
Pas encore membre ?
Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte