8d874ae31b
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
8.5 KiB
8.5 KiB
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 l’interface I2S.
- I2S (Inter-IC Sound) : protocole série dédié à l’audio, géré par deux périphériques sur ESP32-S3. Permet d’envoyer 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 l’audio ESP32-S3
- Vérifier le schéma hardware : identifier les broches I2S (BCLK, WS, DOUT) et le DAC/ampli.
- Configurer le firmware : adapter le mapping dans
ui_freenove_config.hetplatformio.ini. - Utiliser le fallback I2S : remplacer tout appel à
dacWritepar une routine I2S (i2sWriteSample). - Initialiser I2S : suivre l’exemple Espressif pour la configuration du canal, du clock, des slots et des GPIO.
- Tester l’audio : utiliser un signal simple (ex : sinusoïde) pour valider la sortie.
- 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 d’audit
- 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 d’environnement :
ZACUS_ENV="freenove_esp32s3" ./tools/dev/run_matrix_and_smoke.sh
- Ne pas passer d’argument 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 d’intégration)
Onboarding : sélection d’environnement
-
La sélection de l’environnement hardware (Freenove ESP32-S3, ESP32, ESP8266, etc.) se fait exclusivement via la variable d’environnement
ZACUS_ENV. -
Ne jamais passer l’environnement 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_ENVet lance le smoke test adapté (Freenove, ESP32, ESP8266, etc.) sans intervention manuelle. - En mode CI ou batch (
CI=trueouZACUS_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/ethardware/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>puisAUDIO_TEST. - Profils fournis:
0=sketch19,1=swap_bck_ws,2=dout2_alt. - Le tactile est désactivé par défaut (
FREENOVE_HAS_TOUCH=0).