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×Micro USB Cable
1×Serial MP3 Player Module
1×Micro SD Card
1×3.5mm Aux Speaker
1×Jumper Wires
1×(Optional) ESP8266 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'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

This image is created using Fritzing. Click to enlarge image

Voir plus dans l'agencement des broches de l'ESP8266 et comment alimenter l'ESP8266 et d'autres composants.

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 comment configurer l'environnement pour ESP8266 sur Arduino IDE 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

This image is created using Fritzing. Click to enlarge image

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

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!