SAEDomo - Assistant Domotique - BUT2 - S3


Projet SAEDomo - Assistant Domotique
Image représentative

Photo de l'interface sur écran TFT (tactile)

Généralités :
Date de début : 04/09/2023 - BUT 2
Durée : 5 mois
Groupe : 1 personne
Caractéristiques :
Complexité 70%
Recherche 80%
Ouverture 70%
Travail personnel 70%
Compétences travaillées :
Compétences électroniques : Dimensionnement de capteurs, circuits de commande relais, interfaçage SPI/I2C
Programmation embarquée : Architecture orientée objet C++, gestion interruptions, communications série et WebSocket
Interfaces utilisateur : Développement interface TFT tactile, serveur web asynchrone, HTML5/CSS3/JavaScript
Test et validation : Automatisation Python, génération LaTeX, procédures de maintenance industrielle

Note : Les niveaux présentés dans "Caractéristiques" sont subjectifs. La signification précise est détaillée dans Détails des caractéristiques des projets universitaires.



Le projet consiste en un assistant domotique centralisé basé sur un microcontrôleur ESP32, conçu pour permettre le contrôle et la surveillance d'une habitation. Le système intègre un ensemble de capteurs environnementaux, d'interfaces utilisateur et de sorties de commande dans une architecture matérielle et logicielle cohérente.

Maquette Domotique IHM
Schéma fonctionnel complet du système

L'architecture matérielle s'articule autour de l'ESP32 qui centralise la gestion de tous les périphériques. Le système comprend des capteurs de température et pression (BMP280), de luminosité (BH1750 et photorésistance GL5528), et de qualité d'air (MQ-9 pour le monoxyde de carbone). Les interfaces utilisateur incluent un écran TFT tactile 2.4" et une interface web accessible localement via WiFi. Les sorties de commandes comportent deux relais pour les dispositifs TOR (250V AC / 2A) et deux sorties PWM pour la gradation (jusqu'à 60V).

Architecture logicielle et communication

L'architecture logicielle adopte une approche orientée objet avec une librairie SAEDomoLIB (C++) qui centralise les fonctionnalités. Le système fonctionne avec une boucle d'exécution non-bloquante basée sur des interruptions et des flags, garantissant la réactivité du système.

Maquette Domotique IHM
Diagramme de classe de SAEDomoLIB

La communication s'effectue via plusieurs protocoles : I2C pour les capteurs BMP280 et BH1750, SPI pour l'écran TFT et le lecteur RFID, ainsi qu'ADC pour les capteurs analogiques. L'interface web utilise un serveur HTTP asynchrone avec WebSocket pour les mises à jour temps réel, évitant les actualisations complètes des pages et optimisant ainsi la bande passante.

Interface utilisateur et fonctionnalités avancées

Le système propose deux interfaces utilisateur distinctes mais complémentaires. L'écran TFT tactile offre un accès direct avec des composants graphiques modulaires (boutons, chaînes de caractères liées, menus contextuels). L'interface web, développée en HTML5/CSS3/JavaScript, utilise une architecture en "cartes" facilement extensible pour l'ajout de nouveaux périphériques.

Capture d'écran de l'interface TFT (Menu)
Capture d'écran de l'interface TFT (Menu)
Capture d'écran de l'interface TFT (Boîte de dialogue WiFi)
Capture d'écran de l'interface TFT (Boîte de dialogue WiFi)
Capture d'écran de l'interface web
Captures d'écran de l'interface web
Procédures de test et validation

Note : L'ensemble du code est disponnible sur mon GitHub : SAE301-DiagProgram

Un programme de test automatisé en Python a été développé pour valider le fonctionnement du système. Ce programme communique avec la carte via le port série et utilise des commandes JSON pour tester l'initialisation des composants, la connectivité WiFi, les mesures des capteurs et le fonctionnement des sorties.

Le programme effectue quatre phases de test : vérification de l'état des périphériques, tests de connectivité, analyse des données capteurs via WebSocket, et validation des sorties. Il génère automatiquement une fiche d'intervention PDF pré-remplie en cas de dysfonctionnement grâce à un compilateur LaTeX (pdflatex), facilitant la maintenance et le dépannage avec un document professionnel standardisé.

L'ensemble des procédures de tests, du programme Python et de l'architecture de validation est détaillé dans le dossier de fabrication présenté dans le résumé technique ci-dessus.


Conclusion

Ce projet d'assistant domotique ESP32 a permis de développer une solution complète intégrant conception électronique, programmation embarquée et interfaces utilisateur. L'architecture modulaire adoptée facilite la maintenance et l'évolution du système, tandis que la double interface (TFT et web) offre une flexibilité d'utilisation adaptée aux besoins de l'habitat moderne.

Les procédures de test automatisées et la génération de fiches d'intervention en LaTeX démontrent une approche professionnelle du développement, essentielle pour la fiabilité des systèmes domotiques. Le projet illustre la maîtrise des technologies IoT, des protocoles de communication industriels (I2C, SPI) et des architectures web temps réel.

Cette réalisation constitue une base solide pour des développements futurs en systèmes embarqués connectés et domotique intelligente, domaines en forte croissance dans l'industrie 4.0.