標(biāo)題: 沒錢買“智能”空調(diào)就沒轍了?自己動手做!STM32+LD3320程序 [打印本頁]

作者: lxl_51h    時間: 2021-6-27 15:12
標(biāo)題: 沒錢買“智能”空調(diào)就沒轍了?自己動手做!STM32+LD3320程序

生活中我們使用空調(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)信息(如,播報廣告不受用戶控制)等,用戶體驗(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)。

限于篇幅,詳細(xì)內(nèi)容請看:https://www.bilibili.com/read/cv11902740

主函數(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-30 14:32
還要密碼?》

作者: lxl_51h    時間: 2021-7-18 09:59
許超越 發(fā)表于 2021-6-30 14:32
還要密碼?》

hello,解壓密碼在某個“角落”里公開告知了,仔細(xì)看的都知道~~~
作者: xjx51    時間: 2021-8-19 12:51
lxl_51h 發(fā)表于 2021-7-18 09:59
hello,解壓密碼在某個“角落”里公開告知了,仔細(xì)看的都知道~~~

到底是多少啊?給個提示
作者: 吖吖吖吖吖    時間: 2021-8-19 20:34
密碼是:DREAM100
不得不說,樓主真的坑,給錯誤的視頻地址,然后還把密碼放到視頻結(jié)尾,想刷點(diǎn)擊和播放嗎?
作者: lxl_51h    時間: 2021-8-20 10:22
吖吖吖吖吖 發(fā)表于 2021-8-19 20:34
密碼是:DREAM100
不得不說,樓主真的坑,給錯誤的視頻地址,然后還把密碼放到視頻結(jié)尾,想刷點(diǎn)擊和播放嗎 ...

是的呢,看來你認(rèn)真看了,給你點(diǎn)贊。就是這個密碼
作者: lxl_51h    時間: 2021-8-20 10:28
解壓密碼  DREAM100         文中鏈接已失效。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1