ESP32 - Lecteur MP3

Dans ce guide, nous découvrirons comment créer un lecteur MP3 en utilisant un ESP32, un module de lecteur MP3, une carte Micro SD et un haut-parleur. Les fichiers MP3, pouvant être de la musique ou de l'audio enregistré, sont conservés sur la carte micro SD. L'ESP32 sera programmé pour envoyer des commandes afin de contrôler le module lecteur MP3 sur le choix des chansons à partir de la carte SD, les convertir en son, puis envoyer ce son vers le haut-parleur. Nous aborderons les aspects suivants:

Ensuite, vous pouvez aller plus loin avec le code en intégrant un potentiomètre ou un encodeur rotatif pour ajuster le volume.

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×Serial MP3 Player Module
1×Micro SD Card
1×3.5mm Aux Speaker
1×Breadboard
1×Jumper Wires
1×(Recommended) ESP32 Screw Terminal Adapter

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

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

Brochage du module lecteur MP3 série

Un module de lecteur MP3 série possède trois interfaces :

  • L'interface avec l'ESP32 comprend 4 broches :
    • Broche RX : broche de données, doit être connectée à une broche TX de l'ESP32
    • Broche TX : broche de données, doit être connectée à une broche RX de l'ESP32
    • Broche VCC : broche d'alimentation, doit être connectée à VCC (5V)
    • Broche GND : broche d'alimentation, doit être connectée à GND (0V)
  • L'interface avec le haut-parleur est une prise jack femelle Aux de 3,5 mm.
  • L'interface avec la carte Micro SD est un socle de carte Micro SD à l'arrière du module.
Module lecteur MP3 série Pinout

Brochage de haut-parleur

Un haut-parleur dispose généralement de deux interfaces :

  • Interface de signal audio : il s'agit d'un connecteur mâle Aux de 3,5 mm qui se connecte au module de lecteur MP3
  • Interface de puissance : elle peut être USB, adaptateur d'alimentation 5V ou toute autre interface de puissance

Comment ça marche

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

  • Rassemblez une collection de chansons ou d'audios enregistrés que vous souhaitez 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 et connectez le haut-parleur au module lecteur MP3. Assurez-vous également que le haut-parleur est connecté à une source d'alimentation.

Chaque fichier MP3 sur la carte micro SD reçoit un identifiant, à partir de 0. Ensuite, vous pouvez demander à l’ESP32 de faire différentes choses avec le module lecteur MP3, telles que :

  • Lire : Commencez à jouer la chanson sélectionnée.
  • Pause : Mettez la chanson en pause.
  • Lire suivant : Passez à la chanson suivante.
  • Lire précédent : Revenez à la chanson précédente.
  • Changer le volume : Réglez le volume de la musique.

Lorsque le module du lecteur MP3 reçoit une commande, il lit le fichier MP3 à partir de la carte micro SD, le convertit en signal audio et envoie ce signal au haut-parleur via une connexion Aux de 3,5 mm.

Diagramme de câblage

Schéma de câblage du module lecteur MP3 ESP32

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

Code ESP32 - Jouer de la musique

Le code ci-dessous joue la première chanson enregistrée sur la carte Micro SD.

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32-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); 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

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

Le code ci-dessous est une amélioration du code précédent. Il ajoute quatre boutons pour vous permettre d'interagir avec le lecteur MP3.

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32-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(32); // create ezButton object that attach to ESP32's pin GPIO32 ezButton button_pause(33); // create ezButton object that attach to ESP32's pin GPIO33 ezButton button_next(25); // create ezButton object that attach to ESP32's pin GPIO25 ezButton button_prev(26); // create ezButton object that attach to ESP32's pin GPIO26 void setup() { Serial.begin(9600); Serial2.begin(9600); 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 :

Schéma de câblage du haut-parleur lecteur MP3 ESP32

This image is created using Fritzing. Click to enlarge image

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

  • Ajoutez un potentiomètre pour contrôler le volume, consultez le tutoriel Potentiomètre ESP32
  • Ajoutez une télécommande IR, consultez le tutoriel Télécommande IR ESP32
  • Ajoutez un lecteur de RFID et une carte pour créer un lecteur MP3 RFID, consultez le tutoriel RFID ESP32

Vidéo

Références de fonction

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!