Système d’évaluation de la qualité d’air IoT basé sur Arduino

De Ensiwiki
Aller à : navigation, rechercher


Project schedule.png
Titre du projet Système d'évaluation de la qualité d'air IoT basé sur Arduino
Cadre Projets Réseaux Mobiles et Avancés

Équipe Chaimaa Zegoumou, Zakaria Maaraki, Ouadie El Houti
Encadrants Franck Rousseau


Présentation du Projet

Lien vers le projet

https://github.com/BrolyCode/Air-quality-rating-system

Membres de l'équipe

  • Chaimaa Zegoumou
  • Zakaria Maaraki
  • Ouadie El Houti

Introduction

Dans le cadre de ce projet, nous visons à mettre en oeuvre un système d’évaluation de qualité d’air IoT d’une chambre donnée, basé principalement sur une carte Arduino Uno. Cette carte sera connectée à un capteur de Gaz MQ5, dont les mesures serviront à calculer l’indice de qualité d’air d’une chambre donnée : On dispose déjà d’une librairie Arduino pour exploiter ces mesures. Ensuite, nous nous servirons du module Wi-Fi ESP8622 qui se connectera à un routeur wifi pour pouvoir envoyer l’output du système à la plateforme ThingSpeak. ThingSpeak est une plateforme d'analyse IoT qui nous permettra de visualiser ces flux de données en direct dans le cloud. Comme produit final, nous avions le choix entre une simple application web (que nous pouvons héberger facilement à l’aide d’une raspberry pi ou même juste avec le module qui peut être paramétré en mode serveur) ou mobile pour notifier l’utilisateur en cas de mauvaise qualité d’air.

Matériels et outils

Matériels

Material res.png
  • Arduino UNO
  • Capteur MQ5
  • Module Wi-Fi ESP8266
  • 16X2 LCD
  • Breadboard
  • potentiomètre 10K
  • 2 Résistances 1K Ohm et 220 Ohm

Architecture

Schema ZEG.png

L'architecture de notre projet repose sur l'usage du protocole HTTP pour l'envoi des mesures que le capteur MQ5, connecté à la carte Arduino par le biais du breadboard, effectue, ainsi que pour la récupération de ces données du cloud. Cet envoi est garanti par le module ESP8266, qui permet une connexion au WiFi.


Le module ESP8266 est un circuit intégré avec un microcontrôleur permettant la connexion en WiFi. Les modules intégrant ce circuit sont très utilisés pour contrôler des périphériques par Internet. L'ESP8266 est livré avec un firmware préinstallé qui permet d'en prendre le contrôle à l'aide de « commandes AT » standards pouvant provenir d'une carte Arduino avec qui il peut communiquer par liaison série.

Arduino

Montage.png

Nous nous sommes basés sur le modèle de montage ci-contre dont le détail est développé dans le lien suivant [1].
La carte Arduino est connectée au module WiFi ESP8266, au capteur MQ5 pour effectuer les mesures, et à un buzzer pour une alerte sonore en cas de mauvaise qualité d'air.
Ensuite, la connexion au WiFi a été établie grâce au module ESP8266, qui utilise les commandes AT pour communiquer avec la carte Arduino. Dans le cadre de ce projet, ce module joue les deux rôles d'émetteur et de récepteur; ce qui justifie le choix des commandes suivantes:

  1. Connexion à un point d'accès WIFI:
    • AT+RST  : réinitialise le module
    • AT+CWMODE=3 : bascule le module en mode 3 (émetteur+récepteur)
    • AT+CWJAP='SSID','PASSWORD' : se connecte à un point WiFi de ssid 'SSID' et de mot de passe 'PASSWORD'.
  2. Fonctionnement en mode client TCP:
    • AT+CIPMODE=1 : bascule le module en mode 1 (émetteur de données)
    • AT+CIPSEND=4,N : envoi les données de longueur N par le biais du canal 4
  3. Fonctionnement en mode serveur TCP:
    • AT+CIPSERVER=1,80 : configure le module en serveut TCP sur le port 80
    • AT+CIFSR: vérifie l'adresse IP du module

Plateforme IoT : ThingSpeak

Thingspeak-motto.png

Les capteurs ou les systèmes IoT font des mesures locales et agissent généralement localement. ThingSpeak permet aux capteurs et aux sites Web d'envoyer des données vers le cloud où elles sont stockées sur un canal privé ou public. ThingSpeak stocke les données dans des canaux privés par défaut, mais les canaux publics peuvent être utilisés pour partager des données avec d'autres. Une fois que les données figurent dans un canal ThingSpeak, on peut les analyser et les visualiser, calculer de nouvelles données ou interagir avec les médias sociaux (notamment tweeter le propriétaire en cas de mauvaise qualité d'air - possibilité de fuite gaz), les services Web et d'autres appareils.
L’analyse de ces données est garantie par MATLAB; qui est le logiciel référence de calcul numérique, et qui nous aidera alors à comprendre visuellement les relations entre les données à l'aide des fonctions de plot intégrées et à combiner les données de plusieurs canaux pour créer une analyse plus sophistiquée (dans un cas où l’on se base sur plusieurs capteurs).

Tutoriel

Montage de la carte

Pour le montage, nous avons utilisé la carte Arduino UNO comme composant principal sur lequel nous avons mis les autres composants (Module Wi-Fi ESP8266, Capteur MQ-5, Écran LCD, Buzzer) comme suit :

  • Arduino UNO: Arduino UNO est l'une des cartes de prototypage les plus populaires. Il est de petite taille et regorge de fonctionnalités riches. La carte est livrée avec un chargeur de démarrage Arduino intégré. Il s'agit d'une carte contrôleur basée sur Atmega 328 qui a 14 broches GPIO, 6 broches PWM, 6 entrées analogiques et des interfaces UART, SPI et TWI intégrées. Dans ce dispositif IOT, 9 broches de la carte sont utilisées. Il y a six broches utilisées pour interfacer l'écran LCD de caractères. Il y a deux broches utilisées pour interfacer le module Wi-Fi ESP8266 et une broche d'entrée analogique est utilisée pour se connecter avec le capteur MQ-5.
  • L'écran LCD 16X2: est utilisé pour surveiller les valeurs du capteur lues par la carte Arduino du MQ-5. Il est interfacé avec l'Arduino UNO en connectant ses broches de données D4 à D7 avec les broches 6 à 3 du contrôleur respectivement. Les broches RS et E de l'écran LCD sont respectivement connectées aux broches 13 et 12 du contrôleur. La broche RW du module LCD est connectée à la terre.
  • Module Wi-Fi ESP8266: Le module Wi-Fi ESP8266 est utilisé pour se connecter à n'importe quel point d'accès Internet disponible et transférer les données des capteurs au AWS (au premier lieu et apres de AWS vers ThingSpeak) via Wi-Fi. Le module Wi-Fi ESP8266 peut donner à n'importe quel microcontrôleur (Arduino UNO dans notre cas) un accès à un réseau Wi-Fi. Chaque module ESP8266 est préprogrammé avec un micrologiciel de jeu de commandes AT. Donc, on peut simplement connecter cela à un appareil Arduino. Ici, il télécharge les données de surveillance dans AWS. Le module est disponible en deux modèles - ESP-01 et ESP-12. L'ESP-12 a 16 broches disponibles pour l'interfaçage tandis que l'ESP-01 n'a que 8 broches disponibles pour l'utilisation. Le modèle ESP-12 est utilisé dans le projet. Les broches Reset et VCC du module sont connectées au 5V DC tandis que la broche Ground est connectée à la masse commune. Les broches Tx et Rx du module sont connectées respectivement aux broches 10 et 11 de la carte Arduino. Les broches Arduino 10 et 11 sont configurées pour un récepteur et un émetteur série via une fonction série logicielle.
  • Capteur MQ-5: Le MQ-5 est un capteur de gaz utilisé pour mesurer la concentration de gaz combustibles. Il a une conductivité plus faible dans l'air pur tandis que sa conductivité augmente avec la présence de gaz combustibles dans l'air. Le capteur est très sensible aux gaz comme l'ammoniac, le sulfure et la vapeur de benzène. Le capteur peut détecter la concentration de gaz combustibles dans une plage de 100 PPM à 1000 PPM. La résistance du capteur diminue à mesure que la concentration du gaz cible augmente en PPM tandis que pour l'air pur, sa résistance reste constante. Le capteur possède quatre bornes: masse, VCC, sortie numérique et sortie analogique. Les bornes VCC et terre du capteur sont connectées à la VCC et à la terre communes. La broche de sortie analogique du capteur est connectée à la broche A0 de l'Arduino. La tension de sortie analogique du capteur peut être supposée directement proportionnelle à la concentration de CO2 en PPM dans des conditions standard. La tension analogique est détectée par le capteur et convertie en une valeur numérique dans une plage de 0 à 1023 par le canal ADC intégré du contrôleur. La valeur numérisée est donc égale à la concentration de gaz en PPM.


Le montage obtenu correspond aux images suivantes:

Création de compte ThingSpeak et configuration de canaux

De prime abord, on commence par créer un compte Thingspeak (DIY, la création de compte ne nécessite pas de démonstration).
Ensuite, on clique sur la section 'My Channels', puis 'new channel'. Nous obtenons alors le formulaire suivant à remplir.

Cap-form.png


Nous nous contentons de remplir uniquement ces champs:

Remp-only.png


Le canal obtenu après cette procédure est privé; et on peut changer cette propriété à 'publique' si on veut rendre l'accès en modification et en lecture possible au public en cliquant sur Sharing. L'image ci-dessous représente le canal obtenu après sa création:

Cap.png

Pour pouvoir envoyer les données mesurées par le capteur à ce canal, il faut récupérer le Write API Key, et ce en cliquant sur 'API Keys'.

Utilisation de AWS (Intermédiaire de transfert de données)

Dans ce projet, nous avons utilisé le service EC2 d'AWS pour héberger notre serveur node.js qui a servi comme intermédiaire de transfert de données entre l'Arduino, Thingspeak et notre application web.
Vous trouvez dans les références un lien vers le dépôt github qui contient le code serveur.

Création des applications de visualisation (Web & Mobile)

  • Pour mieux visualiser la qualité de l'air, nous avons créé une application web et mobile qui affiche les données collectées en temps réel, et qui permet également de désactiver ou activer l'alarme à distance. La communication entre l'application et l'arduino se passe à travers notre serveur qui est hébergé sur AWS.

(Vous trouverez un lien vers le code source dans les références). WebApp.png

  • Home interface application mobile.

App-Mobile.jpg

Contraintes du projet

Contraintes matérielles

De prime abord, nous avons eu du mal à déterminer si nous rencontrons des problèmes matérielles ou logicielles, surtout que la carte Arduino n'était pas toute neuve, et donc, elle risquait d'être burnt out. Le module WiFi est aussi extrêmement instable dans son fonctionnement, ce qui a gêné à l'avancement du projet.

Contraintes logicielles

Un autre obstacle à l'avancement du projet était l'incompatibilité entre la version de notre carte Arduino et des librairies WiFi disponibles. Le manque de MàJ et de documentation de la librairie de la plateforme IoT ThingSpeak a résulté en l'abandon de cette solution pour envoyer les mesures effectuées par le capteur vers le cloud.

Références