Mp3 player pomoću DF playera - detalji o cjelovitom dizajnu

Isprobajte Naš Instrument Za Uklanjanje Problema





U ovom ćemo postu izraditi Mp3 player koristeći arduino i DFPlayer. Predloženi članak ima dva dizajna Mp3 playera, jedan s upravljanjem tipkama i drugi s IR daljinskim upravljačem. Također ćemo pogledati DFPlayer (modul MP3 playera) i njegove specifikacije.

Svi volimo glazbu, voljeli bismo je čuti dok smo u teretani, čitamo, nekoliko trenutaka prije spavanja ili dok se umirujemo nakon napornog radnog dana.



Konstruiranje glazbenog uređaja kod kuće prije nekoliko desetljeća bilo je gotovo nemoguće za ljubitelje elektronike zbog složenosti konstrukcije zbog mehaničkih komponenata.

U to se vrijeme u kasetu mogao smjestiti samo ograničeni broj pjesama. Preslikavanje pjesme na drugu kasetu također je bila noćna mora. Ali sada, zahvaljujući napretku u elektronici, MP3 player možete napraviti od nule za svoj džeparac.



Krenimo sada na tehničke detalje projekta.

Srce projekta je DFPlayer koji je mali modul Mp3 playera koji može primiti mikro SD karticu i kojim se može upravljati pomoću mikrokontrolera.

Ilustracija DFPlayera:

DFPlayer

Ima ugrađeno pojačalo koje može pokretati zvučnike snage 3 W u stereo ili mono formatu. Ima 24-bitni digitalno-analogni pretvarač (DAC) što je prilično dobro za tako jeftin i kompaktan modul.

Pogled odozdo na DFPlayer:

Pogled odozdo na DFPlayer

Podržava MP3 i WMV hardversko dekodiranje. Podržava brzinu uzorkovanja od
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Može podržavati do 32 GB mikro SD kartice. Podržava do 100 mapa, svakoj mapi se može dodijeliti do 1000 pjesama.

Ima 6 različitih razina ekvilajzera i 30 razina kontrole podešavanja glasnoće. Može raditi od 3,2 V do 5 V.

Konfiguracija pribadače DFPlayera:

Konfiguracija pin-a za DFPlayer

Gornje specifikacije temelje se na tehničkom listu DFPlayera.

Do sada biste već poznavali DFPlayer i njegove specifikacije. Ovaj modul možete kupiti na web mjestima e-trgovine ili na lokalnom tržištu elektronike.

Krenimo sada u shematski dijagram.

Dizajn MP3 playera s tipkama:

Mp3 player koristeći Arduino i DFPlayer

Gornji sklop vrlo je jednostavan, arduino šalje naredbe modulu DFPlayer za kontrolu pjesama. Korisnik može unijeti svoj izbor putem tipki.

U programu je aktiviran ugrađeni pull-up otpor arduina, tako da na gumbe ne trebamo pričvrstiti fizički otpornik.

Pokušajte koristiti zvučnike dobre kvalitete, DFPlayer može pružiti zvuk vrlo dobre kvalitete.

Ako nađete izobličenja u zvuku na većim razinama glasnoće, napajajte DFPlayer modul izvana na 5V DC s zajedničkom zemaljskom vezom između arduina i DFPlayera.

Ako želite postavljanje stereo zvuka, spojite jedan zvučnik na SPK1 DFPlayera, a drugi zvučnik na SPK2 i uzemljite preostale žice zvučnika.

Program za upravljanje tipkama:

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

Sada prijeđimo na dizajn s daljinskim upravljačem na osnovi IR-a.

Shema za IC uređaj s MP3 nadzorom:


Gore navedeni dizajn jednostavan je jer je tipkalo jedina razlika uklanjanje tipki i uključivanje TSOP 1738 IR prijemnika. Primljeni signal s IR daljinskog upravljača dovodi se na A0 pin arduina.

Sada za upravljanje ovim Mp3 uređajem trebate rezervni televizor ili bilo koji drugi daljinski upravljač zasnovan na IC-u koji možda leži na vašem smeću. Morate odlučiti koje tipke za upravljanje funkcijama poput reprodukcije i pauze itd.

Postoji 6 funkcija:

1) Reprodukujte i zaustavite
2) Sljedeća pjesma
3) Prethodna pjesma
4) Povećanje glasnoće
5) Smanjenje glasnoće
6) Izjednačivač zvuka (normalno / pop / rock / jazz / klasično / osnovno)

Trebate odabrati gumbe na daljinskom upravljaču i pronaći njegove heksadecimalne kodove tih gumba koje će daljinski upravljač prenositi. Da biste pronašli heksadecimalni kôd, preuzmite IR knjižnicu ako to nije učinio.

github.com/z3t0/Arduino-IRremote

Dodajte knjižnicu u softver arduino i idite na Datoteka> Primjeri> IRremote> IRrecvDemo i prenesite kôd s dovršenim postavljanjem hardvera.

Otvorite serijski monitor i pritisnite tipke na daljinskom upravljaču, vidjet ćete heksadecimalne kodove, zabilježite ih na odgovarajući gumb na komadu papira.

U dolje navedeni program morate unijeti heksadecimalni kôd. Nakon što ste unijeli heksadecimalne kodove u zadani program, prenesite ih. Spremni ste za upravljanje pjesmama s daljinskog upravljača.

Program za IR daljinski dizajn:

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

NAPOMENA 1: tijekom sastavljanja mogli biste vidjeti upozorenje u programu, zanemarite ga.

NAPOMENA 2: Pokušajte sve svoje pjesme staviti na SD karticu bez mapa.

Autorski prototip:




Prethodno: Krug internetskog odašiljača LiFi - USB prijenos signala kroz LED Sljedeće: SMPS krug s LED pogonom od 7 W - strujno kontroliran