SimAudio
SimAudio joue des fichiers WAV depuis la carte SD via l’interface I2S et un ampli MAX98357A.
Hardware
Section intitulée « Hardware »| Composant | Référence |
|---|---|
| Ampli I2S | MAX98357A breakout |
| Haut-parleur | 8 ohm, 2W, 40mm |
| Carte SD | Module SPI |
Format audio
Section intitulée « Format audio »| Paramètre | Valeur |
|---|---|
| Format | WAV (PCM) |
| Échantillonnage | 16 kHz |
| Résolution | 16 bits |
| Canaux | Mono |
| Taille moyenne | ~100 KB par message de 3s |
Utilisation
Section intitulée « Utilisation »#include <SimAudio.h>
SimAudio audio;
void setup() { audio.begin(GPIO_NUM_4, GPIO_NUM_5, GPIO_NUM_6); // DIN, BCLK, LRC audio.setVolume(80); // 0-100}
void playMessage() { audio.play("/audio/choc-conseille.wav");
// Non-bloquant — utilise une tâche FreeRTOS sur Core 1 // Vérifier si la lecture est terminée : if (audio.isPlaying()) { // ... }}Architecture FreeRTOS
Section intitulée « Architecture FreeRTOS »La lecture audio s’exécute dans une tâche FreeRTOS dédiée sur Core 1 :
- Stack : 8192 bytes
- Priorité : 2 (au-dessus de la boucle principale)
- Buffer DMA : 2x 1024 bytes
Cela permet de jouer un message audio sans bloquer l’affichage ou la logique de la machine à états.
Files d’attente
Section intitulée « Files d’attente »// Jouer plusieurs messages en séquenceaudio.queue("/audio/analyse-en-cours.wav");audio.queue("/audio/choc-conseille.wav");audio.queue("/audio/eloignez-vous.wav");// Les messages sont joués l'un après l'autre