38 lines
3.0 KiB
Markdown
38 lines
3.0 KiB
Markdown
Agis en tant qu'expert en développement embarqué ESP32, C++ et PlatformIO. Je souhaite que tu rédiges l'architecture logicielle et le code d'un projet d'afficheur de navigation maritime étanche.
|
|
|
|
Voici les spécifications matérielles et logicielles à respecter scrupuleusement :
|
|
|
|
1. MATÉRIEL & ENVIRONNEMENT :
|
|
- Microcontrôleur : Waveshare ESP32-S3-Zero.
|
|
- Écran : Waveshare E-Ink 4.2 pouces monochrome (400x300 pixels), positionné à l'horizontale.
|
|
- Contrôles : 2 ou 3 boutons tactiles capacitifs (utilisant les broches "Touch" natives de l'ESP32-S3 connectées à des tiges métalliques).
|
|
- Environnement : PlatformIO, framework Arduino, plateforme espressif32 (v6.x+).
|
|
|
|
2. FONCTIONNALITÉS PRINCIPALES :
|
|
- Connexion BLE : L'ESP32-S3 se connecte en mode Client à une station centrale pour recevoir les données de navigation (vent, vitesse, polaires, etc.). Les spécifications exactes du service/caractéristiques BLE sont fournies séparément.
|
|
- Interface Web (Mode AP) : Au démarrage (via une combinaison de boutons tactiles ou si le BLE est inaccessible), l'ESP32 active un point d'accès Wi-Fi sécurisé. Il héberge une interface web rudimentaire (HTML/CSS ultra-léger) permettant :
|
|
* La configuration des pages/tuiles de l'écran.
|
|
* La mise à jour du firmware via OTA (gestion des partitions requise dans platformio.ini).
|
|
- Stockage persistant : La configuration des écrans doit être sauvegardée en mémoire non volatile (Preferences ou LittleFS).
|
|
|
|
3. AFFICHAGE & INTERFACE GRAPHIQUE :
|
|
- Utiliser obligatoirement la bibliothèque 'GxEPD2_BW' pour l'écran E-Ink.
|
|
- L'écran de 400x300 est divisé en une grille fixe de 4 "tuiles" paramétrables.
|
|
- Chaque tuile doit pouvoir afficher une donnée spécifique reçue en BLE (ex: Vitesse, Angle du Vent, Écart à la polaire) avec une police d'écriture de grande taille et une étiquette.
|
|
- Les boutons tactiles permettent de changer de "Page" (profils de 4 tuiles différents) ou de déclencher un rafraîchissement complet de l'écran.
|
|
|
|
4. ATTENTES :
|
|
- Propose une structure de fichiers propre pour PlatformIO (main.cpp, ble_manager, wifi_manager, display_manager, config_manager).
|
|
- Donne la configuration du fichier 'platformio.ini' (incluant le partitionnement personnalisé pour l'OTA et les bibliothèques requises à jour : GxEPD2, etc.).
|
|
- Fournis un code propre, modulaire, optimisé pour limiter les rafraîchissements complets de l'e-ink (privilégier le rafraîchissement partiel pour les données numériques).
|
|
- au niveau des librairies j'aimerais que tu utilise les dernières versions de :
|
|
* zinggjm/GxEPD2 (pour la gestion de l'e-ink display)
|
|
* bblanchon/ArduinoJson (si nécessaire pour le parsing json)
|
|
* h2zero/NimBLE-Arduino (pour la communication BLE avec la station)
|
|
* ESP32Async/ESPAsyncWebServer (pour le serveur async)
|
|
* adafruit/Adafruit NeoPixel (pour la gestion de la led de statut, j'aimerais que cela indique le statut ble/wifi)
|
|
- La documentation technique doit être faite en anglais.
|
|
- Fournis des fichiers complets.
|
|
|
|
Merci !
|