文章目录

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


简述

这里利用语音识别模块与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编译代码后再用串口助手进行烧写。

ARDUINO 怎么设置语音识别 命令词 arduino语音识别教程_串口


(注:跟我一样在语音模块上没有复位按钮的需要在烧写代码时拔插GND口的线进行从新上电才能烧写进代码)arduino UNO

这个就不再多介绍,使用的是0和1口,也就是RXD,TXD。接线图如下:

ARDUINO 怎么设置语音识别 命令词 arduino语音识别教程_编写代码_02


ARDUINO 怎么设置语音识别 命令词 arduino语音识别教程_数据_03

这里连接一个小灯来测试从串口的数据。下面进入代码。

代码部分

语音模块代码

由于这个语音模块的分为几个模式。并且代码也由厂商写好,只需要我们修改部分代码然后进行烧写即可。

ARDUINO 怎么设置语音识别 命令词 arduino语音识别教程_单片机_04


我们没有用到语音模块的io口,所以这里我采用口令模式就可以了。进入代码有三个地方需要我们修改分别是LDChip.c中的关键词修改(包括唤醒指令及命令指令)、识别码以及识别码的宏定义修改和main中的发送的数据进行自行修改。如下图:

ARDUINO 怎么设置语音识别 命令词 arduino语音识别教程_串口_05


ARDUINO 怎么设置语音识别 命令词 arduino语音识别教程_数据_06


ARDUINO 怎么设置语音识别 命令词 arduino语音识别教程_串口_07


方便测试,我只修改了main函数中发送的数据。将开灯和关灯发送的数据修改为1和2。如下图展示的:

ARDUINO 怎么设置语音识别 命令词 arduino语音识别教程_单片机_08


完成修改就能烧写进语音模块并与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编译器自带的串口监视器展示:

ARDUINO 怎么设置语音识别 命令词 arduino语音识别教程_数据_09

总结

做了一个LDV7语音模块与arduino串口传输的测试程序。方便记忆,也希望对有需要的人有帮助。如果对编写代码的keil有问题的欢迎和我交流。