Přehrávač MP3 pomocí přehrávače DF Player - veškeré podrobnosti o designu

Vyzkoušejte Náš Nástroj Pro Odstranění Problémů





V tomto příspěvku budeme konstruovat MP3 přehrávač pomocí Arduino a DFPlayer. Navrhovaný článek má dva návrhy přehrávačů MP3, jeden s tlačítkovým ovládáním a druhý s IR dálkovým ovládáním. Podíváme se také na DFPlayer (modul přehrávače MP3) a jeho specifikace.

Všichni milujeme hudbu, rádi bychom ji slyšeli v tělocvičně, při čtení, před spánkem nebo při uklidnění po náročném pracovním dni.



Konstrukce hudebního přehrávače doma před několika desítkami let byla pro nadšence elektroniky téměř nemožná kvůli konstrukční složitosti způsobené mechanickými součástmi.

V té době bylo možné na kazetu umístit pouze omezený počet skladeb. Také replikace písničky na jinou kazetu byla noční můra. Ale nyní, díky pokroku v elektronice, může být MP3 přehrávač od nuly vyroben s vašimi kapesnými penězi.



Nyní přejdeme k technickým podrobnostem projektu.

Srdcem projektu je DFPlayer, což je malý modul přehrávače MP3, který může obsahovat kartu micro SD a lze jej ovládat pomocí mikrokontroléru.

Ilustrace DFPlayer:

DFPlayer

Má vestavěný zesilovač, který dokáže řídit 3 wattové reproduktory ve stereofonním nebo mono režimu. Má 24bitový digitální na analogový převodník (DAC), což je docela dobré pro takový levný a kompaktní modul.

Pohled zespodu na DFPlayer:

Pohled zdola na DFPlayer

Podporuje hardwarové dekódování MP3 a WMV. Podporuje vzorkovací frekvenci
8KHz, 11,025KHz, 12KHz, 1 6KHz, 22,05KHz, 24KHz, 32KHz, 44,1KHz, 48KHz.

Může podporovat až 32 GB kartu micro SD. Podporuje až 100 složek, každé složce lze přiřadit až 1000 skladeb.

Má 6 různých úrovní ekvalizéru a 30 úrovní ovládání hlasitosti. Může pracovat od 3,2 V do 5 V.

Konfigurace pinů DFPlayer:

Konfigurace připnutí DFPlayer

Výše uvedené specifikace vycházejí z datového listu DFPlayer.

Nyní už jste se seznámili s DFPlayerem a jeho specifikacemi. Tento modul můžete zakoupit na stránkách elektronického obchodování nebo na místním trhu s elektronikou.

Nyní se podívejme na schematický diagram.

Design tlačítka MP3 přehrávače:

MP3 přehrávač využívající Arduino a DFPlayer

Výše uvedený obvod je velmi jednoduchý, arduino odesílá příkazy do modulu DFPlayer pro ovládání skladeb. Uživatel může zadat svůj výběr pomocí tlačítek.

V programu byl aktivován vestavěný pull-up rezistor Arduina, takže není třeba připojovat fyzický rezistor k tlačítkům.

Zkuste použít kvalitní reproduktory, které může DFPlayer poskytovat velmi kvalitní zvuk.

Pokud zjistíte jakékoli zkreslení zvuku při vyšších úrovních hlasitosti, napájejte modul DFPlayer externě na 5 V DC se společným zemním spojením mezi arduino a DFPlayer.

Pokud chcete nastavení stereofonního zvuku, připojte jeden z reproduktorů k SPK1 přehrávače DFPlayer a další reproduktor k SPK2 a uzemněte zbývající vodiče reproduktorů.

Program pro ovládání tlačítkem:

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

Nyní přejdeme k infračervenému dálkovému designu.

Schéma infračerveného ovládání MP3 přehrávače:


Výše uvedený design je jednoduchý, protože na základě tlačítka se liší pouze odstraněním tlačítek a zahrnutím IR přijímače TSOP 1738. Přijatý signál z IR dálkového ovladače je přiveden na pin A0 arduina.

Nyní můžete k ovládání tohoto přehrávače MP3 potřebovat náhradní televizor nebo jakýkoli jiný dálkový ovladač na bázi IR, který by mohl ležet na vaší nevyžádané schránce. Musíte se rozhodnout, která tlačítka pro ovládání funkcí, jako je přehrávání a pozastavení atd.

K dispozici je 6 funkcí:

1) Přehrajte a pozastavte
2) Další skladba
3) Předchozí skladba
4) Zvýšení hlasitosti
5) Snížení hlasitosti
6) Ekvalizér zvuku (Normal / Pop / Rock / Jazz / Classic / Base)

Musíte vybrat tlačítka na dálkovém ovladači a najít jeho hexadecimální kódy těch tlačítek, která budou dálkovým ovladačem vysílána. Chcete-li najít hexadecimální kód, stáhněte si knihovnu IR, pokud tak neučiníte.

github.com/z3t0/Arduino-IRremote

Přidejte knihovnu do softwaru arduino a přejděte do Soubor> Příklady> IRremote> IRrecvDemo a nahrajte kód s dokončeným nastavením hardwaru.

Otevřete sériový monitor a stiskněte tlačítka na dálkovém ovladači, uvidíte hexadecimální kódy, poznamenejte si je na odpovídající tlačítko na kousku papíru.

V níže uvedeném programu musíte zadat hexadecimální kód. Jakmile v daném programu zadáte hexadecimální kódy, nahrajte je. Jste připraveni ovládat své skladby pomocí dálkového ovladače.

Program pro IR vzdálený 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------//

POZNÁMKA 1: během kompilace se může v programu zobrazit varování, ignorujte jej.

POZNÁMKA 2: Zkuste vložit všechny své skladby na SD kartu bez složek.

Autorův prototyp:




Dvojice: Obvod internetového vysílače LiFi - přenos signálu USB pomocí LED Další: 7 W LED Driver SMPS Circuit - řízený proud