Mp3 Player Gamit ang DF Player - Buong Mga Detalye ng Disenyo

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Sa post na ito magtatayo kami ng isang Mp3 player na gumagamit ng arduino at DFPlayer. Ang iminungkahing artikulo ay may dalawang mga disenyo ng Mp3 player, isa na may control button na pindutan at isa pang may remote control na IR. Susuriin din namin ang DFPlayer (Mp3 player module) at ang mga pagtutukoy nito.

Gustung-gusto namin ang lahat ng musika, nais naming marinig ito habang nasa gym, nagbabasa, sandali bago matulog o habang pinapawi ang ating sarili pagkatapos ng isang mahirap na araw na trabaho.



Ang pagbuo ng isang manlalaro ng musika sa bahay ng ilang dekada pabalik ay isang malapit na imposible para sa isang taong mahilig sa electronics dahil sa pagiging kumplikado ng konstruksyon dahil sa mga sangkap na mekanikal.

Sa mga araw na iyon limitado lamang ang bilang ng mga kanta na maaaring mapaunlakan sa isang cassette. Ang pagkopya ng isang kanta sa isa pang cassette ay isang bangungot din. Ngunit ngayon, salamat sa pagsulong sa electronics ang isang Mp3 player ay maaaring gawin mula sa simula gamit ang iyong pera sa bulsa.



Ngayon, magpatuloy tayo sa mga teknikal na detalye ng proyekto.

Ang puso ng proyekto ay ang DFPlayer na isang maliit na module ng Mp3 player na maaaring tumanggap ng micro SD card at maaaring makontrol gamit ang isang microcontroller.

Paglalarawan ng DFPlayer:

DFPlayer

Mayroon itong in-build amplifier na maaaring maghimok ng 3 watt loudspeaker sa stereo o mono. Mayroon itong 24-bit digital to analog converter (DAC) na medyo maganda para sa mababang gastos at compact module.

Ibabang pagtingin sa DFPlayer:

Ibabang pagtingin sa DFPlayer

Sinusuportahan nito ang pag-decode ng MP3 at WMV hardware. Sinusuportahan nito ang rate ng sampling ng
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Maaari itong suportahan ng hanggang sa 32GB micro SD card. Sinusuportahan nito ang hanggang sa 100 mga folder, ang bawat folder ay maaaring italaga ng hanggang sa 1000 mga kanta.

Mayroon itong 6 na magkakaibang mga antas ng pangbalanse at 30 mga antas ng dami ng pagsasaayos ng kontrol. Maaari itong gumana mula 3.2V hanggang 5V.

I-pin ang pagsasaayos ng DFPlayer:

I-pin ang pagsasaayos ng DFPlayer

Ang mga pagtutukoy sa itaas ay batay sa sheet ng data ng DFPlayer.

Sa ngayon ay pamilyar ka na sa DFPlayer at ang detalye nito. Maaari kang bumili ng modyul na ito mula sa mga site ng e-commerce o mula sa lokal na pamilihan ng electronics.

Tumalon tayo ngayon sa diagram ng eskematiko.

Disenyo ng push-button Mp3 player:

Mp3 Player Gamit ang Arduino at DFPlayer

Ang circuit sa itaas ay napaka-simple ang arduino ay nagpapadala ng mga utos sa module na DFPlayer upang makontrol ang mga kanta. Maaaring mai-input ng gumagamit ang kanilang napili sa pamamagitan ng mga pindutan ng push.

Ang built-in na pull-up risistor ng arduino ay naaktibo sa programa, kaya't hindi namin kailangang maglakip ng isang pisikal na risistor upang itulak ang mga pindutan.

Subukang gumamit ng mahusay na mga nagsasalita ng kalidad ang DFPlayer ay maaaring makapaghatid ng napakahusay na kalidad ng tunog.

Kung nakakita ka ng anumang pagbaluktot sa tunog sa mas mataas na antas ng lakas ng tunog, lakas ang module ng DFPlayer sa panlabas na 5V DC na may karaniwang koneksyon sa lupa sa pagitan ng arduino at DFPlayer.

Kung nais mo ang pag-setup ng tunog ng stereo, ikonekta ang isa sa speaker sa SPK1 ng DFPlayer at isa pang speaker sa SPK2 at i-ground ang natitirang mga wire ng speaker.

Programa para sa control button ng push:

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

Ngayon, magpatuloy tayo sa IR na batay sa disenyo.

Skema para sa IR na kinokontrol na Mp3 player:


Ang disenyo sa itaas ay simple tulad ng push button batay sa pagkakaiba lamang ay ang pag-aalis ng mga push button at pagsasama ng TSOP 1738 IR receiver. Ang natanggap na signal mula sa IR remote ay pinakain sa A0 pin ng arduino.

Ngayon upang makontrol ang Mp3 player na ito kailangan mo ng ekstrang TV, o anumang iba pang remote na batay sa IR na maaaring nakahiga sa iyong kahon ng basura. Kailangan mong magpasya kung alin ang mga pindutan para sa pagkontrol sa mga pagpapaandar tulad ng pag-play at pag-pause atbp.

Mayroong 6 na pag-andar:

1) Maglaro at mag-pause
2) Susunod na kanta
3) Nakaraang kanta
4) Pagtaas ng dami
5) Pagbaba ng dami
6) Pangbalanse ng tunog (Normal / Pop / Rock / Jazz / Classical / Base)

Kailangan mong piliin ang mga pindutan sa remote at hanapin ang mga Hexadecimal code ng mga pindutang iyon na maililipat ng remote. Upang hanapin ang hexadecimal code, i-download ang IR library kung hindi nagawa ito.

github.com/z3t0/Arduino-IRremote

Idagdag ang library sa arduino software at mag-navigate sa File> Mga Halimbawa> IRremote> IRrecvDemo at i-upload ang code na may nakumpletong pag-setup ng hardware.

Buksan ang serial monitor at pindutin ang mga pindutan sa remote, makikita mo ang mga hexadecimal code, tandaan ito pababa sa kaukulang pindutan sa piraso ng papel.

Kailangan mong ipasok ang hexadecimal code sa program na ibinigay sa ibaba. Kapag naipasok mo na ang mga hexadecimal code sa naibigay na programa, i-upload ito. Handa ka nang kontrolin ang iyong mga kanta mula sa iyong remote.

Programa para sa disenyo ng batay sa remote na IR:

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

TANDAAN 1: maaari kang makakita ng babala sa programa habang nag-iipon, mangyaring huwag pansinin ito.

TANDAAN 2: Subukang ilagay ang lahat ng iyong mga kanta sa SD card nang walang mga folder.

Prototype ng may-akda:




Nakaraan: LiFi Internet Transmitter Circuit - USB Signal Transfer sa pamamagitan ng LED Susunod: 7 Watt LED Driver SMPS Circuit - Kasalukuyang Kinokontrol