- Composants requis:
- Schéma de circuit et explication:
- Explication de travail:
- Explication du code:
- "; webpage + =" La qualité de l'air est "; page web + = air_quality; page web + =" PPM "; page web + ="
";
Le code suivant appellera une fonction nommée sendData et enverra les données et les chaînes de message à la page Web à afficher.
sendData (cipSend, 1000, DEBUG); sendData (page Web, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = page Web.longueur (); cipSend + = "\ r \ n";
Le code suivant imprimera les données sur l'écran LCD. Nous avons appliqué diverses conditions pour vérifier la qualité de l'air, et l'écran LCD imprimera les messages en fonction des conditions et le buzzer émettra également un bip si la pollution dépasse 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("La qualité de l'air est"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Fresh Air"); digitalWrite (8, FAIBLE);
Enfin, la fonction ci-dessous enverra et affichera les données sur la page Web. Les données que nous avons stockées dans la chaîne nommée «page Web» seront enregistrées dans la chaîne nommée «commande» . L'ESP lira alors le caractère un par un à partir de la «commande» et l'imprimera sur la page Web.
String sendData (commande String, timeout const int, débogage booléen) {String response = ""; esp8266.print (commande); // envoie le caractère lu au esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// L'esp a des données donc affiche sa sortie dans la fenêtre série char c = esp8266.read (); // lit le caractère suivant. réponse + = c; }} if (debug) {Serial.print (réponse); } réponse de retour; }
- Test et résultat du projet:
Dans ce projet, nous allons créer un système de surveillance de la pollution de l'air basé sur l'IoT dans lequel nous surveillerons la qualité de l'air sur un serveur Web utilisant Internet et déclencherons une alarme lorsque la qualité de l'air descend au-delà d'un certain niveau, c'est-à-dire lorsqu'il y en a suffisamment des gaz nocifs sont présents dans l'air comme le CO2, la fumée, l'alcool, le benzène et le NH3. Il montrera la qualité de l'air en PPM sur l'écran LCD et sur la page Web afin que nous puissions la surveiller très facilement.
Auparavant, nous avons construit le détecteur GPL en utilisant le capteur MQ6 et le détecteur de fumée utilisant le capteur MQ2, mais cette fois, nous avons utilisé le capteur MQ135 comme capteur de qualité de l'air, qui est le meilleur choix pour surveiller la qualité de l'air car il peut détecter la plupart des gaz nocifs et mesurer leur quantité avec précision. Dans ce projet IOT, vous pouvez surveiller le niveau de pollution de n'importe où en utilisant votre ordinateur ou votre mobile. Nous pouvons installer ce système n'importe où et pouvons également déclencher certains appareils lorsque la pollution dépasse un certain niveau, comme nous pouvons allumer le ventilateur d'extraction ou envoyer des SMS / e-mails d'alerte à l'utilisateur.
Composants requis:
- Capteur de gaz MQ135
- Arduino Uno
- Module Wi-Fi ESP8266
- Écran LCD 16X2
- Planche à pain
- Potentiomètre 10K
- Résistances 1K ohm
- Résistance de 220 ohms
- Avertisseur sonore
Vous pouvez acheter tous les composants ci-dessus à partir d'ici.
Schéma de circuit et explication:
Tout d'abord, nous allons connecter l' ESP8266 à l'Arduino. ESP8266 fonctionne sur 3,3 V et si vous lui donnez 5 V de l'Arduino, cela ne fonctionnera pas correctement et il pourrait être endommagé. Connectez le VCC et le CH_PD à la broche 3.3V d'Arduino. La broche RX de l'ESP8266 fonctionne sur 3.3V et ne communiquera pas avec l'Arduino lorsque nous la connecterons directement à l'Arduino. Nous devrons donc lui faire un diviseur de tension qui convertira le 5V en 3,3V. Cela peut être fait en connectant trois résistances en série comme nous l'avons fait dans le circuit. Connectez la broche TX de l'ESP8266 à la broche 10 de l'Arduino et la broche RX de l'esp8266 à la broche 9 d'Arduino à travers les résistances.
Le module Wi-Fi ESP8266 permet à vos projets d' accéder au Wi-Fi ou à Internet. C'est un appareil très bon marché qui rend vos projets très puissants. Il peut communiquer avec n'importe quel microcontrôleur et ce sont les appareils les plus importants de la plate-forme IOT. En savoir plus sur l'utilisation de l'ESP8266 avec Arduino ici.
Ensuite, nous connecterons le capteur MQ135 à l'Arduino. Connectez le VCC et la broche de terre du capteur au 5V et à la terre de l'Arduino et la broche analogique du capteur à l'A0 de l'Arduino.
Connectez un buzzer à la broche 8 de l'Arduino qui commencera à émettre un bip lorsque la condition deviendra vraie.
Enfin, nous connecterons l'écran LCD à l'Arduino. Les connexions de l'écran LCD sont les suivantes
- Connectez la broche 1 (VEE) à la terre.
- Connectez la broche 2 (VDD ou VCC) au 5V.
- Connectez la broche 3 (V0) à la broche du milieu du potentiomètre 10K et connectez les deux autres extrémités du potentiomètre au VCC et au GND. Le potentiomètre est utilisé pour contrôler le contraste de l'écran de l'écran LCD. Le potentiomètre de valeurs autres que 10K fonctionnera également.
- Connectez la broche 4 (RS) à la broche 12 de l'Arduino.
- Connectez la broche 5 (lecture / écriture) à la terre de l'Arduino. Cette broche n'est pas souvent utilisée, nous allons donc la connecter à la terre.
- Connectez la broche 6 (E) à la broche 11 de l'Arduino. Les broches RS et E sont les broches de contrôle utilisées pour envoyer des données et des caractères.
- Les quatre broches suivantes sont des broches de données utilisées pour communiquer avec l'Arduino.
Connectez la broche 11 (D4) à la broche 5 d'Arduino.
Connectez la broche 12 (D5) à la broche 4 d'Arduino.
Connectez la broche 13 (D6) à la broche 3 d'Arduino.
Connectez la broche 14 (D7) à la broche 2 d'Arduino.
- Connectez la broche 15 au VCC via la résistance de 220 ohms. La résistance sera utilisée pour régler la luminosité du rétroéclairage. Des valeurs plus élevées rendront le rétroéclairage beaucoup plus sombre.
- Connectez la broche 16 à la terre.
Explication de travail:
Le capteur MQ135 peut détecter le NH3, les NOx, l'alcool, le benzène, la fumée, le CO2 et certains autres gaz.Il s'agit donc d'un capteur de gaz parfait pour notre projet de surveillance de la qualité de l'air. Lorsque nous le connecterons à Arduino, il détectera les gaz et nous obtiendrons le niveau de pollution en PPM (parties par million). Le capteur de gaz MQ135 donne la sortie sous forme de niveaux de tension et nous devons la convertir en PPM. Donc pour convertir la sortie en PPM, nous avons ici utilisé une librairie pour capteur MQ135, cela est expliqué en détail dans la section «Explication du code» ci-dessous.
Le capteur nous donnait une valeur de 90 quand il n'y avait pas de gaz à proximité et que le niveau de qualité de l'air sécuritaire est de 350 PPM et qu'il ne devrait pas dépasser 1000 PPM. Quand il dépasse la limite de 1000 PPM, il commence alors à provoquer des maux de tête, de la somnolence et de l'air stagnant, vicié et étouffant et s'il dépasse au-delà de 2000 PPM, il peut provoquer une augmentation de la fréquence cardiaque et de nombreuses autres maladies.
Lorsque la valeur sera inférieure à 1000 PPM, l'écran LCD et la page Web afficheront «Fresh Air». Chaque fois que la valeur augmentera de 1000 PPM, le buzzer commencera à émettre un bip et l'écran LCD et la page Web afficheront «Poor Air, Open Windows». S'il augmente de 2000, le buzzer continuera à émettre un bip et l'écran LCD et la page Web afficheront «Danger! Passez à l'air frais ».
Explication du code:
Avant de commencer le codage de ce projet, nous devons d'abord calibrer le capteur de gaz MQ135. Il y a beaucoup de calculs impliqués dans la conversion de la sortie du capteur en valeur PPM, nous avons déjà fait ce calcul dans notre précédent projet de détecteur de fumée. Mais ici, nous utilisons la bibliothèque pour MQ135, vous pouvez télécharger et installer cette bibliothèque MQ135 à partir d'ici:
En utilisant cette bibliothèque, vous pouvez obtenir directement les valeurs PPM, en utilisant simplement les deux lignes ci-dessous:
MQ135 gasSensor = MQ135 (A0); float air_quality = gasSensor.getPPM ();
Mais avant cela, nous devons calibrer le capteur MQ135, pour calibrer le capteur, téléchargez le code ci-dessous et laissez-le fonctionner pendant 12 à 24 heures, puis obtenez la valeur RZERO .
#include "MQ135.h" void setup () {Serial.begin (9600); } boucle vide () {MQ135 gasSensor = MQ135 (A0); // Attachez le capteur à la broche A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); retard (1000); }
Après avoir obtenu la valeur RZERO . Mettez la valeur RZERO dans le fichier de bibliothèque que vous avez téléchargé "MQ135.h": #define RZERO 494.63
Nous pouvons maintenant commencer le code proprement dit pour notre projet de surveillance de la qualité de l'air.
Dans le code, nous avons tout d'abord défini les bibliothèques et les variables pour le capteur de gaz et l'écran LCD. En utilisant la bibliothèque série logicielle, nous pouvons créer n'importe quelle broche numérique comme broche TX et RX. Dans ce code, nous avons défini la broche 9 comme broche RX et la broche 10 comme broche TX pour l'ESP8266. Ensuite, nous avons inclus la bibliothèque pour l'écran LCD et avons défini les broches pour le même. Nous avons également défini deux autres variables: une pour la broche analogique du capteur et une autre pour stocker la valeur air_quality .
#comprendre
Ensuite, nous déclarerons la broche 8 comme la broche de sortie où nous avons connecté le buzzer. La commande l cd.begin (16,2) démarrera l'écran LCD pour recevoir les données, puis nous placerons le curseur sur la première ligne et imprimerons le 'circuitdigest' . Ensuite, nous placerons le curseur sur la deuxième ligne et imprimerons 'Sensor Warming' .
pinMode (8, SORTIE); lcd.begin (16,2); lcd.setCursor (0,0); lcd.print ("circuitdigest"); lcd.setCursor (0,1); lcd.print ("Réchauffement du capteur"); retard (1000);
Ensuite, nous définirons le débit en bauds pour la communication série. Différents ESP ont des débits en bauds différents, alors écrivez-les en fonction du débit en bauds de votre ESP. Ensuite, nous enverrons les commandes pour configurer l'ESP pour qu'il communique avec l'Arduino et afficherons l'adresse IP sur le moniteur série.
Serial.begin (115200); esp8266.begin (115 200); sendData ("AT + RST \ r \ n", 2000, DEBUG); sendData ("AT + CWMODE = 2 \ r \ n", 1000, DEBUG); sendData ("AT + CIFSR \ r \ n", 1000, DEBUG); sendData ("AT + CIPMUair_quality = 1 \ r \ n", 1000, DEBUG); sendData ("AT + CIPSERVER = 1,80 \ r \ n", 1000, DEBUG); pinMode (sensorPin, INPUT); lcd.clear ();
Pour imprimer la sortie sur la page Web dans un navigateur Web, nous devrons utiliser la programmation HTML. Nous avons donc créé une chaîne nommée page Web et y avons stocké la sortie. Nous soustrayons 48 de la sortie car la fonction read () renvoie la valeur décimale ASCII et le premier nombre décimal qui est 0 commence à 48.
if (esp8266.available ()) {if (esp8266.find ("+ IPD,")) {delay (1000); int connectionId = esp8266.read () - 48; String webpage = "
Système de surveillance de la pollution atmosphérique IOT
"; page Web + =""; webpage + =" La qualité de l'air est "; page web + = air_quality; page web + =" PPM "; page web + ="
";
Le code suivant appellera une fonction nommée sendData et enverra les données et les chaînes de message à la page Web à afficher.
sendData (cipSend, 1000, DEBUG); sendData (page Web, 1000, DEBUG); cipSend = "AT + CIPSEND ="; cipSend + = connectionId; cipSend + = ","; cipSend + = page Web.longueur (); cipSend + = "\ r \ n";
Le code suivant imprimera les données sur l'écran LCD. Nous avons appliqué diverses conditions pour vérifier la qualité de l'air, et l'écran LCD imprimera les messages en fonction des conditions et le buzzer émettra également un bip si la pollution dépasse 1000 PPM.
lcd.setCursor (0, 0); lcd.print ("La qualité de l'air est"); lcd.print (air_quality); lcd.print ("PPM"); lcd.setCursor (0,1); if (air_quality <= 1000) {lcd.print ("Fresh Air"); digitalWrite (8, FAIBLE);
Enfin, la fonction ci-dessous enverra et affichera les données sur la page Web. Les données que nous avons stockées dans la chaîne nommée «page Web» seront enregistrées dans la chaîne nommée «commande» . L'ESP lira alors le caractère un par un à partir de la «commande» et l'imprimera sur la page Web.
String sendData (commande String, timeout const int, débogage booléen) {String response = ""; esp8266.print (commande); // envoie le caractère lu au esp8266 long int time = millis (); while ((time + timeout)> millis ()) {while (esp8266.available ()) {// L'esp a des données donc affiche sa sortie dans la fenêtre série char c = esp8266.read (); // lit le caractère suivant. réponse + = c; }} if (debug) {Serial.print (réponse); } réponse de retour; }
Test et résultat du projet:
Avant de télécharger le code, assurez-vous que vous êtes connecté au Wi-Fi de votre appareil ESP8266. Après le téléchargement, ouvrez le moniteur série et il affichera l'adresse IP comme indiqué ci-dessous.
Tapez cette adresse IP dans votre navigateur, il vous montrera la sortie comme indiqué ci-dessous. Vous devrez actualiser à nouveau la page si vous souhaitez voir la valeur actuelle de la qualité de l'air en PPM.
Nous avons configuré un serveur local pour démontrer son fonctionnement, vous pouvez consulter la vidéo ci-dessous. Mais pour surveiller la qualité de l'air de n'importe où dans le monde, vous devez rediriger le port 80 (utilisé pour HTTP ou Internet) vers votre adresse IP locale ou privée (192.168 *) de votre appareil. Après le transfert de port, toutes les connexions entrantes seront transférées à cette adresse locale et vous pouvez ouvrir la page Web ci-dessus en entrant simplement l'adresse IP publique de votre Internet de n'importe où. Vous pouvez transférer le port en vous connectant à votre routeur (192.168.1.1) et trouver l'option pour configurer la redirection de port.