Files
2026-03-11 00:03:58 +01:00

8.5 KiB
Raw Permalink Blame History

Multiplexage des broches Attention

Cible matérielle: Freenove ESP32-S3 WROOM N16R8.

Certaines broches sont partagées entre plusieurs fonctions:

  • GPIO 4: utilisé pour le rétroéclairage (BL) et le bouton 3 (BTN3)
  • GPIO 5: utilisé pour le Chip Select TFT (CS) et le bouton 4 (BTN4)

Ce multiplexage impose:

  • De ne pas activer simultanément les deux fonctions sur une même broche
  • De documenter explicitement ce partage dans le firmware et la doc
  • De vérifier le comportement lors des tests (priorité, conflits)

Recommandation: ajouter des commentaires dans ui_freenove_config.h et tester chaque usage séparément.

Périphériques additionnels Détail par fonction

I2C

  • SDA : GPIO 8
  • SCL : GPIO 9
  • Usage : bus capteurs (ex : MPU6050, DHT11)
  • Remarque : vérifier pull-up, adresser chaque périphérique

LED

  • LED : GPIO 13
  • Usage : indicateur d’état, feedback utilisateur
  • Remarque : pilotable en PWM

Buzzer

  • Buzzer : GPIO 12
  • Usage : signal sonore, alerte
  • Remarque : pilotable en PWM

DHT11

  • DHT11 : GPIO 14
  • Usage : capteur température/humidité
  • Remarque : nécessite librairie DHT11, attention au timing

MPU6050

  • MPU6050 : I2C (SDA=8, SCL=9), adresse 0x68
  • Usage : capteur IMU (accéléro/gyro)
  • Remarque : vérifier alimentation, pull-up I2C

Synthèse technique & onboarding audio ESP32-S3 (Freenove)

Absence de DAC matériel et fallback I2S

  • ESP32-S3 ne possède pas de DAC intégré: toute sortie audio doit passer par linterface I2S.
  • I2S (Inter-IC Sound): protocole série dédié à laudio, géré par deux périphériques sur ESP32-S3. Permet denvoyer des samples vers un DAC externe ou un ampli via filtre passe-bas.
  • Modes supportés: Standard (Philips/MSB/PCM), PDM, TDM. Mode standard ou PDM recommandé.
  • API Espressif: utiliser les drivers ESP-IDF (driver/i2s_std.h, driver/i2s_pdm.h).
  • Exemple minimal: initialiser canal TX, configurer mode standard, activer canal, envoyer samples.
  • Recommandations:
    • Utiliser un DAC externe (ex: ES8311, PCM5102, ampli + filtre RC)
    • Adapter le mapping GPIO selon le schéma Freenove
    • Pour PDM, exploiter le convertisseur PCM2PDM matériel
    • Consulter les exemples Espressif: i2s_basic/i2s_std, i2s_codec/i2s_es8311

Onboarding: Marche à suivre pour laudio ESP32-S3

  1. Vérifier le schéma hardware: identifier les broches I2S (BCLK, WS, DOUT) et le DAC/ampli.
  2. Configurer le firmware: adapter le mapping dans ui_freenove_config.h et platformio.ini.
  3. Utiliser le fallback I2S: remplacer tout appel à dacWrite par une routine I2S (i2sWriteSample).
  4. Initialiser I2S: suivre lexemple Espressif pour la configuration du canal, du clock, des slots et des GPIO.
  5. Tester laudio: utiliser un signal simple (ex: sinusoïde) pour valider la sortie.
  6. Documenter la traçabilité: reporter les étapes, patchs et artefacts dans docs/AGENT_TODO.md.

Liens techniques


Synthèse audit et traçabilité (17/02/2026)

  • Audit de cohérence exécuté (artifacts/audit/firmware_20260217): RESULT=PASS
  • Mapping hardware, scripts, onboarding, traçabilité validés
  • Correction audio ESP32-S3: fallback I2S, conditional compilation, documentation
  • Evidence: logs et artefacts non versionnés, paths/timestamps tracés dans AGENT_TODO.md et rapport daudit
  • Rapport et synthèse prêts à partager (voir artifacts/audit/firmware_20260217)

Mode ciblé et automatisation (2026)

  • Pour cibler un environnement spécifique (ex: Freenove ESP32-S3), utiliser la variable denvironnement:
    • ZACUS_ENV="freenove_esp32s3" ./tools/dev/run_matrix_and_smoke.sh
  • Ne pas passer dargument en ligne de commande (option non reconnue)
  • Le cockpit détecte automatiquement le hardware et propose le build/smoke ciblé
  • Les logs et artefacts sont synchronisés avec AGENT_TODO.md pour traçabilité
  • En cas d’échec UI link, consulter les logs et relancer le test (retry automatique en cours dintégration)

Onboarding : sélection denvironnement

  • La sélection de lenvironnement hardware (Freenove ESP32-S3, ESP32, ESP8266, etc.) se fait exclusivement via la variable denvironnement ZACUS_ENV.

  • Ne jamais passer lenvironnement en argument CLI: tous les scripts (build, flash, smoke) détectent la cible via ZACUS_ENV.

  • Exemple: pour tester sur Freenove ESP32-S3:

    export ZACUS_ENV="freenove_esp32s3"
    ./tools/dev/cockpit.sh smoke
    
  • Les scripts cockpit.sh, build_all.sh, run_matrix_and_smoke.sh, etc. utilisent cette variable pour déterminer la cible, le mapping hardware, et les artefacts.

UI link : retry et diagnostic

  • Le check UI link (connexion UI ESP32/ESP8266) intègre désormais une logique de retry automatique (3 essais par défaut, paramétrable via ZACUS_UI_LINK_RETRIES).
  • En cas d’échec, le script logue chaque tentative, synchronise l’évidence dans docs/AGENT_TODO.md, et produit un rapport détaillé dans les artefacts.
  • Toute évolution ou échec du protocole UI link est traçable dans les logs et la documentation.

cockpit.sh : automatisation smoke test

  • cockpit.sh détecte automatiquement la cible hardware via ZACUS_ENV et lance le smoke test adapté (Freenove, ESP32, ESP8266, etc.) sans intervention manuelle.
  • En mode CI ou batch (CI=true ou ZACUS_BATCH=1), les prompts USB sont désactivés: la détection est automatique, le countdown est skip, aucun blocage.

Synchronisation evidence/logs

  • Chaque run (succès ou échec) synchronise l’évidence (artefacts, logs, verdict) dans docs/AGENT_TODO.md.
  • Les artefacts et logs sont produits dans hardware/firmware/artifacts/ et hardware/firmware/logs/.
  • La traçabilité est assurée pour chaque run, avec horodatage, chemin, et verdict.

Prompt USB : optimisation CI/batch

  • En mode CI ou batch, les prompts USB sont automatiquement désactivés: aucun countdown, aucune interaction requise.
  • Les scripts détectent le mode batch et adaptent le comportement pour garantir la non-interactivité.

Mapping hardware ESP32-S3 Freenove Media Kit

Fonction Broche ESP32-S3 Signal TFT/Touch/Audio Remarques
TFT SCK GPIO 47 SCK SPI écran (FNK0102B)
TFT MOSI GPIO 21 MOSI SPI écran
TFT MISO -1 MISO non utilisé
TFT CS -1 CS câblage board intégré
TFT DC GPIO 45 DC Data/Command écran
TFT RESET GPIO 20 RESET Reset écran
TFT BL GPIO 2 BL Rétroéclairage
Touch CS GPIO 9 CS (XPT2046) optionnel (FREENOVE_HAS_TOUCH)
Touch IRQ GPIO 15 IRQ (XPT2046) optionnel
Boutons GPIO 19 ADC ladder (5 touches) key1..key5 par seuils analogiques
Audio I2S WS GPIO 41 WS profil principal Sketch_19
Audio I2S BCK GPIO 42 BCK profil principal Sketch_19
Audio I2S DOUT GPIO 1 DOUT profil principal Sketch_19
Alim écran/audio 3V3/5V/GND - Respecter les tensions

Remarques:

  • Profil audio runtime sélectionnable par série: AUDIO_PROFILE <idx> puis AUDIO_TEST.
  • Profils fournis: 0=sketch19, 1=swap_bck_ws, 2=dout2_alt.
  • Le tactile est désactivé par défaut (FREENOVE_HAS_TOUCH=0).