700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > arduino与语音模块LDV7(LD3320)的串口通信实现简单语音控制

arduino与语音模块LDV7(LD3320)的串口通信实现简单语音控制

时间:2024-03-19 05:09:03

相关推荐

arduino与语音模块LDV7(LD3320)的串口通信实现简单语音控制

文章目录

简述器件代码部分测试结果总结

简述

这里利用语音识别模块与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有问题的欢迎和我交流。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。