单片机学习小组
直播中

万航渡路

8年用户 1328经验值
擅长:电源/新能源
私信 关注

LD3320语音识别模块与Arduino软串口通讯如何实现开关灯功能?

LD3320语音识别模块与Arduino软串口通讯如何实现开关灯功能?

回帖(1)

尹明

2022-1-24 11:22:13
写在前面

这学期跟同学一起计划实现一项小制作,对最主要的LD3320语音识别模块做一个小说明,因为在我们设计的过程中,网上都有很多这种类似的文章,但是跟Arduino交互的好像还没有。成品还没做出来,毕竟要求创新,后期会考虑加一些独到的功能。都是新手,一起交流学习才能进步。该模块用Arduino实现起来较为简单,主要还是靠店家给的单片机里面代码。
另外,这篇文章仅作为参考。如有做得不足或者不对的地方,欢迎一起交流学习
设备

我们用的板子是Arduino UNO R3 ATMEGA328P,还有LD3320,这个模块买的时候内置了一个STC11L08XE单片机以及一块小的咪头,不需要外接,操作起来简单易上手。

连接

因为用到的是软串口通讯,用程序模拟硬串口实现通信的功能,我将数字引脚2跟3作为TX与RX
LD3320—Arduino
3.3V—3.3V
TXD—D3
RXD—D2
GND—GND

部分代码
前面说过,这个LD3320模块已经集成了到了一个单片机上,用店家给的keil文件可以修改代码,作为一整个库,我们不需要对整个库文件做一个了解,在初步使用的基础上,只需要知道如何使用,如何通过修改一些代码实现移植完成自己的目的就行。前面说过,这仅作为参考。


一级口令修不修改都无所谓,然后设置“开灯”作为二级口令,并回传数值1到串口,“关灯”即回传2。


main.c


void         User_handle(uint8 dat)
{
  if(0==dat)
  {
    G0_flag=ENABLE;
//                  PrintCom("收到rn");
    LED=0;
  }
  else if(ENABLE==G0_flag)
  {
    G0_flag=DISABLE;
    LED=1;
    switch(dat)
                {
                case CODE_1:
                        UARTSendByte(0x01);   //其实就是多了这一句代码,将识别到第一个命令
                        SRD1 = 1;             //的时候反馈一个十六进制的1
                        PrintCom("1rn");
                        break;
                case CODE_2:
                        UARTSendByte(0x02);   //同上
                        SRD1 = 0;
                        PrintCom("2rn");
                        break;
                        ....


Arduino


#include     //需要调用这个库实现串口通讯


SoftwareSerial softSerial(3,2); //新建一个softSerial对象,rx:3,tx:2
int a;                         //接收串口的值


void setup() {
  pinMode(13,OUTPUT);        //设置IO口13为输出模式
  Serial.begin(9600);
  softSerial.begin(9600);   //初始化软串口通信;
  digitalWrite(13,LOW);     //给13口低电平
  delay(3000);
}


void loop() {
  a=softSerial.read();      //读取串行端口的值
  switch(a)
  {
    case 1:                                        //前面提到的读取到1表示开灯
      digitalWrite(13,HIGH);//当喊“开灯”时,可以看到Arduino上的LED亮起
      break;
    case 2:
      digitalWrite(13,LOW);//当喊“关灯”时,可以看到Arduino上的LED熄灭
      break;
    default:
      break;
  }
}


总结
用Arduino来实现一些小设计感觉会比51或者stm32都简单很多,Arduino集成了很多库文件,同时IDE里面还有很多人弄的开源的库文件,对于新手来说是一个不错的练习平台。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分