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

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验八十二:MP3播放器 开源 Mini MP3 Player 播放器 SD卡 音乐DFPlayer模块(YX5200-24SS芯片)


YX5200-24SS

是一个提供串口的MP3芯片,完美的集成了MP3、WMV的硬解码。同时软件支持TF卡驱动和USB驱动,以及外挂FLASH。支持FAT16、FAT32文件系统。通过简单的串口指令即可完成播放指定的音乐,以及如何播放音乐等功能,无需繁琐的底层操作,使用方便,稳定可靠是此款产品的最大特点。


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%。


特色功能

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


YX5200-24SS电原理图



应用领域

1.汽车导航语音播报

2.公路运输检查员,收费站语音提示

3.火车,公交车安全检查语音提示

4.电力,通讯,财务手术室语音提示

5.车辆进出通道以验证语音提示

6.边境频道语音提示

7.多声道语音报警或语音导航设备操作

8.带语音通知的电动观光巴士安全

9.机电设备故障报警

10.火警语音提示

11.自动播放设备,定期播放


Mini MP3 Player播放器模块

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


模块管脚图

管脚号        管脚名称        功能描述        备注

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数据线



模块应用图


模块工作模式

1)串口模式

模块支持异步串口通讯模式,通过串口接受控制命令

串口指令格式


串口控制指令


串口查询指令


2)AD按键模式

模块还支持AD按键控制方式,取代了传统了矩阵键盘的接法,这样做的好处是充分利用了MCU越来越强大的AD功能。设计简约而不简单,我们模块默认配置2个AD口,20个按键的阻值分配。按键使用示意原理图


3)IO模式

本模块也支持简单的IO模式


实验开源代码

/*

【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()

{

}

实验场景图


收集整理的使用<DFRobotDFPlayerMini>库的控制语句汇总


//收集整理的使用<DFRobotDFPlayerMini>库的控制语句汇总

  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;

    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;

 }

}

实验串口返回情况

实验开源仿真编程(Linkboy V4.2)

实验开源图形编程(Mixly、Mind+、编玩边学)


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容