使用紅外遙控空調,就必須先了解紅外遙控的原理,數據的定義等。本博客解析了空調的最基本的功能的紅外編碼,包括:開關,溫度,定時,風速,掃風,校驗碼。其他的功能因爲空調型號不同而差別較大,所以暫時不作解析。同時,空調大部分時間工作在製冷模式下,其他模式下的編碼也暫時未解析。
本實驗是基於格力空調的紅外數據
一幀紅外編碼數據的組成如下:
起始碼+35位數據+連接碼+32位數據+結束碼
其中多次測量得出:
起始碼:9000us 低電平 + 4500us高電平;
連接碼:646us低電平 + 20000us高電平;
結束碼:646us低電平 + 高電平;
數據0:646us低電平 + 516us高電平;
數據1:646us低電平 + 1643us高電平;
數據碼中的0和1,經過多次的測量,取衆數作爲依據,實驗數據如下:
知道了一幀紅外數據的0和1的表示,我們就可以自由的組成一幀數據。接下來需要了解的是在一幀數據中,數據位中的每一個bit代表的意思。
這裏以25℃,製冷模式,低風速,無掃風,打開,定時時間爲0
的一幀數據爲例子:
開關:bit3;
0:關閉;1:開啓
風速:bit4,bit5;
自動風速:00
一級風速:10
二級風速:01
三級風速:11
掃風開關:bit6,以及第二段bit0;
0:關閉;1:開啓
溫度:bit8,bit9,bit10,bit11;
16℃: 0000
17℃: 1000
18℃: 0100
19℃: 1100
20℃: 0010
21℃: 1010
22℃: 0110
23℃: 1110
24℃: 0001
25℃: 1001
26℃: 0101
27℃: 1101
28℃: 0011
定時分鐘數:bit12,bit13,bit14;
由於我的手機只能發送定時半小時爲最小單位的定時時間,所以只有定時30分鐘的數據
30min: 100
bit15 定時開關;
0:關閉;1:開啓
定時小時數:bit16,bit17,bit18,bit19;
一小時:1000
兩小時:0100
三小時:1100
…
第二段數據比較簡單,需要注意的就是bit0
是掃風的開關,她與第一段數據中的bit6
是一樣的數值。另外是後四位bit28,bit29,bit30,bit31
組成的校驗碼。
網上也有許多關於校驗碼的公式,但是我試了後發現並不適用,於是自己嘗試出了一條公式:
校驗碼 = 溫度 - 18 + 定時小時數 + 空調開關 × 8;
例如以上例子的校驗碼是:25 - 18 + 0 + 1× 8 = 15 = 0xf;
紅外遙控的實現大同小異,最好還是要自己有測試的設備進行代碼的測試。紅外接收管和邏輯分析儀是你的不二選擇。
友情連接:
esp32實現紅外發射與接收
作者才疏學淺,難免有錯誤,希望指正。如果文章對你有幫助,幫忙點個讚唄。