Pemain Mp3 Menggunakan Pemain DF - Perincian Reka Bentuk Lengkap

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam posting ini kita akan membina pemain Mp3 menggunakan arduino dan DFPlayer. Artikel yang dicadangkan mempunyai dua reka bentuk pemain Mp3, satu dengan kawalan butang tekan dan satu lagi dengan alat kawalan jauh IR. Kami juga akan melihat DFPlayer (modul pemain Mp3) dan spesifikasinya.

Kita semua suka muzik, kita ingin mendengarnya semasa di gim, membaca, beberapa saat sebelum tidur atau sambil menenangkan diri kita setelah seharian bekerja.



Membangun pemain muzik di rumah beberapa dekad yang lalu adalah mustahil bagi peminat elektronik kerana kerumitan konstruksinya kerana komponen mekanikal.

Pada masa itu hanya sebilangan lagu yang dapat ditampung dalam kaset. Meniru lagu ke kaset lain adalah mimpi buruk juga. Tetapi sekarang, berkat kemajuan dalam elektronik, pemain Mp3 dapat dibuat dari awal dengan wang saku anda.



Sekarang mari kita beralih ke butiran teknikal projek.

Inti projek adalah DFPlayer yang merupakan modul pemain Mp3 kecil yang dapat menampung kad SD mikro dan dapat dikendalikan menggunakan mikrokontroler.

Ilustrasi DFPlayer:

Lapisan DFP

Ia mempunyai penguat dalam binaan yang dapat menggerakkan pembesar suara 3 watt secara stereo atau mono. Ia mempunyai penukar digital ke analog 24-bit (DAC) yang cukup bagus untuk modul yang rendah dan padat.

Paparan bawah DFPlayer:

Paparan bawah DFPlayer

Ia menyokong penyahkodan perkakasan MP3 dan WMV. Ia menyokong kadar persampelan sebanyak
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Ia boleh menyokong kad SD mikro sehingga 32GB. Ini menyokong hingga 100 folder, setiap folder dapat diberikan hingga 1000 lagu.

Ia mempunyai 6 tahap penyamaan yang berbeza dan 30 tahap kawalan kelantangan. Ia boleh beroperasi dari 3.2V hingga 5V.

Pin konfigurasi DFPlayer:

Pin konfigurasi DFPlayer

Spesifikasi di atas berdasarkan pada lembaran data DFPlayer.

Sekarang anda sudah biasa dengan DFPlayer dan spesifikasinya. Anda boleh membeli modul ini dari laman e-dagang atau dari pasaran elektronik tempatan.

Sekarang mari masuk ke rajah skematik.

Reka bentuk pemain Mp3 tekan butang:

Pemain Mp3 Menggunakan Arduino dan DFPlayer

Litar di atas sangat mudah arduino menghantar arahan ke modul DFPlayer untuk mengawal lagu. Pengguna dapat memasukkan pilihan mereka melalui butang tekan.

Resistor pull-up bawaan arduino telah diaktifkan dalam program ini, jadi kami tidak perlu memasang perintang fizikal ke butang tekan.

Cuba gunakan pembesar suara berkualiti baik, DFPlayer dapat memberikan suara berkualiti sangat baik.

Sekiranya anda mendapati terdapat gangguan pada suara pada tahap kelantangan yang lebih tinggi, aktifkan modul DFPlayer secara luaran pada 5V DC dengan sambungan tanah biasa antara arduino dan DFPlayer.

Sekiranya anda mahukan persediaan bunyi stereo, sambungkan salah satu pembesar suara ke SPK1 DFPlayer dan pembesar suara lain ke SPK2 dan arahkan kabel pembesar suara yang tinggal.

Program untuk kawalan butang tekan:

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

Sekarang mari beralih ke reka bentuk berasaskan jarak jauh IR.

Skema untuk pemain Mp3 yang dikendalikan oleh IR:


Reka bentuk di atas adalah mudah kerana butang tekan berdasarkan satu-satunya perbezaan adalah penghapusan butang tekan dan kemasukan penerima IR TSOP 1738 Isyarat yang diterima dari alat kawalan jauh IR disalurkan ke pin arduino A0.

Sekarang untuk mengawal pemain Mp3 ini, anda memerlukan TV ganti, atau alat kawalan jauh berasaskan IR lain yang mungkin terletak di kotak sampah anda. Anda harus memutuskan butang mana untuk mengawal fungsi seperti main & jeda dll.

Terdapat 6 fungsi:

1) Main dan berhenti sebentar
2) Lagu seterusnya
3) Lagu sebelumnya
4) Peningkatan jumlah
5) Penurunan isipadu
6) Penyamaan bunyi (Normal / Pop / Rock / Jazz / Classic / Base)

Anda perlu memilih butang pada alat kawalan jauh dan mencari kod Hexadecimal butang yang akan dihantar oleh alat kawalan jauh. Untuk mencari kod heksadesimal, muat turun pustaka IR jika tidak dilakukan.

github.com/z3t0/Arduino-IRremote

Tambahkan perpustakaan ke perisian arduino dan arahkan ke Fail> Contoh> IRremote> IRrecvDemo dan muat naik kod dengan persediaan perkakasan yang lengkap.

Buka monitor bersiri dan tekan butang pada jarak jauh, anda akan melihat kod heksadesimal, perhatikan ke butang yang sesuai pada sehelai kertas.

Anda perlu memasukkan kod heksadesimal pada program yang diberikan di bawah. Sebaik sahaja anda memasukkan kod heksadesimal dalam program yang diberikan, muat naik. Anda bersedia untuk mengawal lagu anda dari alat kawalan jauh anda.

Program untuk reka bentuk berasaskan jarak jauh 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------//

CATATAN 1: anda mungkin melihat amaran dalam program semasa menyusun, sila abaikan.

CATATAN 2: Cuba masukkan semua lagu anda dalam kad SD tanpa folder.

Prototaip pengarang:




Sebelumnya: Litar Pemancar Internet LiFi - Pemindahan Isyarat USB melalui LED Seterusnya: Litar SMPS Pemacu LED 7 Watt - Dikawal Semasa