基于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连接。这里可以先不接RXDTXD两个引脚。


将语音模块的IO1和GND用一个导线触连一下,即开始播放第一个mp3。

该模块有5个触发IO口,支持15段按键一对一触发播放。

这里遇到一个问题,就是当尝试按上表规则播放第二个mp3的时候没有反应,播放第三个的时候播放的是第二个,播放第四个又没反应,播放第五个实际播放第三个,以此类推。后来命令行查看的时候才发现,不知道为什么产生了一些缓存文件,缓存文件占位导致的。

串口控制播放

这里要用到USB转TTL模块,参照模块电路图连接喇叭、RXDTXD和供电。注意,两个模块的RXDTXD要交叉连接。
如果ch340的驱动还没有安装,可参照前边的文章安装。
打开串口调试软件,选择COM口,设置波特率为9600,数据位为8,起始位为1,停止位为1,校验位为None,选择16进制(HEX)发送。

串口命令依次由起始码、长度、操作码、参数1、参数2、校验码、结束码组成,以下命令都以16进制表示。

常用控制命令:

  1. 播放
起始码 长度 操作码 校验码 结束码
0x7E 0x03 0x01 0x02 0xEF
  1. 暂停
起始码 长度 操作码 校验码 结束码
0x7E 0x03 0x02 0x01 0xEF
  1. 下一曲
起始码 长度 操作码 校验码 结束码
0x7E 0x03 0x03 0x00 0xEF
  1. 上一曲
起始码 长度 操作码 校验码 结束码
0x7E 0x03 0x04 0x07 0xEF
  1. 音量加
起始码 长度 操作码 校验码 结束码
0x7E 0x03 0x05 0x06 0xEF
  1. 音量减
起始码 长度 操作码 校验码 结束码
0x7E 0x03 0x06 0x05 0xEF
  1. 快进
起始码 长度 操作码 校验码 结束码
0x7E 0x03 0x0A 0x09 0xEF
  1. 快退
起始码 长度 操作码 校验码 结束码
0x7E 0x03 0x0B 0x08 0xEF
  1. 停止
起始码 长度 操作码 校验码 结束码
0x7E 0x03 0x0E 0x0D 0xEF
  1. 设置单曲循环播放
起始码 长度 操作码 参数 校验码 结束码
0x7E 0x04 0x34 0x01 0x31 0xEF

如下图所示,当向模块发送播放命令 7E 03 01 02 EF 时,返回 OK,并开始播放,播放完返回 STOP