Prehrávač MP3 pomocou prehrávača DF Player - úplné podrobnosti dizajnu

Vyskúšajte Náš Nástroj Na Odstránenie Problémov





V tomto príspevku zostrojíme MP3 prehrávač pomocou Arduino a DFPlayer. Navrhovaný článok má dva dizajny prehrávačov MP3, jeden s tlačidlovým ovládaním a druhý s infračerveným diaľkovým ovládaním. Ďalej sa pozrieme na DFPlayer (modul prehrávača MP3) a jeho špecifikácie.

Všetci milujeme hudbu, radi by sme ju počuli počas cvičenia v telocvični, čítania, chvíľ pred spánkom alebo pri upokojení svojho ja po náročnom pracovnom dni.



Konštrukcia hudobného prehrávača doma bola pred niekoľkými desaťročiami pre elektronického nadšenca takmer nemožná kvôli konštrukčnej zložitosti spôsobenej mechanickými komponentmi.

V tom čase bolo možné na kazetu umiestniť iba obmedzený počet piesní. Nočná mora bola tiež replikácia skladby na inú kazetu. Ale teraz, vďaka pokroku v elektronike, je možné z vreckového vyrobiť MP3 prehrávač od nuly.



Prejdime teraz k technickým podrobnostiam projektu.

Srdcom projektu je DFPlayer, čo je malý modul prehrávača MP3, do ktorého je možné vložiť kartu micro SD a ktorý je možné ovládať pomocou mikrokontroléra.

Ilustrácia DFPlayer:

DFPlayer

Má zabudovaný zosilňovač, ktorý dokáže riadiť 3 wattové reproduktory stereo alebo mono. Má 24-bitový digitálny na analógový prevodník (DAC), čo je celkom dobré pre taký lacný a kompaktný modul.

Pohľad zdola na prehrávač DFPlayer:

Pohľad zdola na prehrávač DFPlayer

Podporuje hardvérové ​​dekódovanie MP3 a WMV. Podporuje rýchlosť vzorkovania
8KHz, 11,025KHz, 12KHz, 1 6KHz, 22,05KHz, 24KHz, 32KHz, 44,1KHz, 48KHz.

Môže podporovať až 32 GB kartu micro SD. Podporuje až 100 priečinkov, ku každému priečinku je možné priradiť až 1000 skladieb.

Má 6 rôznych úrovní ekvalizéra a 30 úrovní ovládania nastavenia hlasitosti. Môže pracovať od 3,2 V do 5 V.

Konfigurácia špendlíkov DFPlayer:

Konfigurácia pripnutia aplikácie DFPlayer

Vyššie uvedené špecifikácie vychádzajú z údajového listu DFPlayer.

Teraz by ste už poznali DFPlayer a jeho špecifikácie. Tento modul môžete zakúpiť na stránkach elektronického obchodu alebo na miestnom trhu s elektronikou.

Teraz sa pozrime na schematický diagram.

Dizajn MP3 prehrávača s tlačidlom:

MP3 prehrávač využívajúci Arduino a DFPlayer

Vyššie uvedený obvod je veľmi jednoduchý, arduino odosiela príkazy do modulu DFPlayer na ovládanie skladieb. Používateľ môže zadať svoj výber pomocou tlačidiel.

V programe bol aktivovaný zabudovaný pull-up rezistor Arduina, takže nie je potrebné pripájať fyzický rezistor k tlačidlám.

Skúste použiť kvalitné reproduktory, ktoré dokáže DFPlayer poskytnúť veľmi kvalitný zvuk.

Ak zistíte akékoľvek skreslenie zvuku pri vyšších úrovniach hlasitosti, napájajte modul DFPlayer externe na 5 V ss. So spoločným zemným spojením medzi arduino a DFPlayer.

Ak chcete nastavenie stereofónneho zvuku, pripojte jeden z reproduktorov k SPK1 prehrávača DFPlayer a ďalší reproduktor k SPK2 a ostatné vodiče reproduktorov uzemnite.

Program pre ovládanie tlačidlom:

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

Teraz prejdime k infračervenému diaľkovému dizajnu.

Schéma infračerveného prehrávača MP3:


Vyššie uvedený dizajn je jednoduchý, pretože založené na tlačidle, jediným rozdielom je odstránenie tlačidiel a zahrnutie IR prijímača TSOP 1738. Prijatý signál z IR diaľkového ovládača sa privádza na pin A0 arduina.

Teraz na ovládanie tohto MP3 prehrávača potrebujete náhradný televízor alebo akékoľvek iné infračervené diaľkové ovládanie, ktoré by mohlo ležať na vašej nevyžiadanej schránke. Musíte sa rozhodnúť, ktoré tlačidlá na ovládanie funkcií, ako je prehrávanie a pozastavenie atď.

K dispozícii je 6 funkcií:

1) Prehrajte a pozastavte
2) Ďalšia skladba
3) Predchádzajúca skladba
4) Zvýšenie hlasitosti
5) Zníženie hlasitosti
6) Ekvalizér zvuku (Normálny / Pop / Rock / Jazz / Klasický / Základný)

Musíte zvoliť tlačidlá na diaľkovom ovládaní a nájsť jeho hexadecimálne kódy tých tlačidiel, ktoré sa budú diaľkovým ovládačom vysielať. Ak chcete nájsť hexadecimálny kód, stiahnite si knižnicu IR, ak to tak nie je.

github.com/z3t0/Arduino-IRremote

Pridajte knižnicu do softvéru arduino a prejdite do ponuky Súbor> Príklady> IRremote> IRrecvDemo a nahrajte kód s dokončeným nastavením hardvéru.

Otvorte sériový monitor a stlačte tlačidlá na DO, uvidíte hexadecimálne kódy, poznačte si ich na príslušné tlačidlo na kúsku papiera.

Musíte zadať hexadecimálny kód v programe uvedenom nižšie. Po zadaní hexadecimálnych kódov do daného programu ho nahrajte. Svoje skladby môžete ovládať pomocou diaľkového ovládača.

Program pre návrh IR diaľkového ovládania:

//---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: počas zostavovania programu sa môže zobraziť varovanie, ignorujte ho.

POZNÁMKA 2: Pokúste sa vložiť všetky svoje skladby na kartu SD bez priečinkov.

Autorský prototyp:




Dvojica: Obvod internetového vysielača LiFi - prenos signálu USB pomocou LED Ďalej: 7 W LED ovládač SMPS obvod - riadený prúdom