概述
文章目录
- 简述
- 器件
- 代码部分
- 测试结果
- 总结
简述
这里利用语音识别模块与arduino UNO 测试一个简单的语音控制小灯亮灭的程序。希望能给我一样的在两个东西的串口通信有困惑的小伙伴一个参考。有做的不对的地方,欢迎大家一起交流学习。
器件
语音模块LDV7
由一片stc11单片机和LD3320组成,我用的这个语音模块有五个针脚,分别是GND,RXD,TXD,3.3V,5V。此模块的工作电压是5v(使用手册说的是5v,但是我实际使用的结果是烧写代码用的5v,与arduino相连用的3.3v。如果连接arduino的5v就无法正常工作),代码的烧写需要用到USB转TTL与电脑端相连。(注意语音模块的RXD与TXD要跟USB转TTL模块的RXD,TXD反接)用keil编译代码后再用串口助手进行烧写。
(注:跟我一样在语音模块上没有复位按钮的需要在烧写代码时拔插GND口的线进行从新上电才能烧写进代码)
arduino UNO
这个就不再多介绍,使用的是0和1口,也就是RXD,TXD。接线图如下:
这里连接一个小灯来测试从串口的数据。下面进入代码。
代码部分
语音模块代码
由于这个语音模块的分为几个模式。并且代码也由厂商写好,只需要我们修改部分代码然后进行烧写即可。
我们没有用到语音模块的io口,所以这里我采用口令模式就可以了。进入代码有三个地方需要我们修改分别是LDChip.c中的关键词修改(包括唤醒指令及命令指令)、识别码以及识别码的宏定义修改和main中的发送的数据进行自行修改。如下图:
方便测试,我只修改了main函数中发送的数据。将开灯和关灯发送的数据修改为1和2。如下图展示的:
完成修改就能烧写进语音模块并与arduino相连。
arduino代码部分
int md;
void setup() {
Serial.begin(9600);
pinMode(7,OUTPUT);
//pinMode();
}
void loop() {
while(1)
{
if(Serial.available()>0)
{
md=Serial.read();
switch(md)
{
case 49:
digitalWrite(7,HIGH);
break;
case 50:
digitalWrite(7,LOW);
break;
}
Serial.println(md);
}
}
}
这个测试代码需要解释的地方就是为什么接受到数据是49和50.这也是我自己疏忽的地方,因为我们发过来的是字符1和2,而arduino从串口缓冲器获取的数据是1和2的ASCII码也就是49,50。(当然也可以用char定义或者md==‘1’)。其他的也就没什么问题。
测试结果
测试结果我就用arduino编译器自带的串口监视器展示:
总结
做了一个LDV7语音模块与arduino串口传输的测试程序。方便记忆,也希望对有需要的人有帮助。如果对编写代码的keil有问题的欢迎和我交流。
最后
以上就是心灵美仙人掌为你收集整理的arduino与语音模块LDV7(LD3320)的串口通信实现简单语音控制简述器件代码部分测试结果总结的全部内容,希望文章能够帮你解决arduino与语音模块LDV7(LD3320)的串口通信实现简单语音控制简述器件代码部分测试结果总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复