Mp3-spiller ved hjelp av DF-spiller - Fullstendig designinformasjon

Prøv Instrumentet Vårt For Å Eliminere Problemer





I dette innlegget skal vi konstruere en Mp3-spiller med arduino og DFPlayer. Den foreslåtte artikkelen har to Mp3-spiller-design, en med trykknappkontroll og en annen med IR-fjernkontroll. Vi vil også se på DFPlayer (Mp3-spiller-modul) og spesifikasjonene.

Vi elsker alle musikk, vi vil gjerne høre den mens vi er på treningsstudioet, leser, øyeblikk før vi sover eller mens vi beroliger oss selv etter en hard arbeidsdag.



Å bygge en musikkspiller hjemme noen tiår tilbake var nesten umulig for en elektronikkentusiast på grunn av konstruksjonskompleksitet på grunn av mekaniske komponenter.

På den tiden var det bare et begrenset antall sanger i en kassett. Å replikere en sang til en annen kassett var også et mareritt. Men nå, takket være fremskritt innen elektronikk, kan en Mp3-spiller lages helt fra bunnen av med lommepengene.



La oss nå gå videre til tekniske detaljer om prosjektet.

Hjertet i prosjektet er DFPlayer, som er en liten Mp3-spiller-modul som har plass til micro SD-kort og kan styres ved hjelp av en mikrokontroller.

Illustrasjon av DFPlayer:

DFPlayer

Den har innebygd forsterker som kan drive 3 watt høyttalere i stereo eller mono. Den har 24-bit digital til analog omformer (DAC), noe som er ganske bra for en så billig og kompakt modul.

Sett nedfra av DFPlayer:

Sett nedfra av DFPlayer

Den støtter dekoding av MP3 og WMV-maskinvare. Den støtter samplingsfrekvensen på
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Den kan støtte opptil 32 GB micro SD-kort. Den støtter opptil 100 mapper, hver mappe kan tildeles opptil 1000 sanger.

Den har 6 forskjellige nivåer av equalizer og 30 nivåer av volumjusteringskontroll. Den kan operere fra 3,2V til 5V.

Pin-konfigurasjon av DFPlayer:

Pin-konfigurasjon av DFPlayer

Ovennevnte spesifikasjoner er basert på DFPlayers datablad.

Nå hadde du kjent med DFPlayer og spesifikasjonene. Du kan kjøpe denne modulen fra e-handelssteder eller fra det lokale elektronikkmarkedet.

La oss nå hoppe inn i skjematisk diagram.

Trykknapp Mp3-spiller design:

Mp3-spiller ved hjelp av Arduino og DFPlayer

Ovennevnte krets er veldig enkel, arduino sender kommandoer til DFPlayer-modulen for å kontrollere sangene. Brukeren kan legge inn sitt valg via trykknapper.

Arduinos innebygde opptrekksmotstand er aktivert i programmet, slik at vi ikke trenger å feste en fysisk motstand til trykknapper.

Prøv å bruke høyttalere av god kvalitet. DFPlayer kan levere lyd av veldig god kvalitet.

Hvis du finner noen forvrengning i lyden ved høyere volumnivåer, må du drive DFPlayer-modulen eksternt ved 5V DC med felles jordforbindelse mellom arduino og DFPlayer.

Hvis du vil ha stereolydoppsett, kobler du en av høyttalerne til SPK1 på DFPlayer og en annen høyttaler til SPK2 og jorder de gjenværende høyttalerkablene.

Program for trykknappkontroll:

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

La oss nå gå videre til IR-fjernbasert design.

Skjematisk for IR-kontrollert MP3-spiller:


Ovennevnte design er enkel, siden trykknappen er basert, den eneste forskjellen er fjerning av trykknapper og inkludering av TSOP 1738 IR-mottaker. Det mottatte signalet fra IR-fjernkontrollen mates til A0-pinnen med arduino.

Nå for å kontrollere denne Mp3-spilleren trenger du en ekstra TV eller annen IR-basert fjernkontroll som kan ligge på søppelkassen. Du må bestemme hvilke knapper for å kontrollere funksjonene som play & pause etc.

Det er 6 funksjoner:

1) Spill av og pause
2) Neste sang
3) Forrige sang
4) Volumøkning
5) Volumreduksjon
6) Lydutjevner (Normal / Pop / Rock / Jazz / Klassisk / Base)

Du må velge knappene på fjernkontrollen og finne heksadesimale koder for knappene som skal sendes av fjernkontrollen. For å finne den heksadesimale koden, last ned IR-biblioteket hvis ikke det er gjort.

github.com/z3t0/Arduino-IRremote

Legg til biblioteket i arduino-programvaren og naviger til Fil> Eksempler> IRremote> IRrecvDemo og last opp koden med fullført maskinvareoppsett.

Åpne den serielle skjermen og trykk på knappene på fjernkontrollen, du vil se heksadesimale koder, noter den til tilsvarende knapp på papiret.

Du må angi heksadesimalkoden i programmet nedenfor. Når du har angitt heksadesimale koder i det gitte programmet, laster du den opp. Du er klar til å kontrollere sangene dine fra fjernkontrollen.

Program for IR-fjernbasert design:

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

MERKNAD 1: Det kan hende du ser advarsler i programmet mens du kompilerer, ignorer det.

MERKNAD 2: Prøv å sette alle sangene dine på SD-kort uten mapper.

Forfatterens prototype:




Forrige: LiFi Internett-senderkrets - USB-signaloverføring gjennom LED Neste: 7 Watt LED Driver SMPS Circuit - Strømstyrt