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 :

MembreResponsabilites principales
Moi-memeLogiciel embarque, securite (AES), application mobile (React Native), modelisation 3D (CAD)
Collegue 1Serveur backend, base de donnees, API
Collegue 2Machine Learning, analyse des donnees vibratoires
Collegue 3Site web de presentation, documentation
Collegue 4Hardware, protocole LoRa, integration electronique

Chronologie et methodologie

Le projet s'est deroule en 4 sprints suivant une methodologie Agile :

SprintPeriodeObjectifs
Sprint 1Debut du semestreDefinition du cahier des charges, choix des technologies, premieres maquettes
Sprint 2Mi-semestreDeveloppement des composants individuels (embarque, app, serveur)
Sprint 3Fin de semestre - 1 moisIntegration des composants, premiers tests de bout en bout
Sprint 4Dernier moisTests 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 :

  1. Initialisation du peripherique accelerometre
  2. Lecture periodique des valeurs d'acceleration sur les 3 axes (X, Y, Z)
  3. Pre-traitement des donnees (filtrage, calcul de la magnitude)
  4. Empaquetage des metriques (vibration, niveau sonore, batterie, statut de fuite)
  5. Chiffrement des donnees via AES-128 CBC
  6. Transmission via le module LoRa

La structure de donnees transmise par chaque noeud contient :

ChampDescriptionType
NodeIDIdentifiant unique du noeudEntier
MesureCapteurValeur de mesure du capteurFlottant
StatusEtat de fuite (0 = normal, 1 = fuite)Booleen
TimeStampHorodatage de la mesureDate/heure
BatterieNiveau de batterie en pourcentageEntier
TemperatureTemperature 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.

Telecharger le rapport Download the report

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.

Telecharger la presentation Download the presentation


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:

MemberMain responsibilities
MyselfEmbedded software, security (AES), mobile application (React Native), 3D modeling (CAD)
Colleague 1Backend server, database, API
Colleague 2Machine Learning, vibration data analysis
Colleague 3Presentation website, documentation
Colleague 4Hardware, LoRa protocol, electronic integration

Timeline and methodology

The project was carried out in 4 sprints following an Agile methodology:

SprintPeriodObjectives
Sprint 1Beginning of semesterRequirements definition, technology selection, first mockups
Sprint 2Mid-semesterDevelopment of individual components (embedded, app, server)
Sprint 3End of semester - 1 monthComponent integration, first end-to-end tests
Sprint 4Last monthFinal 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:

  1. Accelerometer peripheral initialization
  2. Periodic reading of acceleration values on 3 axes (X, Y, Z)
  3. Data pre-processing (filtering, magnitude calculation)
  4. Metrics packaging (vibration, sound level, battery, leak status)
  5. Data encryption via AES-128 CBC
  6. Transmission via the LoRa module

The data structure transmitted by each node contains:

FieldDescriptionType
NodeIDUnique node identifierInteger
SensorMeasurementSensor measurement valueFloat
StatusLeak state (0 = normal, 1 = leak)Boolean
TimeStampMeasurement timestampDate/time
BatteryBattery level in percentageInteger
TemperatureAmbient 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.

Telecharger le rapport Download the report

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.

Telecharger la presentation Download the presentation


Project completed in 2024-2025 at INSA Toulouse, ISS Department (Innovative Smart Systems).