Mp3-lejátszó a DF Player használatával - A tervezés teljes részletei

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





Ebben a bejegyzésben MP3 lejátszót fogunk építeni az arduino és a DFPlayer használatával. A javasolt cikk két Mp3-lejátszó kivitelű, az egyik nyomógombos vezérléssel, a másik pedig IR távirányítóval. Megnézzük a DFPlayer (Mp3 lejátszó modul) és specifikációit is.

Mindannyian szeretjük a zenét, szeretnénk hallani az edzőteremben, olvasás közben, az alvás előtti pillanatokban, vagy miközben nyugtatjuk önmagunkat egy nehéz napi munka után.



A zenelejátszó otthoni építése néhány évtizeddel ezelőtt szinte lehetetlen volt az elektronikai rajongók számára, mivel a mechanikai alkatrészek miatt a konstrukció bonyolult volt.

Azokban a napokban csak korlátozott számban lehetett elférni egy kazettában. Rémálom volt egy dal másolása egy másik kazettára is. De most, az elektronika fejlődésének köszönhetően, egy mp3-lejátszót a semmiből lehet készíteni zsebpénzével.



Most térjünk át a projekt technikai részleteire.

A projekt lényege a DFPlayer, amely egy kicsi Mp3 lejátszó modul, amely képes befogadni a micro SD kártyát, és mikrokontrollerrel vezérelhető.

A DFPlayer illusztrációja:

DFPlayer

Beépített erősítővel rendelkezik, amely 3 wattos hangszórókat képes sztereóban vagy monóban lejátszani. 24 bites digitális-analóg átalakítóval (DAC) rendelkezik, ami nagyon jó ilyen olcsó és kompakt modulokhoz.

A DFPlayer alulnézete:

A DFPlayer alulnézete

Támogatja az MP3 és WMV hardveres dekódolást. Támogatja a
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Akár 32 GB-os micro SD-kártyát képes támogatni. Legfeljebb 100 mappát támogat, mindegyik mappához legfeljebb 1000 dal rendelhető.

6 különböző hangszínszabályzóval és 30 hangerőszabályzóval rendelkezik. 3,2 V-tól 5 V-ig működhet.

A DFPlayer csap konfigurációja:

A DFPlayer csapkonfigurációja

A fenti specifikációk a DFPlayer adatlapján alapulnak.

Mostanra már ismerte a DFPlayer programot és annak specifikációit. Ezt a modult megvásárolhatja e-kereskedelmi webhelyekről vagy a helyi elektronikai piacról.

Most ugorjunk át a sematikus ábrára.

Nyomógombos MP3 lejátszó kialakítása:

Mp3 lejátszó az Arduino és a DFPlayer használatával

A fenti áramkör nagyon egyszerű, az arduino parancsokat küld a DFPlayer modulnak a dalok vezérléséhez. A felhasználó nyomógombokkal adhatja meg választását.

Az arduino beépített felhúzási ellenállása aktiválódott a programban, így nem kell fizikai ellenállást csatlakoztatni a nyomógombokhoz.

Próbáljon jó minőségű hangszórókat használni, mivel a DFPlayer nagyon jó minőségű hangot képes leadni.

Ha valamilyen torzulást észlel a hangerőnél nagyobb hangerő esetén, akkor a DFPlayer modult külsőleg 5 V DC feszültséggel táplálja, az arduino és a DFPlayer között közös a földi kapcsolat.

Ha sztereó hangbeállítást szeretne, csatlakoztassa az egyik hangszórót a DFPlayer SPK1-hez, egy másik hangsugárzót az SPK2-hez, és földelje a fennmaradó hangsugárzó vezetékeket.

Program a nyomógombos vezérléshez:

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

Most térjünk át az IR távoli alapú tervezésre.

Infravörös vezérlésű Mp3 lejátszó vázlata:


A fenti kialakítás egyszerű, mivel a nyomógombon alapuló egyetlen különbség a nyomógombok eltávolítása és a TSOP 1738 IR vevő beépítése. Az infravörös távirányítótól vett jelet az A0 tűs arduino táplálja.

Az Mp3-lejátszó vezérléséhez szükség van egy tartalék TV-re vagy bármilyen más IR-alapú távirányítóra, amely esetleg az ócskavason fekszik. El kell döntenie, hogy melyik gombok vezérlik a funkciókat, például a lejátszás és szünet stb.

6 funkció létezik:

1) Lejátszás és szünet
2) Következő dal
3) Előző dal
4) Hangerő növekedés
5) A hangerő csökkenése
6) Hangkiegyenlítő (Normál / Pop / Rock / Jazz / Klasszikus / Alap)

Ki kell választania a távvezérlő gombjait, és meg kell találnia annak a hexadecimális kódját, amelyet a távvezérlő továbbít. A hexadecimális kód megkereséséhez töltse le az IR könyvtárat, ha még nem tette meg.

github.com/z3t0/Arduino-IRremote

Adja hozzá a könyvtárat az arduino szoftverhez, és lépjen a Fájl> Példák> IRremote> IRrecvDemo elemre, és töltse fel a kódot a hardver teljes beállításával.

Nyissa meg a soros monitort, és nyomja meg a távvezérlő gombjait. Meglátja a hexadecimális kódokat, jegyezze fel a papír megfelelő gombjára.

Az alább megadott programban meg kell adnia a hexadecimális kódot. Miután megadta a hexadecimális kódokat az adott programban, töltse fel. Készen áll arra, hogy a távirányítóról irányítsa a dalait.

Infravörös távoli tervezésű program:

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

1. MEGJEGYZÉS: fordítás közben figyelmeztetést láthat a programban, kérjük, hagyja figyelmen kívül.

2. MEGJEGYZÉS: Próbálja meg az összes zeneszámot mappák nélküli SD-kártyára tenni.

A szerző prototípusa:




Előző: LiFi internetes adó áramkör - USB jelátvitel LED-en keresztül Következő: 7 wattos LED meghajtó SMPS áramkör - áram vezérelt