Mp3-spelare med DF-spelare - Fullständig designinformation

Prova Vårt Instrument För Att Eliminera Problem





I det här inlägget ska vi konstruera en Mp3-spelare med arduino och DFPlayer. Den föreslagna artikeln har två Mp3-spelare-design, en med tryckknappskontroll och en annan med IR-fjärrkontroll. Vi tar också en titt på DFPlayer (Mp3-spelarmodul) och dess specifikationer.

Vi älskar alla musik, vi skulle vilja höra det medan vi på gymmet, läser, stunder innan vi sover eller medan vi lugnar oss själv efter ett hårt dagligt arbete.



Att bygga en musikspelare hemma för några decennier tillbaka var nästan omöjligt för en elektronikentusiast på grund av konstruktionskomplexitet på grund av mekaniska komponenter.

På den tiden kunde endast ett begränsat antal låtar rymmas i en kassett. Att kopiera en sång till en annan kassett var också en mardröm. Men nu, tack vare framsteg inom elektronik, kan en Mp3-spelare göras från grunden med dina fickpengar.



Nu går vi vidare till tekniska detaljer i projektet.

Kärnan i projektet är DFPlayer, som är en liten MP3-spelarmodul som rymmer micro SD-kort och kan styras med en mikrokontroller.

Illustration av DFPlayer:

DFPlayer

Den har inbyggd förstärkare som kan driva 3 watt högtalare i stereo eller mono. Den har 24-bitars digital till analog omvandlare (DAC) vilket är ganska bra för en så billig och kompakt modul.

Nedre vy av DFPlayer:

Vy underifrån av DFPlayer

Den stöder avkodning av MP3 och WMV-hårdvara. Den stöder samplingsfrekvensen på
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Det kan stödja upp till 32 GB micro SD-kort. Den stöder upp till 100 mappar, varje mapp kan tilldelas upp till 1000 låtar.

Den har 6 olika nivåer av equalizer och 30 nivåer av volymjusteringskontroll. Den kan fungera från 3,2V till 5V.

Pin-konfiguration av DFPlayer:

Pin-konfiguration av DFPlayer

Ovanstående specifikationer är baserade på DFPlayers datablad.

Nu skulle du ha känt till DFPlayer och dess specifikation. Du kan köpa den här modulen från e-handelssajter eller från den lokala elektronikmarknaden.

Låt oss nu hoppa in i det schematiska diagrammet.

Tryckknapp Mp3-spelare design:

Mp3-spelare med Arduino och DFPlayer

Ovanstående krets är mycket enkel, arduino skickar kommandon till DFPlayer-modulen för att styra låtarna. Användaren kan mata in sitt val via tryckknappar.

Arduinos inbyggda motstånd har aktiverats i programmet, så att vi inte behöver ansluta ett fysiskt motstånd till tryckknappar.

Försök att använda högkvalitativa högtalare. DFPlayer kan leverera mycket bra ljudkvalitet.

Om du hittar någon förvrängning i ljudet vid högre volymnivåer, ska du driva DFPlayer-modulen externt vid 5V DC med gemensam jordanslutning mellan arduino och DFPlayer.

Om du vill ställa in stereoljud ansluter du en av högtalarna till SPK1 på DFPlayer och en annan högtalare till SPK2 och jordar de återstående högtalarkablarna.

Program för tryckknappskontroll:

//---------Developed by R.Girish------//
#include
SoftwareSerial mySerial(10, 11)
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00
const int btnNext = A0
const int btnPause = A1
const int btnPrevious = A2
const int volumeUP = A3
const int volumeDOWN = A4
int volume = 15
boolean Playing = false
void setup ()
{
pinMode(btnPause, INPUT)
pinMode(btnNext, INPUT)
pinMode(btnPrevious, INPUT)
pinMode(volumeUP, INPUT)
pinMode(volumeDOWN, INPUT)
digitalWrite(btnPause, HIGH)
digitalWrite(btnNext, HIGH)
digitalWrite(btnPrevious, HIGH)
digitalWrite(volumeUP, HIGH)
digitalWrite(volumeDOWN, HIGH)
mySerial.begin(9600)
delay(1000)
playFirst()
Playing = true
}
void loop ()
{
if (digitalRead(btnPause) == LOW)
{
if(Playing)
{
pause()
Playing = false
}
else
{
Playing = true
play()
}
}
if (digitalRead(btnNext) == LOW)
{
if(Playing)
{
next()
}
}
if (digitalRead(btnPrevious) == LOW)
{
if(Playing)
{
previous()
}
}
if(digitalRead(volumeUP) == LOW)
{
volumeINC()
}
if(digitalRead(volumeDOWN) == LOW)
{
volumeDEC()
}
}
void playFirst()
{
exe_cmd(0x3F, 0, 0)
delay(500)
exe_cmd(0x06, 0, volume)
delay(500)
exe_cmd(0x11,0,1)
delay(500)
}
void pause()
{
exe_cmd(0x0E,0,0)
delay(500)
}
void play()
{
exe_cmd(0x0D,0,1)
delay(500)
}
void next()
{
exe_cmd(0x01,0,1)
delay(500)
}
void previous()
{
exe_cmd(0x02,0,1)
delay(500)
}
void volumeINC()
{
volume = volume+1
if(volume==31)
{
volume=30
}
exe_cmd(0x06, 0, volume)
delay(500)
}
void volumeDEC()
{
volume = volume-1
if(volume==-1)
{
volume=0
}
exe_cmd(0x06, 0, volume)
delay(500)
}
void exe_cmd(byte CMD, byte Par1, byte Par2)
{
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2)
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge, Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte}
for (byte x=0 x<10 x++)
{
mySerial.write(Command_line[x])
}
}
//---------Developed by R.Girish------//

Låt oss nu gå vidare till IR-fjärrbaserad design.

Schema för IR-kontrollerad MP3-spelare:


Ovanstående design är enkel eftersom tryckknappen baseras, den enda skillnaden är att ta bort tryckknappar och inkludera TSOP 1738 IR-mottagare. Den mottagna signalen från IR-fjärrkontrollen matas till A0-stift av arduino.

För att kunna styra denna MP3-spelare behöver du en extra TV eller någon annan IR-baserad fjärrkontroll som kan ligga på skräpboxen. Du måste bestämma vilka knappar för att styra funktionerna som play & pause etc.

Det finns 6 funktioner:

1) Spela och pausa
2) Nästa låt
3) Föregående låt
4) Volymökning
5) Volymminskning
6) Ljudutjämnare (Normal / Pop / Rock / Jazz / Klassisk / Bas)

Du måste välja knapparna på fjärrkontrollen och hitta dess hexadecimala koder för de knappar som överförs av fjärrkontrollen. Ladda ned IR-biblioteket om du inte gör det för att hitta den hexadecimala koden.

github.com/z3t0/Arduino-IRremote

Lägg till biblioteket i arduino-programvaran och navigera till Arkiv> Exempel> IRremote> IRrecvDemo och ladda upp koden med slutförd hårdvarukonfiguration.

Öppna den seriella bildskärmen och tryck på knapparna på fjärrkontrollen, du kommer att se hexadecimalkoderna, notera den till motsvarande knapp på papper.

Du måste ange hexadecimalkoden i programmet nedan. När du har angett hexadecimalkoderna i det givna programmet laddar du upp det. Du är redo att styra dina låtar från din fjärrkontroll.

Program för IR-fjärrbaserad design:

//---Developed by R.Girish--//
#include
#include
SoftwareSerial mySerial(10,11)
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00
//--------------------------------------------------------//
# define pause_play 0x2FD08F7
# define next_song 0x2FDD827
# define prev_song 0x2FDF807 //REPLACE THESE HEX CODE WITH YOUR REMOTE BUTTON CODE STARTS “0x”
# define vol_inc 0x2FD58A7
# define vol_dec 0x2FD7887
# define sound_equalizer 0x2FD30CF
//-------------------------------------------------------//
const int receive = A0
IRrecv irrecv(receive)
decode_results dec
int volume = 15
int eqset = 0
boolean Playing = false
void setup ()
{
irrecv.enableIRIn()
mySerial.begin(9600)
delay(1000)
playFirst()
Playing = true
}
void loop ()
{
if(irrecv.decode(&dec))
{
if (dec.value==pause_play)
{
if(Playing)
{
pause()
Playing = false
}
else
{
Playing = true
play()
}
}
if (dec.value==next_song)
{
if(Playing)
{
next()
}
}
if (dec.value==prev_song)
{
if(Playing)
{
previous()
}
}
if(dec.value==vol_inc)
{
volumeINC()
}
if(dec.value==vol_dec)
{
volumeDEC()
}
if(dec.value==sound_equalizer)
{
equalizer()
}
irrecv.resume()
}
}
void playFirst()
{
exe_cmd(0x3F, 0, 0)
delay(100)
exe_cmd(0x06, 0, volume)
delay(100)
exe_cmd(0x11,0,1)
delay(100)
}
void pause()
{
exe_cmd(0x0E,0,0)
delay(100)
}
void play()
{
exe_cmd(0x0D,0,1)
delay(100)
}
void next()
{
exe_cmd(0x01,0,1)
delay(100)
}
void previous()
{
exe_cmd(0x02,0,1)
delay(100)
}
void volumeINC()
{
volume = volume+1
if(volume == 31)
{
volume = 30
}
exe_cmd(0x06, 0, volume)
delay(100)
}
void volumeDEC()
{
volume = volume-1
if(volume == -1)
{
volume = 0
}
exe_cmd(0x06, 0, volume)
delay(100)
}
void equalizer()
{
eqset = eqset+1
if(eqset == 6)
{
eqset = 0
}
exe_cmd(0x07, 0 ,eqset)
delay(100)
}
void exe_cmd(byte CMD, byte Par1, byte Par2)
{
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2)
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge, Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte}
for (byte x=0 x<10 x++)
{
mySerial.write(Command_line[x])
}
}
//---------Developed by R.Girish------//

OBS 1: Du kan se varning i programmet när du kompilerar, ignorera det.

OBS 2: Försök att placera alla dina låtar på SD-kort utan mappar.

Författarens prototyp:




Tidigare: LiFi Internet Transmitter Circuit - USB Signal Transfer via LED Nästa: 7 Watt LED Driver SMPS Circuit - Strömstyrd