Mp3 Player Menggunakan DF Player - Detail Desain Lengkap

Coba Instrumen Kami Untuk Menghilangkan Masalah





Dalam posting ini kita akan membuat pemutar Mp3 menggunakan arduino dan DFPlayer. Artikel yang diusulkan memiliki dua desain pemutar Mp3, satu dengan kontrol tombol tekan dan satu lagi dengan remote control IR. Kami juga akan melihat DFPlayer (modul pemutar Mp3) dan spesifikasinya.

Kita semua menyukai musik, kita ingin mendengarnya saat di gym, membaca, saat-saat sebelum tidur atau saat menenangkan diri setelah seharian bekerja keras.



Membangun pemutar musik di rumah beberapa dekade yang lalu hampir mustahil bagi penggemar elektronik karena kerumitan konstruksi karena komponen mekanis.

Pada masa itu hanya sejumlah lagu yang dapat ditampung dalam kaset. Mereplikasi lagu ke kaset lain juga merupakan mimpi buruk. Tapi sekarang, berkat kemajuan elektronik, pemutar Mp3 dapat dibuat dari awal dengan uang saku Anda.



Sekarang mari beralih ke detail teknis proyek.

Inti dari proyek ini adalah DFPlayer yang merupakan modul pemutar Mp3 kecil yang dapat menampung kartu micro SD dan dapat dikontrol menggunakan mikrokontroler.

Ilustrasi DFPlayer:

DFPlayer

Ini memiliki amplifier internal yang dapat menggerakkan loudspeaker 3 watt dalam stereo atau mono. Ia memiliki 24-bit digital to analog converter (DAC) yang cukup bagus untuk biaya rendah dan modul kompak.

Tampak bawah dari DFPlayer:

Tampak bawah dari DFPlayer

Ini mendukung decoding perangkat keras MP3 dan WMV. Ini mendukung laju pengambilan sampel
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Ini dapat mendukung kartu micro SD hingga 32GB. Ini mendukung hingga 100 folder, setiap folder dapat diberikan hingga 1000 lagu.

Ini memiliki 6 level equalizer yang berbeda dan 30 level kontrol penyesuaian volume. Ini dapat beroperasi dari 3,2V hingga 5V.

Konfigurasi pin dari DFPlayer:

Konfigurasi pin dari DFPlayer

Spesifikasi di atas didasarkan pada lembar data DFPlayer.

Sekarang Anda pasti sudah familiar dengan DFPlayer dan spesifikasinya. Anda dapat membeli modul ini dari situs e-niaga atau dari pasar elektronik lokal.

Sekarang mari beralih ke diagram skematik.

Desain pemutar Mp3 tombol tekan:

Mp3 Player Menggunakan Arduino dan DFPlayer

Rangkaian di atas sangat sederhana Arduino mengirimkan perintah ke modul DFPlayer untuk mengontrol lagu. Pengguna dapat memasukkan pilihan mereka melalui tombol tekan.

Resistor pull-up bawaan Arduino telah diaktifkan dalam program, sehingga kita tidak perlu memasang resistor fisik ke tombol tekan.

Coba gunakan speaker berkualitas baik, DFPlayer dapat menghasilkan suara berkualitas sangat baik.

Jika Anda menemukan distorsi pada suara pada tingkat volume yang lebih tinggi, nyalakan modul DFPlayer secara eksternal pada 5V DC dengan koneksi dasar yang sama antara arduino dan DFPlayer.

Jika Anda ingin penyiapan suara stereo, sambungkan salah satu speaker ke SPK1 DFPlayer dan speaker lain ke SPK2 dan arde kabel speaker yang tersisa.

Program untuk kontrol tombol 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 desain berbasis jarak jauh IR.

Skema untuk pemutar Mp3 yang dikendalikan IR:


Desain di atas sederhana karena berdasarkan tombol tekan, satu-satunya perbedaan adalah melepas tombol tekan dan memasukkan penerima IR TSOP 1738. Sinyal yang diterima dari remote IR diumpankan ke pin A0 arduino.

Sekarang untuk mengontrol pemutar Mp3 ini Anda memerlukan TV cadangan, atau remote berbasis IR lainnya yang mungkin ada di kotak sampah Anda. Anda harus memutuskan tombol mana untuk mengontrol fungsi seperti putar & jeda, dll.

Ada 6 fungsi:

1) Putar dan jeda
2) Lagu berikutnya
3) Lagu sebelumnya
4) Peningkatan volume
5) Penurunan volume
6) Equalizer suara (Normal / Pop / Rock / Jazz / Klasik / Dasar)

Anda perlu memilih tombol pada remote dan menemukan kode Heksadesimal dari tombol-tombol yang akan dikirim oleh remote. Untuk menemukan kode heksadesimal, unduh perpustakaan IR jika belum melakukannya.

github.com/z3t0/Arduino-IRremote

Tambahkan pustaka ke perangkat lunak arduino dan arahkan ke File> Contoh> IRremote> IRrecvDemo dan unggah kode dengan penyiapan perangkat keras yang lengkap.

Buka monitor serial dan tekan tombol pada remote, Anda akan melihat kode heksadesimal, catat ke tombol yang sesuai di selembar kertas.

Anda harus memasukkan kode heksadesimal pada program yang diberikan di bawah ini. Setelah Anda memasukkan kode heksadesimal dalam program yang diberikan, unggahlah. Anda siap untuk mengontrol lagu Anda dari remote Anda.

Program untuk desain berbasis 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 peringatan dalam program saat mengkompilasi, silakan abaikan.

CATATAN 2: Cobalah untuk meletakkan semua lagu Anda di kartu SD tanpa folder.

Prototipe penulis:




Sepasang: Sirkuit Pemancar Internet LiFi - Transfer Sinyal USB melalui LED Berikutnya: Sirkuit SMPS Driver LED 7 Watt - Terkontrol Saat Ini