1、概述
该模块是一款小巧且价格低廉的 MP3 模块,可以直接接驳扬声器。模块配合供电电池、扬声器、按键可以单独使用,也可以通过串口控制,作为 Arduino UNO 或者是任何有串口的单片机的一个模块。模块本身完美的集成了 MP3、WAV、WMA 的硬解码。同时软件支持 TF 卡驱动,支持 FAT16、FAT32 文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠。
2、规格参数
支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/48
24 位 DAC 输出,动态范围支持:90dB,信噪比支持:85dB
完全支持 FAT16、FAT32 文件系统,最大支持 32G 的 TF 卡,支持 32G 的 U 盘、64M 字节的 NORFLASH
多种控制模式可选。IO 控制模式、串口模式、AD 按键控制模式
广播语插播功能,可以暂停正在播放的背景音乐。广告播放完毕回到背景音继续播放
音频数据按文件夹排序,最多支持 100 个文件夹,每隔文件夹可以分配 255 首曲目
30 级音量可调,6 级 EQ 可调
3、引脚说明
4、连接方法
4、测试代码
#include “Arduino.h”
#include “SoftwareSerial.h”
#include “DFRobotDFPlayerMini.h”
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
void setup()
{
mySoftwareSerial.begin(9600);
Serial.begin(115200);
Serial.println();
Serial.println(F(“DFRobot DFPlayer Mini Demo”));
Serial.println(F(“Initializing DFPlayer … (May take 3~5 seconds)”));
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with mp3.
Serial.println(F(“Unable to begin:”));
Serial.println(F(“1.Please recheck the connection!”));
Serial.println(F(“2.Please insert the SD card!”));
while(true);
}
Serial.println(F(“DFPlayer Mini online.”));
myDFPlayer.volume(10); //Set volume value. From 0 to 30
myDFPlayer.play(1); //Play the first mp3
}
void loop()
{
static unsigned long timer = millis();
if (millis() – timer > 30000) {
timer = millis();
myDFPlayer.next(); //Play next mp3 every 30 second.
}
if (myDFPlayer.available()) {
printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from
DFPlayer to handle different errors and states.
}
}
void printDetail(uint8_t type, int value){
switch (type) {
case TimeOut:
Serial.println(F(“Time Out!”));
break;
case WrongStack:
Serial.println(F(“Stack Wrong!”));
break;
case DFPlayerCardInserted:
Serial.println(F(“Card Inserted!”));
break;
case DFPlayerCardRemoved:
Serial.println(F(“Card Removed!”));
break;
case DFPlayerCardOnline:
Serial.println(F(“Card Online!”));
break;
case DFPlayerPlayFinished:
Serial.print(F(“Number:”));
Serial.print(value);
Serial.println(F(” Play Finished!”));
break;
case DFPlayerError:
Serial.print(F(“DFPlayerError:”));
switch (value) {
case Busy:
Serial.println(F(“Card not found”));
break;
case Sleeping:
Serial.println(F(“Sleeping”));
break;
case SerialWrongStack:
Serial.println(F(“Get Wrong Stack”));
break;
case CheckSumNotMatch:
Serial.println(F(“Check Sum Not Match”));
break;
case FileIndexOut:
Serial.println(F(“File Index Out of Bound”));
break;
case FileMismatch:
Serial.println(F(“Cannot Find File”));
break;
case Advertise:
Serial.println(F(“In Advertise”));
break;
default:
break;
}
break;
default:
break;
}
}
5、测试结果
按照接线方法接好线,烧录好代码,上电,利用代码控制 MP3 模块,过 3 秒钟的左右,能听到喇叭里面发出声音,并以 30 秒的速度切换下一首 MP3.再将 RX TX 接线拔掉,利用按键测试。上电时,能听到声音,按 S1 是上一首,长按 S1 是减小音量。按S2 是下一首,长按 S2 是增加音量。按 S3 第五首,长按 S3 是循环第五首。按 S4 第一首,长按循环第一首。
6、相关资料链接
https://pan.baidu.com/s/1bqU9Gs-fqPP4iIAUy6TvnQ
提取码:o1mh