Lecteur audio:

Principe du Projet:

         

             On insert une  carte micro SD dans le lecteur. On branche un casque d’un côté, une carte Arduino de l’autre. Et voilà, on obtient un lecteur de fichiers MP3 contrôlable via un simple port série

 

 

Matériel :

Lecteur Série MP3:

Lecteur Série MP3

C’est des cartes assez simplistes avec un unique circuit intégré, un connecteur pour carte SD, Il peut prendre en charge les formats de fichiers MP3 . 

Le MCU peut contrôler l’état de lecture MP3 en envoyant des commandes au module via le port UART, telles que changer de chanson, changer le volume et le mode de lecture… etc


Mode de branchement avec l’Arduino :


La broche GND de la carte Arduino va sur la broche GND du module MP3.

La broche 5V de la carte Arduino va sur la broche VCC du module MP3.

La broche D1 de la carte Arduino va sur la broche RX du module MP3.

Haut parleur :

Ecran LCD :

Carte Arduino UNO :

Un Arduino (Uno) est une petite carte avec une électronique programmable. Avec un Arduino, vous pouvez contrôler divers composants électriques

Bouton poussoir :

 

Ci-dessous le Programme, j’ai rajouté un écran LCD (pour la branchement d’un écran LCD avec l’arduino ,vous pouvez regarder le tuto précédent )

 

 

#include <LiquidCrystal.h>
const byte COMMAND_BYTE_START = 0x7E;
const byte COMMAND_BYTE_VERSION = 0xFF;
const byte COMMAND_BYTE_STOP = 0xEF;
const byte DEVICE_SDCARD = 0x02;

int rs =8;
int en =9;
int db4 =10;
int db5 =11;
int db6 =12;
int db7 =13;

int buttonLecturePin=4;
int buttonStopPin=6;
int buttonNextPin=7;
int buttonPreviousPin=5;


//btn1 lecture
bool oldState=false;
bool newState=false;
bool State=LOW;

//btn2 Stop
bool oldState1=false;
bool newState1=false;
bool State1=LOW;

//btn3 previous
bool oldState2=false;
bool newState2=false;
bool State2=LOW;

//btn4 next
bool oldState3=false;
bool newState3=false;
bool State3=LOW;

LiquidCrystal lcd(rs, en, db4, db5, db6, db7);

void playTrack(uint16_t track_number)
{
send_kt_command(0x03, highByte(track_number), lowByte(track_number), 10);
}

void selectSourceDevice(byte device)
{
send_kt_command(0x09, 0, device, 200);
}

void pauseMusic()
{
send_kt_command(0x0E, 0, 0, 20);
}

void loopAllMusic(byte enabled)
{
send_kt_command(0x11, 0, !!enabled, 10);
}


void playNextSong()
{
send_kt_command(0x03, 0, 0, 10);
}


void playPreviousSong()
{
send_kt_command(0x01, 0, 0, 10);
}
void playResumeMusic()
{
send_kt_command(0x0D, 0, 0, 20);
}


void send_kt_command(byte command, byte data_h, byte data_l, unsigned long cmd_delay)
{
Serial.write(COMMAND_BYTE_START);
Serial.write(COMMAND_BYTE_VERSION);
Serial.write((byte) 0x06);
Serial.write(command);
Serial.write((byte) 0x00);
Serial.write(data_h);
Serial.write(data_l);
Serial.write(COMMAND_BYTE_STOP);}
byte btn_play[8] = {
B10000,
B11000,
B11100,
B11110,
B11100,
B11000,
B10000,
};


void setup()
{

lcd.begin(16, 2);
lcd.createChar(0, btn_play);
Serial.begin(9600);
pinMode(buttonLecturePin, INPUT);
pinMode(buttonStopPin,INPUT);
pinMode(buttonNextPin, INPUT);
pinMode(buttonPreviousPin,INPUT);
selectSourceDevice(DEVICE_SDCARD);
}

void loop ()
{
lcd.setCursor(0,0);
lcd.print(« < « );
lcd.setCursor(5,0);
lcd.write(byte(0));
lcd.setCursor(8,0);
lcd.print( » || > »);

lcd.setCursor(0,1);

//btn 1 lecture _écriture sur LCD
if (digitalRead(buttonLecturePin) == HIGH)
{
newState= true;
if (newState!= oldState)
{
lcd.print(« Music is playing « );
}
}

else
{
newState=false;
}

State=State;

//btn 2 Stop _ écriture sur LCD
if (digitalRead(buttonStopPin) == HIGH)
{
newState1= true;
if (newState1!= oldState1)
{
State1=!State1;
lcd.print(« Music is stopped »);
}
}

else
{
newState1=false;
}

State1=newState1;

//btn 3 Previous _ecriture sur LCD
if (digitalRead(buttonPreviousPin) == HIGH)
{
newState2= true;
if (newState2!= oldState2)
{
State2=!State2;
lcd.print(« *Previous song* « );
}
}

else
{
newState2=false;
}

State2=newState2;

//btn 4 Next _Ecriture sur LCD
if (digitalRead(buttonNextPin) == HIGH)
{
newState3= true;
if (newState3!= oldState3)
{
State3=!State2;
lcd.print(« ***Next Song**** »);
}
}

else
{
newState3=false;
}

State3=newState3;


//Play music pour chaque boutons


if (digitalRead(buttonLecturePin) == HIGH)
{
playResumeMusic();
delay(200);

}

if (digitalRead(buttonStopPin) == HIGH)
{
pauseMusic();
delay(200);
}

if (digitalRead(buttonPreviousPin) == HIGH)
{
playPreviousSong() ;
delay(200);

}

if (digitalRead(buttonNextPin) == HIGH)
{
playNextSong();
delay(200);
}
}

La fonction send_kt_command() :

permet d’envoyer une commande au module MP3. Cette fonction prend en argument la commande à transmettre (un octet)

 

La fonction playTrack() (0x03) :

permet de lire un fichier audio en fonction de son index.

 

 

Les fonctions playNextSong() (0x01) et playPreviousSong() (0x02) :

permettent respectivement de passer au fichier suivant et au fichier précédent (toujours en fonction de l’index du fichier).

 

 Les commandes playNextSong() et playPreviousSong() :

fonctionnement qu’importe le fichier lu (par index ou par nom de fichier). Par contre, le fichier suivant / précédent est toujours déterminé par l’index du fichier en cours de lecture.

 

Avec la fonction loopAllMusic():

 il est possible d’entrer ou de sortir du mode de lecture en boucle en passant respectivement true ou false en paramètre de la fonction.

 

La fonction selectSourceDevice() (0x09) :

permet de choisir le périphérique source pour la lecture des fichiers MP3

 

 La fonction playResumeMusic() :

lit le fichier suivant (par index de fichier) si aucun fichier n’est en cours de lecture.

 

 La fonction stopMusic() :

permet aussi d’arrêter une lecture en boucle d’un fichier ou d’un dossier:

 

Ci-dessous les résultat: