Mp3 плейър, използващ DF плейър - пълни подробности за дизайна

Mp3 плейър, използващ DF плейър - пълни подробности за дизайна

В тази публикация ще създадем Mp3 плейър, използвайки arduino и DFPlayer. Предложената статия има два дизайна на Mp3 плейър, един с управление с бутон и друг с IR дистанционно управление. Ще разгледаме и DFPlayer (модул за MP3 плейър) и неговите спецификации.



Всички обичаме музиката, бихме искали да я чуваме, докато сме във фитнес, четем, мигове преди сън или докато успокояваме себе си след тежък работен ден.

Конструирането на музикален плейър у дома преди няколко десетилетия беше почти невъзможно за любителите на електрониката поради сложността на конструкцията поради механичните компоненти.





По онова време в касета можеха да се съберат само ограничен брой песни. Копирането на песен в друга касета също беше кошмар. Но сега, благодарение на напредъка в електрониката, MP3 плейър може да бъде направен от нулата с джобните ви пари.

Сега да преминем към техническите подробности за проекта.



Сърцевината на проекта е DFPlayer, който е малък модул за Mp3 плейър, който може да побере micro SD карта и може да се управлява с помощта на микроконтролер.

Илюстрация на DFPlayer:

DFPlayer

Той има вграден усилвател, който може да управлява 3 ватови високоговорители в стерео или моно. Той има 24-битов цифрово-аналогов преобразувател (ЦАП), което е доста добро за такъв евтин и компактен модул.

Долен изглед на DFPlayer:

Долен изглед на DFPlayer

Той поддържа MP3 и WMV хардуерно декодиране. Той поддържа честота на вземане на проби от
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Той може да поддържа до 32GB micro SD карта. Той поддържа до 100 папки, на всяка папка могат да бъдат зададени до 1000 песни.

Той има 6 различни нива на еквалайзера и 30 нива на регулиране на силата на звука. Може да работи от 3.2V до 5V.

ПИН конфигурация на DFPlayer:

ПИН конфигурация на DFPlayer

Горните спецификации се основават на информационния лист на DFPlayer.

Досега вече сте били запознати с DFPlayer и неговата спецификация. Можете да закупите този модул от сайтове за електронна търговия или от местния пазар на електроника.

Сега нека да преминем към схематичната диаграма.

Дизайн на MP3 плейър с бутон:

Mp3 плейър, използващ Arduino и DFPlayer

Горната схема е много проста, arduino изпраща команди към модула DFPlayer за управление на песните. Потребителят може да въведе своя избор чрез бутони.

Вграденият издърпващ резистор на arduino е активиран в програмата, така че няма нужда да прикачваме физически резистор към бутоните.

Опитайте се да използвате висококачествени високоговорители, DFPlayer може да достави много добро качество на звука.

Ако откриете някакво изкривяване в звука при по-високи нива на звука, захранвайте модула DFPlayer външно при 5V DC с обща наземна връзка между arduino и DFPlayer.

Ако искате настройка на стерео звук, свържете един от високоговорителя към SPK1 на DFPlayer и друг високоговорител към SPK2 и заземете останалите кабели на високоговорителите.

Програма за управление с бутон:

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

Сега да преминем към IR дистанционно базиран дизайн.

Схема за IR контролиран Mp3 плейър:


Горният дизайн е прост, тъй като бутонът се основава единствената разлика е премахването на бутоните и включването на TSOP 1738 IR приемник. Полученият сигнал от IR дистанционното се подава към A0 пин на arduino.

Сега, за да управлявате този Mp3 плейър, имате нужда от резервен телевизор или друго дистанционно управление, базирано на IR, което може да лежи на вашата боклука. Трябва да решите кои бутони за управление на функциите като възпроизвеждане и пауза и т.н.

Има 6 функции:

1) Възпроизвеждане и пауза
2) Следваща песен
3) Предишна песен
4) Увеличаване на обема
5) Намаляване на силата на звука
6) Звуков еквалайзер (Нормален / Поп / Рок / Джаз / Класически / Базов)

Трябва да изберете бутоните на дистанционното и да намерите неговите шестнадесетични кодове на тези бутони, които ще бъдат предадени от дистанционното. За да намерите шестнадесетичния код, изтеглете IR библиотеката, ако не го направите.

github.com/z3t0/Arduino-IRremote

Добавете библиотеката към софтуера arduino и отворете Файл> Примери> IRremote> IRrecvDemo и качете кода с завършена хардуерна настройка.

Отворете серийния монитор и натиснете бутоните на дистанционното, ще видите шестнадесетичните кодове, запишете го до съответния бутон на лист хартия.

Трябва да въведете шестнадесетичния код в програмата, дадена по-долу. След като въведете шестнадесетичните кодове в дадената програма, качете го. Готови сте да управлявате песните си от дистанционното.

Програма за 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------//

ЗАБЕЛЕЖКА 1: може да видите предупреждение в програмата, докато компилирате, моля, игнорирайте го.

ЗАБЕЛЕЖКА 2: Опитайте се да поставите всичките си песни на SD карта без папки.

Прототип на автора:




Предишна: Верига на LiFi интернет предавател - USB трансфер на сигнал чрез светодиод Напред: 7-ватова SMPS верига за светодиоден драйвер - контролирана по ток