Arduino - Lecteur MP3

Dans ce tutoriel, nous apprendrons à fabriquer un lecteur MP3 en utilisant un Arduino, un module de lecteur MP3, une carte Micro SD et un haut-parleur. Les fichiers MP3 (musique ou audio enregistré) sont stockés dans la carte micro SD. Ensuite, l'Arduino peut contrôler le module de lecteur MP3 pour lire une chanson sélectionnée à partir de la carte SD, la convertir en signal audio et envoyer le 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 afin de changer le volume.

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×Serial MP3 Player Module
1×Micro SD Card
1×3.5mm Aux Speaker
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

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 de lecteur MP3 série et du haut-parleur

Brochage du module lecteur MP3 série

Un module de lecteur MP3 série dispose de trois interfaces :

  • L'interface avec Arduino comprend 4 broches :
    • Broche RX : broche de données, doit être connectée à une broche TX d'Arduino (Série matérielle ou logicielle)
    • Broche TX : broche de données, doit être connectée à une broche RX d'Arduino (Série matérielle ou logicielle)
    • Broche VCC : broche d'alimentation, doit être connectée au 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 de carte Micro SD à l'arrière du module.
Module de lecture MP3 en série - Brochage
image source: diyables.io

Brochage 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 de lecteur MP3
  • Interface d'alimentation : elle peut être USB, adaptateur d'alimentation 5V ou toute autre interface d'alimentation

Comment ça fonctionne

Ce dont nous avons besoin pour préparer :

  • Pré-enregistrer une liste de chansons ou d'audios enregistrés que nous souhaitons jouer sur une carte micro SD.
  • Insérer la carte micro SD dans le module lecteur MP3.
  • Connecter le module lecteur MP3 à l'Arduino.
  • Connecter le haut-parleur au module lecteur MP3.
  • Connecter le haut-parleur à une source d'alimentation.

Chaque fichier MP3 stocké sur la carte Micro SD aura un index. L'index représente l'ordre des chansons stockées, à partir de 0.

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

  • Jouer
  • Pause
  • Lire le suivant
  • Lire le précédent
  • Changer le volume

Lorsque le module du lecteur MP3 est utilisé, 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 3,5 mm.

Diagramme de câblage

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

This image is created using Fritzing. Click to enlarge image

Code Arduino - Jouer de la musique

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

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino/arduino-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 ARDUINO_RX 7 // Arduino Pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 6 // Arduino Pin connected to the RX of the Serial MP3 Player module SoftwareSerial mp3(ARDUINO_RX, ARDUINO_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

  • Suivez les instructions dans la section Comment ça marche
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour charger le code sur Arduino
  • Profitez de la musique

Code Arduino - 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 Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino/arduino-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 ARDUINO_RX 7 // Arduino Pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 6 // Arduino Pin connected to the RX of the Serial MP3 Player module SoftwareSerial mp3(ARDUINO_RX, ARDUINO_TX); ezButton button_play(2); // create ezButton object that attach to pin 2 ezButton button_pause(3); // create ezButton object that attach to pin 3 ezButton button_next(4); // create ezButton object that attach to pin 4 ezButton button_prev(5); // create ezButton object that attach to pin 5 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 du lecteur MP3 Arduino

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!