เครื่องเล่น MP3 โดยใช้ DF Player - รายละเอียดการออกแบบทั้งหมด

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในโพสต์นี้เราจะสร้างเครื่องเล่น Mp3 โดยใช้ arduino และ DFPlayer บทความที่นำเสนอนี้มีการออกแบบเครื่องเล่น Mp3 สองแบบโดยแบบหนึ่งมีปุ่มควบคุมแบบกดและอีกตัวหนึ่งมีรีโมทคอนโทรล IR นอกจากนี้เราจะดู DFPlayer (โมดูลเครื่องเล่น MP3) และข้อมูลจำเพาะ

เราทุกคนชอบดนตรีเราอยากจะได้ยินมันในขณะออกกำลังกายอ่านหนังสือช่วงเวลาก่อนนอนหรือผ่อนคลายตัวเองหลังจากทำงานหนักมาทั้งวัน



การสร้างเครื่องเล่นเพลงที่บ้านเมื่อไม่กี่สิบปีก่อนเป็นเรื่องที่เป็นไปไม่ได้สำหรับผู้ที่ชื่นชอบอุปกรณ์อิเล็กทรอนิกส์เนื่องจากความซับซ้อนในการก่อสร้างเนื่องจากส่วนประกอบทางกล

ในสมัยนั้นสามารถใส่เทปคาสเซ็ตเพลงได้จำนวน จำกัด การจำลองเพลงไปยังเทปคาสเซ็ตอื่นก็เป็นฝันร้ายเช่นกัน แต่ตอนนี้ต้องขอบคุณความก้าวหน้าในอุปกรณ์อิเล็กทรอนิกส์ทำให้เครื่องเล่น MP3 สามารถสร้างได้ตั้งแต่เริ่มต้นด้วยเงินในกระเป๋าของคุณ



ตอนนี้เรามาดูรายละเอียดทางเทคนิคของโครงการกัน

หัวใจของโครงการคือ DFPlayer ซึ่งเป็นโมดูลเครื่องเล่น Mp3 ขนาดเล็กที่รองรับการ์ด micro SD และสามารถควบคุมได้โดยใช้ไมโครคอนโทรลเลอร์

ภาพประกอบของ DFPlayer:

DFPlayer

มีเครื่องขยายเสียงในตัวซึ่งสามารถขับลำโพง 3 วัตต์ในระบบสเตอริโอหรือโมโน มีตัวแปลงดิจิตอลเป็นอนาล็อก (DAC) 24 บิตซึ่งค่อนข้างดีสำหรับโมดูลราคาประหยัดและขนาดกะทัดรัด

มุมมองด้านล่างของ DFPlayer:

มุมมองด้านล่างของ DFPlayer

รองรับการถอดรหัสฮาร์ดแวร์ MP3 และ WMV รองรับอัตราการสุ่มตัวอย่างของ
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz

สามารถรองรับการ์ด micro SD ได้สูงสุด 32GB รองรับได้ถึง 100 โฟลเดอร์แต่ละโฟลเดอร์สามารถกำหนดได้มากถึง 1,000 เพลง

มีอีควอไลเซอร์ 6 ระดับและปุ่มปรับระดับเสียง 30 ระดับ สามารถทำงานได้ตั้งแต่ 3.2V ถึง 5V

การกำหนดค่าพินของ DFPlayer:

การกำหนดค่าพินของ 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 กัน

แผนผังสำหรับเครื่องเล่น MP3 ที่ควบคุมด้วย IR:


การออกแบบข้างต้นนั้นเรียบง่ายเนื่องจากปุ่มกดตามข้อแตกต่างเพียงอย่างเดียวคือการถอดปุ่มกดและการรวมตัวรับสัญญาณ IR TSOP 1738 สัญญาณที่ได้รับจากรีโมท IR จะถูกป้อนเข้ากับขา A0 ของ arduino

ตอนนี้ในการควบคุมเครื่องเล่น Mp3 นี้คุณต้องมีทีวีสำรองหรือรีโมทที่ใช้ IR อื่น ๆ ซึ่งอาจวางอยู่บนกล่องขยะของคุณ คุณต้องตัดสินใจว่าปุ่มใดสำหรับควบคุมฟังก์ชันเช่นเล่นและหยุดชั่วคราวเป็นต้น

มี 6 ฟังก์ชั่น:

1) เล่นและหยุดชั่วคราว
2) เพลงถัดไป
3) เพลงก่อนหน้า
4) เพิ่มระดับเสียง
5) ลดระดับเสียง
6) อีควอไลเซอร์เสียง (ปกติ / ป๊อป / ร็อค / แจ๊ส / คลาสสิก / เบส)

คุณต้องเลือกปุ่มบนรีโมทและค้นหารหัสฐานสิบหกของปุ่มเหล่านั้นซึ่งจะส่งโดยรีโมท หากต้องการค้นหารหัสฐานสิบหกให้ดาวน์โหลดไลบรารี IR หากไม่ดำเนินการดังกล่าว

github.com/z3t0/Arduino-IRremote

เพิ่มไลบรารีไปยังซอฟต์แวร์ arduino และไปที่ File> Example> 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 ผ่าน LED ถัดไป: วงจร SMPS ไดรเวอร์ LED 7 วัตต์ - ควบคุมปัจจุบัน