Serveur de mesure de particules fines (PM10 et PM2,5)

Bonjour à toutes et à tous,

Voici un petit projet amusant et utile qui permet de mesurer les particules fines PM2,5 et PM10 en suspension dans l’air ambiant. Il calcule les moyennes glissantes sur 24 heures et affiche les seuils de vigilance et d’alerte tels que définis ici : normes européennes

Il rajoute température, humidité et pression pour avoir une vue plus complète et affiche le tout sur un écran :

Sur celui-ci, tout va bien… Voici ce que cela donnerait en cas d’épisode de pollution important :

C’est la copie d’un écran de test (heureusement !) de l’affichage, d’où l’incohérence des données. Par ailleurs, il n’y a pas de seuil de vigilance défini pour les PM2,5 (les plus nocives !), alors j’ai “inventé” 15µg sur 24h à partir du seuil d’alerte à 20µg sur 24h. C’est paramétrable au cas où des valeurs officielles seraient définies.

Il y a aussi un écran qui donne l’historique sur les 24 dernières heures :

Toutes les données sont enregistrées toutes les 24 heures dans un fichier en format .csv. On peut le récupérer avec un simple client FTP (par ex. FileZilla), après avoir activé le serveur FTP depuis l’écran des réglages :

Rajoutons que la bête peut fonctionner de manière autonome : il ne lui faut qu’une alimentation 5V 700mA, par ex. un chargeur de téléphone… LA consommation moyenne est bien plus faible (pas mesurée).

Et maintenant, question : comment c’est fait ton truc ?

Réponse : ben, la suite au prochain numéro…

Bonne bidouille,

MicroQuettas

Deuxième partie : comment c’est fait ton truc ?

Les capteurs sont :

  • un capteur de particules SDS011 de chez Nova Fitness notice SDS011,
  • un capteur de température, pression et humidité BME280,
  • une horloge RTC DS3231, bien utile pour garder l’heure lorsque la bête fonctionne toute seule.

Le coeur du montage est un Wemos D1 mini ou similaire (ESP8266 avec 4M de mémoire).

Le schéma de l’ensemble en pdf est aussi en pj.

Côté alimentation :

  • l’ESP8266 du Wemos D1 mini fonctionne en 3,3V, mais le Wemos est alimenté en 5V car il comporte un régulateur intégré,
  • la DS3231 et le BME280 fonctionnent en 3,3V, fournis par le régulateur du Wemos,
  • ESP8266, BME280 et DS3231 sont reliés par un bus I2C en 3,3V,
  • les résistances de tirage (“pull-up”) au 3,3V sont sur les cartes BME280 et DS3231,
  • le SDS011 est alimenté en 5V, mais son bus de communication série fonctionne en 3,3V ce qui permet de le raccorder sans souci à l’ESP8266,
  • les alimentations 5V et 3,3V sont découplées par le tandem habituel de condensateurs (500 à 1000µF avec en parallèle 100nF), montés sur un bout de plaque à pastilles,
  • et mon tout s’alimente avec un chargeur de téléphone de récupération (5V 700mA).

L’ensemble du montage éclaté :

La “mise en boîte”.
On peut faire plus joli, mais il y a quelques points à considérer :

  • il y a un sens pour le montage du SDS011 (Cf. sa notice),
  • le tuyau d’alimentation en air du SDS011 doit être très court (Cf. sa notice),
  • l’air aspiré par le SDS011 doit pouvoir s’évacuer…

Détail du câblage du Wemos :

Et enfin, la bête en boîte :

Question : peut on mettre l’animal dehors ?
J’ai eu une expérience malheureuse avec un BME280 en extérieur. Il était protégé de la pluie, mais pas des cycles de condensation. L’humidité s’est bloquée à 100%, puis pression et humidité ont affiché n’importe quoi… Bref, je laisserai l’animal dedans, quitte à prendre l’air au dehors, avec un tuyau très court (15 cm).

Requestion : et le logiciel ?
Réponse au prochain numéro…

Bonne bidouille

AQI_00a_Sch.pdf (67.6 KB)

Troisième partie : et le logiciel ?

Tout le logiciel est dans le zip en pj.
Une seule bibliothèque additionnelle est nécessaire, “Streaming” qui se trouve en bas de cette page bibliothèques Arduino.

Pour être sûr que toute la mémoire est bien effacée, choisir l’option “effacer toute la Flash” dans l’IDE.

Comment configurer ?

Au démarrage, le logiciel essaie de se connecter au réseau Wifi qui lui a été indiqué;
S’il n’y arrive pas, il ouvre alors un point d’accès Wifi sur lequel on peut se connecter.

C’est ainsi qu’il faut procéder pour configurer facilement le logiciel :

  • compiler et charger le logiciel tel quel dans le Wemos,

  • le lancer. Après quelques dizaines de secondes, il ouvre un point d’accès (SSID : AQI_Wifi, MdP : Freddonix) sur lequel il faut se connecter,

  • sur le réseau ainsi créé, le bidule a l’adresse 192.168.12.1,

  • on s’y connecte avec un navigateur et le login : user, MdP : user,

  • on est alors sur l’écran principal, d’où on peut accéder aux réglages par le bouton du même nom et le login : admin, MdP : admin,

  • configurer alors les comptes :

  • puis le Wifi :

  • terminer en cochant redémarrage immédiat, puis valider

  • la machine va redémarrer sur le réseau Wifi que vous lui avez indiqué,

  • elle se mettra à l’heure toute seule dès qu’elle aura une connexion Wifi et conservera cette heure grâce à la DS3231 (et à sa pile),

  • si le bidule doit fonctionner sans Wifi, on peut aussi le mettre à l’heure en rentrant la date et l’heure UTC (ex GMT). Il se débrouille alors tout seul pour avoir l’heure locale en fonction des paramètres rentrés dans l’écran de réglage.

Pour avoir une information de pression exacte (pression réduite au niveau de la mer), il faut renseigner l’altitude du bidule. Vous trouverez cela sur le site : Géoportail.

Note : le logiciel fonctionne parfaitement sans les capteurs ni la DS3231. Evidemment dans ce cas, il ne mesure rien, mais cela permet de le configurer et de le tester.

Question : et le FTP ?
Réponse au prochain numéro

Bonne bidouille
MicroQuettas

5- Page_94.jpg

AQI_01e_P.zip (177 KB)

Quatrième partie : le FTP

Le bidule enregistre toutes les données de la journée écoulée tous les jours à 0h00 UTC dans un fichier dans son SPIFFS. Le FTP permet de récupérer le fichier qui contient toutes les données.

Pour cela, il faut activer le serveur FTP avec le bouton idoîne de l'écran de réglage. On y accède alors avec un client FTP (par ex. FileZilla) qu'il faut configurer comme suit : - protocole : FTP, - chiffrement : connexion FtP simple, - authentification : normale, - idenfiant : identifiant du compte administrateur, - mot de passe : mot de passe du compte administrateur ; - Paramètres de transfert : mode : passif, - limiter le nombre de connexions simultanées, - nombre maximum de connexions : 1.

Le fichier est sous la racine du SPIFFS et se nomme "AQI.CSV" On peut le supprimer avec le FTP si nécessaire. La machine en débutera alors un nouveau.

Après utilisation, ne pas oublier de fermer le serveur FTP. Cela consomme des ressources et ce n'est pas bon de laisser un serveur ouvert à tous les vents.

Format du fichier C'est du .csv pur et dur :

ID; TS; QNH; Tp; Hu; PM25; PM10 ; 29/09/19 15:01; 1017; 25,5; 41; 2; 5 ; 29/09/19 16:01; 1017; 25,5; 40; 2; 2 ; 29/09/19 17:01; 1016; 26; 39; 2; 3 ; 29/09/19 18:01; 1016; 26; 40; 2; 5 ; 29/09/19 19:01; 1017; 25,5; 40; 2; 3

Les dates et heures sont en UTC (pour éviter les zig-zag au changement d'heure). Ce format se lit et s'exploite avec tout tableur ou base de donnée. La première colonne est vide pour un éventuel index dans une base de donnée.

L'OTA Il n'y a pas de raison de se priver du confort moderne, aussi a-t-on également l'OTA que l'on peut activer depuis l'écran des réglages. Le mot de passe OTA est le mot de passe du compte administrateur.

Note : une fois l'OTA activé, on ne peut plus le désactiver ! Il faut donc soit charger un nouveau programme (qui n'effacera ni les réglages ni le fichier AQI.CSV), soit redémarrer.

Voila, ce coup ci, c'est fini ! Je répondrai à toute question raisonnable.

Bonne bidouille

MicroQuettas.

Sacré boulot, félicitations !

Félicitations, beau boulot.

L'interface web est superbe. Si je devais écrire un tel sujet avec cette qualité, il me faudrait des heures..

Et un karma de plus

trés belle réalisation

J'ai regardé rapidement les specs du capteur mais pas le soft le laser est donné pour 8000 heures (life up)

tu fais des acquisitions espacées (avec ON/OFF laser)?

Bonjour les amis,

Merci pour vos compliments.

L'interface web est en html/css. Cela se "dessine" avec un éditeur de texte et un navigateur pour voir le résultat. Ensuite, il reste à saucissonner le code html et y insérer les valeurs qui changent : du traitement de chaînes de caractères. Rien de sorcier, mais c'est minutieux. On peut aussi utiliser AJAX/XML (merci à J-M-L pour son super tuto), mais je le réserve aux pages qui changent souvent (par ex. sur le Linky).

Pour le SDS011, il est arrêté la plupart du temps. Il y a un cycle de mesure toutes les heures. A chaque fois :

  • réveil du capteur,
  • stabilisation pendant 30s,
  • puis 16 mesures en environ 20s,
  • on garde la moyenne des 16 mesures,
  • mise en sommeil du capteur.

Avec 50s de fonctionnement par cycle, les 8000h de potentiel du laser me donnent donc 576000 cycles de mesure... Mon potentiel perso sera épuisé bien avant celui de la diode !

Bonne bidouille

MicroQuettas

MicroQuettas: Bonjour les amis,

Merci pour vos compliments.

L'interface web est en html/css. Cela se "dessine" avec un éditeur de texte et un navigateur pour voir le résultat. Ensuite, il reste à saucissonner le code html et y insérer les valeurs qui changent : du traitement de chaînes de caractères. Rien de sorcier, mais c'est minutieux. On peut aussi utiliser AJAX/XML (merci à J-M-L pour son super tuto), mais je le réserve aux pages qui changent souvent (par ex. sur le Linky).

Pour le SDS011, il est arrêté la plupart du temps. Il y a un cycle de mesure toutes les heures. A chaque fois :

  • réveil du capteur,
  • stabilisation pendant 30s,
  • puis 16 mesures en environ 20s,
  • on garde la moyenne des 16 mesures,
  • mise en sommeil du capteur.

Avec 50s de fonctionnement par cycle, les 8000h de potentiel du laser me donnent donc 576000 cycles de mesure... Mon potentiel perso sera épuisé bien avant celui de la diode !

Bonne bidouille

MicroQuettas

OK c'est pas un peu grand 1 heure entre 2 sessions de mesure ? Il y a le risque AMHA d'occulter completement des épisodes importants de pollutions temporaires ?

Bonjour,

D'après la littérature, c'est la moyenne sur 24h qui compte. D'où le réglage de la périodicité des mesures à 60 min.

Ceci dit, merci pour votre suggestion de pouvoir augmenter la fréquence des mesures. Je mets cela dans la liste des améliorations pour la prochaine version.

Bonne bidouille,

MicroQuettas

PS : ma seule expérience en matière de pollution aiguë, c'est une tartine bloquée dans le grille-pain, d'où fumée. Cela a été enregistré et en tel cas, ce sont les PM2,5 qui augmentent le plus.

Et si tu mesures dans ton garage, pour voir les émissions issues des pots d’échappement ? Pour comparer diesel et essence.

Salut ,

Tres belle realisation et qui plus est utile !

j' aurais juste quelques questions :

1°) aproximativement , a combien s ' eleve le cout global de ce superbe projet ? 2°) pour un novice comme moi , est ce relativement simple de proceder a la mise en boite ? 3°) si je me lance dans la mise en place de ce projet chez moi , vu que je ne peux pas utiliser le wifi , serez vous disponible pour m ' aider a la modification du code pour passer en ethernet ( si c ' est possible ) . je ne connais pas du tout les wemos et autres modules , pour le moment uniquement le mega et quelques bases de code .

Et merci beaucoup pour ce partage !

oui , jolie réalisation suite à la lecture , j'ai commandé il y a qq jours un capteur "pour jouer avec" et éventuellement le torturer :grin:

J'ai déjà quelques manips en tête :grin:

A suivre pour moi aprés reception

|500x144

Bonjour Iznobe,

1°) aproximativement , a combien s ' eleve le cout global de ce superbe projet ?

environ 35€, avec des composants de qualité raisonnable, le plus cher étant le capteur SDS011 (20€ environ).

2°) pour un novice comme moi , est ce relativement simple de proceder a la mise en boite ?

Il faut savoir câbler et souder tous les petits fils sur des pinouilles pour les enficher dans les connecteurs des cartes. On peut aussi souder directement sur les cartes.

3°) si je me lance dans la mise en place de ce projet chez moi , vu que je ne peux pas utiliser le wifi , serez vous disponible pour m ' aider a la modification du code pour passer en ethernet ( si c ' est possible ) .

Ce sera un gros travail et je ne suis pas certain qu'il y ait une carte Arduino /Ethernet compatible. Si vous avez un Ethernet, le plus simple est d'activer le Wifi sur votre box ou de rajouter un "PoA" (point of access). Enfin, si vous êtes en pleine nature ou pas chez vous, le système crée son propre réseau Wifi.

Bonne bidouille,

Fred de MicroQuettas

Bonjour Artouste,

J'ai une version améliorée (intervalles de mesure réglables tout en gardant les moyennes sur 24 h) en test. Quand vous aurez reçu votre capteur, faites moi signe, je publierai la nouvelle version.

Je suis également intéressé par les résultats des "tortures" du capteur...

Bonne bidouille,

Fred de MicroQuettas

MicroQuettas: Bonjour Artouste,

J'ai une version améliorée (intervalles de mesure réglables tout en gardant les moyennes sur 24 h) en test. Quand vous aurez reçu votre capteur, faites moi signe, je publierai la nouvelle version.

Je suis également intéressé par les résultats des "tortures" du capteur...

Bonne bidouille,

Fred de MicroQuettas

Bonsoir accessoirement un doc interessant

Bonjour Artouste,

Merci beaucoup pour le lien. Très intéressant, je résume :

  • le SDS011 est un capteur PM2,5 qui extrapole pour les PM10. Bonne nouvelle, ce sont les PM2,5 les plus nocives,
  • il serait possible de le compenser pour obtenir des mesures PM2,5 proches de celles d'un capteur pro,
  • au dessus de 70% d'humidité, les valeurs sont surestimées et là encore il y aurait moyen de compenser.

Il y a aussi en fin d'article un lien vers le site Luftdaten qui propose un montage qui ressemble beaucoup au mien, sauf qu'il communique les données à une BD centrale (carte sur le site Luftdaten).

A suivre... et bonne bidouille

Fred de MicroQuettas

MicroQuettas: Bonjour Artouste,

J'ai une version améliorée (intervalles de mesure réglables tout en gardant les moyennes sur 24 h) en test. Quand vous aurez reçu votre capteur, faites moi signe, je publierai la nouvelle version.

Je suis également intéressé par les résultats des "tortures" du capteur...

Bonne bidouille,

Fred de MicroQuettas

Bonsoir capteur réceptionné, il semble fonctionnel = juste connecté sur l'USB/UART , çà cause dans le poste 8) Je vais déja le faire tester en "salle banche" pour voir ce qu'il sort ce qu’il sort comme "bruit de fond" poste ton dernier code

Bonsoir Artouste,

Super le test en salle blanche... ce serait encore plus intéressant d'avoir accès à un capteur calibré pour comparer ! Pour la nouvelle version, elle est en test. Il reste un truc à vérifier, il faut attendre encore quelques jours.

A+ et bonne bidouille,

Fred de MicroQuettas

Bonjour à toutes et à tous,

La nouvelle version est arrivée. Elle permet de faire varier la périodicité des mesures entre 6 min et 240 min tout en gardant la gestion des moyennes sur 24 heures glissantes pour les particules.

Pas d’autres changements.

J’ai testé la version pendant plus de 2 semaines en fonctionnement continu. RAS sur l’historique. Enregistrements OK sur le fichier.


J’utilisais jusqu’à présent l’IDE 1.8.7 avec la gestion de carte ESP8266 à la version 2.4.2. Cela marchait pile-poil.
En passant, j’ai essayé l’IDE 1.8.10 avec la gestion de carte V2.6.1. Quelques surprises sont apparues :

  • le constructeur de SoftwareSerial a changé, entraînant un petit changement pas méchant dans le code,
  • la nouvelle version d’esptool (le SW qui sert à flasher le 8266) a eu un comportement étrange avec le NodeMCU qui me sert à faire les tests. Il ne passait en programmation que si l’on appuyait sur le bouton Flash de la NodeMCU, Cf. ci-dessous,
  • pas grave sur une NodeMCU, mais plus emm… sur une Wemos D1 car le dit bouton n’existe pas !
  • si cela se produit, il faut mettre GPIO0 à la masse (GND), pendant le “connecting”, Cf. ci-dessous,
  • pour corser le tout, le problème semble intermittent, car après un flashage réussi en 2.6.1, il est repassé tout seul en mode flash pour d’autres flashages de la même carte,
  • si vous êtes ennuyé par ce mode de fonctionnement, revenez à la 2.4.2, laquelle ne présente pas toutes ces facéties…

Je précise qu’étant sur Linux, ce ne sont pas des problèmes de driver.

La séquence de flashage bizarre de la 2.6.1 :

esptool.py v2.8
Serial port /dev/ttyUSB0
Connecting…_<=============== Appuyer sur le bouton flash si la connection ne se fait pas
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 5c:cf:01:23:45:67
Uploading stub…
Running stub…
Stub running…
Configuring flash size…
Auto-detected Flash size: 4MB
Compressed 422080 bytes to 285497…

Writing at 0x00000000… (5 %)

Writing at 0x00044000… (100 %)
Wrote 422080 bytes (285497 compressed) at 0x00000000 in 25.2 seconds (effective 134.0 kbit/s)…
Hash of data verified.

Leaving…
Hard resetting via RTS pin…

Je suis preneur de tous les retours,
Bonne bidouille,

Fred de MicroQuettas

AQI_01f_P.zip (182 KB)