简介
您是否在寻找一款简单又强大的语音录放模块?看这里!这款语音录放模块支持arduino、AT指令、板载按键和AD按键四种控制方式。通过板载按键即使在没有微控制器的情况下也能进行录放音。模块支持多段语音录制,并且模块搭载了16MB的存储空间,可以录制大约40分钟的声音。通过USB线您可以很容易的将模块中的录音拷贝到电脑上。
特性
- 支持大约40分钟声音录制
- 支持多段语音录制
- 支持按键进行录放音
- 板载5W功放
- 支持模拟U盘
应用场景
- 毛绒玩具
- 个性化礼物
- 语音事件备忘录
技术规格
- 供电电压:3.3V~5V
- 工作电流:>10mA
- 存储空间:16MB
- 录音采样率:48kbs
- 通讯方式:UART
- 产品尺寸:26*30mm
引脚说明
序号 | 丝印 | 功能描述 |
---|---|---|
1 | VIN | 电源正极 |
2 | GND | 电源负极 |
3 | RX | UART接收 |
4 | TX | UART发送 |
5 | SPK+ | 功放输出+ |
6 | SPK- | 功放输出- |
7 | PLAY | 功能按钮 |
8 | REC | 功能按钮 |
9 | KEY | AD按键 |
10 | DAC | DAC输出 |
11 | GND | 电源负极 |
12 | MIC | 麦克风输入 |
使用教程
第一次使用时请用USB线将模块连接到电脑上进行格式化
准备
- 硬件
- 1 x Arduino UNO控制板
- 1 x breakout:语音录放模块
- 1 x 小喇叭
- 若干 杜邦线
- 软件
- Arduino IDE, 点击下载Arduino IDE
- DFRobot_DF1101S库文件和示例程序
关于如何安装库文件,点击链接
接线图
指示灯说明
状态 | 橙灯 | 蓝灯 |
---|---|---|
从机模式 | OFF | OFF |
录音模式 | 快闪 | OFF |
录音中 | 常亮 | OFF |
录音暂停 | 慢闪 | OFF |
播放中 | OFF | 常亮 |
播放暂停 | OFF | 慢闪 |
歌曲切换 | OFF | 闪烁两次 |
按键控制
录音
1.在从机模式下,点击REC按钮,进入录音模式,此时橙灯快闪(此时点击PLAY按钮可退出录音模式)
2.在录音模式下,点击REC按钮,开始录音,此时橙灯常亮(在录音中点击REC按钮可以暂停录音&继续录音)
3.在录音中或录音暂停时,点击PLAY按钮,保存并退出录音模式
播放
1.在从机模式下,点击PLAY按钮,进入音乐模式,此时蓝灯慢闪(此时点击REC按钮可退出音乐模式)
2.在音乐模式下,点击PLAY按钮,开始播放,此时蓝灯常亮(在播放中点击PLAY按钮可以暂停播放&继续播放)
3.在播放中长按PLAY两秒,可切换上一曲(此时蓝灯闪烁两次)
4.在播放中或播放暂停时,点击REC按钮,可以退出音乐模式
软件控制
- 主要API接口函数列表
/**
* @brief 设置音量
* @param vol:0-30
* @return true or false
*/
bool setVol(uint8_t vol);
/**
* @brief 设置工作模式
* @param eFunction_t:MUSIC,RECORD,UFDISK
* @return true or false
*/
bool switchFunction(eFunction_t function);
/**
* @brief 设置播放模式
* @param ePlayMode_t:SINGLECYCLE,ALLCYCLE,SINGLE
* @return true or false
*/
bool setPlayMode(ePlayMode_t mode);
/**
* @brief 播放(在音乐模式下) or 录音(在录音模式下)
* @return true or false
*/
bool start();
/**
* @brief 暂停播放(在音乐模式下) or 暂停录音(在录音模式下)
* @return true or false
*/
bool pause();
/**
* @brief 下一曲
* @return true or false
*/
bool next();
/**
* @brief 上一曲
* @return true or false
*/
bool last();
/**
* @brief 保存录音
* @return true or false
*/
bool saveRec();
/**
* @brief 播放指定编号文件一次(仅对默认文件名有效),如果没有则播放第一个文件
* @param 文件名编号:0-999
*/
void playSpecFile(int16_t num);
/**
* @brief 删除当前播放文件
* @return true or false
*/
bool delCurFile();
样例代码1 - 录音
上电后进入录音模式,2秒后开始录音,录音5S后保存录音,然后串口循环打印录音文件文件名。
/*!
* @file record.ino
* @brief Recording
* @n Experiment Phenomenon:Power on the module then it enters the recording mode.
* @n Start recording after 2 seconds and save the recorded voice file 5 seconds later.
* @n Print the file name repeatedly at the serial port.
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [fengli](li.feng@dfrobot.com)
* @version V1.0
* @date 2020-07-16
* @get from https://www.dfrobot.com
* @url https://github.com/DFRobot/DFRobot_DF1101S
*/
#include <DFRobot_DF1101S.h>
#include <SoftwareSerial.h>
SoftwareSerial df1101sSerial(2, 3); //RX TX
DFRobot_DF1101S df1101s;
String RECFileName; //录音文件名
void setup(void){
Serial.begin(115200);
df1101sSerial.begin(115200);
while(!df1101s.begin(df1101sSerial)){
Serial.println("初始化失败,请检查接线!");
delay(1000);
}
/*设置波特率,掉电保存,需掉电重启*/
//df1101s.setBaudRate(115200);
/*打开LED提示,掉电保存*/
//df1101s.setLED(true);
/*打开语音提示,掉电保存*/
//df1101s.setPrompt(true);
/*进入录音模式*/
df1101s.switchFunction(df1101s.RECORD);
/*等待提示音播放结束*/
delay(2000);
/*开始录音*/
df1101s.start();
/*暂停录音*/
//df1101s.pause();
delay(5000);
/*保存录音*/
RECFileName = df1101s.saveRec();
}
void loop(){
Serial.println(RECFileName);
delay(1000);
}
结果
样例代码2 - 播放
上电后进入音乐模式,开始播放最后一次的录音文件,3S后暂停播放,3S后播放下一曲,3S后播放上一曲,3秒后播放指定编号文件(FILE0000)一次
/*!
* @file play.ino
* @brief Playing
* @n Experiment Phenomenon:Power on the module then it enters the music mode.
* @n Start playing the previously-recorded file, pause 3s later,
* @n play the next song 3s later, play the last song 3s later,
@n and play the file of specific number(FILE0000) once 3s later.
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [fengli](li.feng@dfrobot.com)
* @version V1.0
* @date 2020-07-16
* @get from https://www.dfrobot.com
* @url https://github.com/DFRobot/DFRobot_DF1101S
*/
#include <DFRobot_DF1101S.h>
#include <SoftwareSerial.h>
SoftwareSerial df1101sSerial(2, 3); //RX TX
DFRobot_DF1101S df1101s;
void setup(void){
Serial.begin(115200);
df1101sSerial.begin(115200);
while(!df1101s.begin(df1101sSerial)){
Serial.println("初始化失败,请检查接线!");
delay(1000);
}
/*设置音量为20*/
df1101s.setVol(20);
Serial.print("VOL:");
/*获取音量*/
Serial.println(df1101s.getVol());
/*进入音乐模式*/
df1101s.switchFunction(df1101s.MUSIC);
/*等待提示音播放结束*/
delay(2000);
/*设置播放模式为全部循环*/
df1101s.setPlayMode(df1101s.ALLCYCLE);
Serial.print("PlayMode:");
/*获取播放模式*/
Serial.println(df1101s.getPlayMode());
}
void loop(){
/*开始播放*/
df1101s.start();
delay(3000);
/*暂停播放*/
df1101s.pause();
delay(3000);
/*播放下一曲*/
df1101s.next();
delay(3000);
/*播放上一曲*/
df1101s.last();
delay(3000);
/*播放指定编号文件(FILE0000)一次*/
df1101s.playSpecFile(0);
while(1);
/*删除正在播放的文件*/
//df1101s.delCurFile();
}
结果
AD按键控制
按键 | 串联电阻 | 点击 | 长按 |
---|---|---|---|
K0 | 0R | 暂停&播放 | |
K1 | 3K | 上一曲 | 音量+ |
K2 | 6.2K | 下一曲 | 音量- |
K3 | 9.1K | 播放模式切换 | |
K4 | 15K | REC | |
K5 | 24K | PLAY | |
K6 | 33K | 音量- | 音量- |
K7 | 51K | 音量+ | 音量+ |
K8 | 100K | 工作模式切换 | |
K9 | 220K | 删除当前播放文件 |
AT指令控制
注意:以下所有命令均省略了“\r\n”,实际使用时请添加在命令后面,例如“AT+VOL=5\r\n”,指定音量为5级
串口波特率默认115200
录音:
1.AT+FUNCTION=2 //进入录音模式
2.AT+REC=RP //开始录音
3.AT+REC=SAVE //保存录音
播放:
1.AT+FUNCTION=1 //进入音乐模式
2.AT+PLAY=PP //播放
/**
* @brief 测试连接
*/
AT //测试连接
/**
* @brief 音量控制(音量等级:0-30)
* @param -n:音量-n
* +n:音量加n
* n:指定音量为n
* ?:查询音量
*/
AT+VOL=-5 //音量-5
AT+VOL=? //查询音量
返回:VOL = [10] //当前音量为10
/**
* @brief 功能切换
* @param 1:音乐模式
* 2:录音模式
* 3:从机模式
*/
AT+FUNCTION=1 //切换到音乐模式
/**
* @brief 播放模式控制
* @param 1:单曲循环
* 2:全部循环
* 3:单曲播放完暂停
* ?:查询当前播放模式
*/
AT+PLAYMODE=1 //切换为单曲循环
AT+PLAYMODE=? //查询当前的播放模式
返回:PLAYMODE =1 //当前播放模式为:单曲循环
/**
* @brief 播放控制
* @param PP:播放&暂停
* NEXT:下一曲
* LAST:上一曲
*/
AT+PLAY=NEXT //下一曲
/**
* @brief 播放指定编号文件(默认文件名)或指定文件一次
* @param n:播放文件名标号为n的音乐文件(0-999),如果没有则播放第一个文件
* 文件路径:播放指定路径的文件
*/
AT+PLAYFILE=5 //播放FILE0005.mp3一次
AT+PLAYFILE=/DF_REC/test.MP3 //播放DF_REC下的test.mp3一次
/**
* @brief 删除当前播放文件
*/
AT+DEL
/**
* @brief 录音控制
* @param RP:录音&暂停录音
* SAVE:保存录音
*/
AT+REC=SAVE //保存录音
/**
* @brief 设置波特率(掉电保存,需再次上电生效)
* @param 9600、19200、38400、57600、115200
*/
AT+BAUDRATE=115200 //设置波特率为115200
/**
* @brief 提示音开关指令(掉电保存)
* @param ON、OFF
*/
AT+PROMPT=ON //打开提示音
//LED提示开关指令(掉电保存)
/**
* @brief LED提示开关指令(掉电保存)
* @param ON、OFF
*/
AT+LED=ON //打开LED指示
常见问题
A:进入音乐模式播放音乐,是从最后一个音频文件开始播放的
如果出现不能正常录音的情况,请更新最新固件解决
更新固件方法
1.解压download.zip
2.进入download/download文件夹找到download_flash_sdk.bat文件
3.使用能进行数据传输的USB线连接模块,双击download_flash_sdk.bat文件等烧录完成即可。
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。