--- title: "Module 12 — Projet final" --- ## Objectifs du module - Mobiliser l'ensemble des compétences acquises (GPIO, PWM, ADC, I2C, interruptions, Wi-Fi, BLE, énergie, MQTT) dans un projet personnel cohérent. - Rédiger un cahier des charges simple avant de coder. - Structurer un programme Arduino de taille conséquente (plusieurs fichiers, fonctions bien séparées). - Présenter et démontrer son projet. ## 1. Méthodologie : avant de coder Un projet réussi commence par une phase de cadrage, même brève. Avant d'ouvrir l'IDE, répondez par écrit aux questions suivantes : - Quel problème mon projet résout-il, ou quel besoin satisfait-il ? - Quelles sont les fonctionnalités indispensables (MVP - produit minimum viable) et lesquelles sont « bonus » si le temps le permet ? - Quel matériel est nécessaire (capteurs, actionneurs, alimentation) et est-il disponible ? - Le projet doit-il fonctionner de façon autonome (batterie) ou reste-t-il branché en continu ? - Quels modules de la formation seront mobilisés ? ![Démarche de projet : du besoin à la présentation](../schemas/svg/m12-demarche-projet.svg){#fig-m12-demarche-projet} ## 2. Exemples de projets (par ordre de complexité croissante) | Projet | Modules mobilisés | Description | |------------------------------|---------------------|----------------------------------------| | Station météo de bureau | 1, 2, 3, 5 | Écran OLED affichant température/humidité locales, LED NeoPixel comme indicateur de confort | | Station météo connectée | 5, 7 ou 11 | La précédente, mais publiant les données sur Internet (API ou MQTT) et consultable à distance | | Capteur autonome sur batterie | 5, 10, 11 | Mesure périodique avec deep sleep, transmission MQTT, autonomie de plusieurs semaines | | Domotique locale | 2, 3, 8 | Serveur web pilotant plusieurs relais/LED, avec retour d'état en temps réel | | Télécommande BLE personnalisée | 6, 9 | Boîtier avec boutons/encodeur pilotant un appareil via BLE (ex : diaporama, musique) | | Jeu de réflexes lumineux | 2, 4, 6 | Jeu type « Simon » utilisant plusieurs LED (ou la NeoPixel en RGB) et un buzzer, avec score affiché en série | ::: {.callout-note title="Un projet libre est aussi possible"} Cette liste est indicative : n'importe quel projet personnel combinant au moins trois modules de la formation et incluant une utilisation réfléchie de la LED NeoPixel est recevable. ::: ## 3. Cahier des charges type (à compléter) | Rubrique | À compléter | |----------------------------------------|---------------| | Nom du projet | | | Objectif en une phrase | | | Fonctionnalités indispensables | | | Fonctionnalités bonus (si le temps le permet) | | | Matériel nécessaire | | | Modules de la formation mobilisés | | | Contraintes (autonomie, taille, coût...) | | ## 4. Structurer un projet de taille conséquente Au-delà d'une centaine de lignes, un seul fichier .ino devient difficile à maintenir. L'IDE Arduino permet de scinder un croquis en plusieurs onglets/fichiers, automatiquement inclus à la compilation : - MonProjet.ino : contient uniquement `setup()` et `loop()`, orchestrant les appels aux autres fonctions. - capteurs.h / capteurs.cpp (ou simplement un onglet capteurs.ino) : fonctions de lecture et traitement des capteurs. - affichage.ino : fonctions liées à l'écran OLED et à la LED NeoPixel. - reseau.ino : fonctions Wi-Fi/MQTT/BLE. ![Organisation d'un croquis en plusieurs onglets, une responsabilité par fichier](../schemas/svg/m12-structure-projet.svg){#fig-m12-structure-projet} ::: {.callout-tip title="Bonne pratique de structuration"} Une fonction doit avoir une seule responsabilité claire (ex : `lireTemperature()`, `afficherEcran()`, `publierMQTT()`). Cette organisation facilite grandement le débogage et la relecture, surtout en formation collective où le code peut être partagé et commenté entre apprenants. ::: ## 5. Grille d'auto-évaluation avant présentation | Critère | Validé ? | |----------------------------------------|------------| | Le projet répond au besoin défini dans le cahier des charges | ☐ | | Le code compile sans erreur ni avertissement bloquant | ☐ | | Les fonctions sont nommées clairement et bien séparées | ☐ | | Le programme gère les cas d'erreur (capteur non détecté, Wi-Fi indisponible...) | ☐ | | La LED NeoPixel est utilisée de façon pertinente (état, alerte, feedback) | ☐ | | Le projet a été testé sur une durée représentative de son usage réel | ☐ | | Une courte documentation (schéma de câblage, liste du matériel) accompagne le code | ☐ | ## 6. Présentation du projet Chaque participant présente son projet en quelques minutes : - Démonstration du fonctionnement réel sur la carte. - Explication des choix techniques (pourquoi ce protocole, cette architecture). - Difficultés rencontrées et solutions apportées. - Pistes d'amélioration si le projet devait être poursuivi. ## Conclusion de la formation Ce parcours a couvert la prise en main du matériel, les entrées/sorties, les signaux analogiques, les bus de communication, la gestion du temps et des évènements, la connectivité Wi-Fi et BLE, la gestion de l'énergie et l'IoT via MQTT — un socle de compétences complet pour aborder de façon autonome tout projet basé sur l'ESP32-S3 avec le framework Arduino. La suite naturelle consiste à approfondir un domaine particulier selon vos projets futurs : traitement du signal, IA embarquée (TinyML), protocoles radio longue portée (LoRa), ou intégration à des écosystèmes domotiques existants.