电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
分 享
扫描二维码分享
【雕爷学编程】Arduino动手做(82)---Mini MP3 Player播放器
雕爷学编程
雕爷学编程
关注
发布时间: 2021-05-07
丨
阅读: 894
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 #### 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) #### 实验八十二:MP3播放器 开源 Mini MP3 Player 播放器 SD卡 音乐DFPlayer模块(YX5200-24SS芯片) ![](https://cf01.ickimg.com/bbsimages/202105/34c2b13b700ae68a795de6ab6933cbff.jpg) ![](https://cf01.ickimg.com/bbsimages/202105/390815250535d88cdc170877f125e780.jpg) YX5200-24SS 是一个提供串口的MP3芯片,完美的集成了MP3、WMV的硬解码。同时软件支持TF卡驱动和USB驱动,以及外挂FLASH。支持FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠是此款产品的最大特点。 ![](https://cf01.ickimg.com/bbsimages/202105/056d9d3d9d76033798d2846d01995933.jpg) 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%。 ![](https://cf01.ickimg.com/bbsimages/202105/aa358e456d05848cea0a42efbe67fb58.jpg) 特色功能 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 ![](https://cf01.ickimg.com/bbsimages/202105/7c310e2b364c6b09cb0333fac30200fe.jpg) YX5200-24SS电原理图 ![](https://cf01.ickimg.com/bbsimages/202105/c538aa12dd3d9f2a9eff24a50f5311fc.jpg) ![](https://cf01.ickimg.com/bbsimages/202105/f65d9323b8206d17c90f3e28a6546bcd.jpg) ![](https://cf01.ickimg.com/bbsimages/202105/5d9e4cb56e977ce091f6272253f633f1.jpg) 应用领域 1.汽车导航语音播报 2.公路运输检查员,收费站语音提示 3.火车,公交车安全检查语音提示 4.电力,通讯,财务手术室语音提示 5.车辆进出通道以验证语音提示 6.边境频道语音提示 7.多声道语音报警或语音导航设备操作 8.带语音通知的电动观光巴士安全 9.机电设备故障报警 10.火警语音提示 11.自动播放设备,定期播放 ![](https://cf01.ickimg.com/bbsimages/202105/57af8231419fba480a8ff68292095b13.jpg) Mini MP3 Player播放器模块 是一款小巧且价格低廉的MP3模块,可以直接接驳扬声器。模块配合供电电池、扬声器、按键可以单独使用,也可以通过串口控制,作为UNO或者是任何有串口的单片机的一个模块。模块本身完美的集成了MP3、WAV、WMA的硬解码。同时软件支持TF卡驱动,支持FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠。 ![](https://cf01.ickimg.com/bbsimages/202105/f2c8b7970e1a57f970c86a8fe6ace16a.jpg) 模块管脚图 管脚号 管脚名称 功能描述 备注 1 BUSY 播放时输出高电平,停止为低 忙信号 2 RX UART异步串口数据输入 3.3V的TTL电平 3 TX UART异步串口数据输出 3.3V的TTL电平 4 DACR DAC右声道输出 可外接功放、耳机 5 DACL DAC左声道输出 可外接功放、耳机 6 SPK1 外接单声道喇叭 接3W/4Ω或2W/8Ω无源喇叭 7 SPK2 外接单声道喇叭 接3W/4Ω或2W/8Ω无源喇叭 8 VCC 电源正极 3.6-5V 9 IO5 触发输入口5 接地触发 10 IO4 触发输入口4 接地触发 11 IO3 触发输入口3 接地触发 12 IO2 触发输入口2 接地触发 13 IO1 触发输入口1 接地触发 14 GND 电源负极 系统地 15 DP USB数据线 读U盘或用USB数据线连接电脑更换TF卡内容 16 DM USB数据线 ![](https://cf01.ickimg.com/bbsimages/202105/073402a82f6dafbb57919b8d87f62335.jpg) ![](https://cf01.ickimg.com/bbsimages/202105/58601f49a4a1e5a681cbc275e97c7f74.jpg) 模块接线应用图 ![](https://cf01.ickimg.com/bbsimages/202105/e5b39d7613db0a518b47729d6d4f03f3.jpg) ![](https://cf01.ickimg.com/bbsimages/202105/93e4887c3aabe3aeb5772a9166ad3d73.jpg) ![](https://cf01.ickimg.com/bbsimages/202105/b7448009e9de07030ef8eef8f0b5c8ab.jpg) ![](https://cf01.ickimg.com/bbsimages/202105/e4474a1b1333670d88efde5381e97e56.jpg) 模块工作模式 1)串口模式 模块支持异步串口通讯模式,通过串口接受控制命令 串口指令格式 ![](https://cf01.ickimg.com/bbsimages/202105/630255476712d3f2856d7363e659fe2b.jpg) 串口控制指令 ![](https://cf01.ickimg.com/bbsimages/202105/5109838a5fabb87508d433566255390e.jpg) 串口查询指令 ![](https://cf01.ickimg.com/bbsimages/202105/0df1f4a96be59d12d4b3bb24274b64c3.jpg) 2)AD按键模式 模块还支持AD按键控制方式,取代了传统了矩阵键盘的接法,这样做的好处是充分利用了MCU越来越强大的AD功能。设计简约而不简单,我们模块默认配置2个AD口,20个按键的阻值分配。按键使用示意原理图 ![](https://cf01.ickimg.com/bbsimages/202105/2b554fcc58f57469e61f9eb932b9933c.png) 3)IO模式 本模块也支持简单的IO模式 ![](https://cf01.ickimg.com/bbsimages/202105/b70b7b2ebaa90d4f1f7aa651869b4659.jpg) 实验开源代码 ```cpp /@@* 【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() { } ``` 实验场景图 ![](https://cf01.ickimg.com/bbsimages/202105/c7aa8658bc4b95c053c1edd0167d4931.jpg) 收集整理的使用
库的控制语句汇总 ```cpp 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、偶然发现这个模块使用不同的库,相关的控制语句完全不相同。 ```cpp /@@* 【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; 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; } } ``` 实验串口返回情况 ![](https://cf01.ickimg.com/bbsimages/202105/5b28369654c2e328ac7aa4a575904c38.jpg) 实验开源仿真编程(Linkboy V4.2) ![](https://cf01.ickimg.com/bbsimages/202105/d50a2f2b0d12a3f97590d709fdbc5dee.jpg) ![](https://cf01.ickimg.com/bbsimages/202105/adedcff1731d96b0045a755c0bab2537.jpg) ![](https://cf01.ickimg.com/bbsimages/202105/e0dbc9503e34eabd2ec0d777d4f95472.jpg) 实验开源图形编程(Mixly、Mind+、编玩边学) ![](https://cf01.ickimg.com/bbsimages/202105/8ca3886b0a52001a53e120f49b3e0ea6.jpg) ![](https://cf01.ickimg.com/bbsimages/202105/8a5fa9dc9f1fd1f9405502753064f496.jpg)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
雕爷学编程
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交