M10 : consommation par mode, profil de courant en deep sleep. M11 : publish/subscribe, arborescence des topics. M12 : démarche de projet, structure multi-fichiers. Synthèse : carte du parcours. Figure du chenillard (M2) déplacée après son code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
90 lines
5.5 KiB
Plaintext
90 lines
5.5 KiB
Plaintext
---
|
|
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 ?
|
|
|
|
{#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.
|
|
|
|
{#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.
|