目錄
1、紅外遙控器通信原理
2、NEC協議
3、實踐
機緣巧合在網上認識一位12歲小同志,從零開始系統輔導其創客開發思維和技巧,

專案專欄:https://blog.csdn.net/m0_38106923/category_11097422.html
紅外遙控器是我們常用的一種遙控設備,你可以用它控制電視、空調、音響等家用電器,同時也可以改造家里的電飯煲、咖啡機和微波爐等傳統家電,想象一下只用一個遙控器就能搞定所有的家用電器控制,只需要搭配Arduino控制器、繼電器和紅外遙控器套件,就可以搭建一個智能家用電器平臺,

1、紅外遙控器通信原理
紅外遙控器有兩部分組成:紅外發射裝置(紅外遙控器)和紅外接收裝置(紅外接收頭),
- 紅外發射裝置(紅外遙控器)發出的信號是一連串的二進制脈沖碼為了使其在無線傳輸程序中免受其他紅外信號的干擾,通常都是先將其調制在特定的載波頻率上,然后再經紅外發射二極管發射出去,
- 紅外接收裝置(紅外接收頭)內置接收管將紅外發射管發射出來的光信號轉換為微弱的電信號,此信號經由IC內部放大器進行放大,然后通過自動增益控制、帶通濾波、解調變、波形整形后還原為遙控器發射出的原始編碼,經由接收頭的信號輸出腳輸入到電器上的編碼識別電路,
2、NEC協議
想對某一遙控器進行解碼必須要了解該遙控器的編碼方式,我選用的這款遙控器產品使用的編碼方式為:NEC協議,
NEC協議特點如下所示:
8位地址位,8位命令位;為了可靠性地址位和命令位被傳輸兩次;脈沖位置調制;載波頻率38khz;每一位的時間為1.125ms或2.25ms,
NEC協議表示邏輯0和1的定義如下圖:

具體協議分析如下所示:
按鍵按下立刻松開的發射脈沖典型序列如下所示:
在上面的脈沖傳輸的地址為0x59命令為0x16,一個訊息是由一個9ms的高電平開始,隨后有一個4.5ms的低電平,(這兩段電平組成引導碼)然后由地址碼和命令碼,地址和命令傳輸兩次,第二次所有位都取反,可用于對所收到的訊息中的確認使用,總傳輸時間是恒定的,因為每一點與它取反長度重復,如果你不感興趣, 你可以忽略這個可靠性取反,也可以擴大地址和命令,以每16位,
按鍵按下一段時間才松開的發射脈沖典型序列如下所示:

一個命令發送一次,即使在遙控器上的按鍵仍然按下,當按鍵一直按下時,第一個110ms的脈沖與上圖一樣,之后每110ms重復代碼傳輸一次,這個重復代碼是由一個9ms的高電平脈沖和一個2.25ms低電平和560μs的高電平組成,
重復脈沖典型序列如下所示:

注意:脈沖波形進入一體化接收頭以后,因為一體化接收頭里要進行解碼、信號放大和整形,故要注意在沒有紅外信號時,其輸出端為高電平,有信號時為低電平,故其輸出信號電平正好和發射端相反,接收端脈沖大家可以通過示波器看到,結合看到的波形理解程式,
3、實踐
根據NEC編碼的特點和接收端的波形,本實驗將接收端的波形分成四部分:引導碼(9ms和4.5ms的脈沖)、地址碼16位(包括8位的地址位和8位的地址的取反)、命令碼16位(包括8位命令位和8位命令位的取反)、重復碼(9ms、2.25ms、560us脈沖組成),
利用定時器對接收到的波形的高電平段和低電平段進行測量,根據測量到的時間來區分:邏輯“0”、邏輯“1”、引導脈沖、重復脈沖,引導碼和地址碼只要判斷是正確的脈沖即可,不用存盤,但是命令碼必須存盤,因為每個按鍵的命令碼都不同, 根據命令碼來執行相應的動作,
設定遙控器上的幾個按鍵VOL+:控制LED燈亮的;VOL-:作為控制蜂鳴器響,
實作代碼如下所示:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/317656.html
標籤:其他
