Lập trình STM32 DFPlayer phát nhạc từ thẻ nhớ

stm32 dfplayer mini

Trong bài này chúng ta sẽ học cách lập trình STM32 DFPlayer, phát nhạc, âm thanh,…. cực kì đơn giản sử dụng UART. DFPlayer là một module giải mã âm thanh rẻ, dễ điều khiển, có khuếch đại âm thanh nội nên rất được ưa chuộng

Bài này nằm trong Serie Học STM32 từ A tới Z

Giới thiệu module DFPLayer 

Mạch Phát Âm Thanh MP3 là mạch phát âm thanh MP3 từ thẻ microSD cực kì nhỏ gọn mà còn tích hợp sẵn ampli để có thể kết nối với loa. Ngoài ra, ta còn có thể điều khiển chơi MP3 bằng Arduino. Module hỗ trợ giải mã MP3, WAV, WMA.

DFPlayer Mini MP3 là mạch phát tập tin âm thanh kiểu máy chơi nhạc MP3. Mạch có thể được sử dụng riêng lẻ chỉ cần pin, loa và nút nhất hoặc kết hợp với vi điều khiển có giao tiếp chuẩn USART.

Thông số kĩ thuật

  • Tốc độ lấy mẫu (Khz) ; 8 / 11.025 / 12 / 16 / 22.05 / 24 / 32 / 44.1 / 48 với ngõ ra 24bit
  • Hỗ trợ đầy đủ FAT16, FAT32, thẻ TF hỗ trợ tối đa 32Gb.
  • Có thể điều khiển qua các chân IO hay chuẩn nối tiếp.
  • Các file âm thanh có thể sắp xếp theo thư mục (tối đa 100 mục) , mỗi mục chứa tối đa 255 bài hát.
  • Có nhiều lệnh điều khiển, có thể sử dụng như một máy nghe nhạc MP3

Sơ đồ chân

Sơ đồ chân
Mô tả các chân

Trong bài này chúng ta sẽ sử dụng giao tiếp UART để điều khiển DFPlayer. vậy nên chỉ sử dụng 4 chân VCC, GND, TX, RX.

Nối loa vào 2 chân SPK_1 và SPK_2 là chạy được luôn vì DFPlayer có sẵn mạch khuếch đại âm thanh.

Nếu muốn sử dụng amply ngoài ta nối vào các chân DAC_L, DAC_R, GND tương ứng với 3 đường vào của audio.

Sơ đồ mạch STM32 DFPlayer

Như sau:

Ngoài ra các bạn có thể sử dụng các nút nhấn được mô tả trong datasheet

Cách điều khiển DFPlayer

Download: datasheet DFPlayer mini

Định dạng khung truyền

Đầu tiên chúng ta cần Setting UART như sau:

  • Baudrate: 9600
  • Checkout parity none: không kiểm tra chẵn/lẻ
  • Data stop bits: 1

Để giao tiếp với DFPlayer, mỗi lần truyền lệnh chúng ta phải tuân theo định dạng sau:

  1. Byte Start luôn luôn là 0x7E
  2. Byte VER: Mặc định là 0xFF
  3. Byte Lenght: Số lượng các byte sau byte này. Mặc định là 0x06
  4. Byte CMD: Ghi mã lệnh sẽ được định nghĩa ngay sau đây
  5. Byte Feedback: phản hồi, để 1 đếu cần phản hồi, 0 nếu không cần. Mặc định là 0
  6. Byte para1 và para2 là 2 byte tham số truyền vào
  7. 2 Byte Checksum: mã checksum để kiểm tra việc truyền có bị lỗi hay không
  8. Byte End: Kết thúc khung truyền luôn luôn là 0xEF

Trong thư viện mình sẽ tạo 1 mảng khung truyền có 10byte, vì checksum có 2 byte nhé.

Để gửi một lệnh mình chỉ cần fill vào các vị trí tương ứng đó là CMD, para1, para 2 và checksum. Còn tất cả các vị trí còn lại để mặc định. Sau đó truyền qua UART frame này là DFPlayer sẽ nhận được.

Các lệnh trong DFPlayer

Các lệnh tương ứng là giá trị điển vào Byte CMD của frame truyền. Mình chỉ sử dụng các lệnh điều khiển (control) mà không sử dụng lệnh truy vấn (query).

Lập trình STM32 DFPLayer phát nhạc như 1 chiếc MP3

Cấu hình CubeMX

Cấu hình như bình thường các tab debug, clock,…

Chúng ta sẽ dùng UART1 để giao tiếp với DFPlayer, tham số cấu hình như sau:

Lập trình với Keil C

Download thư viện theo hướng dẫn: Download tài liệu lập trình STM32

Thay đổi đường dẫn thư viện và add file DFPlayer vào Project. Phần này mình đã hướng dẫn ở các bài trước

Khởi tạo biến MP3 lưu trữ setting của DFPlayer.

Trong main ta khởi tạo DFPlayer với huart1.

Chỉnh âm lượng (0 – 32) sao cho vừa nghe.

Sau đó bắt đầu chạy.

Trong while(1) chúng ta sử dụng câu lệnh next và prev để chuyển bài.

Trong thẻ nhớ chúng ta tạo một thư mục tên mp3 sau đó copy các file .mp3 vào trong nhé.

Để phát nhạc theo từng thư mục, chúng ta tạo ra các thư mục có format 01, 02, 03…  và bên trong file cũng phải đổi tên là 001, 002, 003 ….

Khi đó dùng lệnh DFPLAYER_PlayFileInFolder(DFPLAYER_Name* MP3, uint8_t folder, uint32_t num)  để chạy file đó.

Kết quả phát nhạc bằng DFPlayer với STM32

Kết

DFPlayer có thể sử dụng để tạo một chiếc máy nghe nhạc đơn giản, hoặc sử dụng với vi điều khiển chúng ta dễ dàng phát âm thanh sử dụng định dạnh mp3. Giúp cho các ứng dụng phong phú hơn.

Bạn có thể dùng nó để phát thông tin chuyến bay hoặc số thứ tự như ở bệnh viện chẳng hạn. Như sản phẩm Led pháo hoa của mình cũng sử dụng DFPlayer để tạo âm thanh tiếng pháo nổ.

Nếu cảm thấy bài viết này có ích hãy chia sẻ với bạn bè nhé. Đừng quên ra nhập hội những anh em Nghiện lập trình nhé!!

 

5/5 - (3 bình chọn)

1 những suy nghĩ trên “Lập trình STM32 DFPlayer phát nhạc từ thẻ nhớ

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *