DF Player Kullanan Mp3 Player - Tam Tasarım Detayları

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Bu yazıda arduino ve DFPlayer kullanarak bir Mp3 oynatıcı oluşturacağız. Önerilen makale, biri basmalı düğme kontrollü ve diğeri IR uzaktan kumandalı iki Mp3 oynatıcı tasarımına sahiptir. Ayrıca DFPlayer'a (Mp3 oynatıcı modülü) ve özelliklerine de bir göz atacağız.

Hepimiz müziği severiz, spor salonunda, kitap okurken, uyumadan önceki anlarda veya zorlu bir günün ardından kendimizi rahatlatırken duymak isteriz.



Birkaç on yıl önce evde bir müzik çalar inşa etmek, mekanik bileşenlerden kaynaklanan yapısal karmaşıklık nedeniyle bir elektronik tutkunu için neredeyse imkansızdı.

O günlerde bir kasete yalnızca sınırlı sayıda şarkı sığabiliyordu. Bir şarkıyı başka bir kasete kopyalamak da bir kabustu. Ama şimdi, elektronikteki gelişmeler sayesinde, cep harçlığınızla sıfırdan bir Mp3 oynatıcı yapılabilir.



Şimdi projenin teknik ayrıntılarına geçelim.

Projenin kalbi, mikro SD kartı barındırabilen ve bir mikro denetleyici kullanılarak kontrol edilebilen küçük bir Mp3 oynatıcı modülü olan DFPlayer'dır.

DFPlayer gösterimi:

DFPlayer

Stereo veya mono olarak 3 watt hoparlörleri çalıştırabilen dahili amplifikatöre sahiptir. Bu kadar düşük maliyetli ve kompakt modül için oldukça iyi olan 24-bit dijitalden analoğa dönüştürücü (DAC) vardır.

DFPlayer'ın alttan görünümü:

DFPlayer

MP3 ve WMV donanım kod çözmeyi destekler. Örnekleme oranını destekler
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

32GB'a kadar micro SD kartı destekleyebilir. En fazla 100 klasörü destekler, her klasöre 1000 şarkıya kadar atanabilir.

6 farklı seviyeli ekolayzır ve 30 seviyeli ses ayar kontrolü vardır. 3.2V ile 5V arasında çalışabilir.

DFPlayer'ın pin yapılandırması:

DFPlayer yapılandırmasını pin

Yukarıdaki özellikler, DFPlayer'ın veri sayfasına dayanmaktadır.

Şimdiye kadar DFPlayer ve teknik özelliklerine aşina olmuş olacaksınız. Bu modülü e-ticaret sitelerinden veya yerel elektronik pazarından satın alabilirsiniz.

Şimdi şematik diyagrama geçelim.

Basma düğmeli Mp3 oynatıcı tasarımı:

Arduino ve DFPlayer Kullanan Mp3 Player

Yukarıdaki devre çok basittir, arduino şarkıları kontrol etmek için DFPlayer modülüne komutlar gönderir. Kullanıcı seçimini butonlar aracılığıyla girebilir.

Arduino’nun yerleşik kaldırma direnci programda etkinleştirildi, böylece düğmelere fiziksel bir direnç eklememize gerek kalmadı.

DFPlayer'ın çok iyi kalitede ses sağlayabileceği kaliteli hoparlörler kullanmayı deneyin.

Daha yüksek ses seviyelerinde seste herhangi bir bozulma bulursanız, arduino ve DFPlayer arasındaki ortak zemin bağlantısıyla DFPlayer modülünü harici olarak 5V DC'de güçlendirin.

Stereo ses kurulumu istiyorsanız, hoparlörlerden birini DFPlayer SPK1'e ve başka bir hoparlörü SPK2'ye bağlayın ve kalan hoparlör kablolarını topraklayın.

Basma düğmesi kontrolü için program:

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

Şimdi IR uzaktan tabanlı tasarıma geçelim.

IR kontrollü Mp3 oynatıcı için şematik:


Yukarıdaki tasarım basittir, çünkü tek fark basmalı düğmelerin çıkarılması ve TSOP 1738 IR alıcısının dahil edilmesidir. IR uzaktan kumandasından alınan sinyal arduino'nun A0 pinine beslenir.

Şimdi bu Mp3 oynatıcıyı kontrol etmek için yedek bir TV'ye veya önemsiz kutunuzun üzerinde duran başka bir IR tabanlı uzaktan kumandaya ihtiyacınız var. Oynatma ve duraklatma gibi işlevleri kontrol etmek için hangi düğmelere karar vermelisiniz.

6 işlev vardır:

1) Oynatın ve duraklatın
2) Sonraki şarkı
3) Önceki şarkı
4) Hacim artışı
5) Hacim azalması
6) Ses ekolayzer (Normal / Pop / Rock / Jazz / Classic / Base)

Uzaktan kumandadaki düğmeleri seçmeniz ve uzaktan kumandayla iletilecek düğmelerin Onaltılık kodlarını bulmanız gerekir. Onaltılık kodu bulmak için, yapılmadıysa IR kitaplığını indirin.

github.com/z3t0/Arduino-IRremote

Kitaplığı arduino yazılımına ekleyin ve Dosya> Örnekler> IRremote> IRrecvDemo'ya gidin ve kodu tamamlanmış donanım kurulumuyla yükleyin.

Seri monitörü açın ve uzaktan kumandadaki düğmelere basın, onaltılık kodları göreceksiniz, kağıt parçası üzerindeki ilgili düğmeye not edin.

Aşağıda verilen programda onaltılık kodu girmeniz gerekmektedir. Verilen programa onaltılık kodları girdikten sonra, yükleyin. Şarkılarınızı uzaktan kumandanızdan kontrol etmeye hazırsınız.

IR uzaktan tabanlı tasarım programı:

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

NOT 1: Derleme sırasında programda uyarı görebilirsiniz, lütfen dikkate almayınız.

NOT 2: Tüm şarkılarınızı klasörler olmadan SD karta koymaya çalışın.

Yazarın prototipi:




Önceki: LiFi İnternet Verici Devresi - LED üzerinden USB Sinyal Aktarımı Sonraki: 7 Watt LED Sürücü SMPS Devresi - Akım Kontrollü