【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验八十二:MP3播放器 开源 Mini MP3 Player 播放器 SD卡 音乐DFPlayer模块(YX5200-24SS芯片)

【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
YX5200-24SS
是一个提供串口的MP3芯片,完美的集成了MP3、WMV的硬解码。同时软件支持TF卡驱动和USB驱动,以及外挂FLASH。支持FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠是此款产品的最大特点。


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
YX5200-24SS串口语音芯片参数
MP3文件格式:支持所有比特率11172-3和ISO13813-3layer音频解1码,采样支持(KHZ):8/11.025/12/16/22.05/24/32/44.1/48,支持Normal、Lazz、Classic、Pop、ROCK等
USB接口:2.0标准
UART接口:标准串口,TTL电平,波特率可设
输入电压:3.3-5V
额定电流:15ma(不带U盘)
尺寸:8.4*8mm
封装:SSOP24封装
工作温度:-40度—80度
湿度:5%-95%。


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
特色功能
1、支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/48
2、24位DAC输出,动态范围支持90dB,信噪比支持85dB
3、完全支持FAT16、FAT32文件系统,最大支持32G的TF卡和U盘
4、多种控制模式,并口控制模式、串口模式、按键控制模式
5、广播语插播功能,可以暂停正在播放的背景音乐
6、音频数据按文件夹排序,最多支持100个文件夹,每隔文件夹可以分配1000首歌曲
7、支持line in功能
8、支持mic扩音喊话功能
9、支持声卡功能,也支持线控耳机功能
10、30级音量可调,10种EQ可调
11、支持外扩NORFLASH和NANDFLASH.板载默认支持NORFLASH


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
YX5200-24SS电原理图


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
应用领域
1.汽车导航语音播报
2.公路运输检查员,收费站语音提示
3.火车,公交车安全检查语音提示
4.电力,通讯,财务手术室语音提示
5.车辆进出通道以验证语音提示
6.边境频道语音提示
7.多声道语音报警或语音导航设备操作
8.带语音通知的电动观光巴士安全
9.机电设备故障报警
10.火警语音提示
11.自动播放设备,定期播放


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
Mini MP3 Player播放器模块
是一款小巧且价格低廉的MP3模块,可以直接接驳扬声器。模块配合供电电池、扬声器、按键可以单独使用,也可以通过串口控制,作为UNO或者是任何有串口的单片机的一个模块。模块本身完美的集成了MP3、WAV、WMA的硬解码。同时软件支持TF卡驱动,支持FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠。


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
模块管脚图
管脚号管脚名称功能描述备注
1BUSY播放时输出高电平,停止为低忙信号
2RXUART异步串口数据输入3.3V的TTL电平
3TXUART异步串口数据输出3.3V的TTL电平
4DACRDAC右声道输出可外接功放、耳机
5DACLDAC左声道输出可外接功放、耳机
6SPK1外接单声道喇叭接3W/4Ω或2W/8Ω无源喇叭
7SPK2外接单声道喇叭接3W/4Ω或2W/8Ω无源喇叭
8VCC电源正极3.6-5V
9IO5触发输入口5接地触发
10IO4触发输入口4接地触发
11IO3触发输入口3接地触发
12IO2触发输入口2接地触发
13IO1触发输入口1接地触发
14GND电源负极系统地
15DPUSB数据线读U盘或用USB数据线连接电脑更换TF卡内容
16DMUSB数据线


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
模块应用图


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
模块工作模式
1)串口模式
模块支持异步串口通讯模式,通过串口接受控制命令
串口指令格式


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
串口控制指令


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
串口查询指令


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
2)AD按键模式
模块还支持AD按键控制方式,取代了传统了矩阵键盘的接法,这样做的好处是充分利用了MCU越来越强大的AD功能。设计简约而不简单,我们模块默认配置2个AD口,20个按键的阻值分配。按键使用示意原理图


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
3)IO模式
本模块也支持简单的IO模式


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
实验开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十二:开源 Mini MP3 Player TF卡播放器模块(YX5200-24SS)
程序之一,循环播放TF卡内0003.MP3(MP3文件夹内),音量20
Arduino-------dfplayer
5V-------------VCC
GND-----------GND
D2-----------TXD
D3-----------RXD
*/
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(2, 3);
DFRobotDFPlayerMini myDFPlayer;
void setup()
{
mySoftwareSerial.begin(9600);
myDFPlayer.begin(mySoftwareSerial);
myDFPlayer.volume(20);
myDFPlayer.loop(3);
}
void loop()
{
}
实验场景图


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
收集整理的使用库的控制语句汇总


//收集整理的使用库的控制语句汇总
myDFPlayer.start(); //播放mp3
myDFPlayer.pause(); //暂停mp3
myDFPlayer.next(); //播放下一个mp3
myDFPlayer.enableLoop(); //启用循环
myDFPlayer.disableLoop(); //禁用循环
myDFPlayer.stopAdvertise(); //停止做广告
mp3Player.volume(10); //音量为10(0-30)
myDFPlayer.previous(); //播放上一个的mp3
myDFPlayer.randomAll(); //随机播放所有mp3
myDFPlayer.enableLoopAll(); //循环所有mp3文件
myDFPlayer.disableLoopAll(); //停止循环所有mp3文件
myDFPlayer.play(1); //播放文件夹里名为0001.mp3的音乐
myDFPlayer.loop(1); //循环文件夹里名为0001.mp3的音乐
myDFPlayer.loopFolder(5); //循环文件夹SD:/ 05中的所有mp3文件
myDFPlayer.playMp3Folder(4); //在SD中播放特定的mp3:/MP3/0004.mp3; 文件名(0~65535)
myDFPlayer.advertise(3); //在SD中宣传特定的mp3广告:/ADVERT/0003.mp3; 文件名(0~65535)
myDFPlayer.playFolder(15, 4); //在SD中播放特定的mp3:/ 15/004.mp3; 文件夹名称(1~99); 文件名(1~255)
myDFPlayer.playLargeFolder(2, 999); //在SD中播放特定的mp3:/ 02/004.mp3; 文件夹名称(1~10); 文件名(1~1000)

使用模块的几点注意事项

1、DFPlayer Mini 可以读取MP3 & WAV 档案格式,但试过档案长度1秒以下无法播放。
2、所有音乐档案一定要放在/mp3 资料夹里
3、音乐档案名称一定要使用4 个字,如0001.mp3, 0002.mp3…..0255.mp3
4、音乐档案超过4个字后则无限制,像是0001_Bruno_Mars_Count_On Me.mp3 是没问题的。
5、如果你从SD 卡上删掉某个档案,DFPlayer Mini 还是有办法把它播出来,好怪!后来我从新格式化SD 卡才成功播放我要的音乐档案。
6、Delay(sec); 这个指是是告诉Arduino 你要播放音乐的长度,如果你给的秒数不足,而下个指令又是要播另一首,则Arduino 就会把目前播放中断,而继续播下一首。
7、mp3_play (74); 这个指令是播放0074.mp3 这个音乐档。
8、不要直接把Arduino的5V给DFPlayer Mini使用,一定要分别供给DFPlayer Mini电源,不然喇叭会发出很大的杂音。
9、测试时平均电流150ma左右,模块发烫,可能要注意控制电流。
10、偶然发现这个模块使用不同的库,相关的控制语句完全不相同。


/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十二:开源 Mini MP3 Player TF卡播放器模块(YX5200-24SS)
程序之二,每3秒切换到下一首歌曲,音量20(速播TF卡内所有MP3歌曲)
可以打印来自dfplayer的详细信息以处理不同的错误和状态。
Arduino-------dfplayer
5V-------------VCC
GND-----------GND
D10-----------TXD
D11-----------RXD
*/
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11);
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)) {
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(20);
myDFPlayer.play(3);
}
void loop(){
static unsigned long timer = millis();
if (millis() - timer > 3000) {
timer = millis();
myDFPlayer.next();
}
if (myDFPlayer.available()) {
printDetail(myDFPlayer.readType(), myDFPlayer.read());
}
}
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;
【【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器】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;
}
}

实验串口返回情况

【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
实验开源仿真编程(Linkboy V4.2)

【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
实验开源图形编程(Mixly、Mind+、编玩边学)


【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片
【雕爷学编程】Arduino动手做(82)---Mini|【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
文章图片

    推荐阅读