Go Down

Topic: Serveur de mesure de particules fines (PM10 et PM2,5) (Read 2674 times) previous topic - next topic

MicroQuettas

Oct 14, 2019, 04:00 pm Last Edit: Oct 14, 2019, 04:10 pm by MicroQuettas Reason: Links to pictures
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

MicroQuettas

#1
Oct 14, 2019, 04:01 pm Last Edit: Oct 15, 2019, 04:27 pm by MicroQuettas Reason: Inserting pictures
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

MicroQuettas

#2
Oct 14, 2019, 04:01 pm Last Edit: Oct 15, 2019, 03:56 pm by MicroQuettas Reason: Completion
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

MicroQuettas

#3
Oct 14, 2019, 04:01 pm Last Edit: Oct 15, 2019, 04:51 pm by MicroQuettas
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 :
Quote
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.


lesept

A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

Leptro

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

Artouste

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)?

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





Artouste

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  ?


MicroQuettas

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.

lesept

Et si tu mesures dans ton garage, pour voir les émissions issues des pots d'échappement ? Pour comparer diesel et essence.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

iznobe

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 !

Artouste

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



J'ai déjà quelques manips en tête :smiley-mr-green:



A suivre pour moi aprés reception




MicroQuettas

Bonjour Iznobe,

Quote
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).

Quote
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.

Quote
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


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

Go Up