arduino+SNR8051离线语音识别 的小制作
前言
该方案可以低成本快速制作小作品,本身是用来水期末arduino课程设计😁(竟然放在考试周),一个下午做了一个语音控制灯光亮灭、亮度和风扇开关的小作品。技术含量不高,单纯是为了水课程设计和练习练习焊接。
该小制作由于时间仓促,现有功能极其有限,可以根据自己需要进行魔改。语音模块SNY8015唯一的好处就是便宜,但是自个修改内部程序较为复杂(在没有购买专用下载器的情况下,下载器价格昂贵),个人还是推荐用LD3320做比较好,毕竟可操作性比较强。很容易做的。
器材
- arduino nano核心板 9.98元
- SNR8051 语音识别芯片 18.9元
- 电源转换器
- 洞洞板
- 继电器 ×3
- 灯带
- 风扇
设计思路

电路连接
只介绍核心部件连接
| ARDUINO NANO | SNR8051 |
|---|---|
| 9 | TX |
| 10 | RX |
| 5V | 5V |
| GND | GND |
说明
SNY8051通信只有USART,有个指令集,看图吧

每次成功识别后都会返回一串16进制数,arduino根据反馈的数据进行判别,做出相应的动作。同理arduino也可通过发送指令控制语音识别模块发出语音。
控制灯光仅仅是通过继电器控制电压做到的。
代码
#include
int brightness = 0; SoftwareSerial BT(9, 10);
String recipt="";void setup() {Serial.begin(9600,SERIAL_8N1);BT.begin(9600);pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(5, OUTPUT); }void loop() {int i,j;while (BT.available()) {//从串口中读取数据int in = (char)BT.read();recipt+=in;delay(2);}if(recipt.length()>0){//先输出一下接收到的数据Serial.print(recipt);Serial.print(' ');if(recipt=="-1262-1" ||recipt=="-1265-1"||recipt=="-1267-1" ) //打开灯光,灯光调暗,最小亮度 digitalWrite(2, 1); digitalWrite(3, 0); if(recipt=="-1266-1"||recipt=="-1264-1" ) //最大亮度digitalWrite(3, 1); if(recipt=="-1263-1")//关闭灯光digitalWrite(2, 0); if(recipt=="-1268-1")//打开风扇digitalWrite(5, 1); if(recipt=="-1269-1")//关闭风扇digitalWrite(5, 0); }recipt="";
}
这里16进制当做10进制字符串处理了,自个可以随便改。
成品展示
可以通过语音唤醒设备,通过识别提前设置好的语音进行相关操作,比如打开灯光、调节亮度,打开风扇等等。



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
