Projet Innovant (Innovative Project) - Semestre 9
Annee academique : 2024-2025
Semestre : S9 - INSA Toulouse, parcours ISS (Innovative Smart Systems)
Projet : What-A-Leak - Systeme de detection de fuites d'eau
PART A - Presentation Generale
Objectifs du projet
Le Projet Innovant (Innovative Project) est le projet phare du semestre 9 du parcours ISS a l'INSA Toulouse. Il s'agit d'un projet multidisciplinaire de grande envergure visant a concevoir un prototype fonctionnel repondant a une problematique reelle. Notre projet, intitule "What-A-Leak", avait pour objectif de developper un systeme intelligent de detection de fuites d'eau dans les reseaux de canalisations, en utilisant une approche non intrusive basee sur des capteurs vibratoires.
Problematique :
Les fuites d'eau representent un enjeu majeur tant au niveau domestique qu'au niveau des infrastructures publiques. Les methodes de detection traditionnelles sont souvent intrusives, couteuses et necessitent une intervention humaine. Notre projet propose une solution connectee, autonome et securisee pour detecter les fuites en temps reel.
Objectifs principaux :
- Concevoir un noeud capteur embarque capable de detecter des vibrations anormales dans les canalisations
- Developper un protocole de communication securise pour la transmission des donnees
- Creer une application mobile intuitive pour le suivi et la gestion des alertes
- Realiser un boitier physique adapte via modelisation 3D et impression
- Construire un prototype complet et fonctionnel, de l'acquisition de donnees a l'interface utilisateur
Organisation de l'equipe
Notre equipe etait composee de cinq membres, chacun avec des responsabilites specifiques :
| Membre | Responsabilites principales |
|---|---|
| Moi-meme | Logiciel embarque, securite (AES), application mobile (React Native), modelisation 3D (CAD) |
| Collegue 1 | Serveur backend, base de donnees, API |
| Collegue 2 | Machine Learning, analyse des donnees vibratoires |
| Collegue 3 | Site web de presentation, documentation |
| Collegue 4 | Hardware, protocole LoRa, integration electronique |
Chronologie et methodologie
Le projet s'est deroule en 4 sprints suivant une methodologie Agile :
| Sprint | Periode | Objectifs |
|---|---|---|
| Sprint 1 | Debut du semestre | Definition du cahier des charges, choix des technologies, premieres maquettes |
| Sprint 2 | Mi-semestre | Developpement des composants individuels (embarque, app, serveur) |
| Sprint 3 | Fin de semestre - 1 mois | Integration des composants, premiers tests de bout en bout |
| Sprint 4 | Dernier mois | Tests finaux, optimisation, preparation de la presentation |
Chaque sprint se terminait par une presentation devant les enseignants et les autres groupes, permettant de recevoir des retours et d'ajuster la direction du projet.
PART B - Experience et Contexte
Environnement et contexte
Le projet s'est deroule dans un environnement collaboratif au sein du departement ISS de l'INSA Toulouse. Ce projet fait partie d'une initiative multidisciplinaire innovante ou les etudiants doivent mener un projet de A a Z, de l'idee initiale au prototype fonctionnel.
L'objectif initial etait de detecter les fuites d'eau dans les maisons. Cependant, au fur et a mesure de l'avancement du projet, la portee s'est elargie pour inclure une approche distribuee applicable aux infrastructures de reseaux d'eau publics. Cette evolution a permis de passer d'un cas d'usage domestique a un cas d'usage industriel, ajoutant de la complexite et de la pertinence au projet.
Le projet a offert une plateforme unique pour appliquer les connaissances theoriques acquises durant le cursus a des scenarios pratiques, favorisant l'innovation, la creativite et la gestion de projet.
Outils et environnement de developpement
Partie embarquee :
- Microcontroleur : ESP32 (framework ESP-IDF via le SDK Espressif)
- Capteur : Accelerometre pour la detection de vibrations
- Communication : Module LoRa pour la transmission longue portee
- IDE : VS Code avec extension ESP-IDF
- Langage : C (FreeRTOS)
Application mobile :
- Framework : React Native avec Expo
- Langage : JavaScript
- Bibliotheques : React Navigation (navigation par onglets), react-native-vector-icons (icones), react-native-chart-kit (graphiques)
- Gestion de donnees : JSON synchronise avec le serveur
Modelisation 3D :
- Logiciel : SolidWorks
- Fabrication : Impression 3D (PLA)
- Simulation : Analyse de contraintes mecaniques
Securite :
- Algorithme : AES-128 en mode CBC
- Bibliotheque : TinyAES (tiny-AES-c)
- Cle : Pre-partagee, symetrique
Gestion de projet :
- Versionning : Git / GitHub (organisation what-a-leak)
- Communication : Reunions hebdomadaires, presentations de sprint
Mon role dans le projet
Dans ce projet, j'ai assume plusieurs responsabilites couvrant differents domaines techniques :
1. Developpement du logiciel embarque :
- Programmation du microcontroleur ESP32 avec le framework ESP-IDF
- Configuration et lecture de l'accelerometre pour l'acquisition des donnees vibratoires
- Implementation de la collecte de metriques (vibration, son, batterie) pour la detection de fuites
- Integration avec le module de communication LoRa
2. Securite des communications :
- Implementation du chiffrement AES-128 en mode CBC sur l'ESP32
- Gestion des vecteurs d'initialisation (IV) avec partie aleatoire et statique
- Padding PKCS#7 pour l'alignement des blocs de donnees
- Tests de validation du chiffrement/dechiffrement de bout en bout
3. Application mobile :
- Developpement complet de l'application React Native avec Expo
- Conception de l'architecture de navigation (Bottom Tab Navigator)
- Creation des ecrans : accueil, tableau de bord, historique, fuites, statistiques
- Integration des donnees provenant du serveur via fichiers JSON
4. Modelisation 3D (CAD) :
- Conception du boitier du capteur sous SolidWorks
- Prise en compte des contraintes d'assemblage et de la taille des composants electroniques
- Simulation mecanique pour valider la robustesse du design
- Iteration avec impression 3D pour validation physique
PART C - Aspects Techniques
Architecture globale du systeme
Le systeme "What-A-Leak" repose sur une architecture distribuee composee de plusieurs couches :
1. Couche capteur (Noeud) : Chaque noeud est un dispositif autonome equipe d'un ESP32, d'un accelerometre et d'un module LoRa. Il collecte les donnees vibratoires et les transmet de maniere securisee.
2. Couche communication : Les donnees sont chiffrees en AES-128 CBC et transmises via LoRa vers une passerelle (gateway). Ce choix de LoRa permet une portee de plusieurs kilometres avec une faible consommation energetique.
3. Couche serveur : Un serveur centralise les donnees, les stocke dans une base de donnees, et les met a disposition via une API REST.
4. Couche application : L'application mobile React Native permet aux utilisateurs de surveiller l'etat des noeuds, visualiser les statistiques de consommation et recevoir des alertes en cas de fuite.
5. Couche intelligence : Un module de Machine Learning analyse les donnees vibratoires pour distinguer les vibrations normales des signatures de fuites.
Le flux de donnees complet est le suivant :
Capteur (accelerometre) --> ESP32 (traitement + chiffrement AES) --> LoRa --> Gateway --> Serveur (API + BDD) --> Application mobile
1. Partie embarquee - ESP32 et acquisition de donnees
Le coeur du systeme repose sur le microcontroleur ESP32, programme avec le framework ESP-IDF (Espressif IoT Development Framework) base sur FreeRTOS. Le choix de l'ESP32 s'est impose pour plusieurs raisons :
- Double coeur permettant de gerer simultanement l'acquisition de donnees et la communication
- Support natif du WiFi et du Bluetooth (utile pour la configuration initiale)
- Faible consommation energetique avec modes de veille profonde
- Large ecosysteme de bibliotheques et de documentation
- Compatible avec les modules LoRa pour la communication longue portee
Acquisition de donnees :
L'accelerometre est interface avec l'ESP32 via le bus I2C ou SPI. Le logiciel embarque realise les etapes suivantes :
- Initialisation du peripherique accelerometre
- Lecture periodique des valeurs d'acceleration sur les 3 axes (X, Y, Z)
- Pre-traitement des donnees (filtrage, calcul de la magnitude)
- Empaquetage des metriques (vibration, niveau sonore, batterie, statut de fuite)
- Chiffrement des donnees via AES-128 CBC
- Transmission via le module LoRa
La structure de donnees transmise par chaque noeud contient :
| Champ | Description | Type |
|---|---|---|
| NodeID | Identifiant unique du noeud | Entier |
| MesureCapteur | Valeur de mesure du capteur | Flottant |
| Status | Etat de fuite (0 = normal, 1 = fuite) | Booleen |
| TimeStamp | Horodatage de la mesure | Date/heure |
| Batterie | Niveau de batterie en pourcentage | Entier |
| Temperature | Temperature ambiante (optionnel) | Flottant |
2. Developpement de l'application mobile
Nous avons choisi React Native avec Expo pour developper notre application mobile en raison de leur efficacite pour le developpement multiplateforme. React Native permet d'ecrire du code JavaScript qui se compile en code natif pour iOS et Android, reduisant le temps de developpement et les efforts de maintenance. Expo simplifie le processus de configuration et fournit un acces aux API natives.
Figure : Structure du workspace de l'application mobile
Architecture de l'application :
L'application est structuree en plusieurs repertoires et fichiers :
- assets/ : Ressources statiques (images, icones, logo, splash screen)
- Config/ : Gestion des donnees des noeuds incluant les niveaux de batterie, les mesures de vibration et de son, et le statut de fuite (fichiers JSON synchronises avec le serveur)
- Screen/ : Les ecrans principaux de l'application
- App.js : Point d'entree gerant l'ecran d'accueil et la navigation
- app.json : Metadonnees de configuration de l'application
Systeme de navigation :
L'application utilise un Bottom Tab Navigator (react-navigation) avec une barre de navigation au theme violet (#6A0DAB). Les ecrans accessibles depuis la barre de navigation sont :
- Historique (icone "history")
- Tableau de bord (icone "tint")
- Statistiques (icone "bar-chart")
- Alertes de fuites (icone "exclamation-triangle")
L'ecran d'accueil (HomeScreen) est affiche en plein ecran sans barre de navigation, et les pages de detail des noeuds (NodeInfo) sont accessibles depuis le tableau de bord.
Ecrans et fonctionnalites detaillees :
- WelcomeScreen : Ecran de demarrage affichant un message de bienvenue et le logo de l'application pendant 1 seconde avant de rediriger vers l'ecran d'accueil.
- HomeScreen : Point d'entree principal avec options de connexion et branding de l'application.
- DashboardScreen : Vue d'ensemble de tous les noeuds avec indicateurs visuels (vert = normal, rouge = fuite), niveaux de batterie, et statut global de detection de fuite. Inclut egalement un graphique de statistiques hebdomadaires.
- HistoricScreen : Historique des activites des noeuds et positions sur une carte geographique, permettant de suivre l'evolution des mesures dans le temps.
- LeakScreen : Historique des fuites detectees avec details (localisation, horodatage, severite) et options de contact pour signaler ou intervenir.
- StatisticsScreen : Statistiques detaillees de consommation d'eau avec graphiques hebdomadaires et mensuels.
- NodeInfo : Page de detail d'un noeud individuel avec toutes ses metriques.
Figure : Captures d'ecran de l'application - HomeScreen, DashboardScreen, HistoricScreen, LeakScreen, StatisticsScreen
L'application lit les donnees depuis un fichier JSON dans le repertoire Config, synchronise avec le serveur pour les mises a jour en temps reel. Les evolutions futures incluent un traitement de donnees ameliore, des notifications en temps reel, une authentification utilisateur et des analyses avancees pour une meilleure comprehension de la consommation d'eau.
3. Modelisation 3D (CAD)
Nous avons utilise SolidWorks pour concevoir le modele mecanique du boitier du capteur. Le choix de SolidWorks s'est impose pour ses fonctionnalites robustes de conception parametrique et son interface intuitive.
Cahier des charges du boitier :
- Loger la carte electronique (ESP32 + accelerometre + module LoRa + batterie)
- Prevoir des ouvertures pour les connecteurs et les capteurs
- Assurer un contact direct entre le capteur sonore et la canalisation (essentiel pour la precision de la detection)
- Garantir une fixation solide a la canalisation sans vibrations parasites
- Permettre l'ouverture pour la maintenance (remplacement de batterie, mise a jour firmware)
Conception du boitier :
- Un espace dedie au capteur sonore assure le contact direct avec la canalisation
- Des trous de vis securisent le boitier et la carte electronique, evitant les fausses lectures de vibrations
- Les dimensions sont optimisees pour minimiser l'encombrement tout en assurant un assemblage aise
Figure : Vue d'assemblage et modele 3D du boitier du capteur
Simulation et validation :
Des simulations de contraintes mecaniques ont ete realisees sous SolidWorks pour verifier la resistance du boitier aux efforts de serrage et aux vibrations environnantes. Le processus de validation a inclus :
- Analyse de contraintes (Von Mises) pour identifier les zones de faiblesse
- Verification des deformations sous charge
- Impression 3D iterative pour valider l'ergonomie et l'assemblage
- Tests de fixation sur differents diametres de canalisations
Figure : Simulation de contraintes mecaniques du boitier
4. Securite des communications - Chiffrement AES
Problematique de securite :
Notre projet implique un reseau distribue de capteurs (ESP32 + module LoRa) qui transmettent des metriques et des resultats d'analyse preliminaire. Sans mecanisme de securite, le systeme est vulnerable a plusieurs types d'attaques :
- Attaque par rejeu (replay) : Un attaquant intercepte et retransmet des messages legitimes pour provoquer de fausses alertes
- Alteration des donnees (tampering) : Modification des mesures en transit pour masquer une fuite reelle
- Ecoute passive (eavesdropping) : Interception des donnees pour obtenir des informations sur l'infrastructure du reseau d'eau
Solution implementee :
Nous avons mis en place un mecanisme de securite leger mais efficace utilisant le chiffrement AES-128 avec la bibliotheque TinyAES (tiny-AES-c) et des cles symetriques pre-partagees. Chaque capteur chiffre ses donnees en mode CBC (Cipher Block Chaining), utilisant un vecteur d'initialisation (IV) unique pour chaque message.
Details techniques :
- AES-128 : Algorithme de chiffrement symetrique utilisant une cle de 128 bits pour chiffrer et dechiffrer les donnees. Choisi pour son excellent rapport securite/performance, particulierement adapte aux microcontroleurs a ressources limitees.
- Mode CBC (Cipher Block Chaining) : Mode d'operation pour les chiffrements par blocs qui utilise un mecanisme de chainage. Chaque bloc de texte clair est XORe avec le bloc chiffre precedent avant d'etre chiffre, garantissant que des blocs de texte clair identiques produisent des blocs chiffres differents.
- Vecteur d'Initialisation (IV) : Valeur aleatoire ou pseudo-aleatoire utilisee pour initialiser le processus de chiffrement. Dans notre implementation, pour equilibrer securite et efficacite de transmission :
- 2 octets sont generes aleatoirement a chaque message (transmis avec le message)
- 14 octets sont statiques (pre-partages entre le capteur et le serveur)
- Cette approche reduit la surcharge de communication tout en maintenant une entropie suffisante
- Padding PKCS#7 : Schema de remplissage utilise pour assurer que la longueur du texte clair est un multiple de la taille du bloc (16 octets pour AES). PKCS#7 ajoute une serie d'octets dont la valeur est egale au nombre d'octets de remplissage ajoutes.
Figure : Architecture de securite du systeme - flux de chiffrement et dechiffrement
Figure : Detail du processus de chiffrement AES-128 CBC avec IV partiel
Choix de conception pour l'embarque :
- TinyAES est une implementation ultra-legere d'AES (quelques Ko de Flash) compatible avec les contraintes memoire de l'ESP32
- Le mode CBC a ete prefere au mode ECB car ce dernier ne masque pas les motifs dans les donnees
- La cle pre-partagee evite la complexite d'un echange de cles (type Diffie-Hellman) inadapte a un microcontroleur
5. Protocole de communication LoRa
Choix de LoRa :
LoRa (Long Range) a ete selectionne comme protocole de communication sans fil pour plusieurs raisons :
- Portee : Plusieurs kilometres en milieu urbain, jusqu'a 15 km en champ libre
- Faible consommation : Compatible avec un fonctionnement sur batterie pendant plusieurs mois
- Penetration : Bonne penetration des obstacles (murs, sous-sol)
- Bande ISM : Utilisation de la bande ISM (868 MHz en Europe) sans licence
Integration avec l'ESP32 :
Le module LoRa est connecte a l'ESP32 via l'interface SPI. Le firmware gere :
- La configuration des parametres radio (frequence, spreading factor, bande passante)
- L'envoi des paquets chiffres a intervalles reguliers
- La gestion de la consommation (mode veille entre les transmissions)
- La detection d'erreurs de transmission
PART D - Analyse et Reflexion
Competences acquises
Ce projet m'a permis de developper et de consolider un large eventail de competences :
Competences techniques :
- Analyser des problemes concrets et proposer des solutions technologiques adaptees
- Developper du logiciel embarque pour microcontroleur (ESP32, FreeRTOS, ESP-IDF)
- Implementer des mecanismes de securite (chiffrement AES) sur des systemes a ressources limitees
- Creer des applications mobiles multiplateformes avec React Native et Expo
- Concevoir des modeles 3D (CAD) avec SolidWorks et valider par simulation
- Integrer des capteurs et des modules de communication dans un systeme embarque
- Gerer un flux de donnees de bout en bout (capteur --> serveur --> application)
Competences transversales :
- Travailler en equipe sur un projet de grande envergure avec des sous-systemes interdependants
- Presenter et debattre des choix techniques en anglais devant un jury
- Rediger des rapports techniques complets en anglais
- Appliquer une methodologie Agile (sprints, revues, retrospectives)
- Gerer les priorites et les delais dans un projet avec de nombreux livrables
Auto-evaluation
Ce projet a ete l'un des projets les plus avances de mon parcours. Mener un projet de zero jusqu'a un prototype fonctionnel, impliquant hardware, logiciel embarque, stockage de donnees, transmission de donnees, modelisation 3D, serveur, intelligence artificielle et interface applicative, c'etait un projet complet, un prototype pret a la commercialisation.
En raison de l'envergure du projet, je n'ai pas pu travailler sur tous les aspects, mais j'ai collabore etroitement avec mes collegues pour rester informe de chaque composant. Je suis fier de mes contributions, et le systeme est fonctionnel. Faire partie d'une equipe dediee ou chacun etait desireux d'apprendre de nouvelles choses a ete une experience tres enrichissante.
La partie qui m'a le plus challenge a ete l'implementation de la securite AES sur l'ESP32. Il a fallu comprendre en profondeur le fonctionnement du chiffrement par blocs, gerer les contraintes memoire du microcontroleur, et assurer la compatibilite du chiffrement entre l'ESP32 (C) et le serveur (Python/Node.js).
Le developpement de l'application mobile m'a permis de decouvrir React Native et l'ecosysteme JavaScript mobile. La creation d'une interface utilisateur intuitive avec navigation par onglets, graphiques et cartes a ete un apprentissage riche.
Mon avis
Ce projet a ete une excellente opportunite d'explorer differents domaines et de mener nos propres recherches sur la maniere de gerer le projet. A mon avis, l'organisation actuelle des sessions etait ideale pour livrer un prototype, mais pas suffisante pour livrer un produit final entierement fonctionnel avec toutes les fonctionnalites souhaitees.
J'ai decouvert comment integrer de nombreux concepts appris au cours de l'annee dans un projet reel, similaire a ce que l'on pourrait nous demander en entreprise. Ce projet a ete une experience formidable et je suis fier des resultats que nous avons obtenus.
Points forts du projet :
- Prototype fonctionnel de bout en bout
- Diversite des technologies maitrisees (embarque, mobile, 3D, securite)
- Travail d'equipe efficace avec repartition claire des taches
- Presentations regulieres favorisant la communication
Axes d'amelioration :
- Plus de temps pour l'integration et les tests systeme
- Approfondir la partie Machine Learning pour la classification des vibrations
- Implementer des notifications push en temps reel dans l'application
- Ajouter une authentification utilisateur robuste
Gestion de projet et travail d'equipe
La methodologie Agile avec des sprints de 3 a 4 semaines s'est revelee tres efficace pour ce type de projet. Les presentations de fin de sprint nous ont obliges a avoir des livrables concrets a chaque etape, evitant ainsi l'effet "tunnel" ou l'integration est repoussee a la fin.
La communication au sein de l'equipe a ete un facteur cle de reussite. Les reunions hebdomadaires permettaient de synchroniser les avancees, identifier les blocages et redistribuer les efforts si necessaire. L'utilisation de GitHub avec une organisation dediee a facilite la gestion du code et la collaboration.
Rapports et Projets
Rapport de projet Project Report
Le code source complet du projet est disponible sur l'organisation GitHub : What-A-Leak
Rapport du Projet Innovant ISS ISS Innovative Project Report
Rapport complet du projet "What-A-Leak" detaillant la conception, l'implementation et les resultats du systeme de detection de fuites d'eau. Complete report of the "What-A-Leak" project detailing the design, implementation and results of the water leak detection system.
Presentation finale Final Presentation
Presentation finale du projet Final Project Presentation
Support de presentation utilise lors de la soutenance finale du projet devant le jury. Presentation slides used during the final project defense before the jury.
Projet realise en 2024-2025 a l'INSA Toulouse, Departement ISS (Innovative Smart Systems).
Innovative Project - Semester 9
Academic year: 2024-2025
Semester: S9 - INSA Toulouse, ISS track (Innovative Smart Systems)
Project: What-A-Leak - Water leak detection system
PART A - General Presentation
Project objectives
The Innovative Project is the flagship project of semester 9 in the ISS track at INSA Toulouse. It is a large-scale multidisciplinary project aimed at designing a functional prototype addressing a real-world problem. Our project, entitled "What-A-Leak", aimed to develop an intelligent water leak detection system in pipe networks, using a non-intrusive approach based on vibration sensors.
Problem statement:
Water leaks represent a major challenge at both the domestic and public infrastructure levels. Traditional detection methods are often intrusive, costly and require human intervention. Our project proposes a connected, autonomous and secure solution to detect leaks in real time.
Main objectives:
- Design an embedded sensor node capable of detecting abnormal vibrations in pipes
- Develop a secure communication protocol for data transmission
- Create an intuitive mobile application for monitoring and alert management
- Produce a suitable physical enclosure through 3D modeling and printing
- Build a complete and functional prototype, from data acquisition to user interface
Team organization
Our team consisted of five members, each with specific responsibilities:
| Member | Main responsibilities |
|---|---|
| Myself | Embedded software, security (AES), mobile application (React Native), 3D modeling (CAD) |
| Colleague 1 | Backend server, database, API |
| Colleague 2 | Machine Learning, vibration data analysis |
| Colleague 3 | Presentation website, documentation |
| Colleague 4 | Hardware, LoRa protocol, electronic integration |
Timeline and methodology
The project was carried out in 4 sprints following an Agile methodology:
| Sprint | Period | Objectives |
|---|---|---|
| Sprint 1 | Beginning of semester | Requirements definition, technology selection, first mockups |
| Sprint 2 | Mid-semester | Development of individual components (embedded, app, server) |
| Sprint 3 | End of semester - 1 month | Component integration, first end-to-end tests |
| Sprint 4 | Last month | Final tests, optimization, presentation preparation |
Each sprint ended with a presentation before the instructors and other groups, allowing for feedback and project direction adjustments.
PART B - Experience and Context
Environment and context
The project took place in a collaborative environment within the ISS department at INSA Toulouse. This project is part of an innovative multidisciplinary initiative where students must lead a project from start to finish, from the initial idea to a functional prototype.
The initial objective was to detect water leaks in houses. However, as the project progressed, the scope expanded to include a distributed approach applicable to public water network infrastructures. This evolution enabled a shift from a domestic use case to an industrial use case, adding complexity and relevance to the project.
The project provided a unique platform for applying the theoretical knowledge acquired during the curriculum to practical scenarios, fostering innovation, creativity and project management.
Tools and development environment
Embedded part:
- Microcontroller: ESP32 (ESP-IDF framework via Espressif SDK)
- Sensor: Accelerometer for vibration detection
- Communication: LoRa module for long-range transmission
- IDE: VS Code with ESP-IDF extension
- Language: C (FreeRTOS)
Mobile application:
- Framework: React Native with Expo
- Language: JavaScript
- Libraries: React Navigation (tab navigation), react-native-vector-icons (icons), react-native-chart-kit (charts)
- Data management: JSON synchronized with the server
3D modeling:
- Software: SolidWorks
- Manufacturing: 3D printing (PLA)
- Simulation: Mechanical stress analysis
Security:
- Algorithm: AES-128 in CBC mode
- Library: TinyAES (tiny-AES-c)
- Key: Pre-shared, symmetric
Project management:
- Versioning: Git / GitHub (organization what-a-leak)
- Communication: Weekly meetings, sprint presentations
My role in the project
In this project, I assumed several responsibilities covering various technical domains:
1. Embedded software development:
- Programming the ESP32 microcontroller with the ESP-IDF framework
- Configuring and reading the accelerometer for vibration data acquisition
- Implementing metrics collection (vibration, sound, battery) for leak detection
- Integration with the LoRa communication module
2. Communication security:
- Implementation of AES-128 encryption in CBC mode on the ESP32
- Management of initialization vectors (IV) with random and static parts
- PKCS#7 padding for data block alignment
- End-to-end encryption/decryption validation testing
3. Mobile application:
- Complete development of the React Native application with Expo
- Navigation architecture design (Bottom Tab Navigator)
- Screen creation: home, dashboard, history, leaks, statistics
- Server data integration via JSON files
4. 3D modeling (CAD):
- Sensor enclosure design in SolidWorks
- Consideration of assembly constraints and electronic component sizes
- Mechanical simulation to validate design robustness
- Iterative 3D printing for physical validation
PART C - Technical Aspects
Overall system architecture
The "What-A-Leak" system relies on a distributed architecture composed of several layers:
1. Sensor layer (Node): Each node is an autonomous device equipped with an ESP32, an accelerometer and a LoRa module. It collects vibration data and transmits it securely.
2. Communication layer: Data is encrypted using AES-128 CBC and transmitted via LoRa to a gateway. The choice of LoRa enables a range of several kilometers with low power consumption.
3. Server layer: A server centralizes the data, stores it in a database, and makes it available via a REST API.
4. Application layer: The React Native mobile application allows users to monitor node status, view consumption statistics and receive leak alerts.
5. Intelligence layer: A Machine Learning module analyzes vibration data to distinguish normal vibrations from leak signatures.
The complete data flow is as follows:
Sensor (accelerometer) --> ESP32 (processing + AES encryption) --> LoRa --> Gateway --> Server (API + DB) --> Mobile application
1. Embedded part - ESP32 and data acquisition
The core of the system relies on the ESP32 microcontroller, programmed with the ESP-IDF framework (Espressif IoT Development Framework) based on FreeRTOS. The ESP32 was chosen for several reasons:
- Dual core allowing simultaneous data acquisition and communication management
- Native WiFi and Bluetooth support (useful for initial configuration)
- Low power consumption with deep sleep modes
- Large ecosystem of libraries and documentation
- Compatible with LoRa modules for long-range communication
Data acquisition:
The accelerometer is interfaced with the ESP32 via the I2C or SPI bus. The embedded software performs the following steps:
- Accelerometer peripheral initialization
- Periodic reading of acceleration values on 3 axes (X, Y, Z)
- Data pre-processing (filtering, magnitude calculation)
- Metrics packaging (vibration, sound level, battery, leak status)
- Data encryption via AES-128 CBC
- Transmission via the LoRa module
The data structure transmitted by each node contains:
| Field | Description | Type |
|---|---|---|
| NodeID | Unique node identifier | Integer |
| SensorMeasurement | Sensor measurement value | Float |
| Status | Leak state (0 = normal, 1 = leak) | Boolean |
| TimeStamp | Measurement timestamp | Date/time |
| Battery | Battery level in percentage | Integer |
| Temperature | Ambient temperature (optional) | Float |
2. Mobile application development
We chose React Native with Expo to develop our mobile application due to their efficiency for cross-platform development. React Native allows writing JavaScript code that compiles into native code for iOS and Android, reducing development time and maintenance efforts. Expo simplifies the configuration process and provides access to native APIs.
Figure: Mobile application workspace structure
Application architecture:
The application is structured into several directories and files:
- assets/: Static resources (images, icons, logo, splash screen)
- Config/: Node data management including battery levels, vibration and sound measurements, and leak status (JSON files synchronized with the server)
- Screen/: Main application screens
- App.js: Entry point managing the home screen and navigation
- app.json: Application configuration metadata
Navigation system:
The application uses a Bottom Tab Navigator (react-navigation) with a purple-themed navigation bar (#6A0DAB). The screens accessible from the navigation bar are:
- History ("history" icon)
- Dashboard ("tint" icon)
- Statistics ("bar-chart" icon)
- Leak alerts ("exclamation-triangle" icon)
The home screen (HomeScreen) is displayed full screen without a navigation bar, and the node detail pages (NodeInfo) are accessible from the dashboard.
Detailed screens and features:
- WelcomeScreen: Startup screen displaying a welcome message and the application logo for 1 second before redirecting to the home screen.
- HomeScreen: Main entry point with login options and application branding.
- DashboardScreen: Overview of all nodes with visual indicators (green = normal, red = leak), battery levels, and overall leak detection status. Also includes a weekly statistics chart.
- HistoricScreen: History of node activities and positions on a geographic map, allowing tracking of measurement evolution over time.
- LeakScreen: History of detected leaks with details (location, timestamp, severity) and contact options for reporting or intervention.
- StatisticsScreen: Detailed water consumption statistics with weekly and monthly charts.
- NodeInfo: Individual node detail page with all its metrics.
Figure: Application screenshots - HomeScreen, DashboardScreen, HistoricScreen, LeakScreen, StatisticsScreen
The application reads data from a JSON file in the Config directory, synchronized with the server for real-time updates. Future developments include improved data processing, real-time notifications, user authentication and advanced analytics for better understanding of water consumption.
3. 3D modeling (CAD)
We used SolidWorks to design the mechanical model of the sensor enclosure. SolidWorks was chosen for its robust parametric design capabilities and intuitive interface.
Enclosure requirements:
- House the electronic board (ESP32 + accelerometer + LoRa module + battery)
- Provide openings for connectors and sensors
- Ensure direct contact between the sound sensor and the pipe (essential for detection accuracy)
- Guarantee solid attachment to the pipe without parasitic vibrations
- Allow opening for maintenance (battery replacement, firmware update)
Enclosure design:
- A dedicated space for the sound sensor ensures direct contact with the pipe
- Screw holes secure the enclosure and electronic board, preventing false vibration readings
- Dimensions are optimized to minimize footprint while ensuring easy assembly
Figure: Assembly view and 3D model of the sensor enclosure
Simulation and validation:
Mechanical stress simulations were performed in SolidWorks to verify the enclosure's resistance to clamping forces and surrounding vibrations. The validation process included:
- Stress analysis (Von Mises) to identify weak areas
- Deformation verification under load
- Iterative 3D printing to validate ergonomics and assembly
- Attachment tests on different pipe diameters
Figure: Mechanical stress simulation of the enclosure
4. Communication security - AES encryption
Security problem statement:
Our project involves a distributed network of sensors (ESP32 + LoRa module) that transmit metrics and preliminary analysis results. Without security mechanisms, the system is vulnerable to several types of attacks:
- Replay attack: An attacker intercepts and retransmits legitimate messages to trigger false alerts
- Data tampering: Modification of measurements in transit to conceal a real leak
- Passive eavesdropping: Data interception to obtain information about the water network infrastructure
Implemented solution:
We implemented a lightweight but effective security mechanism using AES-128 encryption with the TinyAES library (tiny-AES-c) and pre-shared symmetric keys. Each sensor encrypts its data in CBC (Cipher Block Chaining) mode, using a unique Initialization Vector (IV) for each message.
Technical details:
- AES-128: Symmetric encryption algorithm using a 128-bit key to encrypt and decrypt data. Chosen for its excellent security/performance ratio, particularly suited for resource-constrained microcontrollers.
- CBC mode (Cipher Block Chaining): Block cipher operating mode that uses a chaining mechanism. Each plaintext block is XORed with the previous ciphertext block before being encrypted, ensuring that identical plaintext blocks produce different ciphertext blocks.
- Initialization Vector (IV): Random or pseudo-random value used to initialize the encryption process. In our implementation, to balance security and transmission efficiency:
- 2 bytes are randomly generated for each message (transmitted with the message)
- 14 bytes are static (pre-shared between the sensor and the server)
- This approach reduces communication overhead while maintaining sufficient entropy
- PKCS#7 padding: Padding scheme used to ensure that the plaintext length is a multiple of the block size (16 bytes for AES). PKCS#7 adds a series of bytes whose value equals the number of padding bytes added.
Figure: System security architecture - encryption and decryption flow
Figure: Detail of the AES-128 CBC encryption process with partial IV
Design choices for embedded systems:
- TinyAES is an ultra-lightweight AES implementation (a few KB of Flash) compatible with the ESP32's memory constraints
- CBC mode was preferred over ECB mode because the latter does not mask patterns in the data
- The pre-shared key avoids the complexity of a key exchange (Diffie-Hellman type) unsuitable for a microcontroller
5. LoRa communication protocol
Why LoRa:
LoRa (Long Range) was selected as the wireless communication protocol for several reasons:
- Range: Several kilometers in urban environments, up to 15 km in open field
- Low power consumption: Compatible with battery operation for several months
- Penetration: Good obstacle penetration (walls, underground)
- ISM band: Use of the ISM band (868 MHz in Europe) without licensing
Integration with the ESP32:
The LoRa module is connected to the ESP32 via the SPI interface. The firmware manages:
- Radio parameter configuration (frequency, spreading factor, bandwidth)
- Sending encrypted packets at regular intervals
- Power management (sleep mode between transmissions)
- Transmission error detection
PART D - Analysis and Reflection
Skills acquired
This project allowed me to develop and consolidate a wide range of skills:
Technical skills:
- Analyzing concrete problems and proposing suitable technological solutions
- Developing embedded software for microcontrollers (ESP32, FreeRTOS, ESP-IDF)
- Implementing security mechanisms (AES encryption) on resource-constrained systems
- Creating cross-platform mobile applications with React Native and Expo
- Designing 3D models (CAD) with SolidWorks and validating through simulation
- Integrating sensors and communication modules into an embedded system
- Managing an end-to-end data flow (sensor --> server --> application)
Soft skills:
- Working in a team on a large-scale project with interdependent subsystems
- Presenting and debating technical choices in English before a jury
- Writing comprehensive technical reports in English
- Applying Agile methodology (sprints, reviews, retrospectives)
- Managing priorities and deadlines in a project with many deliverables
Self-assessment
This project was one of the most advanced projects in my curriculum. Leading a project from scratch to a functional prototype, involving hardware, embedded software, data storage, data transmission, 3D modeling, server, artificial intelligence and application interface, it was a complete project, a prototype ready for commercialization.
Due to the project's scope, I was not able to work on all aspects, but I collaborated closely with my colleagues to stay informed about each component. I am proud of my contributions, and the system is functional. Being part of a dedicated team where everyone was eager to learn new things was a very enriching experience.
The part that challenged me the most was implementing AES security on the ESP32. It required an in-depth understanding of block cipher operation, managing the microcontroller's memory constraints, and ensuring encryption compatibility between the ESP32 (C) and the server (Python/Node.js).
Developing the mobile application allowed me to discover React Native and the mobile JavaScript ecosystem. Creating an intuitive user interface with tab navigation, charts and maps was a rich learning experience.
My opinion
This project was an excellent opportunity to explore different domains and conduct our own research on how to manage the project. In my opinion, the current organization of sessions was ideal for delivering a prototype, but not sufficient for delivering a fully functional final product with all desired features.
I discovered how to integrate many concepts learned throughout the year into a real project, similar to what we might be asked to do in a professional setting. This project was a tremendous experience and I am proud of the results we achieved.
Project strengths:
- End-to-end functional prototype
- Diversity of mastered technologies (embedded, mobile, 3D, security)
- Effective teamwork with clear task distribution
- Regular presentations fostering communication
Areas for improvement:
- More time for integration and system testing
- Deepen the Machine Learning part for vibration classification
- Implement real-time push notifications in the application
- Add robust user authentication
Project management and teamwork
The Agile methodology with 3 to 4 week sprints proved very effective for this type of project. End-of-sprint presentations forced us to have concrete deliverables at each stage, thus avoiding the "tunnel" effect where integration is pushed to the end.
Communication within the team was a key success factor. Weekly meetings allowed synchronizing progress, identifying blockers and redistributing efforts when necessary. Using GitHub with a dedicated organization facilitated code management and collaboration.
Reports and Projects
Rapport de projet Project Report
The complete source code of the project is available on the GitHub organization: What-A-Leak
Rapport du Projet Innovant ISS ISS Innovative Project Report
Rapport complet du projet "What-A-Leak" detaillant la conception, l'implementation et les resultats du systeme de detection de fuites d'eau. Complete report of the "What-A-Leak" project detailing the design, implementation and results of the water leak detection system.
Presentation finale Final Presentation
Presentation finale du projet Final Project Presentation
Support de presentation utilise lors de la soutenance finale du projet devant le jury. Presentation slides used during the final project defense before the jury.
Project completed in 2024-2025 at INSA Toulouse, ISS Department (Innovative Smart Systems).