DF-mängijat kasutav Mp3-mängija - täielikud kujunduse üksikasjad

Proovige Meie Instrumenti Probleemide Kõrvaldamiseks





Selles postituses ehitame MP3-mängija arduino ja DFPlayer abil. Kavandataval artiklil on kaks Mp3-mängija kujundust, millest üks on nupuvajutusega ja teine ​​IR-kaugjuhtimispuldiga. Vaatame ka DFPlayerit (Mp3-mängija moodulit) ja selle spetsifikatsioone.

Me kõik armastame muusikat, me tahaksime seda kuulda jõusaalis olles, lugedes, hetki enne magamist või rahustades ennast pärast rasket päevatööd.



Paar aastakümmet tagasi kodus pleieri ehitamine oli elektroonikahuvilisele mehaaniliste komponentide tõttu keerulise konstruktsiooni tõttu peaaegu võimatu.

Nendel päevadel mahtus kassetti vaid piiratud arv lugusid. Ka õudusunenägu oli laulu kordamine teisele kassettile. Kuid nüüd, tänu elektroonika edusammudele, saab MP3-mängija taskurahaga nullist valmistada.



Nüüd liigume projekti tehniliste üksikasjade juurde.

Projekti keskmes on DFPlayer, mis on väike MP3-mängija moodul, mis mahutab mikro-SD-kaarti ja mida saab juhtida mikrokontrolleri abil.

DFPlayeri illustratsioon:

DFPlayer

Sellel on sisseehitatud võimendi, mis suudab juhtida 3-vatiseid kõlareid stereo- või monofonina. Sellel on 24-bitine digitaal-analoogmuundur (DAC), mis on nii odava ja kompaktse mooduli jaoks üsna hea.

DFPlayer altvaade:

DFPlayeri altvaade

See toetab MP3 ja WMV riistvara dekodeerimist. See toetab proovivõtusagedust
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

See võib toetada kuni 32 GB micro SD-kaarti. See toetab kuni 100 kausta, igale kaustale saab määrata kuni 1000 laulu.

Sellel on 6 erinevat ekvalaiseri taset ja 30 helitugevuse reguleerimise taset. See võib töötada vahemikus 3,2 V kuni 5 V.

DFPlayeri PIN-koodi konfiguratsioon:

DFPlayeri PIN-koodi konfiguratsioon

Ülaltoodud spetsifikatsioonid põhinevad DFPlayeri andmelehel.

Nüüdseks oleksite DFPlayeri ja selle spetsifikatsioonidega tuttavad. Selle mooduli saate osta e-kaubanduse saitidelt või kohalikult elektroonikaturult.

Hüppame nüüd skemaatilisse skeemi.

Nupuga MP3-mängija disain:

Mp3-mängija Arduino ja DFPlayer abil

Ülaltoodud vooluring on väga lihtne, kuna arduino saadab laulude juhtimiseks DFPlayeri moodulile käsud. Kasutaja saab sisestada oma valiku nuppude abil.

Arduino sisseehitatud tõmbetakisti on programmis aktiveeritud, nii et meil ei ole vaja surunuppude külge kinnitada füüsilist takistit.

Proovige kasutada kvaliteetseid kõlareid, mille DFPlayer suudab pakkuda väga hea kvaliteediga heli.

Kui leiate helil mingeid moonutusi kõrgema helitugevuse korral, toide DFPlayer moodulit väliselt 5 V alalisvoolul koos ühise maandusühendusega arduino ja DFPlayer vahel.

Kui soovite stereoheli seadistamist, ühendage kõlar DFPlayeri SPK1-ga ja teine ​​SPK2-ga ning maandage ülejäänud kõlarite juhtmed.

Nupu juhtimise programm:

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

Nüüd liigume IR kaugpõhise kujunduse juurde.

IR-juhitava Mp3-mängija skeem:


Ülaltoodud disain on lihtne, kuna surunupul põhinev ainus erinevus on surunuppude eemaldamine ja TSOP 1738 IR-vastuvõtja kaasamine. IR-puldist saadud signaal suunatakse arduino A0-kontakti.

Nüüd on selle MP3-mängija juhtimiseks vaja varutelerit või mõnda muud infrapunapõhist kaugjuhtimispulti, mis võib teie rämpskastil lebada. Peate otsustama, millised nupud funktsioonide juhtimiseks nagu esitus ja paus jne.

Seal on 6 funktsiooni:

1) Mängi ja peata
2) Järgmine lugu
3) Eelmine laul
4) helitugevuse suurenemine
5) helitugevuse vähenemine
6) heli ekvalaiser (tavaline / pop / rock / jazz / klassikaline / alus)

Peate valima kaugjuhtimispuldi nupud ja leidma kaugjuhtimispuldi edastatavate nuppude kuueteistkümnendsüsteemi koodid. Kuueteistkümnendkoha koodi leidmiseks laadige alla IR-teek, kui seda pole tehtud.

github.com/z3t0/Arduino-IRremote

Lisage teek arduino tarkvarasse ja navigeerige jaotisse Fail> Näited> IRremote> IRrecvDemo ja laadige kood üles koos riistvara lõpuleviimisega.

Avage jademonitor ja vajutage kaugjuhtimispuldi nuppe, näete kuueteistkümnendkoode, märkige see paberile vastava nupuni.

Allpool toodud programmi peate sisestama kuueteistkümnendkoha koodi. Kui olete antud programmis kuueteistkümnendkoha koodid sisestanud, laadige see üles. Olete valmis oma lugusid kaugjuhtimispuldist juhtima.

Infrapunapõhise disaini programm:

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

MÄRKUS 1: võite kompileerimise ajal programmis näha hoiatust, ignoreerige seda.

MÄRKUS 2: proovige kõik oma lood SD-kaardile ilma kaustadeta panna.

Autori prototüüp:




Paari: LiFi Interneti-saatja ahel - USB-signaali edastamine LED-i kaudu Järgmine: 7-vatine LED-draiveri SMPS-ahel - voolu juhitav