友情提示:380元/半年,儿童学编程,就上码丁实验室。
外 观
概 述
- DFRduino Player 语音播放模块的设计初衷是为了让您的机器人会说话。
- 如果机器人能与人进行简单的交流的话,那么机器人就会显的更加智能,同时也增加了不少可玩性。
- DFRduino Player V3.0,改为炬力硬编解码芯片,增加了录音功能,支持中文TTS语音合成及更多指令,sd卡兼容性更强,兼容市面上常见的32GBytes及以下的SD卡 。
- 模块具有立体声输出,可与有源音箱连接;2路功放输出,每路最大3W,可直接接喇叭;通过一个专用MP3编解码芯片进行处理,完全不占用Arduino或其他控制器上的资源,只需要将语音文件放置在SD卡中,Arduino或其他控制器便可以实现播放。
- 也可以实现录音到sd卡中,还提供一个播放完毕提示端口,当播放完一首歌曲后,OUT 会输出一个高脉冲。
注意:当前版本USB功能暂未开发
技术规格
- 工作电压:5V
- 工作电压:大于200mA(带负载时)
- 驱动负载:建议4欧或8欧(扬声器内阻)
- 输出功率:每路最大3W(4欧内阻扬声器)
- 存储卡:完全支持FAT16、FAT32文件系统,最大支持32G的TF卡
- 支持格式:.WAV、.MP3这两种文件格式
- 通信格式:19200bps,格式8 N 1
- 模块尺寸:52 X 37mm
- 模块重量:30g
产品样式图
-
串口排针接口:
- 1.+5V 电源正,要保证电源电压为5V,电流最好大于1000毫安,如果电流不够需要将音量调小或者使用单个喇叭播放。
- 2.GND 电源地
- 3.RX 串口数据接收端
- 4.TX 串口数据发送端
- 5.OUT 语音结束中断输出,当语音结束时输出一个1毫秒低电平
-
扬声器接口:
- L_SP:左声道
- R_SP:右声道
-
红色指示灯:电源指示灯
-
绿色指示灯:初始化成功后将长亮,如果SD卡未插好或SD是坏的,指示灯将一直闪烁,同时串口会输出 Plese check micro SD cardrn
模块通讯协议
串口模式,波特率19200bps,格式8N1。
通讯指令使用字符串形式,rn表示回车换行符,发送命令后有字符串形式的返回值。
功能名称 | 指令 | 返回值 | 备注 |
暂停播放 | :prn | 成功返回pausern | rn表示回车换行符 |
继续播放 | :srn | 成功返回startrn | rn表示回车换行符 |
下一首 | :nrn | 成功返回nextrn 失败返回 falsern | rn表示回车换行符 |
上一首 | :urn | 成功返回key uprn | rn表示回车换行符 |
音量设置 | :v Xrn(备注:是v空格再跟数字,范围为0-255,0表示静音,255表示最大声音) | 成功返回vol set okrn | X=0-255,数字越大音量越大 |
查看歌曲列表 | :lrn | 成功返回歌曲列表rn | 歌曲列表最后会紧跟一个End of FileList |
指定文件播放 | 语音文件名称rn | 成功返回Play okrn 失败返回 Not foundrn 播放完毕返回 Play endrn | 语音文件名称必须为大写字母,不超过8个英文字母或者4个中文字,输入文件名需要包含类型后缀 |
录音开始 | :rrn | 成功返回recordrn | 开启mic录音,启动录音后,中间不再支持其他控制命令,除非发送:e退出录音应用。 |
录音结束 | :ern | 输出:exit recordrn | 停止录音,并依次自动保存为:REC001.mp3 REC002.mp3 …… |
播放tts语音 | :t 语音文字rn | 成功返回Play okrn 失败返回 Not foundrn 播放完毕返回 Play endrn | 语音不超过21个中文字 |
版本查询 | :irn | 成功返回DFRduino Player V3.0 rn www.DFRobot.com rn |
使用教程
按键录音机
-
- 将SD卡插到sd卡插槽中
-
- 为模块供电
-
- 按住REC按钮不放,对着麦克风说话,说完后松开REC按钮。
-
- 录音文件将存放在RECORD目录下,文件名为RECxxx.mp3
简易录音机
a) 目标:实现录制mp3文件到sd卡中
b) 硬件清单
- DF_UNO 1
- ADKeyboard 1
- 本模块 1
- micro SD卡读写器
- 杜邦线
c) 软件清单
- Arduino IDE
d) 连线图
e) 操作步骤
- 在电脑上先将SD卡格式化为FAT格式,音频文件放在根目录下。
- 将SD卡插入模块内
- 打开Arduino IDE
- 将下面的代码上传到UNO (注意:UNO只有一个串口,因此程序下载和DFRduino Player模块不能同时使用)
- 按连接图进行连线,并对UNO进行供电,建议使用外部电源。
/////////////////////////////////////////////////////////////////////////////////
//使用命令完成录音
//:rrn 开始录音指令
//:ern 结束录音指令
/////////////////////////////////////////////////////////////////////////////////
//串口接线方式
//Arduino MP3
//TX RX
//RX TX
//5V +5V
//GND GND
int adc_key_val[5] ={600, 650, 700, 800, 950 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup()
{
Serial.begin(19200);
delay(2000); //Wait for initialization
Serial.println("\:v 200"); //Set the volume, from 0 (minimum)-255 (maximum)
delay(50);
}
void loop()
{
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey) // if keypress is detected
{
delay(50); // wait for debounce time
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey)
{
oldkey = key;
if (key >=0){
switch(key)
{
case 0:
Serial.println("\:r"); // start record
break;
case 1:
Serial.println("\:e");// exit record
break;
default:
break;
}
}
}
}
delay(100);
}
// Convert ADC value to key number
int get_key(unsigned int input)
{
int k;
for (k = 0; k < NUM_KEYS; k++)
{
if (input < adc_key_val[k])
{
return k;
}
}
if (k >= NUM_KEYS)k = -1; // No valid key pressed
return k;
}
f) 实现效果 按下按钮实现相应功能:
- S1 – 开始录音
- S2 – 结束录音
简易播放器
a) 目标:实现播放、暂停、下一首、上一首功能
b) 硬件清单
- DF_UNO 1
- 扬声器 2
- ADKeyboard 1
- 本模块 1
- micro SD卡读写器
- 杜邦线
c) 软件清单
- Arduino IDE
d) 连线图
- 在电脑上先将SD卡格式化为FAT格式,音频文件放在根目录下。
- 将SD卡插入模块内
- 打开Arduino IDE
- 将下面的代码上传到UNO (注意:UNO只有一个串口,因此程序下载和DFRduino Player模块不能同时使用)
- 按连接图进行连线,并对UNO进行供电,建议使用外部电源。
/////////////////////////////////////////////////////////////////////////////////
//将音频文件放在根目录下,支持.WAV、.MP3 这两种文件格式
//电压 5V,电流保证有1000毫安,如果电流不够需要将音量调小或者使用单个喇叭
//指示灯的功能:
// 等待初始化成功后将长亮,如果SD卡未插好将一直闪烁同时
// 如果是串口模块将输出 Plese check micro SD cardrn
///////////////////////串口通信方式/////////////////////////////////////////////
// 播放音频:语音文件名称rn 播放相应名称的歌曲,如果找到歌曲播放正确将返回 Play okrn
// 如果失败返回 Not foundrn; 如果播放完毕返回 overrn(rn表示回车换行)
// 语音文件名称不超过8个英文字母,4个中文。
// 暂停播放\:prn 成功返回pausern
// 继续播放\:srn 成功返回startrn
// 播放下一首\:nrn 成功返回nextrn,失败返回 falsern
// 播放上一首\:urn 成功返回key uprn
// 音量设置\:v 255rn,设置音量大小 数字 0-255 数字越大音量越大,成功返回Play endrn
/////////////////////////////////////////////////////////////////////////////////
//串口接线方式
//Arduino MP3
//TX RX
//RX TX
//5V +5V
//GND GND
int adc_key_val[5] ={600, 650, 700, 800, 950 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup()
{
Serial.begin(19200);
delay(2000); //Wait for initialization
Serial.println("\:v 200"); //Set the volume, from 0 (minimum)-255 (maximum)
delay(50);
}
void loop()
{
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey) // if keypress is detected
{
delay(50); // wait for debounce time
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey)
{
oldkey = key;
if (key >=0){
switch(key)
{
case 0:
Serial.println("\:p"); // Pause
break;
case 1:
Serial.println("\:s");// Continoue to play
break;
case 2:
Serial.println("\:n"); // Play next
break;
case 3:
Serial.println("\:u"); // Play previous
break;
case 4: //Play specified song
Serial.println("\YOURS.mp3");
break;
}
}
}
}
delay(100);
}
// Convert ADC value to key number
int get_key(unsigned int input)
{
int k;
for (k = 0; k < NUM_KEYS; k++)
{
if (input < adc_key_val[k])
{
return k;
}
}
if (k >= NUM_KEYS)k = -1; // No valid key pressed
return k;
}
f) 实现效果 按下按钮实现相应功能:
- S1 – 暂停
- S2 – 继续播放
- S3 – 播放上一首
- S4 – 播放下一首
- S5 – 播放指定歌曲(由程序指定)
本文整理于 DFRobot wiki