前言 本案例為機智云平臺中級應用開發(fā)實例,開發(fā)者通過使用機智云AIoT自助開發(fā)平臺、機智云的GoKit開發(fā)板,實現(xiàn)紅外遙控器遠程開關,實現(xiàn)手機APP等功能。
方案選擇 基于空調遙控器的特點,基于機智云的Gokit,通過機智云的物聯(lián)網(wǎng)平臺,能夠滿足我的需求,那么怎么來做呢?根據(jù)經(jīng)驗所得,需要對這個工作拆分為幾部分:
- 機智云平臺數(shù)據(jù)點定義(啥是數(shù)據(jù)點,點擊查閱);
這里我定了兩個核心功能,一個是開關,一個是溫度調節(jié);(當然,你也可以定義更多的數(shù)據(jù)點,如,模式,風向等等); - MCU開發(fā),MCU開發(fā)需要細分為紅外遙控器的協(xié)議解碼和編碼;解碼簡單來說就是需要通過工具,來分析遙控器發(fā)出來的紅外波形,什么波形對應著開,什么波形對應著光和溫度設置。編碼就是要把我們下發(fā)的命令轉換成和空調能識別的紅外波形;
方案實施
1. 數(shù)據(jù)點定義
很簡單,兩個數(shù)據(jù)點,溫度設置和空調開關,如下圖;

2. 紅外解碼
對于紅外解碼,有兩種方法,一種是找到空調廠商的紅外協(xié)議,然后根據(jù)紅外協(xié)議,直接編寫就可以了,不過很不幸的是,我手頭這款空調,我找了很久都沒找到對應的空調協(xié)議,于是只能另辟途徑。也就是第二種方法,紅外波形拷貝。
那么波形拷貝我采用的是,用邏輯分析儀對遙控器進行波形分析,然后使用紅外波形拷貝的方法,把對應功能的波形拷貝下來。
決定了使用紅外波形拷貝,那么就需要先要搭建波形捕捉電路,翻開了壓箱底多年的紅外探頭接收器和面板(⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄),步驟如下。
2.1 硬件環(huán)境搭建紅外接收頭型號 HS0038B 
HS0038B 電路圖搭建
原理圖

面包板搭建實物圖


抓波形

紅外解碼程序編寫
對紅外波形有一個大概的認識之后,就要編寫MCU端的代碼,把波形轉成紅外碼。這里我的思路是,對STM32的某個IO,設置為輸入下降沿捕捉,然后通過計算每一個高低電平的持續(xù)時間,進而把波形轉成數(shù)組;具體的實現(xiàn)可以看代碼,Talk is cheap, show me the code.(主要是懶(/ω\)~哈哈)
3. 紅外編碼
經(jīng)過前面的紅外拷貝之后并存儲了,幾個功能點的紅外碼,分別是開關,和溫度設置(16度到27度);
紅外的發(fā)送原理(主要是網(wǎng)上已經(jīng)有很多這方面的教程了),首先上面抓到的紅外波形,并不是紅外發(fā)送器真正發(fā)送的波形,紅外發(fā)送的波形一般是要發(fā)送的命令“加”在一個38K 的一個波形上;因為接收端有一個波形過濾器,如果不是38K紅外波形范圍內會被過濾掉。所以一般會以38K的PWM作為一個紅外載波;
那么發(fā)送的時候,對STM32的PA5引腳做為輸出PWM為38K的引腳,然后后根據(jù)機智云定義好的數(shù)據(jù)點,拿到對應的串口協(xié)議文檔,進行命令提前,主要是APP控制和MCU狀態(tài)上報,這兩條協(xié)議,(當然還有進入WiFi配網(wǎng)和串口握手等,不過這些在MCU代碼自動生成的時候已經(jīng)幫我們實現(xiàn)好了)串口協(xié)議格式如下圖:


那么后面的就是根據(jù)協(xié)議編程了。
插播一條idea,實現(xiàn)發(fā)送的時候,開始我想使用機智云的Gokit上的紅外來作為發(fā)送,不過后面發(fā)現(xiàn)發(fā)送的距離比較短,后面就自己焊接了紅外發(fā)射頭;當時我對Gokit的改造如下,如果小伙伴要控制的距離不遠的話,我想是可以的,具體我的改造如下:
◆Gokit引腳修改

最后真實的紅外發(fā)送搭建如下


end..把Gokit 都接上紅外了,就可以喜滋滋的去開空調啦~~

演示視頻
|