Auteur bloupy | Dernière modification 5/05/2022 par Bloup
M5Stick_-_CO2-_capteur_de_particules_-_MQTT_Capture_d_e_cran_2022-03-02_a_17.02.33.png
L’air constitue le premier des éléments nécessaires à la vie.
Chaque jour, un être humain adulte inhale 10 000 à 20 000 litres d’air en fonction de sa morphologie, de ses activités.
En plus de l’oxygène (O2) et le diazote (N2), qui représentent en moyenne 99 % de sa composition, cet air que nous respirons contient aussi des polluants, sous forme gazeuse, liquide ou solide d’origine naturelle (embruns marins, poussières, pollens…) ou résultant d’activités humaines (trafic routier, production d’énergie, industrie, agriculture…).
La pollution de l'air a des effets significatifs et multiples sur la santé et l'environnement.
La pénétration de ces polluants dans l’organisme peut avoir des conséquences sur la santé à court et long terme.
La qualité de l'air et la pollution de l'air sont donc des enjeux majeurs pour la santé.
Ici, nous allons programmer un M5StickC pour obtenir une meilleure connaissance de la qualité de l’air avec mesure du pourcentage de CO2 et la mesure de particules en suspension.
Les données obtenues seront envoyées sur une interface graphique (étape5) sous forme de flux de données pour les rendre visibles.
Les particules en suspension sont toutes les particules (solides ou en aérosols) portées par l’eau ou par l’air. Les matières particulaires ou PM (acronyme de Particulate Matter en anglais) sont les particules en suspension dans l’atmosphère terrestre.
PM10 particules en suspension dans l'air, d'un diamètre aérodynamique (ou diamètre aéraulique) inférieur à 10 micromètres.
Les particules plus fines peuvent être référencées :
PM2,5 dont le diamètre est inférieur à 2,5 micromètres, appelées « particules fines ».
PM1,0 dont le diamètre est inférieur à 1,0 micromètre, appelées « particules très fines ».
Le programme est à télécharger dans l'onglet "Fichiers". Il vous suffira de le télécharger, de le décompresser et de mettre le dossier contenant 2 fichiers (M5Stick-test-CO2-PM-Date-IOAdafruit.ino + time_zones.h) dans le dossier de croquis de Arduino.
Lorsque vous ouvrirez ce projet dans Arduino, vous vous retrouverez avec un croquis à 2 onglets : M5Stick-test-CO2-PM-Date-IOAdafruit et time_zones.h
Ce 2ème onglet permet d'afficher la date et l'heure sur l'écran. Vous pouvez aller à l'étape 7 pour voir comment modifier votre localisation si vous n'êtes pas dans le même fuseau horaire.
Vous avez en plus à votre disposition d'autres liens pour télécharger des codes pour un M5StickCplus :
- M5StickCPlus-CO2-PM-Date-Batterie-IOAdafruit.zip : Indication niveau et gestion de la batterie : indication du % en charge et décharge et mise en veille si le niveau est trop faible. Une petite description en étape 7.
- M5StickCPlus-CO2-PM-Date-BattMini-IOAdafruit-V2.zip : Un buzzer en plus lorsqu'il y a trop de CO2. Une petite description en étape 8.
D'autres projets capteurs avec un M5StickC :
Bien entendu, il faut avoir installé Arduino
Installer l'environnement Arduino sur votre système
Importer de nouvelles cartes dans l'interface Arduino
1-Ajout d'un catalogue de cartes dans l'interface de développement Arduino
Importer de nouvelles cartes dans l'interface Arduino
-> Préférences -> URL de gestionnaire de cartes supplémentaires
https://dl.espressif.com/dl/package_esp32_index.json
2-Ajout de la carte
-> Outils -> Type de carte -> Gestionnaire de carte -> Rechercher et installer ESP32
Pour notre projet, nous aurons besoin d'ajouter les bibliothèques suivantes via l'interface Arduino :
-> M5SticKC (M5SticKCPlus si vous utilisez ce modèle)
-> EspSoftwareSerial
-> HM330X by Tomoto Item:HM3301
-> AirGradient_Air_Quality_Sensor
-> Adafruit_MQTT_library
Importer des bibliothèques dans l'interface Arduino
Vous pouvez n'installer que les bibliothèques ci-dessus.
Pour pouvoir utiliser les 2 capteurs (DHT et SensAIrS8) en même temps, il va falloir modifier le fichier AirGradient.cpp qui se trouve dans la bibliothèque AirGradient_Air_Quality_Sensor fraichement installer.
Pour le modifier, il faut aller dans votre dossier*
Arduino -> libraries -> AirGradient_Air_Quality_Sensor
Ouvrir le fichier AirGradient.cpp avec un éditeur de texte.
Pour ne pas supprimer les lignes, nous allons tout simplement mettre certaines lignes en commentaire. Pour se faire il suffit de mettre // en début de ligne.
-> Trouver PMS_Init(D5,D6); (Ligne 60) mettre cette ligne en commentaire //PMS_Init(D5,D6);
-> Trouver CO2_Init(D4,D3); (Ligne 569) mettre en commentaire // CO2_Init(D4,D3);
-> Trouver Wire.begin(); (Ligne45) mettre en commentaire //Wire.begin();
*Pour retrouver votre fichier de bibliothèque "libraries" , il est possible d'y accéder en allant sur
Croquis > Afficher le dossier des croquis > libraries
Pour que votre M5 se connecte au Wifi, il va falloir agir sur le programme lui-même avec l'interface Arduino.
Pour un M5Stick classique, le programme à télécharger est ici :
Pour un M5StickCPlus, la dernière version est là.
Ouvrir le fichier .ino dans Arduino. Vous allez découvrir le code dans son ensemble. Vous devriez vous retrouver avec un croquis à 2 onglets : M5Stick......... et time_zones.h
/************************* Configuration pour le Wifi ************************/
const char* ssid = "LENOMDETABOX "; // Nom de votre réseau WIFI
const char* password = "LEMDPDETABOX"; // Clef Wifi
Retrouvez toutes les informations sur les 2 pages suivantes
Créer un compte chez AdafruitIO pour envoyer des données dans le web
Envoyer des données sur le WEB grâce à MQTT
Remplacer "Username" avec votre nom d'utilisateur sur io.adafruit et "ActiveKey" la clef généré sur AdafruitIO.
Avec les capteurs de notre expérience, nous allons pouvoir récupérer les valeurs suivantes : %CO2, PM1, PM2,5 et PM10. Il va falloir créer les "feeds" correspondantes.
Attention à la limite de données envoyées.
Dans le code, pour envoyer ces données, ça se traduit comme ci-dessous.
CO2.publish(valCO2);
PM1.publish(sensor.std.getPM1());
PM2_5.publish(sensor.std.getPM2_5());
PM10.publish(sensor.std.getPM10());
/************************* Configuration pour utiliser MQTT Adafruit *********************************/
#define AIO_SERVER "io.adafruit.com"
#define AIO_SERVERPORT 1883
// Suivre ce tuto pour récupérer les infos nécessaires https://www.wikidebrouillard.org/wiki/Cr%C3%A9er_un_compte_chez_AdafruitIO_pour_envoyer_des_donn%C3%A9es_dans_le_web
#define AIO_USERNAME "USERNAME" //Votre nom d'utilisateur sur io.adafruit
#define AIO_KEY "KEY" //Votre clef AdafruitIO
/************ Création des objets pour l'horloge ******************************************************/
const char* ntpServer = "pool.ntp.org";
const char* location = "Europe/Paris"; // voir dans l'onglet time_zones.h si vous n'êtes pas sur le même fuseau horaire
/************ Création des objets MQTT et Wifi ******************************************************/
WiFiClient client; // Création d'un objet client wifi, nécessaire pour initier la connexion avec le serveur Adafruit MQTT.
Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY); // Création de l'objet mqtt nécessaire à la connexion avec le serveur
/****************************** Création des flux de données ****************************************/
// Création des objets PM1.0, PM2.5 PM10 et CO2
// Renseigner les chemins de vos flux de données "/feeds/******
// voir tuto https://www.wikidebrouillard.org/wiki/Envoyer_des_donn%C3%A9es_sur_le_WEB_gr%C3%A2ce_%C3%A0_MQTT
Adafruit_MQTT_Publish CO2 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/CO2");
Adafruit_MQTT_Publish PM1 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/PM1");
Adafruit_MQTT_Publish PM2_5 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/PM2_5");
Adafruit_MQTT_Publish PM10 = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/PM10");
Vous pouvez remplacer "Europe/Paris" sur la ligne
-> const char* location = "Europe/Paris";
par une autre localisation.
Il suffit de récupérer dans l'onglet time_zones.h, la destination de votre choix.
#include <M5StickCPlus.h>
/*************** Gestion Batterie ***********************/
float b, c = 0; // b = batterie interne, c si en charge
int batterie = 0; //valeur batterie en %
void setup() {
M5.begin();
M5.Lcd.setRotation(3);
}
void loop() {
M5.Lcd.setCursor(190, 10);
M5.Lcd.setTextSize(1.5);
c = M5.Axp.GetVapsData() * 1.4 / 1000;
b = M5.Axp.GetVbatData() * 1.1 / 1000;
batterie = ((b - 3.0) / 1.2) * 100;
if (c >= 4.5) {
M5.Lcd.setTextColor(TFT_YELLOW, BLACK);
M5.Lcd.print("CHG:"); //Indique CHG en jaune si cable USB branché
}
else {
M5.Lcd.setTextColor(GREEN, BLACK);
M5.Lcd.print("BAT:"); //Indique BAT en vert si M5 non branché
}
if (batterie > 100)
batterie = 100;
else if (batterie < 100 && batterie > 9)
M5.Lcd.print("");
else if (batterie < 9)
M5.Lcd.print("");
if (batterie < 10)
M5.Axp.DeepSleep(); // Si la batterie est trop faible = mise en veille
M5.Lcd.print(batterie);
M5.Lcd.print("%"); // % de batterie
}
/*************** Gestion Alarme ***********************/
int freq = 1800;
int channel = 0;
int resolution_bits = 8;
int buzzer = 2;
/****************************** SETUP *******************************************/
void setup() {
ledcSetup(channel, freq, resolution_bits); // alarme
ledcAttachPin(buzzer, channel);
}
/****************************** LOOP *******************************************/
void loop() {
ledcWrite(channel, 0);
if (co2_val.toInt() >= 1500) {
M5.Lcd.drawRoundRect(185, 30, 44.75, 15, 2, RED);
M5.Lcd.fillRoundRect(185, 30, 44.75, 15, 2, RED);
M5.Lcd.setTextColor(RED);
M5.Lcd.setCursor(160, 55);
M5.Lcd.print("VICIE");
ledcWrite(channel, 128);
}
}
Avant de téléverser le programme dans votre carte électronique, vous devez vous assurer que :
Pour se faire, il vous suffit d'aller dans l'onglet "Outils"
Vous pouvez suivre l'avancée du processus en ouvrant la console et/ou regarder ce qui se passe sur l'écran du M5Stick-C.
-> Capteur HM3301 en grove (Connectique blanche)
-> Capteur CO2 -> Étape un peu de soudure
Dans l'étape 1 de la page Un capteur de CO2 avec UIFLOW et M5STICK, un peu de soudure pour pouvoir connecter simplement votre capteur de CO2 au M5Stick.
La calibration du capteur se fera avec le bouton du M5StcikC déjà intégré après téléchargement du programme. Il suffira d'appuyer longtemps dessus jusqu'à apparition de "calibrage" sur l'écran du M5Stick.
Maintenant, vous pouvez déconnecter le câble USB et mettre votre station capteur où vous voulez si votre batterie est chargée bien entendu.
D'autres capteurs ici : DataLab - Chapitre 3 - Connecter ses capteurs
Dernière modification 5/05/2022 par user:Bloup.
Published
Vous avez entré un nom de page invalide, avec un ou plusieurs caractères suivants :
< > @ ~ : * € £ ` + = / \ | [ ] { } ; ? #