Mp3 predvajalnik z uporabo DF predvajalnika - podrobne podrobnosti o oblikovanju

Mp3 predvajalnik z uporabo DF predvajalnika - podrobne podrobnosti o oblikovanju

V tej objavi bomo izdelali Mp3 predvajalnik z uporabo arduina in DFPlayerja. Predlagani članek ima dva modela MP3 predvajalnika, enega z gumbom in drugega z IR daljinskim upravljalnikom. Ogledali si bomo tudi DFPlayer (modul MP3 predvajalnika) in njegove specifikacije.



Vsi imamo radi glasbo, radi bi jo slišali med telovadbo, branjem, trenutki pred spanjem ali med umirjanjem samega sebe po težkem dnevnem delu.

Izdelava glasbenega predvajalnika doma nekaj desetletij nazaj je bila za ljubitelje elektronike skorajda nemogoča zaradi zapletenosti konstrukcije zaradi mehanskih komponent.





V tistih časih je bilo v kaseto mogoče shraniti le omejeno število pesmi. Tudi repliciranje pesmi na drugo kaseto je bila nočna mora. Zdaj pa lahko zaradi napredka v elektroniki predvajalnik Mp3 izdelate iz nič z žepninami.

Zdaj pa pojdimo na tehnične podrobnosti projekta.



Srce projekta je DFPlayer, ki je majhen modul MP3 predvajalnika, ki lahko sprejme mikro SD kartico in ga je mogoče upravljati z mikrokrmilnikom.

Prikaz DFPlayerja:

DFPlayer

Ima vgrajen ojačevalnik, ki lahko poganja 3-vatne zvočnike v stereo ali mono. Ima 24-bitni digitalno-analogni pretvornik (DAC), kar je zelo dobro za tako poceni in kompakten modul.

Pogled od spodaj na DFPlayer:

Pogled od spodaj na DFPlayer

Podpira MP3 in WMV strojno dekodiranje. Podpira hitrost vzorčenja
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Lahko podpira do 32 GB mikro SD kartice. Podpira do 100 map, vsaki mapi lahko dodelite do 1000 pesmi.

Ima 6 različnih ravni izenačevalnika in 30 stopenj za nastavitev glasnosti. Deluje lahko od 3,2 V do 5 V.

Konfiguracija pinov DFPlayer:

Konfiguracija pinov DFPlayer

Zgornje specifikacije temeljijo na podatkovnem listu DFPlayer.

Do zdaj bi že poznali DFPlayer in njegovo specifikacijo. Ta modul lahko kupite na spletnih mestih za e-poslovanje ali na lokalnem trgu elektronike.

Zdaj pa skočimo v shematski diagram.

Zasnova predvajalnika Mp3 s tipkami:

Mp3 predvajalnik z uporabo Arduino in DFPlayer

Zgornje vezje je zelo preprosto, arduino pošlje ukaze modulu DFPlayer za nadzor skladb. Uporabnik lahko svojo izbiro vnese s tipkami.

V programu je aktiviran vgrajeni uporovni upor arduina, tako da na gumbe ni treba pritrditi fizičnega upora.

Poskusite uporabiti kakovostne zvočnike, s katerimi lahko DFPlayer oddaja zelo kakovosten zvok.

Če opazite kakršno koli izkrivljanje zvoka pri višji glasnosti, vklopite modul DFPlayer navzven na 5V DC s skupno ozemljitveno povezavo med arduino in DFPlayer.

Če želite nastavitev stereo zvoka, enega od zvočnikov priključite na SPK1 DFPlayerja, drugega zvočnika pa na SPK2 in ozemljite preostale žice zvočnikov.

Program za upravljanje s tipkami:

//---------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------//

Zdaj pa pojdimo na IR zasnovo na daljavo.

Shema za predvajalnik MP3 s IR nadzorom:


Zgornja zasnova je preprosta, saj je tipkovnica zasnovana, edina razlika je odstranitev tipk in vključitev IR sprejemnika TSOP 1738. Prejeti signal z IR daljinskega upravljalnika se napaja na A0 pin arduino.

Zdaj za nadzor tega MP3 predvajalnika potrebujete rezervni televizor ali kateri koli drug daljinski upravljalnik, ki temelji na IR, ki bi lahko ležal na vaši smeti. Odločiti se morate, kateri gumbi za nadzor funkcij, kot so predvajanje in premor itd.

Na voljo je 6 funkcij:

1) Predvajanje in premor
2) Naslednja pesem
3) Prejšnja pesem
4) Povečanje glasnosti
5) Zmanjšanje glasnosti
6) Izenačevalnik zvoka (navaden / pop / rock / jazz / klasični / osnovni)

Izbrati morate gumbe na daljinskem upravljalniku in poiskati njegove šestnajstiške kode tistih gumbov, ki jih bo daljinski upravljalnik prenašal. Če želite najti šestnajstiško kodo, prenesite IR knjižnico, če tega niste storili.

github.com/z3t0/Arduino-IRremote

Dodajte knjižnico v programsko opremo arduino in se pomaknite do Datoteka> Primeri> IRremote> IRrecvDemo in naložite kodo z dokončano nastavitvijo strojne opreme.

Odprite serijski monitor in pritisnite gumbe na daljinskem upravljalniku, videli boste šestnajstiške kode in si jih zabeležili do ustreznega gumba na papirju.

V spodnji program morate vnesti šestnajstiško kodo. Ko vnesete šestnajstiške kode v dani program, jo ​​naložite. Pripravljeni ste nadzirati svoje pesmi z daljinskega upravljalnika.

Program za IR daljinsko zasnovo:

//---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------//

OPOMBA 1: med prevajanjem boste v programu morda videli opozorilo, prezrite ga.

OPOMBA 2: Poskusite shraniti vse svoje pesmi na kartico SD brez map.

Avtorjev prototip:




Prejšnja: Vezje internetnega oddajnika LiFi - Prenos signala USB prek LED Naprej: 7-vatno vezje SMPS z gonilnikom LED - trenutno nadzorovano