IMA4 2018/2019 P63

De Wiki de Projets IMA


Présentation générale

Etudiants : Victor Lorthios, Juliette Obled
Encadrants : Alexandre Boé, Xavier Redon, Thomas Vantroys

Description

Ce projet consiste à modéliser la consommation d'un capteur de pollution.
Ce système sera composé d'un ATMEGA ainsi que d'un capteur de particules, un capteur de température/humidité, une carte SD et un système Bluetooth pour transmettre les données.

Objectifs

Dans un premier temps, nous allons travailler avec une carte Arduino afin de pouvoir facilement tester les différents capteur et commencer à étudier leur consommation en énergie. Nous allons ensuite réaliser un système embarqué composé d'un ATMEGA, des deux capteurs, d'un système de transmission de données bluetooth et d'un système stockage des données via une carte sd. Ainsi on aura un prototype composé uniquement des fonctionnalités nécessaire. Cela permettra de ne pas fausser nos mesures car l'Arduino comporte des ports et des fonctionnalités supplémentaires qui risqueraient de consommer plus que nécessaire. Depuis ce capteur il faudra alors faire l'étude de la consommation énergétique des différents composants, en particulier celle du capteur de particules qui est en théorie la plus élevée.
Enfin, on pourra tester quelles sont les meilleures manières d'utiliser les composants pour trouver leur consommation d'énergie minimale (capteur en route, en veille ou éteint quand on ne l'utilise pas). Cela sera fonction de variables telle que la période entre la prise de données notamment. On étudiera notamment les différentes manières de mettre en veille un capteur, la consommation au redémarrage, etc.
Le but final est donc d'établir un modèle, pouvant déterminer à l'avance l'autonomie du circuit. L'Idéal étant d'avoir un système consommant le moins d'énergie possible.

Analyse du projet

Positionnement par rapport à l'existant

La pollution est un enjeu sanitaire majeur. En effet, les polluants atmosphériques sont à l'origine de nombreux décès en France et dans le monde (48000 victimes en France selon l'agence de santé publique).

Pour réduire et éviter les endroits où la pollution est la plus dense, il est très intéressant de pouvoir analyser la présence de ces particules fines.

Ces dernières années, de nombreux moyens ont été mis en oeuvre pour surveiller la pollution. On retrouve par exemple de nombreux objets connectés composés de capteurs capables de mesurer la qualité de l'air. Ces objets permettent notamment de sensibiliser la population à ce problème.

Analyse du premier concurrent

Capteur Flow
Application Air Report

Flow est un objet de 12,5cm de haut et 4cm de large permettant d'analyser la pollution de l'air en temps réel. En appuyant sur un bouton, on peut relever la concentration des principaux polluants dans l'air.
Ce capteur est commercialisé par l'entreprise française Plume Labs, fondée en 2014 dans le but d'améliorer notre quotidien face à la pollution.

Le résultat s'affiche directement sur l'objet, par l'allumage de leds : une couleur sombre correspond à un taux de pollution élevé et une couleur claire un air sain. Les résultats peuvent également être transmis via bluetooth sur le téléphone afin d'être affichés sur l'application Air Report. Cette application est composée d'une carte permettant de géolocaliser le téléphone et ainsi représenter le taux de pollution de chaque endroit de la ville. Toutes les personnes utilisant Flow peuvent donc contribuer à améliorer cette carte. Ce capteur permet donc d'évaluer ses parcours dans la ville, et inciter les gens à passer par des endroits plus sains. Il est également utilisable dans la maison. L'application propose aussi des "bulletins météo" concernant la qualité de l'air des jours à venir et annoncer les pics de pollution.
Etant si petit, résistant (fait d'acier) et ne pesant que 70g, Flow est transportable partout. Le capteur se recharge facilement sur ordinateur ou secteur grâce à un câble USB-C vers USB, et est supposé avoir une autonomie de 24h.

Ce capteur est donc très avancé mais coûte tout de même 179euros.
Nous pouvons nous positionner par rapport à cet objet en espérant atteindre une fiabilité de nos mesures pour une autonomie supérieure à une journée, à moindre coût.


Analyse du second concurrent

Pollutrack est un système du mesure de pollution de l'air installé sur des véhicules électriques appartenants à Enedis. Il permet de mesurer la pollution près du trafic dans des grandes villes telles que Paris ou Lille. Plus de 300 capteurs mobiles Pollutrack sont utilisés en complément de stations qui mesurent en temps réel la quantité de particules nocives dans l'air. Le dispositif permet de récupérer un très grand nombre de mesures. Grâce à ces mesures, il est possible de comparer le niveau de pollution d'une rue à l'autre ,d'un quartier à l'autre et d'ainsi repérer les zones de concentration de la pollution.

Scénario d'usage du produit ou du concept envisagé

L'utilisation de ce capteur sera la suivante : on imagine une personne voulant évaluer le taux de pollution dans l'air à but professionnel ou non. Grâce à ce capteur connecté via Bluetooth sur le téléphone, les données peuvent être transmises à intervalle régulier, ou stockées sur la carte SD pour être envoyées plus tard (si problème de réseau ou autre).
L'utilisateur voulant faire de nombreuses mesures dans plusieurs zones géographiques, il a besoin que le capteur ait une consommation énergétique faible pour être utilisé le plus longtemps possible. On pourrait même penser à quelqu'un souhaitant réaliser une cartographie du taux de pollution d'une ville. Il a alors besoin de faire énormément de mesures (il peut les avoir en temps réel sur son téléphone) mais surtout de faire des relevés assez longtemps pour que la cartographie soit fiable (pas de mesures trop espacées dans le temps). D'où la nécessité d'avoir un système dont on connait la consommation énergétique.
Grâce à nos recherches, nous pourrons donc assurer l'autonomie de ce capteur simplifié.

Le capteur peut également être utilisé de manière fixe dans une usine par exemple, provoquant une alarme si la pollution dans l'air est trop élevée. Nos modélisations permettraient à l'entreprise de connaître combien de temps le capteur serait utilisable et donc estimer le moment de la journée le plus propice pour effectuer des mesures.

Réponse à la question difficile

  • Quelle est la fréquence optimale de récupération des valeurs de particules en fonction des usages ?

le site https://www.airparif.asso.fr/ mesure et cartographie précisément la pollution de Paris et de son agglomération en temps réel.
L'ensemble de leurs données permettent de produire une carte avec au mieux une résolution de 10 mètres par mesure.

En prenant l'exemple d'un piéton marchant à la vitesse de 4 km/h il faudrait une mesure toutes les 9 secondes pour avoir une résolution de 10 mètres.

Si on prend le cas d'un cycliste roulant à la vitesse de 20km/h il faudrait une mesure toutes les deux secondes pour atteindre une résolution de 10m.

Dans le cas où le capteur serait fixe avec une mesure toutes les deux minutes paraît suffisante.

  • Comment tester un maximum de configuration des différentes fonctions pour déterminer la consommation énergétique et estimer la durée de vie finale ?

Nous testerons les différentes configurations sur la carte Arduino. Cela nous permettra de pouvoir changer facilement les câblages (pas de soudures, etc).

Les tests se feront grâce au code d'un ancien thésard qui nous permettrons d'estimer la consommation énergétique du système.

Nous étudierons les possibilités suivantes

  • Mise en veille du capteur (utilisation de la broche enable)
  • Coupure de l'alimentation du capteur (utilisation d'un transistor pour commander l'état du capteur)
  • Mode sleep du microcontrôleur

Une fois la meilleure configuration trouvée nous réaliserons la carte pour avoir la consommation exacte et ainsi pouvoir déterminer l'autonomie de la carte.

Préparation du projet

Cahier des charges

Etudiants : Victor Lorthios, Juliette Obled
Encadrants : Alexandre Boé, Xavier Redon, Thomas Vantroys
Éventuels Clients : personne lambda désireuse de connaître le taux pollution de l'air qu'elle respire

Sujet
Modéliser la consommation énergétique d'un capteur de pollution simplifié.

Objectifs
Dans un premier temps il faudra réaliser un capteur simplifié de pollution sur une Arduino, depuis différents composants (capteur d'humidité/température et capteur de particules). Depuis ce système on pourra alors récupérer le taux de pollution de l'air de manière périodique (grâce au module bluetooth et à la carte SD). Nous verrons alors le temps de réponse de notre système (si il est lent ou rapide à s'adapter dans un environnement instable, etc) pour en déduire sur quelle période de relevés se baser.
Dans un second temps, des configurations seront testées pour déterminer la meilleure manière - énergétiquement parlant - de relever le taux de pollution : Comme expliqué dans la question difficile, nous verrons notamment différents moyens de mettre en veille notre capteur entre les relevés.
Nous retiendrons alors la meilleure configuration à notre usage pour réaliser le capteur de pollution depuis un microcontrôleur, afin de limiter au mieux toute consommation énergétique superflue.
Enfin, nous pourrons étudier la réelle consommation de notre système et en tirer un modèle, afin d'être capable d'annoncer la "durer de vie" du capteur selon l'utilisation retenue.

Choix techniques : matériel et logiciel

Matériel nécessaire

  • Carte Arduino UNO [1]
  • ATMEGA328p [2]
  • BreadBoard [3]
  • Quartz de 16MHz [4]
  • Capteur de température/humidité DHT11 [5]
  • Capteur de particules PM2.5 - SEN0177 (avec son adaptateur) (1 disponible, cher, justifiez les 2 autres) [6]
  • Carte SD 16Go [7]
  • Shield Bluetooth [8]
  • FTDI [9]
  • Module USB [10]
  • Condensateur : 4*0,1uF + 1*10uF + 2*22pF
  • Résistances : 1*1MOhm + 2*10kOhm + 4*1kOhm
  • MicroSD card module [11]
  • 1 Transistor Mosfet IRF530NPBF [12]
  • 4 Résistances CMS 1KOhm [13]
  • 2 Résistances CMS 10KOhm [14]
  • 1 Résistance CMS 4,7KOhm [15]
  • 1 Résistance CMS 1MOhm [16]
  • 6 Capa0805 CMS 0.1uF [17]
  • 2 Capa0805 CMS 22pF [18]
  • 1 Capa0805 CMS 10uF [19]
  • 2 Diodes

Logiciels

Nous utiliserons le logiciel IDE Arduino pour le code de l'arduino et Altium pour réaliser notre carte électronique

Liste des tâches à effectuer

Capteur de pollution depuis une Arduino
- correctement câbler les composants
- écrire un code pour en retirer des valeurs correspondants à un taux de pollution
- récupérer ces valeurs depuis 1) la carte SD 2) le module bluetooth

Etudes des valeurs reçues
- déduire des valeurs reçues des courbes correspondant au taux de pollution dans l'air en fonction du temps (notamment en environnement instable où l'on change brutalement le taux de particules dans l'air)
- déterminer depuis ces courbes et depuis nos espérances (de la question difficile n°1) une période pour relever le taux de pollution

Tests de différentes configurations
Comme il est important de minimiser la consommation énergétique de notre système, nous rechercherons une mise en veille optimale de notre système, sans que cela ne gène le relevé.
Nous testerons donc différentes configurations comme expliqué à la question difficile n°2.
- mise en veille du capteur (utilisation de la broche enable)
- coupure de l'alimentation du capteur (utilisation d'un transistor)
- mode sleep du microcontrôleur

Système optimisé
Conscient que l'arduino peut consommer plus que seulement ce dont les capteurs auraient besoin, nous allons dans une deuxième partie réaliser le système depuis un ATMEGA avec la configuration retenue.
- réalisation de la carte électronique
- code et essais pour étudier la cohérence des relevés par rapport aux anciens

Modélisation de la consommation finale de notre système
Depuis le programme d'un thésard polytech, de la même manière que pour les tests de mise en veille, nous étudierons la consommation de notre capteur pour en tirer un modèle et ainsi déterminer combien de temps il peut être utilisé.

Pour aller plus loin
Si jamais nous réussissons à faire toutes ces tâches avec succès, pourquoi pas tester une autre utilisation (automobiliste, etc) avec donc une autre période pour les relevés et peut-être une autre configuration pour la mise en veille.
Il pourrait également être intéressant de réussir à se géolocaliser pour plus facilement exploiter les données de ce capteur simplifié.

Calendrier prévisionnel

Réalisation du Projet

Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Total
Analyse du projet 0

Semaine 1

Lors de ces premières séances, nous avons commencé à réaliser le PCB sur Altium de la carte représentant notre capteur de pollution. Au cours de ce travail, nous nous sommes donc rendus compte qu'il fallait revoir notre liste de matériel, qui est incomplète. Nous aimerions finir le schéma électrique des capteurs associés à l'Arduino ainsi que la représentation Altium du microcontrôleur avec les autres composants d'ici les prochaines séances, afin d'avoir rapidement une liste de matériel fixe et éventuellement pouvoir demander une vérification de notre schéma Altium pour ensuite démarrer la partie Routage de la carte.
Nous avons également trouvé du code disponible pour l'utilisation des capteurs.

Semaine 2

Une grosse partie du schematic a été terminée.
Il comporte un atmega328p. Pour son bon fonctionnement, il possède un reset, un quartz et un module ICSP. Pour ce faire, nous avons utilisé le schematic d'une Arduino UNO disponible sur le site d'Arduino.
Il est connecté à un FTDI FT232RL pour pouvoir téléverser facilement le code depuis l'ordinateur sans avoir besoin d'utiliser un atmega16u2. Il y a donc avec ce FTDI un module USB. Nous nous sommes inspirés de ce site pour câbler correctement notre circuit.
Enfin, nous avons ajouté des header correspondant respectivement au capteur de particules et au capteur de température/humidité. Comme on peut le constater sur la capture d'écran ci-dessous, le capteur de particules est connecté à un transistor. Cela nous servira pour pouvoir commander la mise en veille du capteur.

Schematic à la séance 2

Partie FTDI
schéma électrique du transistor

Nous avons décidé des valeurs de résistance et de capacité selon les datasheet des modules et selon les calculs ci-contre. Il nous reste maintenant à inclure un module bluetooth et SD pour que notre capteur soit complet. Nous devons également voir avec un des encadrants l'utilisation du capteur de particules. En effet, ce capteur peut donner de grandes variations de valeurs, d'où la nécessité d'utiliser plusieurs capteurs (nous en avons demandé 3) pour avoir une valeur moyenne. Ainsi, nous devons discuter de la mise en place d'un ou de trois transistors pour notre utilisation. Nous avons également demandé une license Altium pour la suite de ce projet.
L'objectif de la semaine prochaine est donc de discuter avec nos encadrants pour finaliser notre schematic, et alors commencer la partie routage.

Semaine 3

Nous avons amélioré et adapté notre schématic aux contraintes vues avec Mr. BOE. Dans le but de mesurer le courant, nous avons donc ajouté des header à chaque composant. Nous avons également décidé d'utiliser un MOSFET pour la commande du capteur de particules (plutôt qu'un NPN précédemment). Enfin, nous avons terminé d'ajouter tous les composants (module bluetooth et connecteur de carte sd) à notre circuit.

Schematic à la séance 3

La partie routage est en cours, ainsi que la création d'un autre schématic dans l'optique d'avoir un circuit additionnel permettant de mesurer facilement la tension utilisée par les composants.

Semaine 4 à 7

Nous avons continué à travailler sur notre schématique. De nombreux problèmes sont survenus petit à petit d'où l'absence de résultats intermédiaires.
Nous avons également avancé sur un deuxième schématique, une deuxième carte que nous utiliserons pour effectuer les mesures de puissance utilisée des composants. Nous devons encore en discuter avec Mr. BOE.
De plus, nous avons commencé à travailler sur le code des capteurs.

Semaine 7

  • Partie Electronique

Le routage de la carte électronique est terminé. Il y a eu un certain nombre de modifications sur le schématique, dues aux différentes difficultés survenues lors de ce routage. Nous avons notamment changé la quasi totalité des empreintes, adapté les header, ajouté des capacité de découplage ou encore modifié la référence de certains composants.
De ce fait, la liste de matériel est à jour. Nous avons également pu voir avec Mr. Flament pour récupérer gratuitement une grande partie des composants nécessaires (résistances, capacités,
La prochaine étape est donc de résoudre les éventuelles erreurs lors de la génération de la carte et commencer sa fabrication.
Nous avons également en cours la deuxième carte qui est encore au stade du schématique, en attente de retours.

Schématique du circuit principal à la semaine 7
PCB du circuit principal à la semaine 7

  • Partie Arduino
Relevé des valeurs du DHT22

Pour commencer, le code du capteur DHT22 (température et humidité) est terminé. Nous avons simplement récupéré un code sur internet. On peut voir sur la capture ci-contre la différence en environnement "normal" et lorsque l'on souffle sur le capteur (augmentation du taux d'humidité)

Montage du circuit avec capteurs DHT22 et PM2.5

Nous avons également travaillé sur le capteur PM2.5 (particules fines). Pour celui là nous établissons le code petit à petit.

Pour récupérer les données transmise par le capteur, nous avons utilisé la fonction arduino "SoftwareSerial" qui nous permet de de créer une liaison série sur d'autres pins de la carte arduino. Ainsi lors de l'affichage sur le moniteur série, il n'y aura pas de conflits.

Protocole de communication du PM2.5

Dans un premier temps, nous avons affiché la trame telle qu'elle est et avons identifié les octets grâce à la documentation ci-contre.
Le "32" au dessus du message correspond à la taille du message reçu. Cela sert notamment à savoir s'il est en fonctionnement. Les encadrés correspondent aux données auxquelles nous nous intéressons.

Données reçues du PM2.5


Nous avons ensuite réalisé des tests pour être sûrs que le capteur fonctionne correctement. A l'aide d'une brosse pleine de craie, nous avons donc fait tomber de la poussière ce qui a donné les résultats suivants :
Relevé des données reçues par le PM2.5 lorsque le taux de particules varie

Nous avons ensuite connecté une broche de l'arduino à la pin SLEEP du capteur pour contrôler sa mise en veille, pour pouvoir simultanément contrôler la mise en veille du capteur et la récupération/affichage des données reçues, nous avons utilisé la fonction millis qui récupère temps écoulé. Contrairement à delay, c'est une fonction non bloquante.
On voit que le capteur est n'est plus actif grâce au premier chiffre qui correspond à la taille de la trame ( c'est valeur de retour de la fonction "PMSerial.readBytes"; quand elle vaut 0 cela indique qu'aucunes données ne sont transmises) : les données affichées sont les dernières étant stockées, le 0 nous permet de savoir qu'en réalité nous n'avons reçu aucune nouvelle donnée du PM2.5

Relevé des données du PM2.5 en mode normal et mode sleep

Semaine 8

  • Partie Electrique

Nous avons effectué quelques changements au niveau de la partie MOSFET, qui n'était précédemment pas correcte. Nous avons alors le schématique et le PCB suivant :

Schématique du circuit principal à la semaine 8
PCB du circuit principal à la semaine 8

Nous avons également terminé le deuxième circuit permettant de mesurer la valeur du courant passant dans nos capteurs. En connectant les headers de notre circuit principal au header 80, nous allons pouvoir lire la valeur du courant sur le header 90. Nous nous sommes inspirés de la datasheet LTC6800 pour réaliser ce circuit. Le schématique et PCB associé sont les suivants :

Schématique du circuit pour mesurer le courant à la semaine 8
PCBdu circuit pour mesurer le courant à la semaine 8

Nous attendons maintenant une validation de ces deux circuits pour lancer la réalisation.

  • Partie Arduino

Nous avons beaucoup avancé sur la partie Arduino.
Dans un premier temps, nous avons adapté la récupération de nos données en n'affichant que les données voulues, c'est-à-dire les taux de particules et plus les variables check.
Ceci nous donne le code ainsi que les réceptions ci-dessous. Nous avons également ajouté le fait que lorsque la trame est vide (length = 0 vu précédemment) nous n'affichons rien.
Les fonctions get_pm_** permettent de séparer les données correspondant à chaque particules. Nous récupérons simplement la donnée à son indice, et si elle est composée de deux - ou plus - octets (et donc deux places dans la trame) alors nous décalons la première valeur de 8 bits afin d'obtenir le taux correspondant. Nous l'affichons ensuite avec un simple Serial.Print.

Capture d'écran des données reçues par le PM2.5 après traitement de la trame
Extraits du code du PM2.5

Ensuite, nous avons ajouté le MOSFET que nous avons reçu. Après quelques vérifications, nous avons modifié le schématique comme dit plus tôt. En associant une pin à ce transistor, (ici la pin 13) il joue le rôle d'interrupteur : en envoyant 1 le capteur est correctement alimenté, et en envoyant 0 le capteur est alors éteint électriquement. Nous avons effectué les mêmes tests que la semaine dernière avec la veille du capteur, en utilisant la fonction millis (présente sur la capture du code), ce qui fonctionne bien comme en témoigne la led du capteur PM2.5 qui s'éteint ou s'allume toutes les 10 secondes.
Nous avons enfin ajouté le shield bluetooth, et installé une application sur notre téléphone, et nous avons réussi à retrouver les données. insérer capture d'écran téléphone

Montage sur Breadboard à la semaine 8

Semaine 9

Semaine 10

Documents Rendus