前言:
紅外遙控是利用紅外線進行傳輸數(shù)據(jù),紅外線又稱紅外光波袱箱,在電磁波譜中登馒,光波的波長范圍為0.01um1000um。根據(jù)波長的不同可分為可見光和不可見光囚枪,波長為0.38um0.76um的光波可為可見光派诬,依次為紅、橙链沼、黃默赂、綠、青括勺、藍缆八、紫七種顏色。光波為0.01um0.38um的光波為紫外光(線)疾捍,波長為0.76um1000um的光波為紅外光(線)奈辰。紅外光按波長范圍分為近紅外、中紅外拾氓、遠紅外冯挎、極紅外4類。
紅外線遙控是利用近紅外光傳送遙控指令的咙鞍,波長為0.76um1.5um房官。用近紅外作為遙控光源,是因為目前紅外發(fā)射器件(紅外發(fā)光管)與紅外接收器件(光敏二極管续滋、三極管及光電池)的發(fā)光與受光峰值波長一般為0.8um0.94um翰守,在近紅外光波段內(nèi),二者的光譜正好重合疲酌,能夠很好地匹配蜡峰,可以獲得較高的傳輸效率及較高的可靠性
載波信號:
載波是指被調(diào)制以傳輸信號的波形了袁,一般為正弦波。
1)載波的作用
1.減小傳輸中的噪聲湿颅;
2.頻分復用载绿,即同一頻率之間同一信道傳輸多路信號而不混疊;
3.可傳播更遠距離油航,有利于接收;
2)載波頻率
調(diào)制載波頻率一般在30KHz到60KHz之間崭庸,常用的載波有33K,36K谊囚,36.6K怕享,38K,40K镰踏,56K等函筋,其中38K使用最多。
常用占空比有1/3奠伪、1/2跌帐,1/3最多。
調(diào)制:
目前主流的調(diào)制方式有PPM和PWM芳来。
1)PPM:脈沖位置調(diào)制含末,調(diào)制脈沖寬度不變,用脈沖間隔來區(qū)分0和1即舌。脈沖寬度不變都是560us佣盒,脈沖間隔改變。邏輯1總時間為2.25ms顽聂,邏輯0中時間長度為1.12ms肥惭。
2)PWM:脈沖寬度調(diào)制,脈沖間隔不變紊搪,調(diào)制脈沖寬度改變蜜葱。脈沖間隔 為600us,脈沖寬度不同耀石。邏輯1高電平時間為1.2ms牵囤,邏輯0高電平時間為0.6ms。
紅外傳輸協(xié)議:
常用的紅外傳輸協(xié)議有ITT協(xié)議滞伟、NEC協(xié)議揭鳞、Nokia NRC協(xié)議、Sharp協(xié)議梆奈、Philips RC-5野崇、RC-6 RECS-80協(xié)議、Sony SIRC協(xié)議等亩钟,其中最常見的為NEC協(xié)議
常見的NEC協(xié)議格式為:
依次發(fā)送
- 發(fā)送9ms的高電平脈沖
- 發(fā)送4.5ms的低電平
- 8bit的用戶碼(低位在前)
- 8bit的用戶反碼乓梨,用于檢驗地址碼是否出錯
- 8bit的數(shù)據(jù)碼(低位在前)
-
8bit的數(shù)據(jù)反碼鳖轰,用于檢驗命令碼是否出錯。
7龆啤蕴侣!重復碼:
假如一直按著按鍵不松,它將以110ms為周期發(fā)送重復碼狈惫,重復碼由9ms高電平睛蛛、2.25ms低電平及560us高電平組成。
紅外協(xié)議.png
1)NEC協(xié)議分析:
38KHz的載波胧谈,脈沖時間560us,緊接著沒有脈沖時間為1.69ms(低電平)荸频,則為邏輯1菱肖;
脈沖時間560us,緊接著沒有脈沖時間為560us(低電平)旭从,則為邏輯0稳强;
esp8266_rx_tx官方推薦
ESP8266定義了1個IR紅外遙控接口,IR紅外遙控接口由軟件實現(xiàn)和悦,接口定義如下:
管腳名稱 |管腳編號 |IO |功能名稱
(MTMS) |(9) |(IO14) |(IR_TX)
(GPIO5) |(24) |(IO5) |(IR_RX)
1)發(fā)送:
在ESP8266上用于發(fā)送的載波可以通過以下方式實現(xiàn):
1.I2S的BCK
- WS管腳產(chǎn)生
- 由GPIO中的sigma-delta功能在任意GPIO口產(chǎn)生載波退疫。
其中sigma-delta產(chǎn)生的載波占空比約為20%,推薦使用MTMS管腳(GPIO14)鸽素,可產(chǎn)生準確的38KHz且占空比為50%的標準方波褒繁。
2)接收:
紅外接收功能通過GPIO的邊沿中斷實現(xiàn),讀取系統(tǒng)時間馍忽,將其時間相減可以得到波形持續(xù)時間棒坏,然后通過軟件邏輯實現(xiàn)紅外協(xié)議處理
IR_Demo_For_ESP8266_NONOS_SDK源碼:
鏈接:https://pan.baidu.com/s/1KohkTFd9Qxz_reeAM_9GvA 密碼:zv3d
下載后添加到esp8266_sdk_nonos目錄中編譯即可使用:
如果使用 ESP8266_NONOS_SDK_V1.5.0 或之后版本,請在示例的 Makefile 中 'LINKFLAGS_eagle.app.v6" 區(qū)域增加 "-lcrypto" 遭笋。