17 C
Hanoi
Thứ Sáu, Tháng Mười Hai 3, 2021

[Arduino] Mạch MP3 DFPlayer mini

Mạch MP3 Player Mini Arduino (DFP Player)

Mạch phát âm thanh MP3 tích hợp Amply DFPlayer Mini có thiết kế nhỏ gọn được sử dụng để phát âm thanh MP3 qua thẻ nhớ MicroSD giao tiếp với Vi điều khiển qua giao tiếp UART, mạch có tích hợp Amply công suất nhỏ nên có thể kết nối trực tiếp với loa (khoảng 3W) để thực hiện một số ứng dụng về âm thanh đơn giản.. 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.
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 UART.
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ó thể điều chỉnh 30 mức Volume và 6 mức EQ.

Tên chân trên DFP Player

Các chế độ hoạt động

  • Sử dụng vi điều khiển giao tiếp với module DFPlayer qua UART (bài viết đề cập chế độ này)
  • Sử dụng 2 chân AD KEY: Mỗi chân AD là chân analog để xác định phím chức năng (mỗi chân phát hiện 10 phím khác nhau)
  • Sử dụng chế độ I/O

Tham khảo chi tiết về các chế độ trong tài liệu DFPlayer Mini Manul tại https://drive.google.com/drive/folders/1Y3voEXO2nh5WgNNVjoBNaw0beL1KwNsL?usp=sharing

Vài sơ đồ kết nối với Arduino

Chia sẻ code trên cộng đồng Arduino

  Arduino Uno với module DFPlayer Mini

Link tải Code+Thư viện SoftwareSerial.h https://drive.google.com/drive/folders/1Y3voEXO2nh5WgNNVjoBNaw0beL1KwNsL?usp=sharing

///              MP3 PLAYER PROJECT
/// http://educ8s.tv/arduino-mp3-player/
//////////////////////////////////////////


#include "SoftwareSerial.h"
SoftwareSerial mySerial(10, 11);
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00 //Returns info with command 0x41 [0x01: info, 0x00: no info]

# define ACTIVATED LOW

int buttonNext = 2;
int buttonPause = 3;
int buttonPrevious = 4;
boolean isPlaying = false;



void setup () {

pinMode(buttonPause, INPUT);
digitalWrite(buttonPause,HIGH);
pinMode(buttonNext, INPUT);
digitalWrite(buttonNext,HIGH);
pinMode(buttonPrevious, INPUT);
digitalWrite(buttonPrevious,HIGH);

mySerial.begin (9600);
delay(1000);
playFirst();
isPlaying = true;


}



void loop () { 

 if (digitalRead(buttonPause) == ACTIVATED)
  {
    if(isPlaying)
    {
      pause();
      isPlaying = false;
    }else
    {
      isPlaying = true;
      play();
    }
  }


 if (digitalRead(buttonNext) == ACTIVATED)
  {
    if(isPlaying)
    {
      playNext();
    }
  }

   if (digitalRead(buttonPrevious) == ACTIVATED)
  {
    if(isPlaying)
    {
      playPrevious();
    }
  }
}

void playFirst()
{
  execute_CMD(0x3F, 0, 0);
  delay(500);
  setVolume(20);
  delay(500);
  execute_CMD(0x11,0,1); 
  delay(500);
}

void pause()
{
  execute_CMD(0x0E,0,0);
  delay(500);
}

void play()
{
  execute_CMD(0x0D,0,1); 
  delay(500);
}

void playNext()
{
  execute_CMD(0x01,0,1);
  delay(500);
}

void playPrevious()
{
  execute_CMD(0x02,0,1);
  delay(500);
}

void setVolume(int volume)
{
  execute_CMD(0x06, 0, volume); // Set the volume (0x00~0x30)
  delay(2000);
}

void execute_CMD(byte CMD, byte Par1, byte Par2)
// Excecute the command and parameters
{
// Calculate the checksum (2 bytes)
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
// Build the command line
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge,
Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte};
//Send the command line to the module
for (byte k=0; k<10; k++)
{
mySerial.write( Command_line[k]);
}
}

Tham khảo http://educ8s.tv/arduino-mp3-player/
https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299
https://www.dfrobot.com/blog-277.html

6 COMMENTS

  1. Wow! This can be one particular of the most helpful blogs We’ve ever arrive across on this subject. Actually Magnificent. I am also an expert in this topic therefore I can understand your effort. Patria Yankee

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Tắt kính lúp hình vuông trong Altium

Tắt kính lúp của sổ PCB  trên Altium Sử dụng phím tắt: Shift+M Tham khảo thêm một số phím tắt khác trên phần mềm Altium Designer: Thiết...

Tổng hợp trang web liên quan thiết kế phần cứng điện tử

4 trang web tải thư viện SCH/PCB và 3D https://www.ultralibrarian.com/ https://componentsearchengine.com/ https://octopart.com/ https://www.snapeda.com/ https://componentsearchengine.com/ 2 trang tìm 3D cho thư viện của các bạn bao gồm: https://www.3dcontentcentral.com/ https://grabcad.com/library 4 trang cung cấp các...

Mạch đóng ngắt Relay sử dụng Transistor

Giới thiệu về Relay Rơ le (Relay) là một công tắc chuyển đổi hoạt động bằng điện. Dòng điện chạy qua cuộn dây của rơ...

Nạp Bootloader cho Arduino Pro Micro

Bootloader là một chương trình nhỏ được nạp sẵn vào chip vi điều khiển trên Arduino, nhờ đó bạn lập trình cho Arduino một...

Recent Comments