Files

3.0 KiB

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+).
  1. 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).
  1. 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.
  1. 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 !