赞
踩
系统运行后,当对语音模块说出“小易小易”时,收到回复信息后,开始说出控制指令,项目中已设计:开门、关门、开灯、关灯、晚安指令,每当说控制指令前,必须先说“小易小易”,等待回复后才能继续。如果没有回复,系统会提示要说对应的指令。对应指令可控制舵机和LED的开关。
项目所需要的硬件资源如下:
1、51单片机开发板1个
2、SG90舵机模块1个
3、LD3320A语音识别模块1个
4、USB线1条(用于供电和程序下载)
5、杜邦线若干
6、JQ8900-16P语音模块1个
SG90舵机模块-->单片机IO MOTOR-->P21 VCC-->5V GND-->GND LD3320A语音识别模块-->单片机IO 5V-->5V GND-->GND TXD-->P30 RXD-->P31 JQ8900-16P语音模块-->单片机IO VPP-->P11 GND-->GND VCC-->5V SPK-/SPK+-->喇叭
//语音识别控制 void speech_recognition_control(void) { u8 len=0; u8 i=0; u8 res=0; steer_control(0); while(1) { if(UART_RX_STA&0x8000)//判断串口是否接收完数据 { len=UART_RX_STA&0X3FFF; for(i=0;i<len;i++) UART_SendData(UART_RX_BUF[i]); UART_RX_BUF[len]='\0'; if(strcmp((const char*)UART_RX_BUF,"收到")==0)sys_str.sta=1; else if(strcmp((const char*)UART_RX_BUF,"请叫小易小易")==0)sys_str.sta=2; else if(strcmp((const char*)UART_RX_BUF,"没听清")==0)sys_str.sta=3; else if(strcmp((const char*)UART_RX_BUF,"开门")==0)sys_str.sta=4; else if(strcmp((const char*)UART_RX_BUF,"关门")==0)sys_str.sta=5; else if(strcmp((const char*)UART_RX_BUF,"开灯")==0)sys_str.sta=6; else if(strcmp((const char*)UART_RX_BUF,"关灯")==0)sys_str.sta=7; else if(strcmp((const char*)UART_RX_BUF,"晚安")==0)sys_str.sta=8; memset(UART_RX_BUF,0,len); UART_RX_STA=0;//清除标记,等待下次接收 } //根据语音识别播放 if(sys_str.sta) { play_song_num(sys_str.sta); switch(sys_str.sta) { case 4: steer_control(1);break;//开门 case 5: steer_control(0);break;//关门 case 6: LED=0;break;//开灯 case 7: LED=1;break;//关灯 } sys_str.sta=0; } } } //应用控制系统 void app_control_sys(void) { time0_init();//初始化定时器0 lcd12864_init();//LCD12864初始化 UART_Init(); ES=1; while(1) { speech_recognition_control();//语音识别控制 } }
B站演示视频:https://space.bilibili.com/444388619
作者B站链接:https://space.bilibili.com/444388619
可提供手把手教学服务,资料获取请联系作者QQ:3443792007
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。