基於STM32的學習型通用紅外遙控裝置的設計實現(一)
CPU: STM32
除錯平臺: STM32F103ZET和STM32F103VBT
軟體平臺: Keil uVision4
電路設計: Altium Designer v6.9
http://blog.csdn.net/u013686019/article/details/198344411、紅外通訊技術理論介紹
1.1 紅外通訊技術理論及示波器驗證
先說下紅外遙控的知識。這方面的資料Google一下到處都是,歸納起來有:
- 紅外通訊的介質-波長為0.76~1.5μm的紅外線
- 現今主流且常用的有兩種編碼格式-脈衝位置調製(PPM, Pulse Position Modulation)和脈衝寬度調製(PWM, Pulse Width Modulation)
- 調製和傳送-紅外協議-NEC協議、夏普協議、索尼SIRC協議等,應用最廣泛的是NEC協議。
NEC標準規定:紅外通訊的載波頻率為38KHz,佔空比為1:3;按鍵按下後,傳送一個全碼,如果108ms後按鍵仍沒鬆開,則傳送重發碼。協議編碼的一幀全碼由引導碼、使用者碼、使用者反碼、按鍵資料碼、按鍵資料反碼和尾部的重發碼組成,如下圖所示:
NEC標準規定的引導碼由9000μs左右的低電平和4500μs左右的高電平組成,重複碼由9000μs左右的低電平和2250μs左右的高電平組成,資料“1”由560μs左右的低電平和1685μs左右的高電平組成,資料“0”由560μs左右的低電平和565μs左右的高電平組成,如下圖所示:
NEC標準規定的引導碼由9000μs左右的低電平和4500μs左右的高電平組成,重複碼由9000μs左右的低電平和2250μs左右的高電平組成,資料“1”由560μs左右的低電平和1685μs左右的高電平組成,資料“0”由560μs左右的低電平和565μs左右的高電平組成,如下圖所示:
通訊裝置的按鍵按下後,週期性的發出同一種32位的二進位制碼,整個週期約為108ms。通訊裝置傳送的編碼持續時間與其包含的二進位制“1”和“0”的個數有關,發射波形圖如下圖所示:
1.2 紅外協議的驗證
NEC協議的理論在1.1節有論述,為使自己有一個感官上的認識,對協議進行波形的提取分析,即通過抓取紅外一體接收頭輸出的紅外訊號,測量脈衝的高低電平寬度是否在協議規定的範圍。
用示波器(RIGOL DG1102E)檢測VS838輸出的紅外訊號, 示波器接收到的引導碼下圖所示:
示波器接收到的“1”碼如下圖:
示波器接收到的“0”碼如下圖:
引導碼持續時間13.6ms,“1”碼持續時間2.22ms,“0”碼持續時間1.10ms,完全在NEC協議規定的範圍內。
1.3 通用紅外通訊裝置的實現
通用紅外通訊裝置按照學習方式的不同可以分為兩類:
- 固定碼格式的通訊裝置
- 波形拷貝式的通訊裝置
第一種通訊裝置需要收集儲存不同種類的紅外裝置訊號,然後識別比較,最後再記錄。這種紅外裝置的優點是硬體要求相對簡易,控制器的CPU頻率可以較低;缺點是因為紅外編碼格式太多,實現紅外裝置的成功複製比較難。
第二種紅外裝置是把原來紅外裝置發出的訊號進行完全的複製,不管原來紅外裝置紅外訊號是什麼格式,然後儲存到非易失性的儲存器(如EEPROM)中,傳送時再把儲存的波形資料取出,還原成原始訊號。其優點是可以對任何一種紅外裝置進行學習;缺點是對控制器CPU的頻率要求較高,RAM要大。
為了對儘可能多的裝置進行控制,本設計完成的是第二種紅外通訊裝置:波形拷貝式的通訊裝置。
紅外訊號的接收由一體化接收管完成,然後送入微控制器進行處理。接收管圖片如下圖所示:
微控制器通過中斷的方式對紅外脈衝訊號的脈寬進行測量。紅外接收管在沒有收到紅外訊號的情況下,輸出端一直輸出高電平;一旦由紅外訊號輸入,按照NEC協議,會產生下降沿的跳變。通過把微控制器的中斷設定為下降沿模式,就可以捕獲該訊號,進入中斷處理函式,實現脈寬的寬度測量。
隨著積體電路整合度的日益增大,許多微控制器都已具備內部FALSH且容量完全可以滿足對脈寬資料的儲存。這樣,可以省去額外的儲存器,節省成本,簡化硬體電路,而且對內部FLASH的讀寫速度很快。
紅外訊號的調製傳送設計兩方面,一是從FLASH中讀取按鍵對應的鍵值碼的資訊,二是完成對復原的紅外訊號的傳送。按鍵按下,從按鍵對應的地址讀出鍵碼資訊;傳送需要先把資訊調製在38KHz的載波上,38KHz載波由微控制器的定時器產生佔空比1:3的PWM波得到,其中調製部分的原理電路如下圖所示:
當Txd端輸出是低電平0時,三極體Q1導通,38KHz載波訊號由Q2輸出,驅動紅外發射管L1傳送訊號;當Txd端輸出是高電平1時,三極體Q1截止,38KHz載波訊號無法輸出,接收端接收不到紅外訊號,輸出高電平。紅外傳送波形資訊如下圖所示:
1.4 系統實現的流程
整個系統主要由7個模組組成,它們是:
- 38KHz載波模組
- 鍵盤模組
- 紅外脈寬測量模組
- FLASH儲存器的讀寫模組
- 紅外訊號的調製傳送模組
- 學習鍵的中斷實現模組
- TFT液晶的顯示模組。
整個系統的流程圖如下圖所示:
相關文章
- stm32與紅外遙控器(NEC協議)協議
- 微控制器學習(十)紅外遙控與外部中斷
- 基於泛型的通用Dao介面hibernate實現泛型
- Misfit推出可穿戴裝置遙控
- 破解紅外遙控編碼分析儀3.0――上次問過的,現在終於破了。 (6千字)
- 智慧成人用品軟硬一體化裝置遙控
- 基於微控制器的無線語音遙控智慧車設計
- 基於abp的小小裝置控制系統設計
- Linux中的紅外線裝置(轉)Linux
- 畢業設計——基於STM32的音樂播放器設計(一)播放器
- (未完)STM32硬體開發——智慧小車(超聲波避障 紅外循跡 藍芽遙控)藍芽
- C51微控制器——紅外遙控 驅動程式
- 基於 IntersectionObserver 實現一個元件的曝光監控Server元件
- 研究:基於遙控器互動方式的電視遊戲機制設計原則遊戲
- MCU學習——無線遙控模組
- 設計模式學習-使用go實現外觀模式設計模式Go
- 玩玩Flutter的拖拽——實現一款萬能遙控器Flutter
- 遙感基礎學習
- 從0帶你設計與實現基於STM32的智慧農業管理系統
- 基於裝置監控運維管理平臺實現預測性維護運維
- 使用C#實現一個PPT遙控器C#
- 基於微控制器的紅外電子密碼鎖程式設計思路密碼程式設計
- 關於 SAP UI5 裝置型別檢測的實現原理UI型別
- 玩玩Andoid的拖拽——實現一款萬能遙控器
- 基於Tencent封裝的通用UI框架封裝UI框架
- 基於系統融合的統一監控平臺設計
- IOS 特定於裝置的開發:獲取額外的裝置資訊iOS
- 通用查詢設計思想(2)- 基於ADO.Net的設計
- 虛擬裝置驅動程式的設計與實現 (轉)
- 設計模式學習-使用go實現裝飾模式設計模式Go
- 混合現實設計:火星計劃頭戴裝置配套應用的設計心得
- 基於list_head實現的通用核心Hash表
- 框架-SPI四種模式+通用裝置驅動實現框架模式
- Redis設計與實現學習筆記(一)Redis筆記
- 美團如何基於深度學習實現影像的智慧稽核?深度學習
- 基於 Angular Material 的 Data Grid 設計實現Angular
- 基於STM32的SNTP授時伺服器的研究與設計伺服器
- Gitment:一款基於 Github 的 Issues 實現的評論外掛Github