Contexte
Le projet Raspberry Pi est le projet principal de notre option choisie dans le cadre du BUT. Il s’est déroulé en plusieurs étapes, impliquant différentes matières, plusieurs enseignants et différents groupes, tout au long de l’année. L’objectif de ce projet était de créer une station de captation équipée de plusieurs capteurs, afin de collecter diverses données (température, humidité, luminosité, etc.). Ces données devaient ensuite être transmises via un protocole de communication (comme MQTT, HTTP ou autre), pour être exploitées par d’autres stations aux objectifs variés.
Parmi ces stations l’objectif était axées par exemple une sur l’intelligence artificielle, une autre sur la visualisation des données via un tableau de bord, etc. L’idée globale était de répondre à une problématique liée au Big Data.
Dans un premier temps, nous avons réalisé une veille technologique afin de mieux comprendre les enjeux de l’industrie 4.0, les différents types de capteurs disponibles, les protocoles de communication IoT, ainsi que d’autres thématiques annexes.
PowerBI
Dans un second temps, pour ce projet, nous avons dû réaliser un premier tableau de bord en utilisant des données simulées provenant de capteurs. Pour cela, nous avons développé un script Python permettant de générer des données fictives représentant les conditions d’une salle de classe sur une année complète. Le script prenait en compte plusieurs facteurs comme la variation de température selon les saisons ou encore l’affluence dans la pièce.
Nous devions simuler différents types de capteurs : capteurs de son, de qualité de l’air, de température et d’humidité. Ces données étaient ensuite exploitées dans Power BI afin de créer un tableau de bord interactif et visuel.
Pour la problématique, nous avons choisi d’analyser l’impact des saisons sur l’état général de la pièce. Afin de faciliter cette analyse, nous avons créé une variable d’évaluation pour chaque capteur. Cette variable indiquait si la mesure dépassait ou non les seuils définissant une pièce « saine ». Par exemple, si un capteur dépassait les valeurs normales, il était noté comme non sain. Nous avons attribué un score de 1 pour un capteur non sain, 2 pour deux capteurs non sains, et ainsi de suite. Cela nous permettait de quantifier facilement l’état global de la pièce au fil du temps.
Raspberry
Dans un troisième temps, nous avons commencé à utiliser le Raspberry Pi ainsi qu’un HAT (Hardware Attached on Top) permettant de brancher plusieurs capteurs physiques. Le Raspberry Pi fonctionnait sous Linux (distribution Raspbian), et l’objectif de cette étape était de récupérer les données réelles des capteurs à l’aide de différentes bibliothèques Python (comme Adafruit_DHT, smbus, etc.).
Nous avons ensuite écrit un script Python capable d’analyser en temps réel les données des capteurs pour déterminer si l’état de la pièce était sain ou non. À partir de là, nous avons ajouté directement sur le Raspberry des indicateurs visuels :
- Une LED principale indiquant la saison simulée.
- Une LED par capteur, bleue si les valeurs étaient normales (saines), rouge si elles dépassaient les seuils critiques.
- Deux boutons permettant de régler la luminosité des LED, ce qui ajoutait une petite interaction utilisateur.
- Un buzzer qui se déclenchait lorsque l’état de la pièce devenait trop critique (par exemple si plusieurs capteurs détectaient un dépassement important des seuils).
Enfin, nous avons mis en place le protocole MQTT pour permettre au Raspberry Pi de communiquer en temps réel avec un autre ordinateur.
Dash et API
Enfin, dans la dernière phase du projet, nous avons décidé de réaliser un tableau de bord interactif en utilisant la bibliothèque Dash de Python. Cette bibliothèque nous a permis de créer une interface web simple et efficace, avec des graphiques et indicateurs clairs pour représenter les données des capteurs en temps réel.
Pour récupérer ces données, nous avons mis en place une API développée avec Flask, qui faisait le lien entre notre base de données et le tableau de bord. Nous avons choisi d’utiliser PostgreSQL comme base de données, car elle est bien adaptée à la gestion de données en temps réel et offre de bonnes performances pour ce type d’application.
En parallèle, nous avons développé une version simplifiée du tableau de bord avec Flutter, dans le but de le rendre accessible depuis un smartphone. Cette application permettait de consulter les données principales à distance.
Nous avons également intégré une caméra au Raspberry Pi. Celle-ci était déclenchée dès qu’une présence était détectée dans la pièce. Lorsqu’une personne était détectée, une photo était prise, puis analysée pour reconnaître le visage. Si le visage n’était pas reconnu, nous sauvegardions son embedding dans la base de données pour une reconnaissance ultérieure.
Malheureusement, nous n’avons pas pu aller plus loin dans la réalisation du projet, notamment en ce qui concerne la création d’autres stations (par exemple, une station dédiée à l’IA), ni implémenter Kafka, qui était prévu initialement pour gérer la transmission et le traitement des flux de données en temps réel.
Ce que j’ai appris
Ce projet m’a permis de développer de nombreuses compétences, aussi bien techniques que transversales. J’ai appris à manipuler un Raspberry Pi, à connecter et exploiter différents capteurs. J’ai également découvert l’utilisation d’outils de visualisation comme Power BI et Dash, ainsi que la création d’une API avec Flask. Au-delà de l’aspect technique, ce projet m’a appris à mieux m’organiser, à travailler en équipe, et à m’adapter face aux imprévus. Il m’a donné une vision plus claire des enjeux de l’IoT.
Compétences Mobilisés
Technique
- Programmation Python : essentielle pour lire les capteurs, traiter les données, créer des scripts de simulation, et développer des interfaces comme Dash ou l’API Flask.
- Utilisation de bibliothèques spécialisées : telles que Dash, Pandas, Flask, etc.
- Création d’interfaces graphiques : à travers Power BI pour la visualisation initiale, Dash pour le tableau de bord web, et Flutter pour une version mobile.
- Gestion de bases de données
- Communication réseau et protocoles IoT
Iot
- Manipulation du Raspberry Pi
- Utilisation de capteurs
- Intégration matérielle
- Création d’un système embarqué autonome
Gestion de projet
- Travail en équipe : coordination, répartition des tâches (Trello/git).
- Veille technologique : recherche d’informations sur l’industrie 4.0, les outils logiciels et matériels, les innovations dans le domaine de l’IoT.