Mp3-afspiller ved hjælp af DF-afspiller - Fuldt designoplysninger

Prøv Vores Instrument Til At Fjerne Problemer





I dette indlæg skal vi konstruere en Mp3-afspiller ved hjælp af arduino og DFPlayer. Den foreslåede artikel har to design af Mp3-afspillere, en med trykknapkontrol og en anden med IR-fjernbetjening. Vi vil også se på DFPlayer (Mp3-afspiller-modul) og dets specifikationer.

Vi elsker alle musik, vi vil gerne høre det, mens vi er i gymnastiksalen, læser, øjeblikke før vi sover eller mens vi beroliger os selv efter en hård dags arbejde.



At konstruere en musikafspiller derhjemme for få årtier tilbage var næsten umuligt for en elektronikentusiast på grund af konstruktionskompleksitet på grund af mekaniske komponenter.

I disse dage var der kun et begrænset antal sange i en kassette. Det var også et mareridt at kopiere en sang til en anden kassette. Men nu takket være fremskridt inden for elektronik kan en Mp3-afspiller laves fra bunden med dine lommepenge.



Lad os nu gå videre til tekniske detaljer i projektet.

Hjertet i projektet er DFPlayer, som er et lille Mp3-afspiller-modul, der kan rumme micro SD-kort og kan styres ved hjælp af en mikrocontroller.

Illustration af DFPlayer:

DFPlayer

Den har indbygget forstærker, som kan køre 3 watt højttalere i stereo eller mono. Den har 24-bit digital til analog konverter (DAC), hvilket er ret godt til et så billigt og kompakt modul.

DFPlayer set nedefra:

DFPlayer set nedefra

Det understøtter MP3- og WMV-hardwareafkodning. Det understøtter samplingsfrekvens på
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Det kan understøtte op til 32 GB micro SD-kort. Det understøtter op til 100 mapper, hver mappe kan tildeles op til 1000 sange.

Den har 6 forskellige niveauer af equalizer og 30 niveauer af lydstyrkekontrol. Det kan fungere fra 3,2V til 5V.

Pin-konfiguration af DFPlayer:

Pin-konfiguration af DFPlayer

Ovenstående specifikationer er baseret på DFPlayers datablad.

Nu ville du have kendt DFPlayer og dens specifikationer. Du kan købe dette modul fra e-handelssteder eller fra det lokale elektronikmarked.

Lad os nu hoppe ind i det skematiske diagram.

Trykknap Mp3-afspiller design:

Mp3-afspiller ved hjælp af Arduino og DFPlayer

Ovenstående kredsløb er meget simpelt, arduino sender kommandoer til DFPlayer-modulet for at kontrollere sangene. Brugeren kan indtaste sit valg via trykknapper.

Arduino's indbyggede pull-up modstand er blevet aktiveret i programmet, så vi ikke behøver at fastgøre en fysisk modstand til trykknapper.

Prøv at bruge højttalere af god kvalitet, som DFPlayer kan levere lyd af meget god kvalitet.

Hvis du finder nogen forvrængning i lyden ved højere lydstyrkeniveauer, skal du tænde DFPlayer-modulet eksternt ved 5V DC med fælles jordforbindelse mellem arduino og DFPlayer.

Hvis du ønsker opsætning af stereolyd, skal du slutte højttaleren til SPK1 på DFPlayer og en anden højttaler til SPK2 og jordge de resterende højttalerkabler.

Program til trykknapstyring:

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

Lad os nu gå videre til IR-fjernbaseret design.

Skematisk for IR-kontrolleret MP3-afspiller:


Ovenstående design er enkel, da trykknappen er baseret på den eneste forskel er fjernelse af trykknapper og inkludering af TSOP 1738 IR-modtager. Det modtagne signal fra IR-fjernbetjeningen tilføres A0-pin af arduino.

Nu for at kontrollere denne Mp3-afspiller har du brug for et ekstra tv eller enhver anden IR-baseret fjernbetjening, der muligvis ligger på din skraldespand. Du er nødt til at bestemme hvilke knapper til styring af funktionerne som play & pause osv.

Der er 6 funktioner:

1) Afspil og pause
2) Næste sang
3) Forrige sang
4) Volumenforøgelse
5) Volumenreduktion
6) Sound equalizer (Normal / Pop / Rock / Jazz / Classic / Base)

Du skal vælge knapperne på fjernbetjeningen og finde dens hexadecimale koder for de knapper, der sendes af fjernbetjeningen. For at finde den hexadecimale kode skal du downloade IR-biblioteket, hvis det ikke er gjort.

github.com/z3t0/Arduino-IRremote

Føj biblioteket til arduino-softwaren, og naviger til Fil> Eksempler> IRremote> IRrecvDemo, og upload koden med afsluttet hardwareopsætning.

Åbn den serielle skærm og tryk på knapperne på fjernbetjeningen, du vil se de hexadecimale koder, noter den til den tilsvarende knap på papiret.

Du skal indtaste den hexadecimale kode i nedenstående program. Når du har indtastet de hexadecimale koder i det givne program, skal du uploade det. Du er klar til at styre dine sange fra din fjernbetjening.

Program til IR-fjernbaseret 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------//

BEMÆRK 1: Du kan muligvis se advarsler i programmet under kompilering, ignorér det.

BEMÆRK 2: Prøv at placere alle dine sange på SD-kort uden mapper.

Forfatterens prototype:




Tidligere: LiFi Internet Transmitter Circuit - USB Signal Transfer via LED Næste: 7 Watt LED Driver SMPS Circuit - Strømstyret