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

写在前面

这学期跟同学一起计划实现一项小制作,对最主要的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("收到\r\n");
    LED=0;
  }
  else if(ENABLE==G0_flag)
  {
    G0_flag=DISABLE;
    LED=1;
    switch(dat)
		{
		case CODE_1:
			UARTSendByte(0x01);   //其实就是多了这一句代码,将识别到第一个命令
			SRD1 = 1;             //的时候反馈一个十六进制的1
			PrintCom("1\r\n");
			break;
		case CODE_2:
			UARTSendByte(0x02);   //同上
			SRD1 = 0;
			PrintCom("2\r\n");
			break;
			....

Arduino

#include <SoftwareSerial.h>    //需要调用这个库实现串口通讯

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里面还有很多人弄的开源的库文件,对于新手来说是一个不错的练习平台。

发布了1 篇原创文章 · 获赞 0 · 访问量 520

猜你喜欢

转载自blog.csdn.net/weixin_44868352/article/details/105711029