基於STM32的紅外遙控和解碼遙控程序解析

2021-01-21 電子產品世界

  文本主要包含兩個內容:一、紅外遙控協議的的講解;二、解碼程序解析(參考正點原子的代碼)

本文引用地址:http://www.eepw.com.cn/article/201609/296598.htm

  紅外的介紹、優點、缺點就不給大家說了,網上書上都有,下面進入正題

  一、紅外遙控協議的的講解

  紅外遙控的編碼目前廣泛使用的是:NEC Protocol的PWM(脈衝寬度調製)和Philips RC-5 Protocol的PPM(脈衝位置調製)

  本文將以NEC協議實現紅外遙控。

  NEC協議的特徵:

  1、8位地址和8位指令長度;

  2、地址和命令兩次傳輸(確保可靠性);

  3、PWM脈衝寬度調製,以發射紅外載波的佔空比代表「0」和「1」;

  4、載波頻率為38KHz;

  5、位時間為1.125ms和2.25ms;

  NEC 碼位的定義:一個脈衝對應560us的連續載波,一個邏輯1傳輸需要2.25ms(560us脈衝+1680us低電平),一個邏輯0的傳輸需要 1.125ms(560us脈衝+560us低電平)。而遙控接收頭在收到脈衝時為低電平,在沒有收到脈衝時為高電平,因此,我們在接收頭端收到的信號 為:邏輯1應該是560us低+1680us高,邏輯0應該是560us低+560us高。如下圖:

  

 

  NEC 遙控指令的數據格式為:同步碼頭(引導碼)+地址碼+地址反碼+控制碼+控制反碼。同步碼是由一個9ms的低電平和一個4.5ms的高電平組成,地址碼、 地址反碼、控制碼、控制反碼均為8位數據格式。按照高位在前低位在後的順序發送。採用反碼是為了增加傳輸的可靠性(可用於校驗)。下圖是我們按下按鍵2 時,從紅外接收頭端測到的波形:

  

 

  在 圖中可以看到,在100ms之後,我們還收到了幾個脈衝,這是NEC碼規定的連發碼(由9ms低電平+2.5ms高電平+0.56ms低電平和 97.94ms高電平組成),如果在一幀數據發送完後,按鍵仍沒有鬆開,則發送重複碼(連發碼),可以通過統計連發碼的次數來標記按鍵按下的長短/次數。

  二、解碼程序解析(參考正點原子的代碼)

  在正點原子的代碼中是利用定時器的輸入捕獲功能來實現遙控解碼的,下面解析一下關鍵代碼:

  在該實驗remote.h文件中,定義了3個函數:Remote_Init();、TIM4_IRQHandler();、Remote_Scan();。

  1、Remote_Init();

  

 

  這裡要注意中斷優先級,定時器4的兩個中斷,溢出(更新)中斷,捕獲事件中斷的優先級是一樣的。意思就是,他兩誰也不能打斷誰,例如A在執行時,B就不會產生中斷。這裡很重要,很重要,很重要!

  2、TIM4_IRQHandler();

  

 

  

 

  

 

  注意上圖中畫紅框的狀態標識,下面解析一下此中斷服務函數(該終端服務函數中有兩個中斷,溢出中斷和捕獲中斷):

  1、先看捕獲中斷,Rmtsta剛開始時為0,當發生一次上升沿捕獲時(RDATA對應的引腳得到一個高電平),先把捕獲事件配置為下降沿捕獲,然後Rmtsta=0x10,標記了上升沿已經被捕獲;

  2、當有下降沿到來時,將CCR1寄存器的值賦給Dval變量,並再將捕獲事件配置為上升沿捕獲;補充:像這樣上升沿捕獲和下降沿捕獲交替使用,是為了捕獲到高電平持續時間。

  3、注意:只有當接收頭收到了引導碼後,才進行解碼。故先判斷Dval的值是不是在4200us~4700us之間,如果在,就將Rmtsta|=1<<7,將Rmtsta的最高位置1,標記成功接收到了引導碼。

  4、 當Rmtsta的最高位被置為1後,即滿足了if(Rmtsta&0x80),就可以判斷Dval的值在下面3鍾範圍內 了:300~800(560us)、1400~1800(1680us)、2200~2600(2500us)。從而得到0或者1或者RmtCnt++。 實現了解碼。

  4、以上3條,其中的高電平持續時間都在10ms之內,意思就是還沒到10ms就產生了捕獲中斷(上升沿和下降沿),因為優先級相同的原因,這時是無法產生溢出中斷的。只有當你到10ms了,還沒有產生上升沿捕獲或下降沿捕獲,就會產生溢出中斷。

  5、 那什麼情況下10ms都沒有產生捕獲呢,那就是上文中的連發碼,那個97.94ms的高電平,遠大於了10ms,故會產生溢出中斷。在溢出中斷裡會標記已 經完成一次完整的鍵值信息採集(RmtSta|=1<<6),正點原子在溢出中斷中給設的連發碼時間為130ms,超過130ms視為是鬆開 按鍵了(因為鬆開按鍵就不會有脈衝,也就是高電平,看上文)。

  此外,處理紅外鍵盤的程序就很簡單了,先判斷是不是得到所有一個鍵的所有信息了(根據上一條,判斷if(RmtSta&(1<<6))是否成立),然後通過移位讀取之前在捕獲中斷中存進去的數據,再進行原碼和反碼的對比。這裡不多說了。。

  

 

  注意:遙控器發過來的碼都是編好的,比如想破解遙控器編碼,可以拿示波器去測接收端的碼。

  整個程序思路不難,就是對遙控器發過來的碼進行解碼,這裡主要是兩個中斷的理解。


相關焦點

  • 詳細解析:紅外遙控編碼與解碼
    一般而言,一個通用的紅外遙控系統由發射和接收兩大部分組成,如圖1 所示: 其中發射部分主要包括鍵盤矩陣、編碼調製、紅外發射管;接收部分包括光、電信號的轉換以及放大、解調、解碼電路。
  • 詳細解讀紅外遙控解碼
    詳細解讀紅外遙控解碼 雲創硬見 發表於 2020-01-16 17:00:00 紅外遙控是我們現實生活中必不可少的一員。遙控,顧名思義即在遙遠的地方進行控制,其實也就是說遠程通信。
  • 智能紅外遙控開關工作原理和電路設計
    因此,紅外遙控開關還必須擁有降壓電源模塊。 2 電路設計 硬體電路設計包括電源電路的設計和解碼電路的設計兩部分。電源電路是為解碼電路提供電源而設計的,除了要求電壓穩定外,還要求其體積小,成本低。解碼電路要求能對紅外編碼進行可靠地接收,同時要能夠穩定地控制繼電器的開關。
  • 基於STM32定時器的紅外遙控數據接收設計原理
    打開APP 基於STM32定時器的紅外遙控數據接收設計原理 工程師3 發表於 2018-04-30 17:52:00 一、原理 1、紅外發射協議 紅外發射協議已經在之前的文章中寫過,在此就不贅述。
  • 一文詳解紅外遙控模塊工作原理
    本文首先介紹了紅外遙控模塊的基本原理,其次詳解闡述了紅外遙控模塊工作原理,最後介紹了紅外遙控的重要環節及應用。   1、紅外傳感器的配套使用紅外發射傳感器和紅外接收傳感器配套使用,就組成了一個紅外線遙控系統。   遙控用的紅外發射傳感器,也就是紅外發光二極體,採用砷化鎵或砷鋁化鎵等半導體材料製成,前者的發光效率低於後者。
  • 紅外線遙控電風扇設計思路
    概述 遙控電風扇是 90年代初期在廣東珠江三角洲地區作做大量的研發和生產,並有專門的掩模晶片作為主控晶片使用,現本人用單片機作了接收和發射的配套使用的系統方案。
  • 「硬見小百科」一文詳解紅外遙控模塊工作原理
    本文首先介紹了紅外遙控模塊的基本原理,其次詳解闡述了紅外遙控模塊工作原理,最後介紹了紅外遙控的重要環節及應用。 紅外遙控的基本原理 紅外遙控的發射電路是採用紅外發光二極體來發出經過調製的紅外光波;紅外接收電路由紅外接收二極體、三極體或矽光電池組成,它們將紅外發射器發射的紅外光轉換為相應的電信號,再送後置放大器。
  • 實用紅外遙控開關製作
    現在,幾乎家家都有紅外遙控器,您有沒有想過用控制彩電、VCD的紅外線遙控器,再用紅外接收頭和幾個電氣元件經過您的簡單由於一體化紅外線接收頭種類繁多,質量和性能也不同。為此,本人選用市場上擁有量較多的三森和畫佳紅外接收頭為主要元件,介紹幾種由本人試製過的遙控距離為15米左右、使用家中彩電遙控器控制的電源開關電路。
  • 智能家居控制-arduino紅外遙控控制燈
    上一篇文章介紹了 arduino接受智能家具系統中的紅外遙控的解碼在此基礎上,今天就做一個遙控器控制的燈,我們可以將燈換成繼電器,這樣的話就實現了,用紅外遙控機,控制家裡的電器開關,比如燈,電視,插座,洗衣機等接線圖幾原理圖如上,一個板子一個紅外接收器,一個燈(可以換成你想控制的任何設備
  • 電燈遙控開關怎麼接線_電燈遙控開關接線原理圖
    遙控開關簡介   遙控開關是現代工業或者現代家庭中常用產品之一,它由可移動的遙控發射器,以及固定在牆壁上的開關接收器組成,所有功能既可在牆壁開關上直接操作,也可以用遙控器遠距離操控。   遙控開關分發射(遙控器)和接收(開關)兩部分,發射器把控制電信號編碼,然後調製(紅外調製,電磁波調製和網絡數據信號調製),轉換成無線信號發送出去;接收原理:收到載有信息的無線電波信號,然後放大、解碼,得到原先的控制電信號,將電信號再進行功率放大用來驅動相關的電氣元件(可控矽、繼電器和莫斯管)。
  • 買手機糾結有沒有紅外遙控?教你一招沒有紅外照樣實現萬能遙控
    現在智慧型手機上的功能是越來越豐富了,有些甚至已經取代了一些傳統設備,紅外遙控就是很典型的一個例子,通過手機上的紅外發射器配合軟體可實現萬能遙控器的作用,讓家裡的遙控器都無用武之地了。很多消費者在購買手機時甚至將是否有紅外遙控功能作為選擇條件之一。
  • 智慧家庭紅外遙控電路設計攻略 —電路圖天天讀(99)
    常見的紅外發射二極體有黑色,透明色,它與普通發光二極體的最大區別在於所發出的光為不可見光,而普通發光二極體發出的是各種顏色的可見光,通常,紅外發光二極體分為兩種結構形式:一種是遙控發射型紅外發光二極體(即最常用的手持遙控器所用的紅外發射二極體);一種是近距離發射型紅外發光二極體,這種二極體把紅外光的發射與接收共集為一體。由於本設計實現的是家居遙控,因此採用第一種即可。
  • 射頻遙控及其在家電遙控器中的應用
    1 引言本文引用地址:http://www.eepw.com.cn/article/201706/353034.htm隨著生活水平的不斷提高,家庭中擁有的家用電器不斷增多,消費者對這些家電的遙控功能和性能亦提出了更高的要求。射頻遙控由於具有距離遠、無障礙、低功耗、支持更為複雜的協議等優點,將會逐步取代傳統的紅外遙控方式。
  • 手機中的紅外遙控有什麼作用,是雞肋嗎?
    NFC以及紅外遙控是手機中常見的功能,搭載NFC的手機很多,但搭載紅外遙控的手機並不多,主要以華為、榮耀與小米手機為主;估計用的人也不多。現如今,有無NFC其實並不重要,因為用NFC傳輸文件不方便,刷門卡或支付也並不常用,要說前幾年充值或查詢公交卡使用NFC還好,但現如今有乘車碼,NFC越來越沒有地位了;可能很多人覺得紅外遙控亦是如此,因為很少廠商搭載。既然有手機廠商搭載紅外遙控,說明此功能並非雞肋;那麼紅外遙控在生活中有什麼作用呢?我們一起來看看。
  • 小米萬能遙控新版:遙控所有家電
    小米萬能遙控器是小米出品的一款APP,可方便遙控身邊的家用電器。近日,小米「萬能遙控」APP升級到了最新的v5.1.2版本,優化了電視和機頂盒遙控紅外遙控面板,新增支持更多空調設備,並新增區域網發現新共享遙控器的提醒等功能。
  • 萬能遙控下載_萬能遙控手機版下載_萬能遙控安卓版免費下載-太平洋...
    小米萬能遙控可以方便的遙控身邊的家用電器。找不到遙控器?來個小小的惡作劇?小米萬能遙控來幫你~我們還為您提供全面的電視節目相關服務,方便您更快找到喜歡的電視節目,並可以直接將電視切換到相應頻道,更可以在手機上直接觀看節目。使用小米萬能遙控,看電視可以更美好。
  • 日本推出可移動「馬桶」 通過紅外遙控(圖)
    外媒3月18日消息稱,日本Strapya公司日前推出了遙控馬桶,讓一向「被動接受」的馬桶動起來。這款紅外遙控馬桶外形和大小與遙控汽車類似,重約400克。這款設備售價16美元(約合人民幣100元),官方名稱叫做「紅外遙控日本式馬桶」。雖然這款產品確實是以馬桶為原型,但該遙控馬桶的設計公司建議顧客不要真的用這款產品方便。
  • 米家萬能遙控器發布,內置數萬紅外遙控碼庫
    想要了解更多熱門資訊、玩機技巧、數碼評測、科普深扒,可以點擊右上角關注我們的百家號:雷科技----------------------------------早在幾年前,小米曾推出過能遙控家中各種電器的小米萬能遙控器
  • 可控矽在紅外遙控開關中的應用及工作原理
    本人利用它的這個特性製作了下面這款簡單的紅外遙控開關電路,如圖1所示。本文引用地址:http://www.eepw.com.cn/article/163366.htm12V直流電壓再經R2、VD4、C3進一步穩壓濾波後供紅外接收頭HRM作電源用。  開啟過程:靜態時脈衝放大管外於飽和狀態,集電極輸出0.1V低電平,此時可控矽觸發電路不工作。
  • 一文解析stm32產生spwm原理及程序
    打開APP 一文解析stm32產生spwm原理及程序 發表於 2018-05-18 09:11:49 SPWM法就是以該結論為理論基礎,用脈衝寬度按正弦規律變化而和正弦波等效的PWM波形即SPWM波形控制逆變電路中開關器件的通斷,使其輸出的脈衝電壓的面積與所希望輸出的正弦波在相應區間內的面積相等,通過改變調製波的頻率和幅值則可調節逆變電路輸出電壓的頻率和幅值。本文主要詳解stm32產生spwm原理及程序,首先來了解一下生成SPWM波的基理是什麼,具體得跟隨小編一起來了解一下。