ESP8266 - Lecteur MP3

Ce tutoriel vous explique comment fabriquer un lecteur MP3 en utilisant un ESP8266, un module lecteur MP3, une carte Micro SD et un haut-parleur. Les fichiers MP3 (musique ou audio enregistré) sont stockés sur la carte micro SD. Ensuite, l'ESP8266 peut contrôler le module lecteur MP3 pour lire une chanson sélectionnée depuis la carte SD, la convertir en signal audio et envoyer ce signal au haut-parleur. En détail, nous allons apprendre :

Ensuite, vous pouvez modifier le code pour ajouter un potentiomètre ou un encodeur rotatif pour changer le volume.

Préparation du matériel

1×ESP8266 NodeMCU
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×Module lecteur MP3 série
1×Carte Micro SD
1×Haut-parleur Aux 3.5mm
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour ESP8266
1×Recommandé: Répartiteur d'alimentation pour ESP8266 Type-C

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
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'ESP8266 comprend 4 broches :
    • Broche RX : broche de données, doit être connectée à une broche TX de l'ESP8266 (série matérielle ou logicielle)
    • Broche TX : broche de données, doit être connectée à une broche RX de l'ESP8266 (série matérielle ou logicielle)
    • 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 socket pour carte Micro SD situé à l'arrière du module.
Module lecteur MP3 série Brochage
image source: diyables.io

Schéma des broches du haut-parleur

Un haut-parleur a généralement deux interfaces :

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

Comment ça fonctionne

Ce dont nous avons besoin pour nous préparer :

  • Pré-enregistrez une liste de chansons ou des audios enregistrés que nous voulons jouer sur une carte micro SD.
  • Insérez la carte micro SD dans le module lecteur MP3.
  • Connectez le module lecteur MP3 à l'ESP8266.
  • Connectez le haut-parleur au module lecteur MP3.
  • Connectez le haut-parleur à une source d'alimentation.

Chaque fichier MP3 stocké sur la carte Micro SD aura un index. L'index correspond à l'ordre de la chanson stockée, à partir de 0.

Ensuite, nous pouvons programmer l'ESP8266 pour envoyer des commandes au module lecteur MP3. Il prend en charge les commandes suivantes :

  • Jouer
  • Pause
  • Lire la suivante
  • Lire la précédente
  • Changer le volume

Lorsque le module lecteur MP3 est en fonction, il lit le fichier MP3 depuis la carte micro SD, convertit les fichiers MP3 en signal audio et transmet ce signal audio au haut-parleur via l'interface Aux de 3,5 mm.

Diagramme de câblage

Schéma de câblage du module lecteur MP3 ESP8266 NodeMCU

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

Pour plus d'informations, consultez Brochage ESP8266. et Comment alimenter l'ESP8266..

Code ESP8266 - Jouer de la musique

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

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-mp3-player */ #include <SoftwareSerial.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 #define ESP8266_RX D5 // The ESP8266 pin connected to the TX of the Serial MP3 Player module #define ESP8266_TX D6 // The ESP8266 pin connected to the RX of the Serial MP3 Player module SoftwareSerial mp3(ESP8266_RX, ESP8266_TX); void setup() { Serial.begin(9600); mp3.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++) { mp3.write(frame[i]); } }

Étapes rapides

Pour commencer avec ESP8266 sur Arduino IDE, suivez ces étapes :

  • Consultez le tutoriel Installation du logiciel ESP8266. si c'est votre première utilisation de l'ESP8266.
  • Câblez les composants comme indiqué dans le schéma.
  • Connectez la carte ESP8266 à votre ordinateur via un câble USB.
  • Ouvrez l'Arduino IDE sur votre ordinateur.
  • Choisissez la bonne carte ESP8266, comme (par exemple NodeMCU 1.0 (Module ESP-12E)), et son port COM respectif.
  • Suivez les instructions dans Comment ça marche
  • Copiez le code ci-dessus et ouvrez-le avec Arduino IDE.
  • Cliquez sur le bouton Upload de l'Arduino IDE pour téléverser le code sur l'ESP8266.
  • Profitez de la musique.

Code ESP8266 - 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 ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-mp3-player */ #include <SoftwareSerial.h> #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 #define ESP8266_RX D5 // The ESP8266 pin connected to the TX of the Serial MP3 Player module #define ESP8266_TX D6 // The ESP8266 pin connected to the RX of the Serial MP3 Player module SoftwareSerial mp3(ESP8266_RX, ESP8266_TX); ezButton button_play(D1); // create ezButton object for pin D1 ezButton button_pause(D2); // create ezButton object for pin D2 ezButton button_next(D3); // create ezButton object for pin D3 ezButton button_prev(D4); // create ezButton object for pin D4 void setup() { Serial.begin(9600); mp3.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++) { mp3.write(frame[i]); } }

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

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

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 :

Vidéo

Références de fonction

※ 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 !