Mp3 atskaņotājs, izmantojot DF atskaņotāju - pilna informācija par dizainu

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Šajā ziņā mēs izveidosim MP3 atskaņotāju, izmantojot arduino un DFPlayer. Piedāvātajam rakstam ir divi Mp3 atskaņotāju modeļi, viens ar pogas vadību un otrs ar IR tālvadības pulti. Mēs arī apskatīsim DFPlayer (Mp3 atskaņotāja moduli) un tā specifikācijas.

Mēs visi mīlam mūziku, mēs vēlētos to dzirdēt, atrodoties sporta zālē, lasot, mirkļus pirms gulēšanas vai nomierinot sevi pēc smagas darba dienas.



Mūzikas atskaņotāja konstruēšana mājās dažus gadu desmitus atpakaļ elektronikas entuziastam bija gandrīz neiespējama, jo mehānisko komponentu dēļ bija sarežģīta konstrukcija.

Tajās dienās kasetē varēja ievietot tikai ierobežotu dziesmu skaitu. Arī dziesmas atkārtojums citā kasetē bija murgs. Bet tagad, pateicoties elektronikas attīstībai, MP3 atskaņotāju var izgatavot no nulles ar savu kabatas naudu.



Tagad pārejam pie projekta tehniskajām detaļām.

Projekta sirds ir DFPlayer, kas ir mazs Mp3 atskaņotāja modulis, kurā var ievietot mikro SD karti un kuru var vadīt, izmantojot mikrokontrolleru.

DFPlayer ilustrācija:

DFPlayer

Tam ir iebūvēts pastiprinātājs, kas var vadīt 3 vatu skaļruņus stereo vai mono. Tam ir 24 bitu digitālais analogais pārveidotājs (DAC), kas ir diezgan labs tik zemām izmaksām un kompaktajam modulim.

DFPlayer apakšējais skats:

DFPlayer apakšējais skats

Tas atbalsta MP3 un WMV aparatūras dekodēšanu. Tas atbalsta paraugu ņemšanas ātrumu
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Tas var atbalstīt līdz 32 GB micro SD karti. Tas atbalsta līdz 100 mapēm, katrai mapei var piešķirt līdz 1000 dziesmām.

Tam ir 6 dažādi ekvalaizera līmeņi un 30 skaļuma regulēšanas līmeņi. Tas var darboties no 3,2 V līdz 5 V.

DFPlayer tapu konfigurācija:

DFPlayer tapu konfigurācija

Iepriekš minētās specifikācijas ir balstītas uz DFPlayer datu lapu.

Tagad jūs jau būtu iepazinies ar DFPlayer un tā specifikācijām. Šo moduli var iegādāties no e-komercijas vietnēm vai vietējā elektronikas tirgū.

Tagad aplūkosim shematisko shēmu.

Spiežamās pogas Mp3 atskaņotāja dizains:

Mp3 atskaņotājs, izmantojot Arduino un DFPlayer

Iepriekš minētā shēma ir ļoti vienkārša - arduino nosūta komandas DFPlayer modulim, lai kontrolētu dziesmas. Lietotājs var ievadīt savu izvēli, izmantojot spiedpogas.

Arduino iebūvētais pievilkšanas rezistors ir aktivizēts programmā, tāpēc mums nav jāpiesaista fizisks rezistors, lai spiež pogas.

Mēģiniet izmantot labas kvalitātes skaļruņus, ar kuriem DFPlayer var nodrošināt ļoti labas kvalitātes skaņu.

Ja atrodat skaņas traucējumus augstākā skaļuma līmenī, darbiniet DFPlayer moduli ārēji pie 5V DC ar kopēju zemes savienojumu starp arduino un DFPlayer.

Ja vēlaties uzstādīt stereo skaņu, pievienojiet vienu skaļruni DFPlayer SPK1 un citu skaļruni SPK2 un iezemējiet atlikušos skaļruņu vadus.

Spiedpogu vadības programma:

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

Tagad pārejam uz IR tālvadības dizainu.

IR vadāmā Mp3 atskaņotāja shēma:


Iepriekš minētais dizains ir vienkāršs, jo, pamatojoties uz spiedpogu, vienīgā atšķirība ir spiedpogu noņemšana un TSOP 1738 IR uztvērēja iekļaušana. Saņemtais signāls no IR tālvadības pults tiek padots uz A0 arduino kontaktu.

Tagad, lai kontrolētu šo MP3 atskaņotāju, jums ir nepieciešams rezerves televizors vai jebkurš cits infrasarkano staru tālvadības pults, kas, iespējams, atrodas uz jūsu nevēlamā lodziņa. Jums jāizlemj, kuras pogas kontrolēt tādas funkcijas kā atskaņošana un pauze utt.

Ir 6 funkcijas:

1) Atskaņot un pauzēt
2) Nākamā dziesma
3) Iepriekšējā dziesma
4) apjoma palielināšanās
5) apjoma samazināšanās
6) Skaņas izlīdzinātājs (Normāls / Pop / Roks / Džezs / Klasisks / Bāze)

Jums jāizvēlas tālvadības pogas un jāatrod to pogu heksadecimālie kodi, kuras tālvadība pārsūtīs. Lai atrastu heksadecimālo kodu, lejupielādējiet IR bibliotēku, ja tas nav izdarīts.

github.com/z3t0/Arduino-IRremote

Pievienojiet bibliotēku arduino programmatūrai un dodieties uz File> Piemēri> IRremote> IRrecvDemo un augšupielādējiet kodu ar pabeigtu aparatūras iestatīšanu.

Atveriet sērijveida monitoru un nospiediet tālvadības pogas, un jūs redzēsiet heksadecimālos kodus, pierakstiet to līdz attiecīgajai pogai uz papīra.

Zemāk norādītajā programmā jāievada heksadecimālais kods. Kad esat ievadījis heksadecimālos kodus dotajā programmā, augšupielādējiet tos. Jūs esat gatavs kontrolēt dziesmas no tālvadības pults.

IR attālā dizaina programma:

//---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. PIEZĪME: kompilēšanas laikā programmā var būt redzams brīdinājums, lūdzu, ignorējiet to.

2. PIEZĪME. Mēģiniet visas dziesmas ievietot SD kartē bez mapēm.

Autora prototips:




Pāri: LiFi interneta raidītāja shēma - USB signāla pārsūtīšana caur LED Nākamais: 7 vatu LED draivera SMPS shēma - strāvas vadība