Ceci est un guide sur la façon d’interfacer le module de lecteur de musique MP3 série YX5300 / YX6300 avec l’ESP32 programmé avec l’IDE Arduino. Vous apprendrez à connecter le lecteur MP3 à l’ESP32 et à lire des sons et des morceaux de musique à partir de fichiers .mp3/.wav stockés sur une carte MicroSD. À titre d’exemple de projet, nous vous montrerons également comment créer un lecteur audio MP3 avec des boutons de commande et un bouton de volume.

Table des matières
Dans ce didacticiel, nous aborderons les sujets suivants :
Présentation du module de lecteur de musique MP3 série YX5300/YX6300
Le YX5300 / YX6300 est un module de lecteur de musique MP3 série (UART) à faible coût qui peut être interfacé avec des microcontrôleurs (tels que l’ESP32, l’ESP8266 ou l’Arduino) pour lire des fichiers .mp3 ou .wav stockés sur une carte MicroSD en envoyant des commandes série.

Où acheter ?
Vous pouvez consulter notre page Maker Advisor Tools pour comparer le prix du module YX5300 / YX6300 dans différents magasins :
Câblage du lecteur de musique MP3 série YX5300 / YX6300 à l’ESP32

Le câblage du lecteur MP3 à l’ESP32 est assez simple, car il ne nécessite que deux broches série : RX et TX.
| YX5300 / YX6300 | ESP32 |
| Émission | GPIO 16 (UART 2 RX) |
| RX | GPIO 17 (UART 2 TX) |
| VCC | NIV (5V) |
| GND | GND |
Selon les spécifications du produit dans le manuel, le VCC fonctionne avec des tensions comprises entre 3,2 V et 5,2 V. Selon nos tests, il fonctionne de manière plus fiable lorsqu’il est connecté à 5 V (VIN).
* Vous pouvez utiliser n’importe quel autre GPIO RX/TX. Consultez le guide de brochage ESP32 :
Vous aimerez peut-être également : Communication UART ESP32 (série) : définir les broches, les interfaces, envoyer et recevoir des données (Arduino IDE).
Nous allons connecter la broche RX au GPIO 17 et la broche TX au GPIO 16.

Important : dans tous les projets utilisant des commandes série, vous devez connecter les broches TX-RX et RX-TX. Cependant, si le code ne fonctionne pas correctement (pas d’envoi/réception de commandes série), vous devrez peut-être échanger le câblage et connecter RX-RX et TX-TX. L’un de nos lecteurs MP3 série était livré avec les mauvaises étiquettes sur le module, et la seule façon dont il fonctionnait était de le connecter avec TX-TX et RX-RX.
Préparation de la carte MicroSD
Le lecteur MP3 YX5300 dispose d’un emplacement pour carte microSD dans lequel vous pouvez insérer une carte microSD pour stocker vos fichiers .mp3 ou .wav. Voici les principales spécifications prises en charge par le module.
| YX5300 | Valeur |
| Cartes MicroSD prises en charge | MicroSD <= 32 Go |
| Format de la carte | FAT16/FAT32 |
| Formats de piste | .mp3 / .wav |
| Fréquences | 8-48 kHz |
Avant de poursuivre le didacticiel, assurez-vous de formater votre carte microSD en FAT32. Suivez les instructions suivantes pour formater votre carte microSD ou utilisez un outil logiciel tel que SD Card Formater (compatible avec Windows et Mac OS).
1. Insérez la carte microSD dans votre ordinateur. Accédez à Poste de travail et cliquez avec le bouton droit sur la carte SD. Sélectionnez Format comme indiqué dans la figure ci-dessous.

2. Une nouvelle fenêtre apparaît. Sélectionnez FAT32, appuyez sur Démarrer pour initialiser le processus de formatage et suivez les instructions à l’écran.

3. Afin de lire des morceaux de musique, vos dossiers et vos fichiers doivent être nommés correctement afin que le module MP3 puisse y accéder. Voici un exemple de structure de dossiers et de noms de fichiers :
01/
001xxx.mp3
002xxx.mp3
003xxx.mp3
02/
004xxx.mp3
005xxx.mp3
03/
006xxx.mp3
007xxx.mp3
008xxx.mp3
Vos dossiers doivent comporter 2 chiffres et chaque piste doit commencer par 3 chiffres. Chaque nom de piste doit être unique. Remarque : il y a un maximum de 99 dossiers contenant 255 chansons dans chaque dossier.
Exemple, commencez par créer 2 dossiers dans votre carte microSD (nommez vos dossiers : 01 et 02) :

4. Copiez les fichiers .mp3 ou .wav en commençant par 001, 002 et 003. Les noms de fichiers doivent être séquentiels et commencer par 3 chiffres.

5. Enfin, retirez la carte microSD de votre ordinateur et connectez-la au module YX5300.

Vous pouvez cliquer ici pour télécharger un dossier .zip contenant les fichiers musicaux libres de droits utilisés pour ce projet.
Connexion d’un casque ou de haut-parleurs au module YX5300
Le YX5300 n’est livré avec aucun casque ni haut-parleur, mais vous pouvez utiliser des écouteurs similaires à ceux illustrés dans l’image ci-dessous et les brancher sur la prise casque du module.

Installation de la bibliothèque YX5300 pour ESP32 (compatible YX6300)
Il existe plusieurs bibliothèques pour interfacer le module série YX5300 avec l’ESP32. Nous utiliserons la bibliothèque YX5300_ESP32 de bluejunimo (même si la bibliothèque s’appelle YX5300 pour ESP32, elle est également entièrement compatible avec le module MP3 YX6300 sans aucune modification supplémentaire).
Vous pouvez installer la bibliothèque via le gestionnaire de bibliothèque Arduino IDE. Recherchez YX5300 pour ESP32 et installez la bibliothèque par bluejunimo.

Préparation de l’IDE Arduino
Nous allons programmer la carte ESP32 à l’aide de l’IDE Arduino. Assurez-vous donc que le module complémentaire ESP32 est installé. Suivez le tutoriel suivant :
Si vous préférez utiliser VSCode + PlatformIO, suivez plutôt le tutoriel suivant :
Test du lecteur MP3 YX5300 / YX6300 (lire le son)
Le code suivant est celui fourni par la bibliothèque pour tester le module lecteur MP3. Vous testerez si le module fonctionne si vous pouvez entendre les fichiers audio lus dans le casque ou le haut-parleur.
/*********
Rui Santos & Sara Santos - Raspberryme.com
Complete project details at https://Raspberryme.com/esp32-yx5300-yx6300-mp3-player-arduino/
Example based on the library example by bluejunimo https://github.com/bluejunimo/YX5300_ESP32/
*********/
#include
// Connect to YX5300 Serial pins (RX and TX)
#define RX 16
#define TX 17
// mp3 object
YX5300_ESP32 mp3;
void setup() {
// Initialize connection with the YX5300/YX6300 module
mp3 = YX5300_ESP32(Serial2, RX, TX);
// Shows the hex commands being sent to the mp3 device (includes helpful errors)
Serial.begin(115200);
mp3.enableDebugging();
// Plays the first track stored on the microSD Card (Track Formats .mp3/.wav | Frequencies 8-48 kHz)
// MicroSD Card folder and file structure, example folder name 01 and file name 001xxx.mp3:
// 01/001xxx.mp3 01/002xxx.mp3 01/003xxx.mp3 02/004xxx.mp3
mp3.playTrack(1);
}
void loop() {
// put your main code here, to run repeatedly:
}
Afficher le code brut
Comment fonctionne le code
Décomposons le fonctionnement du code.
Inclure la bibliothèque YX5300_ESP32
Tout d’abord, vous devez inclure la bibliothèque YX5300_ESP32.h créée par bluejunimo qui rendra très simple l’interface avec le module lecteur MP3.
#include
Initialiser le YX5300
Définissez les broches YX5300 RX et TX et créez un objet pour le module appelé mp3.
#define RX 16
#define TX 17
YX5300_ESP32 mp3;
installation()
Dans le setup(), commencez par initialiser le module avec un canal série spécifique.
mp3 = YX5300_ESP32(Serial2, RX, TX);
Lecture recommandée : Communication UART ESP32 (série) : définir les broches, les interfaces, envoyer et recevoir des données (Arduino IDE).
Activez la communication série et le débogage MP3, afin que vous puissiez voir les commandes série hexadécimales envoyées à l’appareil. Une fois le débogage activé, vous verrez également des erreurs utiles.
Serial.begin(115200);
mp3.enableDebugging();
Vous pouvez lire rapidement la première piste stockée sur la carte microSD à l’aide de la commande suivante :
mp3.playTrack(1);
Démonstration
Téléchargez le code précédent sur votre carte ESP32. Il lira la première piste stockée sur la carte microSD. Votre moniteur série devrait imprimer un message similaire :

Si le casque ou le haut-parleur est branché sur la prise casque, vous devriez entendre la première piste stockée sur votre carte microSD. Si vous rencontrez des problèmes, suivez la section de dépannage suivante.

Dépannage du module de lecteur MP3 YX5300/YX6300
Si vous avez téléchargé le code précédent, mais que vous n’entendez aucun son avec le module de lecteur MP3 YX5300/YX6300, il peut s’agir de l’un des problèmes suivants.
- Erreur de câblage : dans tous les projets utilisant des commandes série, vous devez connecter les broches TX-RX et RX-TX. Cependant, si le code ne fonctionne pas correctement (pas d’envoi/réception de commandes série), vous devrez peut-être échanger le câblage et connecter RX-RX et TX-TX. L’un de nos lecteurs MP3 série était livré avec les mauvaises étiquettes sur le module, et la seule façon dont il fonctionnait était de le connecter avec TX-TX et RX-RX ;
- Pas assez de puissance : selon les spécifications du produit dans le manuel, le VCC fonctionne avec des tensions comprises entre 3,2 V et 5,2 V. Selon nos tests, il fonctionne de manière plus fiable lorsqu’il est connecté à 5 V (VIN) ;
- Problème de carte MicroSD : votre microSD doit être égale ou inférieure à 32 Go et formatée en FAT16/FAT32. Les formats de piste doivent être dans des fichiers .mp3/.wav avec des fréquences de 8 à 48 kHz ;
- Mauvaise structure de dossiers/noms de fichiers : la structure des dossiers et des fichiers de votre carte microSD est incorrecte, exemple de dossiers et de noms de fichiers : 01/001xxx.mp3 01/002xxx.mp3 01/003xxx.mp3 02/004xxx.mp3 ;
- Problème d’écouteurs/haut-parleurs : nous vous recommandons de tester vos écouteurs/haut-parleurs sur un autre appareil pour vous assurer qu’ils fonctionnent.
Lecteur MP3 YX5300 / YX6300 avec boutons de commande et bouton de volume
À titre d’exemple de projet, nous allons vous montrer comment créer un lecteur MP3 avec des boutons de commande et un bouton de volume. Après avoir préparé l’IDE Arduino avec la bibliothèque installée et la carte microSD insérée dans le module YX5300 avec les dossiers et fichiers corrects décrits précédemment, vous pouvez continuer à suivre ce guide.
Pièces requises
Vous pouvez utiliser les liens précédents ou vous rendre directement sur MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

Diagramme schématique
Le câblage du lecteur MP3 à l’ESP32 est assez simple, car il ne nécessite que deux broches série : RX et TX.
| YX5300/YX6300 | ESP32 |
| Émission | GPIO 16 (UART 2 RX) |
| RX | GPIO 17 (UART 2 TX) |
| VCC | NIV (5V) |
| GND | GND |
Selon les spécifications du produit dans le manuel, le VCC fonctionne avec des tensions comprises entre 3,2 V et 5,2 V. Selon nos tests, il fonctionne de manière plus fiable lorsqu’il est connecté à 5 V (VIN).
| Potentiomètre/boutons poussoirs | ESP32 |
| Potentiomètre | GPIO4 |
| Bouton-poussoir Lecture/Pause | GPIO5 |
| Bouton-poussoir de la piste précédente | GPIO18 |
| Bouton-poussoir Piste suivante | GPIO19 |
Câblez tous les composants à votre ESP32 en utilisant les tableaux précédents ou en suivant le schéma ci-dessous.

Code du lecteur MP3
Téléchargez le code suivant pour transformer votre ESP32 en un lecteur audio MP3.
/*********
Rui Santos & Sara Santos - Raspberryme.com
Complete project details at https://Raspberryme.com/esp32-yx5300-yx6300-mp3-player-arduino/
*********/
#include
// Connect to YX5300 Serial pins (RX and TX)
#define RX 16
#define TX 17
// Global variables for the pushbuttons
const uint8_t pinBtnPlay = 5;
const uint8_t pinBtnPrev = 18;
const uint8_t pinBtnNext = 19;
// Bool variable to track if the audio is playing or paused
volatile bool isPlaying = true;
// Variables for debouncing the pushbuttons
const unsigned long DEBOUNCE_DELAY = 500; // in milliseconds
volatile unsigned long lastPressTime = 0;
// Analog input pin the potentiometer is attached to
const uint8_t potVolume = 4;
// Auxiliary volume variables
#define MIN_VOLUME 0
#define MAX_VOLUME 30
int current_volume = 0;
// mp3 object
YX5300_ESP32 mp3;
// Play/Pause Button Interrupt Service Routine (ISR)
void ARDUINO_ISR_ATTR buttonPlay() {
unsigned long now = millis();
if (now - lastPressTime > DEBOUNCE_DELAY) {
if(isPlaying) {
mp3.pause();
isPlaying = false;
}
else {
mp3.resume();
isPlaying = true;
}
}
lastPressTime = now;
}
// Previous Track Button Interrupt Service Routine (ISR)
void ARDUINO_ISR_ATTR buttonPrev() {
unsigned long now = millis();
if (now - lastPressTime > DEBOUNCE_DELAY) {
mp3.prev();
isPlaying = true;
}
lastPressTime = now;
}
// Next Track Button Interrupt Service Routine (ISR)
void ARDUINO_ISR_ATTR buttonNext() {
unsigned long now = millis();
if (now - lastPressTime > DEBOUNCE_DELAY) {
mp3.next();
isPlaying = true;
}
lastPressTime = now;
}
void setup() {
// Init pushbuttons with internal pullup resistor
pinMode(pinBtnPlay, INPUT_PULLUP);
pinMode(pinBtnPrev, INPUT_PULLUP);
pinMode(pinBtnNext, INPUT_PULLUP);
// Set interrupts ISR functions
attachInterrupt(pinBtnPlay, buttonPlay, HIGH);
attachInterrupt(pinBtnPrev, buttonPrev, HIGH);
attachInterrupt(pinBtnNext, buttonNext, HIGH);
// Initialize connection with the YX5300/YX6300 module
mp3 = YX5300_ESP32(Serial2, RX, TX);
// Shows the hex commands being sent to the mp3 device (includes helpful errors)
Serial.begin(115200);
mp3.enableDebugging();
// Plays the first track stored on the SD Card (Track Formats .mp3/.wav | Frequencies 8-48 kHz)
// SD Card folder and file structure, example folder name 01 and file name 001xxx.mp3:
// 01/001xxx.mp3 01/002xxx.mp3 01/003xxx.mp3 02/004xxx.mp3
mp3.playTrack(1);
}
void loop() {
// Read the potentiometer's value
int raw_value = analogRead(potVolume);
// Map the value to the min/max of the mp3 device's volume values
int new_volume = map(raw_value, 0, 4095, MIN_VOLUME, MAX_VOLUME);
// Change the volume if the pot position has changed
if(new_volume != current_volume) {
// Update the mp3 device's volume
mp3.setVolume(new_volume);
// Update the current volume with the new volume
current_volume = new_volume;
}
}
Afficher le code brut
Comment fonctionne le code
Jetons un coup d’œil au fonctionnement du code afin que vous puissiez comprendre comment utiliser les commandes série du YX5300, les interruptions pour déclencher les commandes des boutons et le potentiomètre pour régler le volume.
Inclure la bibliothèque YX5300_ESP32
Tout d’abord, vous devez inclure la bibliothèque YX5300_ESP32.h créée par bluejunimo qui rendra très simple l’interface avec le module lecteur MP3.
#include
Initialiser le YX5300
Définissez les broches YX5300 RX et TX et créez un objet pour le module appelé mp3.
#define RX 16
#define TX 17
YX5300_ESP32 mp3;
Variables
Créez des variables globales pour les boutons-poussoirs GPIO et le potentiomètre.
const uint8_t pinBtnPlay = 5;
const uint8_t pinBtnPrev = 18;
const uint8_t pinBtnNext = 19;
const uint8_t potVolume = 4;
Définissez une variable booléenne pour suivre si l’audio est en lecture ou en pause.
volatile bool isPlaying = true;
Ces deux variables suivantes sont utilisées pour antirebondir les boutons-poussoirs.
const unsigned long DEBOUNCE_DELAY = 500; // in milliseconds
volatile unsigned long lastPressTime = 0;
Enfin, vous avez besoin de ces variables pour vérifier le volume min/max et stocker le volume actuel en fonction de la position du potentiomètre.
#define MIN_VOLUME 0
#define MAX_VOLUME 30
int current_volume = 0;
installation()
Dans setup(), initialisez les boutons-poussoirs comme entrées et définissez-les comme interruptions pour détecter les changements dans leurs états.
pinMode(pinBtnPlay, INPUT_PULLUP);
pinMode(pinBtnPrev, INPUT_PULLUP);
pinMode(pinBtnNext, INPUT_PULLUP);
attachInterrupt(pinBtnPlay, buttonPlay, HIGH);
attachInterrupt(pinBtnPrev, buttonPrev, HIGH);
attachInterrupt(pinBtnNext, buttonNext, HIGH);
En savoir plus sur les interruptions ESP32 : Interruptions ESP32 GPIO avec l’IDE Arduino.
Ensuite, initialisez le module avec un canal série spécifique.
mp3 = YX5300_ESP32(Serial2, RX, TX);
Activez la communication série et le débogage MP3, afin que vous puissiez voir les commandes série hexadécimales envoyées à l’appareil. Une fois le débogage activé, vous verrez également des erreurs utiles.
Serial.begin(115200);
mp3.enableDebugging();
Vous pouvez lire rapidement la première piste stockée sur la carte microSD à l’aide de la commande suivante :
mp3.playTrack(1);
Interruptions de bouton
Créez 3 fonctions d’interruption qui sont instantanément appelées lorsque les boutons-poussoirs lecture/pause, piste précédente et piste suivante sont enfoncés.
void ARDUINO_ISR_ATTR buttonPlay() {
unsigned long now = millis();
if (now - lastPressTime > DEBOUNCE_DELAY) {
if(isPlaying) {
mp3.pause();
isPlaying = false;
}
else {
mp3.resume();
isPlaying = true;
}
}
lastPressTime = now;
}
En fonction du bouton-poussoir enfoncé, une fonction spécifique sera exécutée. Voici les 4 principales méthodes qui contrôlent le lecteur MP3, et leurs noms sont assez explicites :
mp3.resume();
mp3.pause();
mp3.prev();
mp3.next();
boucle()
Dans la boucle(), vous lisez constamment le volume actuel du potentiomètre.
int raw_value = analogRead(potVolume);
Ensuite, si le volume a changé (augmenté ou diminué), vous réglez le volume.
int new_volume = map(raw_value, 0, 4095, MIN_VOLUME, MAX_VOLUME);
if(new_volume != current_volume) {
mp3.setVolume(new_volume);
current_volume = new_volume;
}
Démonstration du lecteur MP3
Téléchargez le code précédent sur votre carte ESP32 avec tous les composants câblés. Il lira le premier morceau stocké sur la carte microSD (vous pouvez cliquer ici pour télécharger un dossier .zip contenant les fichiers musicaux libres de droits utilisés pour ce projet).
Sur votre moniteur série Arduino IDE, vous devriez voir des messages similaires lorsque vous appuyez sur les boutons-poussoirs.

Vérifiez si tout fonctionne :
- Le premier bouton-poussoir lit la piste ou met la piste en pause ;
- Le deuxième bouton-poussoir revient à la piste précédente ;
- Le troisième pushubtton passe à la piste suivante ;
- Enfin, vous pouvez déplacer le bouton du potentiomètre pour régler le volume.

Regardez la prochaine vidéo pour une démonstration en direct du projet.
Conclusion
Il s’agissait d’un guide complet sur la façon d’interfacer le lecteur MP3 YX5300/YX6300 avec l’ESP32. Cela peut être très utile pour jouer des sons ou de la musique avec votre carte ESP32. De plus, vous pouvez ajouter n’importe quel capteur à votre projet afin que l’ESP32 commence à lire l’audio lorsqu’une certaine condition est remplie.
Nous espérons que vous avez trouvé ce guide utile. Nous avons d’autres guides qui pourraient être utiles :
Pour en savoir plus sur l’ESP32, assurez-vous de consulter nos ressources :
Cette vidéo vous emmène dans l’histoire de Raspberry Pi :

-
YX5300 UART TTL Lecteur de Musique MP3 Contrôle Série Module Support MP3/WAV Micro SD/SDHC Carte pour Arduino/AVR/ARM/PIC 3.2-5.2V DC
-
Lot de 4 ESP-WROOM-32 ESP32 ESP-32S NodeMCU WiFi CP2102 ESP32-WROOM-32 IoT 2 en 1 2,4 GHz Dual Mode WiFi + Bluetooth Dual Core Microcontrôleur Compatible avec Arduino IDE
