本帖最后由 沧海笑 于 2012-10-8 23:51 编辑
评测项目:DFR0112 Arduino IIC/TTL串口SD卡音乐 mp3 机器人语音播放器
时间:2012-03~10
1、板子外观:
板子做工比较精致,与喇叭尺寸相比,算是小巧。
2、连接方式
(1)左侧接口连接arduino,有两种方式:串口或者I2C通信方式,可以通过跳线选择。I2C方式:+5V,GND不必说,DO接A4,DI接A5
(2) 单/双声道选择:MONO短路子(短接为单声道)。
连接后是这样的。
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控制,很方便用上位机编程。或者用按钮(需要加电阻,编程时注意延时去抖)引入开关量,很便利地控制歌曲的播放、暂停、上下曲选择以及特定歌曲播放、音量调节。(发热情况不严重,比较轻)
(3)用途
a.因为体积很小,所以第一感觉就是互动玩具,与语音识别模块配合,可以做预先录制好的应答库。然后根据互动结果输出。
b.与液晶配合(英文数字歌曲名可以用1602),显示歌曲名称(使用串口模式),做一个小的MP3播放器。当然,这个功能需要详细的技术手册。
c.与oled2864配合,我希望能够试试视觉电子乐,(电位器可以调节声音)也许是另外一种很炫的玩法。很期待这个尝试。
5、需要注意的问题
(1)需要注意的问题就是micro sd卡的选择,就是那种手机卡,为了考虑和W5100模块兼容,最好选择2G以下的,我测试了两种卡,都认,不像W5100模块挑卡。下图就是我的诺基亚手机的卡。
(2)这块板子到手比较早,和语音识别模块一起买的,当时也评测了,但是没有整理。现在DF好像已经升级了这款模块,本文仅供参考。
(3)板子与arduino UNO不是叠装方式,板子本身有四个比较合适的安装孔(在四角),可以通过铜柱固定。
|