基于BearPi开发板的语音控制开关(三)初识BY8001-16P串口语音模块
前文介绍,我已经准备了LD3320A语音识别模块和BY8001-16P串口语音模块,LD3320A用来识别语音,BY8001-16P用来播放提示音。在试用语音识别模块前我先简单研究了BY8001-16P。
把mp3文件拷贝到tf卡中,文件编号是按存入的先后顺序编排的。
IO口触发播放
根据上边的电路图接线,这里可以用USB转TTL模块,先通电,可以连接电脑USB和非PD充电头。当然这里也可以用其他5V供电设备。
BY8001-16P的供电电压是3.6V~5V,推荐4.2V,我一开始按推荐电压供电,播放音频时响一声就停,折腾半天没找到原因,后来换了5V供电好了。
先将两个模块的GND连接;SPK1和SPK2连接喇叭的正负极,不区分正负;将两个模块的VCC连接。这里可以先不接RXD
和TXD
两个引脚。
将语音模块的IO1和GND用一个导线触连一下,即开始播放第一个mp3。
该模块有5个触发IO口,支持15段按键一对一触发播放。
这里遇到一个问题,就是当尝试按上表规则播放第二个mp3的时候没有反应,播放第三个的时候播放的是第二个,播放第四个又没反应,播放第五个实际播放第三个,以此类推。后来命令行查看的时候才发现,不知道为什么产生了一些缓存文件,缓存文件占位导致的。
串口控制播放
这里要用到USB转TTL模块,参照模块电路图连接喇叭、RXD
、TXD
和供电。注意,两个模块的RXD
、TXD
要交叉连接。
如果ch340的驱动还没有安装,可参照前边的文章安装。
打开串口调试软件,选择COM口,设置波特率为9600
,数据位为8
,起始位为1
,停止位为1
,校验位为None
,选择16进制(HEX)发送。
串口命令依次由起始码、长度、操作码、参数1、参数2、校验码、结束码组成,以下命令都以16进制表示。
常用控制命令:
- 播放
起始码 | 长度 | 操作码 | 校验码 | 结束码 |
---|---|---|---|---|
0x7E | 0x03 | 0x01 | 0x02 | 0xEF |
- 暂停
起始码 | 长度 | 操作码 | 校验码 | 结束码 |
---|---|---|---|---|
0x7E | 0x03 | 0x02 | 0x01 | 0xEF |
- 下一曲
起始码 | 长度 | 操作码 | 校验码 | 结束码 |
---|---|---|---|---|
0x7E | 0x03 | 0x03 | 0x00 | 0xEF |
- 上一曲
起始码 | 长度 | 操作码 | 校验码 | 结束码 |
---|---|---|---|---|
0x7E | 0x03 | 0x04 | 0x07 | 0xEF |
- 音量加
起始码 | 长度 | 操作码 | 校验码 | 结束码 |
---|---|---|---|---|
0x7E | 0x03 | 0x05 | 0x06 | 0xEF |
- 音量减
起始码 | 长度 | 操作码 | 校验码 | 结束码 |
---|---|---|---|---|
0x7E | 0x03 | 0x06 | 0x05 | 0xEF |
- 快进
起始码 | 长度 | 操作码 | 校验码 | 结束码 |
---|---|---|---|---|
0x7E | 0x03 | 0x0A | 0x09 | 0xEF |
- 快退
起始码 | 长度 | 操作码 | 校验码 | 结束码 |
---|---|---|---|---|
0x7E | 0x03 | 0x0B | 0x08 | 0xEF |
- 停止
起始码 | 长度 | 操作码 | 校验码 | 结束码 |
---|---|---|---|---|
0x7E | 0x03 | 0x0E | 0x0D | 0xEF |
- 设置单曲循环播放
起始码 | 长度 | 操作码 | 参数 | 校验码 | 结束码 |
---|---|---|---|---|---|
0x7E | 0x04 | 0x34 | 0x01 | 0x31 | 0xEF |
如下图所示,当向模块发送播放命令 7E 03 01 02 EF
时,返回 OK
,并开始播放,播放完返回 STOP
。