写在前面
这学期跟同学一起计划实现一项小制作,对最主要的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里面还有很多人弄的开源的库文件,对于新手来说是一个不错的练习平台。
写在前面
这学期跟同学一起计划实现一项小制作,对最主要的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里面还有很多人弄的开源的库文件,对于新手来说是一个不错的练习平台。
举报