[DFR0112 Arduino mp3 播放模块]评测
本帖最后由 沧海笑 于 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不是叠装方式,板子本身有四个比较合适的安装孔(在四角),可以通过铜柱固定。
好文章不顶不行。新版的MP3模块兼容gadgeteer接口,同时有排针输出接普通Arduino,取消了IIC接口,只有串口。 mickey兄,看资料,有串口可以读取mp3文件名是吗?这样一来,结合oled 2864,可以显示歌名。
另外:兼容gadgeteer接口,是不是可以和DF的Gadgeteer Audio Analyzer 语音分析模块对接,从而实现对mp3的音频分析,可视化展示其七个频段的幅值。这可以更好地发挥2864模块了。
有搞头。
唉,要是可以以旧换新就好了,:(
沧海笑 发表于 2012-10-10 18:12 static/image/common/back.gif
mickey兄,看资料,有串口可以读取mp3文件名是吗?这样一来,结合oled 2864,可以显示歌名。
另外:兼容gad ...
也许以后可以考虑这样的活动噢,不过目前暂时没有这样的活动呢。 对于沧海兄,这样的活动可以有! 嗯嗯,相当振奋,这段时间工作岗位调整,比较忙,看到这消息,振奋。 楼上大家好,挖坟的来了!我刚买了MINI PLAYER(DFR0299)MP3模块,可是库文件不全啊。兄弟小白,狂求 带“设置音量”函数的库文件。 沧海笑 发表于 2012-10-10 18:12
mickey兄,看资料,有串口可以读取mp3文件名是吗?这样一来,结合oled 2864,可以显示歌名。
另外:兼容gad ...
以旧换新,哈哈哈
页:
[1]