Hé! Vous semblez être en United States, souhaitez-vous utiliser notre site English ?
Switch to English site
Skip to main content

Plan interactif de la qualité de l'air - 2ème partie : Fabrication d'un enregistreur mobile de qualité de l'air ESDK

Une grande partie du plan de la qualité de l'air est constituée par les données en direct dont il a besoin pour fonctionner. Dans cet article, je vais vous expliquer comment j'ai converti mon ESDK en un enregistreur mobile de données sur la qualité d

Matériel et connexions

Malheureusement, je n'ai pas reçu d'antenne GPS avec mon kit de capteur et je n'ai donc pas pu utiliser la fonction de position GPS intégrée à l'ESDK. Heureusement, mon plan ne dépendait pas de celui-ci, car j'avais déjà acheté un module GSM/GPRS/GPS pour l'interfacer avec le kit. J'ai pensé que si je devais collecter des données en direct sur le terrain, l'internet mobile serait essentiel. J'ai donc acheté le module A9G avec les fonctions GPRS et GPS.

A9G module with GPRS and GPS functions

Le module A9G est contrôlé par des commandes prédéfinies appelées commandes AT envoyées par série, les données GPS du module peuvent également être lues sur cette connexion série. J'ai démonté mon ESDK et cassé les lignes série requises, ainsi que 5v et GND.

ESDK Main board - Screen side

ESDK Main board - PCB Side

Mon plan était d'avoir un script python séparé fonctionnant sur le Pi, lisant les données GPS du module et les ajoutant aux données de qualité de l'air lues à partir du kit de capteur. Cependant, la mise en œuvre n'était pas si simple ; pour commencer, j'ai découvert que je ne pouvais pas communiquer avec le module A9G directement à partir des broches série du Raspberry Pi en raison de problèmes de synchronisation et de timing, et donc la seule façon de communiquer avec le module à partir d'un Raspberry Pi était d'utiliser un adaptateur USB vers série (FTDI) que je n'avais malheureusement pas sous la main. Je n'allais pas laisser cela me bloquer et j’ai donc reprogrammé un de mes Arduinos comme un relais série. Je pouvais alors connecter l'Arduino au Raspberry Pi, qui relaie alors les données série vers et depuis le module A9G, de la même façon qu'un USB vers un périphérique série, mais via un logiciel. Vous verrez mes connexions ci-dessous, et le code sera également joint à cet article.

Circuit Schematic

A9G Board and Arduino housed in 3D Printed Enclosure

Alimentation de l'enregistreur ESDK mobile

Pour que l'ESDK soit mobile, j'avais besoin d'un moyen de l'alimenter en déplacement ; pour cela, j'ai acheté une banque d'énergie de 27000mAh. J'ai ensuite modélisé et imprimé quelques pièces pour aider à attacher la banque d'énergie au kit.

Finished Mobile ESDK Air Quality Logger - Front View

Finished Mobile ESDK Air Quality Logger - Rear View

Le logiciel

Le script python qui fonctionne sur le pi a une tâche simple. Il lit les données des capteurs via MQTT à partir de l'ESDK. Il lit également les données GPS du module A9G et concatène ensuite les informations en une seule chaîne, qui est ensuite écrite dans un fichier . csv. J'ai aussi programmé le script pour créer un fichier .kml à partir des données GPS et des données du capteur. De cette façon, j'obtiens une feuille Excel normale ainsi qu'un fichier (.kml) que je peux charger directement dans google earth pour pouvoir visualiser correctement les données du kit en direct.

Le code comporte quatre sections principales :

La première est la configuration MQTT, qui permet au script de se connecter au broker MQTT de l'ESDK pour obtenir les relevés réels du capteur.

La deuxième section est celle de la configuration de la communication série. Ici, je configure simplement le raspberry pi pour communiquer avec l'Arduino que j'utilise comme adaptateur USB - série improvisé. Il fonctionnera de la même manière si j'utilise un module FTDI approprié.

La troisième section du code envoie quelques commandes AT de base à la carte GPS pour qu'elle commence à transmettre ses données GPS en série.

La boucle de code principale est l'endroit où toutes les choses cool se produisent. La première chose que j’ai fait a été de vérifier s'il y avait des données utilisables à traiter, d'où toutes les déclarations « if ».

S'il y a des données de qualité de l'air valides provenant du kit ainsi que des données GPS valides provenant de la carte A9G, les trois lignes de code suivantes réunissent les données de qualité de l'air et les données GPS en une seule chaîne, qui est ensuite écrite dans le journal .csv pour ce jour. La ligne "datalogfile = open(strftime('%d-%m-%Y') + "_airqlog.csv", "a")" garantit qu'un seul csv est créé par jour, de sorte que le script ne génère pas un nouveau fichier chaque fois que le kit est redémarré le même jour.

Après avoir écrit dans le fichier .csv, le script procède à l'écriture dans le fichier .kml, les fichiers .kml nécessitent la latitude, la longitude et l'altitude pour générer un point valide sur un plan, donc j'ai quelques lignes de code qui vont extraire la longitude, la latitude et l'altitude du format de données NMEA rapporté par la carte A9G.

Le fichier .kml est un type de fichier très spécifique, donc je fais un peu de formatage de chaîne alambiqué pour obtenir le fichier juste pour que google earth le lise correctement. Je vais recommander de lire plus sur les fichiers .kml ici pour mieux comprendre le format du fichier et la syntaxe. Mon code complet est également joint à cet article pour votre référence.

Je tiens également à souligner que l'ESDK est conçu pour les mesures de la qualité de l'air intérieur, et à cette fin, la combinaison de capteurs actuellement sur le kit est parfait pour un environnement extérieur : Le CO2, les COV, la température, l'humidité et les particules ne sont pas tout à fait suffisants pour raconter la totalité de l'histoire. Le monoxyde de carbone (CO) et le dioxyde d'azote (NO2) seraient plus révélateurs dans un enregistreur de la qualité de l'air extérieur, donc je vais trouver sous peu un moyen d'implémenter ces deux capteurs.

Toute la CAO et le code que j'ai utilisés dans cet article seront joints ci-dessous, alors n'hésitez pas à vous y référer si nécessaire.

Pour plus d'informations sur ce projet, la 1ère partie de cette série traite de la fabrication des cellules pour le Plan de la qualité de l'air. 

Downloads

I am a passionate Hardware Engineer, with a deep interest in Robotics and Embedded hardware/software. I enjoy picking up new skills and challenging myself with finding innovative technological solutions.
DesignSpark Electrical Logolinkedin