Mp3 grotuvas naudojant DF grotuvą - išsami informacija apie dizainą

Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas





Šiame įraše sukursime MP3 grotuvą naudodami „Arduino“ ir „DFPlayer“. Siūlomame straipsnyje yra du MP3 grotuvų dizainai, vienas su mygtuko valdymu ir kitas su IR nuotoliniu valdymu. Taip pat apžvelgsime „DFPlayer“ (Mp3 grotuvo modulis) ir jo specifikacijas.

Mes visi mėgstame muziką, norėtume ją išgirsti būdami sporto salėje, skaitydami, akimirkas prieš miegą ar ramindami save po sunkios darbo dienos.



Muzikos grotuvo sukūrimas namuose kelis dešimtmečius atgal elektronikos entuziastams buvo beveik neįmanomas dėl konstrukcijos sudėtingumo dėl mechaninių komponentų.

Tais laikais kasetėje buvo galima sutalpinti tik ribotą dainų skaičių. Dainos atkartojimas kitoje kasetėje taip pat buvo košmaras. Tačiau dabar, pažangos elektronikos srityje, MP3 grotuvą iš savo kišenpinigių galima pagaminti nuo nulio.



Dabar pereikime prie techninių projekto detalių.

Projekto esmė yra „DFPlayer“, kuris yra nedidelis MP3 grotuvo modulis, kuriame telpa „micro SD“ kortelė ir kurį galima valdyti naudojant mikrovaldiklį.

„DFPlayer“ iliustracija:

„DFPlayer“

Jis turi įmontuotą stiprintuvą, kuris gali valdyti 3 vatų garsiakalbius stereofoniniu arba monofoniniu režimu. Jis turi 24 bitų skaitmeninį į analoginį keitiklį (DAC), kuris yra gana geras tokiems pigiems ir kompaktiškiems moduliams.

Apatinis „DFPlayer“ vaizdas:

Apatinis „DFPlayer“ vaizdas

Jis palaiko MP3 ir WMV aparatūros dekodavimą. Jis palaiko mėginių ėmimo dažnį
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Jis gali palaikyti iki 32 GB „micro SD“ kortelę. Jis palaiko iki 100 aplankų, kiekvienam aplankui galima priskirti iki 1000 dainų.

Jame yra 6 skirtingi ekvalaizerio ir 30 garso reguliavimo lygių. Jis gali veikti nuo 3,2 V iki 5 V.

„DFPlayer“ kaiščių konfigūracija:

„DFPlayer“ kaiščių konfigūracija

Aukščiau pateiktos specifikacijos yra pagrįstos „DFPlayer“ duomenų lapu.

Dabar jau esate susipažinę su „DFPlayer“ ir jo specifikacijomis. Šį modulį galite įsigyti el. Prekybos svetainėse arba vietinėje elektronikos rinkoje.

Dabar pereikime prie scheminės schemos.

Mygtuko MP3 grotuvo dizainas:

Mp3 grotuvas naudojant „Arduino“ ir „DFPlayer“

Pirmiau nurodyta grandinė yra labai paprasta. „Arduino“ siunčia komandas „DFPlayer“ moduliui valdyti dainas. Vartotojas gali įvesti savo pasirinkimą mygtukais.

„Arduino“ integruotas rezistorius buvo suaktyvintas programoje, todėl mums nereikia pritvirtinti fizinio rezistoriaus mygtukams spausti.

Pabandykite naudoti geros kokybės garsiakalbius, kurių „DFPlayer“ gali perduoti labai geros kokybės garsą.

Jei pastebite kokių nors garso iškraipymų esant didesniam garsumo lygiui, maitinkite „DFPlayer“ modulį išoriškai 5 V nuolatine įtampa, turėdami bendrą įžeminimo jungtį tarp „arduino“ ir „DFPlayer“.

Jei norite nustatyti stereofoninį garsą, prijunkite vieną garsiakalbį prie „DFPlayer“ SPK1, kitą - prie SPK2 ir įžeminkite likusius garsiakalbių laidus.

Mygtuko valdymo programa:

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

Dabar pereikime prie IR nuotolinio valdymo projektavimo.

IR valdomo MP3 grotuvo schema:


Aukščiau pateiktas dizainas yra paprastas, nes mygtukas pagrįstas vieninteliu skirtumu yra mygtukų pašalinimas ir TSOP 1738 IR imtuvo įtraukimas. Gautas infraraudonųjų spindulių nuotolinio signalo signalas tiekiamas į A0 arduino kaištį.

Dabar, norėdami valdyti šį MP3 grotuvą, jums reikia atsarginio televizoriaus ar bet kurio kito IR valdomo nuotolinio valdymo pulto, kuris gali gulėti ant jūsų šiukšliadėžės. Turite nuspręsti, kurie mygtukai valdomi tokioms funkcijoms kaip grojimas ir pristabdymas ir pan.

Yra 6 funkcijos:

1) Paleiskite ir pristabdykite
2) Kita daina
3) Ankstesnė daina
4) tūrio padidėjimas
5) tūrio sumažėjimas
6) Garso ekvalaizeris (normalus / pop / rokas / džiazas / klasika / bazė)

Turite pasirinkti nuotolinio valdymo pulto mygtukus ir rasti šešioliktainius tų mygtukų kodus, kuriuos perduos nuotolinio valdymo pultas. Jei norite rasti šešioliktainį kodą, atsisiųskite IR biblioteką, jei to nepadarėte.

github.com/z3t0/Arduino-IRremote

Pridėkite biblioteką prie „arduino“ programinės įrangos ir eikite į Failas> Pavyzdžiai> IRremote> IRrecvDemo ir įkelkite kodą su užbaigta aparatūros sąranka.

Atidarykite nuoseklųjį monitorių ir paspauskite nuotolinio valdymo pulto mygtukus, pamatysite šešioliktainius kodus, pažymėkite jį iki atitinkamo mygtuko ant popieriaus lapo.

Žemiau pateiktoje programoje turite įvesti šešioliktainį kodą. Įvedę šešioliktainius kodus į pateiktą programą, įkelkite juos. Jūs esate pasirengęs valdyti dainas iš nuotolinio valdymo pulto.

IR nuotolinio projektavimo programa:

//---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 PASTABA: kompiliuodami programoje galite pamatyti įspėjimą, nepaisykite jo.

2 PASTABA: Pabandykite visas savo dainas įdėti į SD kortelę be aplankų.

Autoriaus prototipas:




Pora: „LiFi“ interneto siųstuvo grandinė - USB signalo perdavimas per LED Kitas: 7 vatų LED tvarkyklės SMPS grandinė - valdoma srovė