跟隨+明星公眾號(hào),不要錯(cuò)過(guò)令人興奮的內(nèi)容來(lái)自|的糖轉(zhuǎn)移MultiMCU EDU紅外遙控器對(duì)我們并不陌生,我們到處都能看到它,最常見(jiàn)的是家用電器中的紅外遙控器,您知道發(fā)送和接收的原理嗎?今天,我將分享一篇有關(guān)紅外解碼的文章。
1硬件連接紅外解碼僅需連接3根線(xiàn)(2個(gè)電源+ 1個(gè)數(shù)據(jù)),如下圖TSOP382所示。
2NEC協(xié)議解碼本文介紹的紅外編解碼器采用NEC協(xié)議。
在通信數(shù)據(jù)幀中使用高電平時(shí)間來(lái)區(qū)分0和1。
對(duì)于按下然后按住的時(shí)間,NEC協(xié)議的處理如下:上圖中寫(xiě)的也稱(chēng)為“重復(fù)啟動(dòng)代碼”。
對(duì)于紅外通信協(xié)議,搜索關(guān)鍵詞“ IR指導(dǎo)碼”。
將使查找結(jié)果更加容易。
NEC的編碼規(guī)則非常簡(jiǎn)單,如下圖所示:邏輯分析儀捕獲的實(shí)際波形如下,可以通過(guò)上述規(guī)則相互確認(rèn):3Arduino紅外解碼復(fù)制上圖中的代碼如下所示:#include const int irReceiverPin = 2; IRrecv irrecv(irReceiverPin);解碼結(jié)果結(jié)果;解碼結(jié)果res_last;無(wú)效setup(){Serial.begin(9600); irrecv.enableIRIn();} void loop(){if(irrecv.decode(& results)){if(res_last。
value!= results.value){res_last.value = results.value; Serial.print(“ irCode:”); Serial.print(results.value,HEX); Serial.print(“,”位:“)”;序列號(hào)。
println(results.bits);} irrecv.resume(); }} 4STM32紅外解碼1.參見(jiàn)“江濤帶你玩STM32-CubeMX紅外NEC解碼實(shí)戰(zhàn)(外部)外部中斷模式”。
外部中斷模式的優(yōu)點(diǎn)關(guān)鍵是:可以使用任何引腳。
由于不使用片上定時(shí)器外設(shè),因此需要使用CPU計(jì)數(shù)方法來(lái)計(jì)算時(shí)間。
2.定時(shí)器捕獲方法是指“江濤帶你玩STM32-CubeMX紅外NEC解碼實(shí)戰(zhàn)(第二部分)-定時(shí)器TIM捕獲方法”。
定時(shí)器捕獲方法需要使用定時(shí)器相關(guān)的引腳。
優(yōu)點(diǎn)是CPU不參與計(jì)時(shí)。
解放的CPU可以做其他事情。
PS除NEC協(xié)議外,還有許多其他用于紅外通信的協(xié)議,可以在Mixly圖形編程軟件中看到,如下圖所示:本文選擇了最簡(jiǎn)單的NEC協(xié)議來(lái)討論紅外解碼,并且旨在簡(jiǎn)單地反映紅外通信的應(yīng)用。
因此,沒(méi)有介紹38kHz載波的概念。
如果您想了解更多,可以參考“ STM32紅外遙控信號(hào)自學(xué)習(xí)實(shí)現(xiàn)”。
5接收和發(fā)送解碼之間的區(qū)別如上圖所示,紅外通信的特殊方面是發(fā)送和接收數(shù)據(jù)的反轉(zhuǎn)。
這導(dǎo)致盡管可以從發(fā)送方或接收方解析正確的數(shù)據(jù),但是在解碼時(shí)必須注意極性。
如果極性接反,則無(wú)法解析數(shù)據(jù)或無(wú)法正確解析數(shù)據(jù)。
通訊實(shí)驗(yàn):如上圖所示,作者認(rèn)為發(fā)送和接收之間的相位差增強(qiáng)了實(shí)驗(yàn)的真實(shí)性。
作者使用兩個(gè)單片機(jī)ATMega 2560和ATMega644。
選擇Arduino系列單片機(jī)的原因是懶惰而不是編寫(xiě)軟件。
讓我們放大一段數(shù)據(jù)并仔細(xì)查看38KHz載波的樣子:上圖中的結(jié)論是“發(fā)送者”的行為。
從“接收器”的角度寫(xiě)的。
換句話(huà)說(shuō):1.如果您希望接收方接收到0,則發(fā)送方將發(fā)送一個(gè)38KHz的載波; 2.如果您希望接收方接收1,則發(fā)送方將停止發(fā)送載波。
不可避免地有人會(huì)在這里問(wèn):停止載波實(shí)際上會(huì)使接收器收到1,因此如何區(qū)分“停止通信”和“停止通信”。
和“通訊1”?可以從NEC協(xié)議的作用中看出這個(gè)答案:一個(gè)數(shù)據(jù)幀有一個(gè)頭和一個(gè)尾,在頭和尾之間發(fā)送的停止是數(shù)據(jù)1,不在頭和尾之間發(fā)送的停止是no。
溝通。
------------結(jié)束------------推薦讀物:專(zhuān)題摘要|列|目錄|搜索特色摘要| ARM,Cortex-M特色摘要| ST工具,下載編程工具,關(guān)注微信公眾號(hào)“嵌入式列”,在底部菜單中查看更多內(nèi)容,然后在“添加組”中回復(fù)“添加組”。
按照規(guī)定加入技術(shù)交流小組。
點(diǎn)擊“閱讀原件”查看更多分享,歡迎分享,喜歡,喜歡,觀看。
免責(zé)聲明: