Mp3-soitin, joka käyttää DF-soitinta - täydelliset suunnittelutiedot

Kokeile Instrumenttia Ongelmien Poistamiseksi





Tässä viestissä aiomme rakentaa Mp3-soittimen käyttämällä arduinoa ja DFPlayeria. Ehdotetussa artikkelissa on kaksi Mp3-soittimen mallia, yksi painikkeilla ja toinen IR-kauko-ohjaimella. Katsomme myös DFPlayer (Mp3-soitinmoduuli) ja sen tekniset tiedot.

Me kaikki rakastamme musiikkia, haluaisimme kuulla sen kuntosalilla, lukemalla, hetkiä ennen nukkumista tai rauhoittaessamme itseämme kovan työpäivän jälkeen.



Musiikkisoittimen rakentaminen kotona muutama vuosikymmen sitten oli elektroniikan harrastajalle lähes mahdotonta mekaanisten komponenttien aiheuttaman rakenteen monimutkaisuuden vuoksi.

Tuolloin kasettiin mahtui vain rajoitettu määrä kappaleita. Kappaleen toistaminen toiselle kasetille oli myös painajainen. Mutta nyt elektroniikan edistymisen ansiosta Mp3-soitin voidaan tehdä tyhjästä taskurahallasi.



Siirrytään nyt projektin teknisiin yksityiskohtiin.

Projektin ydin on DFPlayer, joka on pieni Mp3-soittimen moduuli, johon mahtuu mikro-SD-kortti ja jota voidaan ohjata mikro-ohjaimella.

Kuva DFPlayerista:

DFPlayer

Siinä on sisäänrakennettu vahvistin, joka voi ajaa 3 watin kaiuttimia stereona tai monona. Siinä on 24-bittinen digitaalinen-analogimuunnin (DAC), joka on melko hyvä niin edullisille ja pienille moduuleille.

DFPlayerin näkymä alhaalta:

DFPlayerin näkymä alhaalta

Se tukee MP3- ja WMV-laitteistodekoodausta. Se tukee näytteenottotaajuutta
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Se tukee jopa 32 Gt: n micro SD-korttia. Se tukee jopa 100 kansiota, kullekin kansiolle voidaan määrittää enintään 1000 kappaletta.

Siinä on 6 erilaista taajuuskorjainta ja 30 äänenvoimakkuuden säätötasoa. Se voi toimia 3,2 V - 5 V.

DFPlayerin nastakokoonpano:

DFPlayerin nastakonfiguraatio

Yllä olevat tekniset tiedot perustuvat DFPlayerin tietolomakkeeseen.

Tähän mennessä olisit tuntenut DFPlayerin ja sen määritykset. Voit ostaa tämän moduulin verkkokauppasivustoilta tai paikallisilta elektroniikkamarkkinoilta.

Siirrytään nyt kaavioon.

Painike-Mp3-soittimen suunnittelu:

Mp3-soitin käyttäen Arduino- ja DFPlayer-sovelluksia

Yllä oleva piiri on hyvin yksinkertainen, arduino lähettää komentoja DFPlayer-moduulille kappaleiden hallitsemiseksi. Käyttäjä voi syöttää valintansa painikkeilla.

Arduinon sisäänrakennettu vetovastus on aktivoitu ohjelmassa, joten meidän ei tarvitse kiinnittää fyysistä vastusta painikkeisiin.

Yritä käyttää laadukkaita kaiuttimia, sillä DFPlayer pystyy tuottamaan erittäin laadukkaan äänen.

Jos havaitset vääristymiä äänellä korkeammilla äänenvoimakkuuksilla, kytke DFPlayer-moduuli ulkoiseen jännitteeseen 5 V DC: llä arduinon ja DFPlayerin välillä.

Jos haluat stereoääniasetukset, liitä kaiuttimen DFPlayerin SPK1: een ja toinen kaiutin SPK2: een ja maadoita loput kaiutinkaapelit.

Painikeohjausohjelma:

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

Siirrytään nyt infrapunakaukosäätöiseen suunnitteluun.

IR-ohjatun Mp3-soittimen kaavio:


Yllä oleva rakenne on yksinkertainen, koska painonappipohjainen ainoa ero on painikkeiden poistaminen ja TSOP 1738 IR -vastaanottimen sisällyttäminen. IR-kaukosäätimeltä vastaanotettu signaali syötetään A0-nastalle arduinoa.

Nyt voit hallita tätä Mp3-soitinta tarvitsemalla vara-TV: n tai minkä tahansa muun infrapunapohjaisen kaukosäätimen, joka saattaa makaa roskapostissasi. Sinun on päätettävä, mitkä painikkeet ohjaavat toimintoja, kuten toisto ja tauko jne.

Toimintoja on 6:

1) Toista ja keskeytä
2) Seuraava kappale
3) Edellinen kappale
4) Äänenvoimakkuuden kasvu
5) Äänenvoimakkuuden lasku
6) Äänenkorjain (Normaali / Pop / Rock / Jazz / Klassinen / Perus)

Sinun on valittava kaukosäätimen painikkeet ja löydettävä sen heksadesimaalikoodit painikkeista, jotka kaukosäädin lähettää. Jos haluat löytää heksadesimaalikoodin, lataa IR-kirjasto, ellei sitä ole tehty.

github.com/z3t0/Arduino-IRremote

Lisää kirjasto arduino-ohjelmistoon ja siirry kohtaan Tiedosto> Esimerkit> IRremote> IRrecvDemo ja lataa koodi valmiilla laitteistoasetuksilla.

Avaa sarjamittari ja paina kaukosäätimen painikkeita, näet heksadesimaalikoodit, merkitse se muistiin vastaavaan painikkeeseen paperissa.

Sinun on syötettävä heksadesimaalikoodi alla annettuun ohjelmaan. Kun olet syöttänyt heksadesimaalikoodit annettuun ohjelmaan, lataa se. Olet valmis hallitsemaan kappaleitasi kaukosäätimellä.

IR-kaukosäätimen suunnitteluohjelma:

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

HUOMAUTUS 1: Saatat nähdä varoituksen ohjelmassa käännettäessä, sivuuttaa se.

HUOMAUTUS 2: Yritä laittaa kaikki kappaleesi SD-kortille ilman kansioita.

Kirjoittajan prototyyppi:




Pari: LiFi Internet-lähetinpiiri - USB-signaalinsiirto LEDin kautta Seuraava: 7 watin LED-ohjaimen SMPS-piiri - virtaohjattu