IMA3/IMA4 2020/2022 P11
Sommaire
Présentation générale
Parmi les sujets disponibles, nous avons choisi le projet "Mise en place d'un réseau de capteurs dans les salles de Polytech", qui consiste en la conception d'un réseau de capteurs de température et de qualité de l'air communicants via le réseau LoRa. Notre groupe est constitué de quatre élèves de la filière Systèmes Embarqués: Yanis Lacroix, Florian Vallée, Haitam Blgrim et Abdelillah El Khotri. Lors de la première partie en troisième année, le groupe était aussi aidé par Fidele-M'bouke. Il est encadré par Mr.Thomas Vantroys.
Contexte
La qualité de l'air est une information importante à avoir, surtout étant donné les conditions sanitaires actuelles. La loi impose une contrôle de la qualité de l'air intérieur dans les établissements primaires et secondaires, mais aucune loi n'impose le contrôle dans les établissements d'études supérieures (du moins pas d'ici 2023).
Les seuils réglementaires ne sont pas toujours respectés dans les salles de classe, cela peut nuire à la santé et à l'efficacité des élèves ; il est important d'avoir une vue globale des données, pour pouvoir réagir en conséquence.
Enfin, avoir un historique des données permettrait d'être en mesure de réguler certains problèmes de flux dans l'école.
Description
Le réseau de capteur est un ensemble de capteurs individuels, qui communiquent tous avec une balise LoRa présente dans l'école, qui s'occupe de transmettre les données à un serveur applicatif via IP. Une fois les données recueillies et stockées, elles seront affichées sur une page web.
Objectifs
Offrir la possibilité de contrôler, superviser des données physiques, principalement sur la qualité de l’air, récupérées en temps réel dans les salles de classe de Polytech dans le but d’alerter les utilisateurs de l’école.
Analyse du projet
Premier prototype
Lors de notre 3ème année, nous avions simplifié le cahier des charges. Notre projet est constitué de cinq blocs différents :
- Recueillir et traiter les données
- Transmettre les données
- Traduire les données
- Stocker les données
- Afficher les données
Pour recueillir les données, nous avons utilisé une carte Arduino, servant à recueillir les informations fournies par le capteur de température SHT15. A l'aide de la bibliothèque spécifique au capteur, nous avons pu, à l'aide de deux fonctions, obtenir les valeurs de température et d'humidité.
Pour transmettre les données, nous avons dû nous limiter à la liaison série, principalement pour des raisons matérielles et de temps. Le paramétrage était plutôt simple, en précisant le baudrate sur le code Arduino et en utilisant la fonction "Serial", les données sont envoyées sur le port série.
Pour traduire les données, nous avons utilisé un code Python qui lit sur le port série, ne prend que les bits correspondants aux données de température et d'humidité, et le range dans un tableau. On a ajouté dans ce tableau la date d'acquisition, avant de recopier le tableau dans un fichier CSV qui a servi dans la partie suivante.
Pour stocker les données, nous avons donc utilisé un fichier CSV, qui contenait les valeurs de température, d'humidité et de date d'acquisition.
Pour afficher les données, nous avons choisi d'utiliser du php servant à afficher les valeurs dans le fichier CSV.
Plusieurs problèmes sont à relever dans cette première version du projet : - La carte STM32 était imposée dans le cahier des charges et non au choix de l'équipe de projet; - La liaison série n'est pas le moyen de communication imposé, il s'agit du LoRa - L'utilisation d'une base de données SQL est plus adaptée qu'un fichier CSV
Ainsi, l'objectif du second semestre de projet était de résoudre ces problèmes.
Préparation du projet
Maintenant que le premier prototype a été décrit, nous allons mettre à jour le cahier des charges et rappeler les différents "blocs" du projet.
Cahier des charges
Le projet se découpe en 5 grandes parties :
- Recueillir et traiter les données
- Transmettre les données
- Traduire les données
- Stocker les données
- Afficher les données
Voyons ce que chaque bloc doit être capable de réaliser.
1.Recueillir et traiter les données
Pour recueillir les données, nous avons utilisé deux capteurs de température et d'humidité différents. Pour pouvoir acquérir les informations, les capteurs doivent être reliés à un microcontrôleur, ici la STM32 imposée.
2.Transmettre les données
Pour la transmission, un shield LoRa est connecté à la carte STM32. Le LoRa est un moyen de communication
Les données sont envoyées du module LoRa de la carte vers une balise LoRa (installée au préalable par un ancien groupe de projet), qui elle même communique au serveur applicatif via Ethernet.
3.Traduire les données
Une fois les données reçues sur le serveur applicatif, elles sont traduites par un code Python. En effet, il faut repérer et extraire les données issues de la trame Ethernet, puis extraire les données de la trame LoRa encapsulée. Le code Python, grâce à une bibliothèque, peut lire sur le port Ethernet et ainsi extraire uniquement les informations pertinentes. Le code Python sert aussi à faire le lien avec la partie suivante, qui est le stockage de données : il permet de créer une base de données, et de stocker les valeurs obtenues dedans.
4.Stocker les données
Pour stocker les données, le plus pertinent était de prendre une base de données SQL, et ce pour plusieurs raisons :
- La possibilité de faire des requêtes, ce qui facilite l'affichage
- SQL apporte une couche de sécurité minimale, contrairement à un fichier CSV
Cette base de donnée est créée à partir du fichier Python grâce à la bibliothèque xxxx.
5.Afficher les données
L'affichage se fait sur une page html contenant du code php, qui permet de lire les données dans la base SQL et de les afficher dans des tableaux, des graphiques, et permet aussi d'afficher des messages d'erreur ou des valeurs en couleurs pour signaler tout non respect des normes indiquées.
Choix techniques : matériel et logiciel
Partie S7
Acquisition :
- 2x Carte STM32L152RE
- Capteur de température et d'humidité
- Une Breadboard
- Un PC
Partie S8
- Pack STMicroelectronics Lora LF band sensor and Gateway contenant 2 éléments principaux :
- une carte de développement STM32 Nucleo-L073RZ couplée à une Expansion Board de chez RisingHF composée de 4 capteurs intégrés (humidité, température, pression, magnétomètre) et d’un module d’émission Lora
- une carte STM32 Nucleo-F746ZG couplée à une Gateway Expansion Board Lora (une balise Lora)