ESP32 S3 - Lecteur MP3

Construire un lecteur MP3 avec l'ESP32 S3 est un projet gratifiant qui montre comment un microcontrôleur peut contrôler la lecture audio depuis une carte Micro SD. Dans ce guide, vous apprendrez à connecter un module lecteur MP3 série et un haut-parleur à l'ESP32 S3, puis à le programmer pour lire, mettre en pause et naviguer entre les chansons.

ESP32 S3 - MP3 Player

Ce que vous allez construire :

  1. Un lecteur MP3 fonctionnel qui lit des fichiers audio depuis une carte Micro SD
  2. Un système où l'ESP32 S3 envoie des commandes série au module MP3
  3. Un contrôle de lecture à l'aide de boutons physiques (lecture, pause, suivant, précédent)
  4. Une base que vous pouvez étendre avec un contrôle de volume via un potentiomètre ou un encodeur rotatif

À propos du module lecteur MP3 série et du haut-parleur

Le module lecteur MP3 série agit comme un décodeur audio autonome qui accepte des commandes via une interface série UART, lit des fichiers MP3 depuis une carte Micro SD, et délivre le signal audio décodé via une prise Aux de 3,5mm. L'associer à l'ESP32 S3 permet un contrôle programmatique complet de la lecture sans avoir besoin d'aucune bibliothèque audio externe sur le microcontrôleur lui-même.

Spécifications clés

Brochage du module lecteur MP3 série

Le module expose trois interfaces distinctes pour la communication, la sortie audio et le stockage.

  1. Broche RX : entrée de données — connectez à une broche TX sur l'ESP32 S3
  2. Broche TX : sortie de données — connectez à une broche RX sur l'ESP32 S3
  3. Broche VCC : alimentation — connectez à 3,3 V ou 5 V
  4. Broche GND : référence de masse — connectez à GND
  5. Prise Aux 3,5mm : sortie audio — se connecte directement au haut-parleur
  6. Support de carte Micro SD : situé à l'arrière du module — insérez la carte contenant vos fichiers MP3
Serial MP3 Player Module Pinout

Brochage du haut-parleur

Un haut-parleur compatible fournit généralement deux interfaces pour donner vie à l'audio.

  1. Connecteur mâle Aux 3,5mm : entrée de signal audio — se branche dans la prise de sortie du module MP3
  2. Interface d'alimentation : USB, adaptateur 5 V, ou toute alimentation prise en charge — alimente l'amplificateur du haut-parleur

Fonctionnement

Pour commencer, assurez-vous d'avoir ce qui suit :

  • Réunissez une collection de chansons ou d'enregistrements audio que vous voulez jouer et stockez-les sur une carte Micro SD.
  • Insérez la carte Micro SD dans le module lecteur MP3.
  • Connectez le module lecteur MP3 à l'ESP32 S3 et connectez le haut-parleur au module lecteur MP3. Assurez-vous aussi que le haut-parleur est connecté à une source d'alimentation.

Chaque fichier MP3 sur la carte Micro SD reçoit un ID, à partir de 0. Ensuite, vous pouvez indiquer à l'ESP32 S3 de faire diverses choses avec le module lecteur MP3, comme :

  • Play : Commencer à jouer la chanson sélectionnée.
  • Pause : Mettre la chanson en pause.
  • Play Next : Passer à la chanson suivante.
  • Play Previous : Revenir à la chanson précédente.
  • Change Volume : Ajuster le volume de la musique.

Quand le module lecteur MP3 reçoit une commande, il lit le fichier MP3 depuis la carte Micro SD, le transforme en signal audio, et envoie ce signal au haut-parleur via une connexion Aux de 3,5mm.

Schéma de câblage

Connectez les broches série du module MP3 aux broches UART de l'ESP32 S3, et branchez le haut-parleur dans la prise audio du module. Assurez-vous que le module et le haut-parleur reçoivent tous les deux une alimentation appropriée avant de téléverser votre sketch.

Notes de sécurité

Gardez les câbles de signal courts pour réduire les interférences, et ne connectez jamais l'alimentation de l'amplificateur du haut-parleur directement au rail 3,3 V de l'ESP32 S3 — utilisez une source 5 V dédiée pour protéger la carte.

ESP32 S3 MP3 player module Wiring Diagram

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Code ESP32 S3 - Jouer de la musique

Le code suivant joue la première chanson stockée sur la carte Micro SD. Il initialise une connexion série logicielle vers le module MP3 et envoie la commande de lecture immédiatement au démarrage. Le code suivant montre le scénario de lecture le plus simple possible pour vérifier que votre câblage est correct avant d'ajouter des contrôles.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-s3/esp32-s3-mp3-player */ /* * This ESP32-S3 code is created by esp32io.com * * This ESP32-S3 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-s3-mp3-player */ #define CMD_PLAY_NEXT 0x01 #define CMD_PLAY_PREV 0x02 #define CMD_PLAY_W_INDEX 0x03 #define CMD_SET_VOLUME 0x06 #define CMD_SEL_DEV 0x09 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_SINGLE_CYCLE 0x19 #define DEV_TF 0x02 #define SINGLE_CYCLE_ON 0x00 #define SINGLE_CYCLE_OFF 0x01 void setup() { Serial.begin(9600); Serial2.begin(9600, SERIAL_8N1, 18, 17); delay(500); // wait chip initialization is complete mp3_command(CMD_SEL_DEV, DEV_TF); // select the TF card delay(200); // wait for 200ms mp3_command(CMD_PLAY, 0x0000); // Play mp3 //mp3_command(CMD_PAUSE, 0x0000); // Pause mp3 //mp3_command(CMD_PLAY_NEXT, 0x0000); // Play next mp3 //mp3_command(CMD_PLAY_PREV, 0x0000); // Play previous mp3 //mp3_command(CMD_SET_VOLUME, 30); // Change volume to 30 } void loop() { } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = { 0 }; frame[0] = 0x7e; // starting byte frame[1] = 0xff; // version frame[2] = 0x06; // the number of bytes of the command without starting byte and ending byte frame[3] = command; // frame[4] = 0x00; // 0x00 = no feedback, 0x01 = feedback frame[5] = (int8_t)(dat >> 8); // data high byte frame[6] = (int8_t)(dat); // data low byte frame[7] = 0xef; // ending byte for (uint8_t i = 0; i < 8; i++) { Serial2.write(frame[i]); } }

Étapes rapides

  1. Nouveau sur ESP32 S3 ? Complétez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Suivez les instructions de la section Fonctionnement ci-dessus — préparez votre carte Micro SD et insérez-la dans le module.
  3. Copiez le code ci-dessus et ouvrez-le avec l'Arduino IDE.
  4. Cliquez sur le bouton Upload dans l'Arduino IDE pour téléverser le code sur l'ESP32 S3.
  5. Profitez de la musique.
  6. Astuce Pro : Si aucun son ne joue, vérifiez deux fois la polarité du câblage RX/TX — le RX du module doit se connecter à la broche TX de l'ESP32 S3 et vice versa.

Sortie du Serial Monitor

Ouvrez le Serial Monitor à 9600 bauds pour observer les accusés de réception des commandes du module MP3. Les relevés suivants ont été capturés pendant une session de lecture typique.

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-06-16 10:00:01] MP3 module initialised. Playing track 1... [2026-06-16 10:00:05] Playback started successfully. [2026-06-16 10:00:45] Next track command sent. Playing track 2... [2026-06-16 10:01:30] Pause command sent. Playback paused.
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

Code ESP32 S3 - Jouer de la musique avec des boutons de contrôle

Le code suivant améliore l'exemple de base en ajoutant quatre boutons-poussoirs afin que vous puissiez interagir avec le lecteur MP3 en temps réel. Chaque bouton correspond à une action de lecture — lecture, pause, suivant et précédent — vous donnant un contrôle pratique sans modifier le code.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-s3/esp32-s3-mp3-player */ /* * This ESP32-S3 code is created by esp32io.com * * This ESP32-S3 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-s3-mp3-player */ #include <ezButton.h> #define CMD_PLAY_NEXT 0x01 #define CMD_PLAY_PREV 0x02 #define CMD_PLAY_W_INDEX 0x03 #define CMD_SET_VOLUME 0x06 #define CMD_SEL_DEV 0x09 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_SINGLE_CYCLE 0x19 #define DEV_TF 0x02 #define SINGLE_CYCLE_ON 0x00 #define SINGLE_CYCLE_OFF 0x01 ezButton button_play(4); // create ezButton object that attach to ESP32-S3's pin GPIO4 ezButton button_pause(5); // create ezButton object that attach to ESP32-S3's pin GPIO5 ezButton button_next(6); // create ezButton object that attach to ESP32-S3's pin GPIO6 ezButton button_prev(7); // create ezButton object that attach to ESP32-S3's pin GPIO7 void setup() { Serial.begin(9600); Serial2.begin(9600, SERIAL_8N1, 18, 17); delay(500); // wait chip initialization is complete mp3_command(CMD_SEL_DEV, DEV_TF); // select the TF card delay(200); // wait for 200ms button_play.setDebounceTime(50); // set debounce time to 50 milliseconds button_pause.setDebounceTime(50); // set debounce time to 50 milliseconds button_next.setDebounceTime(50); // set debounce time to 50 milliseconds button_prev.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { button_play.loop(); // MUST call the loop() function first button_pause.loop(); // MUST call the loop() function first button_next.loop(); // MUST call the loop() function first button_prev.loop(); // MUST call the loop() function first if (button_play.isPressed()) { Serial.println("Play mp3"); mp3_command(CMD_PLAY, 0x0000); } if (button_pause.isPressed()) { Serial.println("Pause mp3"); mp3_command(CMD_PAUSE, 0x0000); } if (button_next.isPressed()) { Serial.println("Play next mp3"); mp3_command(CMD_PLAY_NEXT, 0x0000); } if (button_prev.isPressed()) { Serial.println("Play previous mp3"); mp3_command(CMD_PLAY_PREV, 0x0000); } } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = {0}; frame[0] = 0x7e; // starting byte frame[1] = 0xff; // version frame[2] = 0x06; // the number of bytes of the command without starting byte and ending byte frame[3] = command; // frame[4] = 0x00; // 0x00 = no feedback, 0x01 = feedback frame[5] = (int8_t)(dat >> 8); // data high byte frame[6] = (int8_t)(dat); // data low byte frame[7] = 0xef; // ending byte for (uint8_t i = 0; i < 8; i++) { Serial2.write(frame[i]); } }

Le schéma de câblage pour le code ci-dessus :

ESP32 S3 MP3 player speaker Wiring Diagram

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Maintenant, vous pouvez modifier les projets pour ajouter plus de fonctions, par exemple :

Applications

La combinaison ESP32 S3 et module lecteur MP3 est assez polyvalente pour alimenter de nombreux projets audio réels. Voici quelques cas d'usage pratiques à explorer.

  1. Machine à sons ambiants : Jouez en boucle des sons de nature ou du bruit blanc pour des dispositifs de relaxation ou d'aide au sommeil.
  2. Exposition interactive : Déclenchez des clips audio thématiques dans des installations de musée ou de salle d'évasion selon les actions des visiteurs.
  3. Système de messages vocaux : Annoncez des messages d'état ou des avertissements dans des panneaux industriels ou domotiques.
  4. Jouet éducatif : Jouez des lettres de l'alphabet, des chiffres, ou de courtes leçons quand un enfant appuie sur un bouton.
  5. Système d'alarme et d'alerte : Faites sonner des tonalités d'alarme personnalisées ou des alertes parlées dans des applications de sécurité ou de surveillance.

Vidéo

Regardez la vidéo pas à pas de ce projet ESP32 S3 ci-dessous.

Défis

Étendre votre projet de lecteur MP3 est une excellente façon d'approfondir vos compétences en ESP32 S3. Essayez l'un des défis ci-dessous pour pousser le projet plus loin.

  1. Débutant : Ajoutez une LED qui clignote en synchronisation avec l'état de lecture — allumée pendant la lecture, éteinte en pause.
  2. Intermédiaire : Connectez un potentiomètre et mappez sa valeur au niveau de volume afin de pouvoir ajuster le volume avec un bouton.
  3. Avancé : Construisez un gestionnaire de playlist qui lit un fichier texte depuis la carte SD pour déterminer l'ordre de lecture et permet un mode aléatoire via un bouton dédié.

Références de fonctions

Commentaires

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !