紅外遙控是一種無線、非接觸摸制技術,具有抗干擾能力強,資訊傳輸可靠,低功耗,低成本。
紅外遙控的編碼方式目前廣泛使用的是: pwm (脈衝寬度調製)的 nec 協議和 philips ppm(脈衝位置調製) 的 rc-5 協議的。
1.1 nec 協議定義
nec 碼的位定義:乙個脈衝對應 560us 的連續載波,乙個邏輯 1 傳輸需要2.25ms(560us 脈衝+1680us 低電平),乙個邏輯 0 的傳輸需要1.125ms(560us 脈衝+560us 低電平)。而遙控接收頭在收到脈衝的時候為低電平,在沒有脈衝的時候為高電平,這樣,我們在接收頭端收到的訊號為:邏輯 1 應該是 560us 低+1680us 高,邏輯 0 應該是 560us 低 + 560us 高。
發射端邏輯:
遙控接收頭邏輯:
1.2 nec 協議特點
(1) 8 位位址和 8 位指令長度;
(2)位址和命令 2 次傳輸(確保可靠性);
(3) pwm 脈衝位置調製,以發射紅外載波的占空比代表「0」和「1」;
(4)載波頻率為 38khz;
(5)位時間為 1.125ms 或 2.25ms;
1.3 nec 遙控指令的資料格式
採用反碼是為了增加傳輸的可靠性。nec 碼規定的連發碼(由 9ms 低電平+2.5m 高電平+0.56ms 低電平+97.94ms 高電平組成),如果在一幀資料傳送完畢之後,按鍵仍然沒有放開,則發射重複碼,即連發碼。
上面我們基本了解了 nec 格式的紅外發碼和收碼的格式,就可以根據通訊的協議來完成對應的程式。
程式邏輯:
)//高電平為1680us
else
if(dval>
2200
&&dval<
2600
)//連發碼判斷
}else
if(dval>
4200
&&dval<
4700)}
rmtsta &=~
(1<<4)
;}}tim_clearflag
(tim5,tim_it_update|tim_it_cc2)
;}
u8 remote_scan
(void)if
((sta==0)
||((rmtsta&
0x80)==
0))//接收錯誤或者按鍵沒有按下
參考:1.原子庫函式參考手冊
STM32 紅外遙控器
紅外 原理 遙控器作為發射器,發射38khz的載波,接收器在接收到載波時為低電平 按照nec protocol的pwm,該協議的特點 1 8位位址和8位指令長度 2 位址和命令分兩次傳送,並有傳送位址和命令反碼,便於校驗,確保傳輸的準確 3 pwm脈衝位置調製,以發射紅外載波的占空比來表示 0 和 ...
STM32紅外遙控NEC協議
正點原子紅外遙控實驗 nec協議發出的一幀資料報括 同步 引導 碼,位址碼,位址反碼,控制碼,控制反碼,連發 重複 碼 其中位址碼,位址反碼,控制碼,控制反碼的邏輯 1 和邏輯 0 表示如下 邏輯 1 2.25ms 560us脈衝 1680us低電平 邏輯 0 1.125ms 560us脈衝 560...
學習型紅外遙控的實現 stm32
最近在做乙個智慧型家居的專案,其核心部分是使用紅外遙控各種家電,包括電視,風扇,空調等等。在製作學習型紅外遙控的過程中,遇到了許多問題,也頗有感悟,特此記錄下來與大家分享。紅外線傳送不同於一般的資料傳輸協議,在此與串列埠比較說明。串列埠是最簡單的資料傳輸協議,學過微控制器的人都知道,微控制器通過串列...