紅外遙控是利用近紅外光進行數據傳輸的一種控制方式。近紅外光波長0.76um~1.5um ,紅外遙控收發器件波長一般為 0.8um~0.94um ,具有傳輸效率高,成本低,電路實現簡單,抗干擾強等特點,在家用電器上被廣泛使用。
紅外遙控一般有發射和接收兩部分組成,發射元件為紅外發射管,接收一般采用一體化紅外接收頭,但發射載波頻率與接收頭固定頻率需一致才能正確接收。

一、發射
1. 調制
紅外遙控是以調制方式發射數據,將數據調制到固定的載波上發送,調制發送抗干擾能力更強,傳送距離也更遠。紅外發送首先要解決的就是調制問題。
目前主流的調制方式有PPM和PWM。
PPM:脈沖位置調制,調制脈沖寬度不變,用脈沖間隔來區分0和1。如下圖所示,脈沖寬度不變都是560us,脈沖間隔改變。邏輯1總時間為2.25ms,邏輯0中時間長度為1.12ms。

圖1:PPM調制
PWM:脈沖寬度調制,脈沖間隔不變,調制脈沖寬度改變。如下圖所示,脈沖間隔 為600us,脈沖寬度不同。邏輯1高電平時間為1.2ms,邏輯0高電平時間為0.6ms。

圖2:PWM調制
調制載波頻率一般在30KHz到60KHz之間,常用的載波有33K,36K,36.6K,38K,40K,56K等,其中38K使用最多。
常用占空比有1/3、1/2,1/3最多。
2. 紅外傳輸協議
常用的紅外傳輸協議有ITT協議、NEC協議、Nokia NRC協議、Sharp協議、Philips RC-5、RC-6 RECS-80協議、Sony SIRC協議等,其中最常見的為NEC協議。
常見NEC協議分析:
l 載波38KHz,邏輯1為2.25ms,脈沖時間560us;邏輯0為1.12ms,脈沖時間560us

圖3:NEC邏輯’0’與邏輯’1’
l 協議格式

圖4:NEC紅外載波發送協議
(1) 首先發送9ms的高電平脈沖
(2) 然后發送4.5ms的低電平
(3) 接下來是8bit的地址碼(低位在前)
(4) 然后是8bit的地址反碼,用於檢驗地址碼是否出錯
(5) 接下來的是8bit的命令碼(低位在前)
(6) 然后是8bit的命令反碼,用於檢驗命令碼是否出錯。
l 重復碼

圖5:NEC重復發送載波協議
如果一直按着一個鍵,將以110ms為周期發送重復碼,重復碼由9ms高電平、2.25ms低電平及560us高電平組成。

圖6:NEC重復碼
3. 編碼
雖然不同協議都對各自的協議格式做了不同定義,但總體而言還是有高低電平組成的一串數據。
對於紅外發射,就是按照協議規定高電平時間內,在紅外輸出口輸出固定頻率載波;低電平則直接輸出低。紅外接收頭接到載波時輸出高電平,沒有載波時輸出低電平,完成數據解碼。

圖7:NEC解碼后協議
二、接收
紅外接收常采用一體化紅外接收頭,集紅外接收、放大、濾波、比較器輸出等功能,並輸出MCU可識別的TTL信號的。常用的一體化紅外接收頭有SCR638、HS0038、VS1838等。

SCR638

HS0038
圖8:一體化接收頭
紅外接收應用電路圖:

圖9:紅外接收典型應用
三、ESP8266紅外發送與接收
ESP8266定義了1個IR紅外遙控接口,IR紅外遙控接口由軟件實現,接口定義如下:

圖10:ESP8266紅外管腳定義
1. 發送
在ESP8266上用於發送的載波可以通過以下方式實現:
1) I2S的BCK
2) WS管腳產生
3) 由GPIO中的sigma-delta功能在任意GPIO口產生載波。
其中sigma-delta產生的載波占空比約為20%,推薦使用MTMS管腳(GPIO14),可產生准確的38KHz且占空比為50%的標准方波。
2. 接收
紅外接收功能通過GPIO的邊沿中斷實現,讀取系統時間,將2次時間相減可以得到波形持續時間,然后通過軟件邏輯實現紅外協議處理。