本帖最后由 沧海笑 于 2012-10-8 23:51 编辑  
 
评测项目:DFR0112 Arduino IIC/TTL串口SD卡音乐 mp3 机器人语音播放器 
时间:2012-03~10 
 
1、板子外观: 
![[DFR0112 Arduino mp3 播放模块]评测图3](https://mc.dfrobot.com.cn/data/attachment/forum/201210/08/233027sr9ir05did5o0bdj.jpg)  
板子做工比较精致,与喇叭尺寸相比,算是小巧。 
 
2、连接方式 
(1)左侧接口连接arduino,有两种方式:串口或者I2C通信方式,可以通过跳线选择。I2C方式:+5V,GND不必说,DO接A4,DI接A5 
(2) 单/双声道选择:MONO短路子(短接为单声道)。 
    连接后是这样的。 
![[DFR0112 Arduino mp3 播放模块]评测图1](https://mc.dfrobot.com.cn/data/attachment/forum/201210/08/2330238fnnns00tsfglqf4.jpg)  
3、看看代码(来自DFR网站介绍,因为注释比较详细了,就不再解释)
			
			
			- /////////////////////////////////////////////////////////////////////////////////
 - //将音频文件放在根目录下的sound文件夹 (sound),支持.WAV、.MP3、.MIDI 这三种文件格式
 - //模块的MOD跳针用于选择 串口(UART) 或者I2C接口,MONO短路子用于当只适用一个喇叭的时候
 - //短路这个跳针作为单声道输出
 - //电压 5V,电流保证有1000毫安,如果电流不够需要将音量调小或者使用单个喇叭
 - //指示灯的功能: 开机后短促闪烁一次说明进入串口模式,闪烁两次进入I2C模式
 - //               等待初始化成功后将长亮,如果SD卡未插好将一直闪烁同时
 - //               如果是串口模块将输出 Plese check micro SD card\r\n
 - ///////////////////////串口或者I2C通信方式/////////////////////////////////////////////
 - // 播放音频:语音文件名称\r\n 播放相应名称的歌曲,如果找到歌曲播放正确将返回 Play ok\r\n
 - // 如果失败返回 Not found\r\n; 如果播放完毕返回 over\r\n(\r\n表示回车换行)
 - // 语音文件名称不超过8个英文字母,4个中文。I2C接口无命令返回
 - // 暂停播放\\:p\r\n   成功返回pause\r\n
 - // 继续播放\\:s\r\n   成功返回start\r\n
 - // 播放下一首\\:n\r\n   成功返回next\r\n,失败返回 false\r\n
 - // 播放上一首\\:u\r\n  成功返回key up\r\n
 - // 音量设置\\:v255\r\n,设置音量大小 数字 0-255 数字越大音量越大,成功返回vol set ok
 - /////////////////////////////////////////////////////////////////////////////////
 -  
 - //IIC接线方式
 - //Arduino    MP3
 - //模拟口4    DO
 - //模拟口5    DI
 - //5V         +5V
 - //GND        GND
 -  
 - #include <Wire.h>
 - #include <stdlib.h>
 - #define ArduinoPlayer_address 0x35  //定义ArduinoPlayer 语音播放模块I2C地址
 -  
 - void TwiSend(const char  *cmd)  //I2C发送命令函数
 - {
 -   char len = 0;
 -   len = strlen(cmd); //计算字符串长度
 -   Wire.beginTransmission(ArduinoPlayer_address); // ArduinoPlayer 语音播放模块I2C地址
 -   while(len--)
 -   {
 -     Wire.send(*(cmd++));     
 -   }
 -   Wire.endTransmission();    // stop transmitting
 - }
 - void setup()
 - {
 -   Wire.begin(); // join i2c bus (address optional for master)
 -   Serial.begin(9600);
 -   delay(2000);//等待2秒钟播放器初始化完成
 -   Serial.println("Ready");
 -   TwiSend("\\:v 255\r\n");    // 音量设置最大  数字 0-255 数字越大音量越大
 - }
 -  
 - //接收串口命令字符,执行相应操作
 - void loop()
 - {
 -   int val;
 -   if(Serial.available() > 0)
 -   {
 -     val=Serial.read();
 -     switch(val)
 -     {
 -     case 'p':      // 暂停播放
 -       TwiSend("\\:p\r\n");
 -       Serial.println("OK");
 -       break;
 -     case 's':     // 继续播放
 -       TwiSend("\\:s\r\n");
 -       Serial.println("OK");
 -       break;    
 -     case  'n':
 -       TwiSend("\\:n\r\n");  // 播放下一首
 -       Serial.println("OK");
 -       break;
 -     case 'u':
 -       TwiSend("\\:u\r\n"); // 播放上一首
 -       Serial.println("OK");
 -       break;
 -     case  'm':      //播放名称为yes的音频文件
 -       //注意:必须将音量控制放在播放之前
 -       TwiSend("\\:v 250\r\n");    // 音量设置250 数字 0-255 数字越大音量越大
 -       TwiSend("\\yes\r\n");
 -       Serial.println("OK");
 -       break;  
 -     default:
 -       break;   
 -     }
 -   }
 - }
 
  复制代码 4、评测情况 
(1)通过串口助手控制歌曲播放,P代表暂停;S是恢复播放;N/U上下翻动歌曲,M是播放特定名称歌曲。配套的小喇叭倒不是很给力,你也可以考虑输出给功放。 
(2)感觉:控制起来是比较流畅的,通过串口方式由PC控制,很方便用上位机编程。或者用按钮(需要加电阻,编程时注意延时去抖)引入开关量,很便利地控制歌曲的播放、暂停、上下曲选择以及特定歌曲播放、音量调节。(发热情况不严重,比较轻)![[DFR0112 Arduino mp3 播放模块]评测图4](https://mc.dfrobot.com.cn/data/attachment/forum/201210/08/2330286kk77u64lrlyxzky.jpg)  
(3)用途 
a.因为体积很小,所以第一感觉就是互动玩具,与语音识别模块配合,可以做预先录制好的应答库。然后根据互动结果输出。 
b.与液晶配合(英文数字歌曲名可以用1602),显示歌曲名称(使用串口模式),做一个小的MP3播放器。当然,这个功能需要详细的技术手册。 
c.与oled2864配合,我希望能够试试视觉电子乐,(电位器可以调节声音)也许是另外一种很炫的玩法。很期待这个尝试。 
 
5、需要注意的问题 
(1)需要注意的问题就是micro sd卡的选择,就是那种手机卡,为了考虑和W5100模块兼容,最好选择2G以下的,我测试了两种卡,都认,不像W5100模块挑卡。下图就是我的诺基亚手机的卡。 
   
(2)这块板子到手比较早,和语音识别模块一起买的,当时也评测了,但是没有整理。现在DF好像已经升级了这款模块,本文仅供参考。 
(3)板子与arduino UNO不是叠装方式,板子本身有四个比较合适的安装孔(在四角),可以通过铜柱固定。  
 
 
 
 
 
 |