Lecteur MP3 sur base d'Arduino Uno et DFplayer mini

📄 Description
Création d'un baladeur MP3 à partir d'un Arduino Uno et un DFplayer mini. Le but est de créer un objet de démonstration, donc entièrement démontable et modifiable.
| 💰 Coût estimation |
📊 Difficulté | ⚖️ Licence | ⏱️ Durée |
|---|---|---|---|
| 30,00 € | 🟠🟠🟠⚪⚪ Moyen | CC-BY | 2 heures |
Outils & Matériaux
| Matériaux | Outils |
|---|---|
| - Planche de contreplaqué 4mm peuplier | - inkscape |
| - Gravograph Lasercut LS900XP | |
| - Arduino IDE |
| Qte | Titre | Description |
|---|---|---|
| 1 | Arduino Uno (Rev3) - ICSP | type Arduino UNO (Rev3) - ICSP |
| 1 | DFRobot DFPlayer Mini | variante variant 1; numéro du composant DFR0299 |
| 3 | Square Pushbutton | switching circuit SPST; default state Normally Open |
| 1 | 1kΩ Resistor | tolérance ±5%; résistance 1kΩ; boîtier 0603 [SMD] |
| 1 | Toggle Switch | switching circuit SPDT; boîtier THT |
| 1 | SPEAKER | boîtier pcb_mount_speaker |
| 1 | Battery block 9V | tension 9V |
| 1 | Carte mini sd max 32Gb |
Fichiers
Lecteur_MP3_sur_base_d_Arduino_Uno_et_DFplayer_mini_codemp3.ino
Étape 1 - Choix des composants

Le DFplayer mini est un module mp3 qui peut être connecté directement à un haut parleur ou à un écouteur. Il peut être utilisé comme un module autonome avec batterie, haut parleur et bouton poussoir. Il peut être, également, utilisé en combinaison avec un microcontrôleur tel qu'un Arduino (On pourra utiliser des commandes série pour lancer une musique, aller à la suivante ou la précédente, augmenter le volume, le diminuer, etc...).
Le module est prévu pour lire des cartes micro SD de 32Gb maximum formatées en FAT16 ou FAT32.
Quelques caractérisques du DFplayer mini
- Taux d'échantillonnage : 8KHz, 11.025KHz, 12KHz, 16KHz, 22.05KHz jusque 48KHz
- Prend en charge FAT16, FAT32, supporte maximum 32 go syr carte mini-sd
- Amplificateur intégré 3W
- Supporte jusque 100 dossiers de musique comportant chacun 1000 fichiers
- 30 niveaux de volume, 10 niveaux d'équaliseurs ajustables
Étape 2 - Schéma originel

Je suis parti de ce premier schéma existant
Vous pouvez le retrouver sur : https://www.electronics-lab.com/project/mp3-player-using-arduino-dfplayer-mini/
Étape 3 - Schéma modifié

Voici le schéma légèrement modifié qui me permet d'ajouter l'option volume et un bouton départ et arrêt
Étape 4 - Ajout du code
Vous pouvez ajouter le code via l'interface IDE de votre Arduino
/// MP3 PLAYER PROJECT
/// http://educ8s.tv/arduino-mp3-player/
//////////////////////////////////////////
#include "SoftwareSerial.h"
SoftwareSerial mySerial(10, 11);
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00 //Returns info with command 0x41 [0x01: info, 0x00: no info]
# define ACTIVATED LOW
int buttonNext = 2;
int buttonPause = 3;
int buttonPrevious = 4;
boolean isPlaying = false;
void setup () {
pinMode(buttonPause, INPUT);
digitalWrite(buttonPause,HIGH);
pinMode(buttonNext, INPUT);
digitalWrite(buttonNext,HIGH);
pinMode(buttonPrevious, INPUT);
digitalWrite(buttonPrevious,HIGH);
mySerial.begin (9600);
delay(1000);
playFirst();
isPlaying = true;
}
void loop () {
if (digitalRead(buttonPause) == ACTIVATED)
{
if(isPlaying)
{
pause();
isPlaying = false;
}else
{
isPlaying = true;
play();
}
}
if (digitalRead(buttonNext) == ACTIVATED)
{
if(isPlaying)
{
playNext();
}
}
if (digitalRead(buttonPrevious) == ACTIVATED)
{
if(isPlaying)
{
playPrevious();
}
}
}
void playFirst()
{
execute_CMD(0x3F, 0, 0);
delay(500);
setVolume(20);
delay(500);
execute_CMD(0x11,0,1);
delay(500);
}
void pause()
{
execute_CMD(0x0E,0,0);
delay(500);
}
void play()
{
execute_CMD(0x0D,0,1);
delay(500);
}
void playNext()
{
execute_CMD(0x01,0,1);
delay(500);
}
void playPrevious()
{
execute_CMD(0x02,0,1);
delay(500);
}
void setVolume(int volume)
{
execute_CMD(0x06, 0, volume); // Set the volume (0x00~0x30)
delay(2000);
}
void execute_CMD(byte CMD, byte Par1, byte Par2)
// Excecute the command and parameters
{
// Calculate the checksum (2 bytes)
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
// Build the command line
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge,
Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte};
//Send the command line to the module
for (byte k=0; k<10; k++)
{
mySerial.write( Command_line[k]);
}
}
Étape 5 - Test du code
Insérer une carte mini sd avec quelques musiques et réaliser des tests en appuyant sur les différentes commandes
Étape 6 - Emballage

Une fois que tout est ok, nous passons à l'emballage.
Vous trouverez un exemple de fichier pour le boitier dans "fichiers".