生活中我們使用空調的方法一般是:手持空調遙控器對著空調按下相應的按鍵發出命令,空調室內壁掛機接收到該命令并按命令對應的功能控制空調狀態改變,智能化程度較低。另一方面,現有的天貓精靈、小美等,對空調硬件要求高、需要安裝相關APP支持才能使用、無關信息(如,播報廣告不受用戶控制)等,用戶體驗有待進一步提高。
本系統設計最終要實現的效果是,比如,用戶直接以自然語言說出“模式設置,制冷模式”空調便自動工作在這種狀態下,其中模式可選擇地設置為制熱模式,制冷模式和自動模式。用戶說出“溫度設置,二十六度”空調要自動將溫度調整至二十六攝氏度,其中溫度值可選擇地設置為十七攝氏度至三十攝氏度之間的任意整數級別。用戶說出“風速設置,中速”空調要自動將出風流量調至“中速”,其中風速可選擇地設置為低速、中速、強勁、自動。從而實現通過自然人語音控制空調改變工作狀態。 主函數展示如下:
#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, 下載次數: 53)
2021-6-27 15:42 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|