|
生活中我們使用空調(diào)的方法一般是:手持空調(diào)遙控器對著空調(diào)按下相應(yīng)的按鍵發(fā)出命令,空調(diào)室內(nèi)壁掛機(jī)接收到該命令并按命令對應(yīng)的功能控制空調(diào)狀態(tài)改變,智能化程度較低。另一方面,現(xiàn)有的天貓精靈、小美等,對空調(diào)硬件要求高、需要安裝相關(guān)APP支持才能使用、無關(guān)信息(如,播報(bào)廣告不受用戶控制)等,用戶體驗(yàn)有待進(jìn)一步提高。
本系統(tǒng)設(shè)計(jì)最終要實(shí)現(xiàn)的效果是,比如,用戶直接以自然語言說出“模式設(shè)置,制冷模式”空調(diào)便自動工作在這種狀態(tài)下,其中模式可選擇地設(shè)置為制熱模式,制冷模式和自動模式。用戶說出“溫度設(shè)置,二十六度”空調(diào)要自動將溫度調(diào)整至二十六攝氏度,其中溫度值可選擇地設(shè)置為十七攝氏度至三十?dāng)z氏度之間的任意整數(shù)級別。用戶說出“風(fēng)速設(shè)置,中速”空調(diào)要自動將出風(fēng)流量調(diào)至“中速”,其中風(fēng)速可選擇地設(shè)置為低速、中速、強(qiáng)勁、自動。從而實(shí)現(xiàn)通過自然人語音控制空調(diào)改變工作狀態(tài)。 主函數(shù)展示如下:
#include "./ld3320/MCUOperatesBasedOnLD3320.h"
#include "./OLED12864_IIC/OLED_I2C.h"
#include "./OLED12864_IIC/codetab.h"
//#include "./usart/bsp_usart.h"//just for printf().
#include "./Infrared/infrared.h"
#include "./ld3320/ld3320.h"
#include "./delay/delay.h"
#include "stm32f10x.h"
#include "stdio.h"
void ShowAirConStates(void)
{
//show AC state information.
if(state)OLED_ShowStr(80,2,"ON ",1);
else OLED_ShowStr(80,2,"OFF",1);
//show AC temperature information.
sprintf(tempString,"%d",temperature);
OLED_ShowStr(80,4,tempString,1);
//show AC mode information.
switch(mode)
{
case cool_mode:OLED_ShowStr(80,3,"Cool",1);break;
case heat_mode:OLED_ShowStr(80,3,"Heat",1);break;
case auto_mode:OLED_ShowStr(80,3,"Auto",1);break;
default:break;
}
//show AC fanspeed information.
switch(fanspeed)
{
case auto_fanspeed:OLED_ShowStr(80,5,"Auto ",1);break;
case low_fanspeed: OLED_ShowStr(80,5,"Low ",1);break;
case mid_fanspeed: OLED_ShowStr(80,5,"Mid ",1);break;
case high_fanspeed:OLED_ShowStr(80,5,"High ",1);break;
case quit_fanspeed:OLED_ShowStr(80,5,"Quiet",1);break;
default:break;
}
}
int main(void)
{
u8 *isTriggCommdID;
// USART_Config();
LD3320_Config();
delay_Init();
I2C_Configuration();
OLED_Init();
OLED_ClearScreen();
Init_IRSenderGPIO();
OLED_ShowStr(7,0,"AC INFORMATION",2);
OLED_ShowStr(0,2,"AirCon State:",1);
OLED_ShowStr(0,3,"Working Mode:",1);
OLED_ShowStr(0,4,"Target Temp:",1);
OLED_ShowStr(100,4,"C",1);
OLED_ShowStr(0,5,"Wind Speed:",1);
OLED_ShowStr(4,6,"Waiting Wake UP",2);
while(1)
{
LD3320_Recognition(AddTriggerCommnand);
isTriggCommdID=Return_BestOneRecongnitionPoint();
if(*isTriggCommdID==253)
{
*isTriggCommdID=0;
OLED_ShowStr(4,6," ",2);
OLED_ShowStr(16,6,"Listening...",2);
LD3320_Recognition(AddACmodescommnand);
}else if(*isTriggCommdID==254)
{
*isTriggCommdID=0;
OLED_ShowStr(4,6," ",2);
OLED_ShowStr(16,6,"Listening...",2);
LD3320_Recognition(AddACtempcommnand);
}else if(*isTriggCommdID==255)
{
*isTriggCommdID=0;
OLED_ShowStr(4,6, " ",2);
OLED_ShowStr(16,6,"Listening...",2);
LD3320_Recognition(AddACfanspeedcommnand);
}else if(*isTriggCommdID==252)
{
*isTriggCommdID=0;
OLED_ShowStr(4,6,"Power Down! ",2);
Midea_setState(0);
#if SIMULATION
IRsend32bitsCodes(16);
#else
AC_turnOFF();
#endif
}
MCUToDoBasedOnVoiceCommand();
ShowAirConStates();
}
}
全部代碼51hei下載地址:
STM32LD3320 Trigger Recongnition Demo_v2.4.zip
(505.81 KB, 下載次數(shù): 53)
2021-6-27 15:42 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|