SAE 2.02 — Mesurer et caractériser un signal ou un système

Web-radio à base d'ESP32 et d'un décodeur audio VS1053 : lecture de flux Internet, réglage du volume en décibels, des graves/aigus et d'un effet de spatialisation, pilotable à distance en MQTT depuis un smartphone.

Le volume est piloté par un curseur exprimé en décibels (-50 à 0 dB) puis converti côté ESP32 en consigne 0-100, pour relier directement la SAE à la caractérisation d'un signal audio.

semestre::S2
statut::Terminé
stack::ESP32 · VS1053 · MQTT
// objectif

Objectif & Contexte

Réaliser un système de transmission audio capable de diffuser des flux radio Internet, puis le caractériser et le piloter à distance : volume exprimé en décibels, réglage de tonalité (graves/aigus), effet de spatialisation, avec un retour d'état permettant de garder une interface de contrôle synchronisée avec le lecteur.

// compétences

Compétences développées

  • CE2 : Connecter les entreprises et les usagers
  • AC12.01 : Mesurer, analyser et commenter les signaux
  • AC12.02 : Caractériser des systèmes de transmissions élémentaires
  • AC12.03 : Déployer des supports de transmission
  • AC12.05 : Communiquer avec un tiers et adapter son discours
// architecture

Architecture & fonctionnalités

L'ESP32 pilote le décodeur audio VS1053 en SPI et se connecte au Wifi via un portail captif (WiFiManager). Il s'abonne à un broker MQTT public pour recevoir ses commandes et publie en retour son statut complet (station, volume, tonalité, mode spatial) afin que l'interface de contrôle reste synchronisée.

  • radio/commande — station suivante/précédente ou accès direct, volume +/-, mute, stop, retour aux présélections, graves/aigus, cycle de spatialisation
  • radio/volume_dB — volume piloté par curseur, en décibels, converti en consigne 0-100
  • radio/url — lecture d'une URL de flux libre, en plus des présélections
  • radio/statut, radio/bass, radio/treble — retour d'état publié vers l'interface
// évolution

Évolution & difficultés rencontrées

Premier prototype : connexion Wifi, décodage VS1053 et contrôle au clavier via le moniteur série (changement de station, volume). Les réglages de tonalité et l'effet de spatialisation (registres SCI du VS1053) ont été ajoutés ensuite, avant que le pilotage soit déporté vers MQTT pour permettre un contrôle depuis le téléphone.

Difficulté principale : une boucle de republication infinie sur le topic de volume (l'ESP32 republiait l'état dès qu'il recevait une valeur, ce qui déclenchait une nouvelle réception côté interface). Résolue par un indicateur qui coupe temporairement la republication lorsque la valeur vient déjà du curseur.

// captures

Screenshots (cliquez pour agrandir)

À adapter : noms des captures et lien GitHub à vérifier/compléter avec tes propres fichiers.