紅外遙控器是我們常用的一種遙控設(shè)備盗似。你可以用它控制電視、空調(diào)平项、音響等家用電器赫舒,同時(shí)也可以改造家里的電飯煲、咖啡機(jī)和微波爐等傳統(tǒng)家電闽瓢。想象一下只用一個(gè)遙控器就能搞定所有的家用電器控制接癌,只需要搭配Arduino控制器、繼電器和紅外遙控器套件扣讼,就可以搭建一個(gè)智能家用電器平臺(tái)缺猛。
1、紅外遙控器通信原理
紅外遙控器有兩部分組成:紅外發(fā)射裝置(紅外遙控器)和紅外接收裝置(紅外接收頭)椭符。
紅外發(fā)射裝置(紅外遙控器)發(fā)出的信號(hào)是一連串的二進(jìn)制脈沖碼為了使其在無線傳輸過程中免受其他紅外信號(hào)的干擾荔燎,通常都是先將其調(diào)制在特定的載波頻率上,然后再經(jīng)紅外發(fā)射二極管發(fā)射出去销钝。
紅外接收裝置(紅外接收頭)內(nèi)置接收管將紅外發(fā)射管發(fā)射出來的光信號(hào)轉(zhuǎn)換為微弱的電信號(hào)有咨,此信號(hào)經(jīng)由IC內(nèi)部放大器進(jìn)行放大,然后通過自動(dòng)增益控制蒸健、帶通濾波座享、解調(diào)變、波形整形后還原為遙控器發(fā)射出的原始編碼似忧,經(jīng)由接收頭的信號(hào)輸出腳輸入到電器上的編碼識(shí)別電路渣叛。
2、NEC協(xié)議
想對(duì)某一遙控器進(jìn)行解碼必須要了解該遙控器的編碼方式盯捌,我選用的這款遙控器產(chǎn)品使用的編碼方式為:NEC協(xié)議淳衙。
NEC協(xié)議特點(diǎn)如下所示:
8位地址位,8位命令位;
為了可靠性地址位和命令位被傳輸兩次箫攀;
脈沖位置調(diào)制筷狼;
載波頻率38khz;
每一位的時(shí)間為1.125ms或2.25ms匠童。
NEC協(xié)議表示邏輯0和1的定義如下圖:
具體協(xié)議分析如下所示:
按鍵按下立刻松開的發(fā)射脈沖典型序列如下所示:
在上面的脈沖傳輸?shù)牡刂窞?b>0x59命令為0x16。一個(gè)消息是由一個(gè)9ms的高電平開始塑顺,隨后有一個(gè)4.5ms的低電平汤求,(這兩段電平組成引導(dǎo)碼)然后由地址碼和命令碼。地址和命令傳輸兩次严拒。第二次所有位都取反扬绪,可用于對(duì)所收到的消息中的確認(rèn)使用】氵耄總傳輸時(shí)間是恒定的挤牛,因?yàn)槊恳稽c(diǎn)與它取反長度重復(fù)。如果你不感興趣种蘸, 你可以忽略這個(gè)可靠性取反墓赴,也可以擴(kuò)大地址和命令,以每16位航瞭。
按鍵按下一段時(shí)間才松開的發(fā)射脈沖典型序列如下所示:
一個(gè)命令發(fā)送一次诫硕,即使在遙控器上的按鍵仍然按下。當(dāng)按鍵一直按下時(shí)刊侯,第一個(gè)110ms的脈沖與上圖一樣章办,之后每110ms重復(fù)代碼傳輸一次。這個(gè)重復(fù)代碼是由一個(gè)9ms的高電平脈沖和一個(gè)2.25ms低電平和560μs的高電平組成滨彻。
重復(fù)脈沖典型序列如下所示:
注意:脈沖波形進(jìn)入一體化接收頭以后藕届,因?yàn)橐惑w化接收頭里要進(jìn)行解碼、信號(hào)放大和整形亭饵,故要注意在沒有紅外信號(hào)時(shí)休偶,其輸出端為高電平,有信號(hào)時(shí)為低電平辜羊,故其輸出信號(hào)電平正好和發(fā)射端相反椅贱。接收端脈沖大家可以通過示波器看到,結(jié)合看到的波形理解程序只冻。
3庇麦、實(shí)踐
根據(jù)NEC編碼的特點(diǎn)和接收端的波形,本實(shí)驗(yàn)將接收端的波形分成四部分:引導(dǎo)碼(9ms和4.5ms的脈沖)喜德、地址碼16位(包括8位的地址位和8位的地址的取反)山橄、命令碼16位(包括8位命令位和8位命令位的取反)、重復(fù)碼(9ms舍悯、2.25ms航棱、560us脈沖組成)睡雇。
利用定時(shí)器對(duì)接收到的波形的高電平段和低電平段進(jìn)行測量,根據(jù)測量到的時(shí)間來區(qū)分:邏輯“0”饮醇、邏輯“1”它抱、引導(dǎo)脈沖、重復(fù)脈沖朴艰。引導(dǎo)碼和地址碼只要判斷是正確的脈沖即可观蓄,不用存儲(chǔ),但是命令碼必須存儲(chǔ)祠墅,因?yàn)槊總€(gè)按鍵的命令碼都不同侮穿, 根據(jù)命令碼來執(zhí)行相應(yīng)的動(dòng)作。
設(shè)置遙控器上的幾個(gè)按鍵VOL+:控制LED燈亮的毁嗦;VOL-:作為控制蜂鳴器響亲茅。
實(shí)現(xiàn)代碼如下所示: