Máy nghe nhạc Mp3 bằng Trình phát DF - Chi tiết thiết kế đầy đủ

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Trong bài này, chúng ta sẽ xây dựng một máy nghe nhạc Mp3 bằng arduino và DFPlayer. Bài báo đề xuất có hai thiết kế máy nghe nhạc Mp3, một thiết kế có điều khiển bằng nút nhấn và một thiết kế khác có điều khiển từ xa IR. Chúng ta cũng sẽ xem xét DFPlayer (mô-đun trình phát Mp3) và thông số kỹ thuật của nó.

Tất cả chúng ta đều yêu thích âm nhạc, chúng ta muốn nghe nó khi tập thể dục, đọc sách, trước khi ngủ hoặc khi xoa dịu bản thân sau một ngày làm việc mệt mỏi.



Việc chế tạo một máy nghe nhạc tại nhà cách đây vài thập kỷ là điều gần như không thể đối với những người đam mê điện tử vì sự phức tạp trong cấu tạo do các thành phần cơ học.

Trong những ngày đó, số lượng bài hát hạn chế có thể được chứa trong một băng cassette. Sao chép một bài hát sang một băng cassette khác cũng là một cơn ác mộng. Nhưng giờ đây, nhờ sự tiến bộ trong lĩnh vực điện tử, một máy nghe nhạc Mp3 có thể được tạo ra từ đầu bằng tiền túi của bạn.



Bây giờ chúng ta hãy chuyển sang chi tiết kỹ thuật của dự án.

Trọng tâm của dự án là DFPlayer là một mô-đun máy nghe nhạc Mp3 nhỏ có thể chứa thẻ micro SD và có thể được điều khiển bằng vi điều khiển.

Minh họa về DFPlayer:

DFPlayer

Nó có bộ khuếch đại tích hợp có thể điều khiển loa 3 watt ở âm thanh nổi hoặc đơn âm. Nó có bộ chuyển đổi kỹ thuật số sang tương tự (DAC) 24-bit, khá tốt cho mô-đun nhỏ gọn và chi phí thấp như vậy.

Chế độ xem dưới cùng của DFPlayer:

Chế độ xem dưới cùng của DFPlayer

Nó hỗ trợ giải mã phần cứng MP3 và WMV. Nó hỗ trợ tốc độ lấy mẫu của
8KHz, 11.025KHz, 12KHz, 1 6KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz.

Nó có thể hỗ trợ thẻ micro SD lên đến 32GB. Nó hỗ trợ lên đến 100 thư mục, mỗi thư mục có thể được gán lên đến 1000 bài hát.

Nó có 6 cấp độ khác nhau của bộ chỉnh âm và 30 cấp độ điều khiển điều chỉnh âm lượng. Nó có thể hoạt động từ 3.2V đến 5V.

Cấu hình chân của DFPlayer:

Cấu hình chân của DFPlayer

Các thông số kỹ thuật trên dựa trên bảng dữ liệu của DFPlayer.

Bây giờ bạn đã quen với DFPlayer và đặc điểm kỹ thuật của nó. Bạn có thể mua mô-đun này từ các trang thương mại điện tử hoặc từ chợ điện tử địa phương.

Bây giờ chúng ta hãy chuyển sang sơ đồ giản đồ.

Thiết kế máy nghe nhạc Mp3 nút nhấn:

Trình phát Mp3 bằng Arduino và DFPlayer

Mạch trên rất đơn giản, arduino gửi lệnh đến mô-đun DFPlayer để điều khiển các bài hát. Người dùng có thể nhập sự lựa chọn của họ thông qua các nút nhấn.

Điện trở kéo lên tích hợp của arduino đã được kích hoạt trong chương trình, do đó chúng tôi không cần phải gắn điện trở vật lý vào các nút nhấn.

Cố gắng sử dụng loa chất lượng tốt, DFPlayer có thể cung cấp âm thanh chất lượng rất tốt.

Nếu bạn tìm thấy bất kỳ sự biến dạng nào trong âm thanh ở mức âm lượng cao hơn, hãy cấp nguồn cho mô-đun DFPlayer bên ngoài ở 5V DC với kết nối mặt đất chung giữa arduino và DFPlayer.

Nếu bạn muốn thiết lập âm thanh nổi, hãy kết nối một trong những loa với SPK1 của DFPlayer và một loa khác với SPK2 và nối đất các dây loa còn lại.

Chương trình điều khiển nút nhấn:

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

Bây giờ, hãy chuyển sang thiết kế dựa trên IR từ xa.

Sơ đồ cho máy nghe nhạc Mp3 được điều khiển bằng IR:


Thiết kế trên đơn giản như nút nhấn dựa trên sự khác biệt duy nhất là loại bỏ các nút nhấn và bao gồm bộ thu TSOP 1738 IR. Tín hiệu nhận được từ điều khiển từ xa IR được đưa đến chân A0 của arduino.

Bây giờ để điều khiển máy nghe nhạc Mp3 này, bạn cần một TV dự phòng hoặc bất kỳ điều khiển từ xa dựa trên IR nào khác có thể nằm trên hộp rác của bạn. Bạn phải quyết định nút nào để điều khiển các chức năng như phát và tạm dừng, v.v.

Có 6 chức năng:

1) Phát và tạm dừng
2) Bài hát tiếp theo
3) Bài hát trước
4) Tăng âm lượng
5) Giảm âm lượng
6) Bộ cân bằng âm thanh (Bình thường / Pop / Rock / Jazz / Cổ điển / Cơ sở)

Bạn cần chọn các nút trên điều khiển từ xa và tìm mã Hệ thập lục phân của các nút đó sẽ được điều khiển từ xa truyền đi. Để tìm mã thập lục phân, hãy tải xuống thư viện IR nếu chưa thực hiện được.

github.com/z3t0/Arduino-IRremote

Thêm thư viện vào phần mềm arduino và điều hướng đến Tệp> Ví dụ> IRremote> IRrecvDemo và tải lên mã sau khi thiết lập phần cứng hoàn tất.

Mở màn hình nối tiếp và nhấn các nút trên điều khiển từ xa, bạn sẽ thấy các mã thập lục phân, ghi chú nó xuống nút tương ứng trên mảnh giấy.

Bạn cần nhập mã thập lục phân vào chương trình được cung cấp bên dưới. Sau khi bạn nhập mã thập lục phân vào chương trình nhất định, hãy tải nó lên. Bạn đã sẵn sàng điều khiển các bài hát của mình từ điều khiển từ xa.

Chương trình cho thiết kế dựa trên IR từ xa:

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

LƯU Ý 1: bạn có thể thấy cảnh báo trong chương trình khi biên dịch, vui lòng bỏ qua nó.

LƯU Ý 2: Cố gắng đưa tất cả các bài hát của bạn vào thẻ SD mà không có thư mục.

Nguyên mẫu của tác giả:




Một cặp: Mạch phát Internet LiFi - Truyền tín hiệu USB qua đèn LED Tiếp theo: Mạch SMPS trình điều khiển LED 7 Watt - Điều khiển hiện tại