基于EFM32GG230單片機的紅外無線自學習系統(tǒng)
引言
本文引用地址:http://m.butianyuan.cn/article/201610/307412.htm當前民用遙控設備,主要分為兩種遙控方式:紅外和無線。無線設備通常采用315 MHz與433 MHz頻段無線電或者紅外線進行遙控操作。多數遙控器都采用了“一對一”的控制方式,不同設備之間采用的頻率一般都不相同,波形長短也不一樣,這樣就導致人們生活中有很多遙控器,需要控制一個設備的時候,必須尋找到對應的遙控器才能進行相關控制,這給實際生活帶來了麻煩與不便。無線自學習轉發(fā)系統(tǒng)可任意學習無線和紅外波形,進行數據壓縮后存儲到EFM32GG230的FLASH中,將多個遙控器的功能綜合到一個系統(tǒng)上,實現“一機多發(fā)”。
1 紅外無線自學習系統(tǒng)設計概況
1.1 EFM32GG230系列簡介
遙控器是需要長期待機的設備控制器件,傳統(tǒng)遙控器采用電池供電,功耗大、耗電快。本系統(tǒng)采用了EFM32GG230,該款芯片是挪威Energy Micro推出的超低功耗ARM架構的MCU,具有豐富的外設接口。在活動模式下執(zhí)行來自FLASH實際代碼時,每MHz所耗電量為180μA,在深度睡眠EM3模式下為900 nA,在關機模式下為20 nA,EFM32GG230的LESENSE、LEUART,以及LETIMER模塊均針對低功耗設置。LESENSE能夠在低功耗模式EM2下對電流進行檢測,無需CPU干預,待檢測完成后喚醒CPU進行數據處理及運算。LEUART在9 600 bps的波特率下僅為150 nA。在應用基準測試中,EFM32GG230微控制器的低電流性能加上低于2μs的啟動時間,使其電池壽命延長了至少4倍。
1.2 紅外、無線遙控原理
紅外線是波長在750 nm至1μm之間的電磁波,它的頻率低于可見光,是一種人的眼睛看不到的光線。紅外遙控具有抗干擾能力強、信息傳輸可靠、功耗低、成本低、易于實現等顯著優(yōu)點。
一般的紅外遙控系統(tǒng)由紅外遙控信號發(fā)生器、紅外遙控信號接收器、微處理器和外圍電路構成。當遙控器某個按鍵按下,其內部的信號發(fā)射器產生預先設定好的編碼脈
沖,經過載波調制后由紅外發(fā)射管串行輸出,紅外信號的調制有脈沖寬度調制(PWM)和脈沖位置調制(PPM)等方法。二進制的調制由發(fā)射端單片機來完成,不同的遙控器有不同的載波頻率。以常見的電視紅外遙控為例,它把編碼后的二進制信號調制成頻率為38 kHz的間斷脈沖串,此脈沖串即是用于紅外發(fā)射二極管發(fā)送的信號。其調制原理如圖1所示。
另一端遙控接收模塊完成對紅外遙控信號的接收、放大、檢波、整形、解調出遙控編碼脈沖。遙控編碼脈沖是一組串行二進制編碼,對于一般的紅外遙控系統(tǒng),此串行編碼輸入到微控制器,由其內部完成遙控指令解碼,并執(zhí)行相應的遙控功能。
無線發(fā)射的原理與紅外基本一致,433和315分別指的是工作頻率在433 MHz和315 MHz的無線信號,其采用調幅方式進行發(fā)射,發(fā)射距離一般在50~120 m,無線方式優(yōu)勢在于傳輸距離比紅外遠,而且可穿墻。
1.3 整體設計
從整體設計來看,本系統(tǒng)分為信號接收學習模塊、MCU控制模塊、信號轉發(fā)模塊。通過紅外接收頭接收紅外波形信號(433、315分別采用各自的接收模塊),然后利用EFM32GG 230的引腳捕獲CC0、CC1、CC2對信號進行捕獲,完全捕獲的原始信號進入EFM32GG230主控MCU,由EFM32GG230進行數據壓縮,壓縮后存儲到FLASH中。當需要發(fā)射時,通過EFM32GG 230從FLASH中提取壓縮后的數據,進行數據還原,而后與EFM32GG230內部的PWM功能產生的載波進行信號調制,調制好的信號經由發(fā)射處理模塊進行發(fā)射操作,完成一次遙控轉發(fā)。圖2為學習轉發(fā)系統(tǒng)框圖。
2 軟件設計
2.1 軟件設計流程
進入程序后開始等待信號,如果得到學習信號,則進一步判斷是紅外學習還是無線學習,無線學習有自適應能力,能夠自動判斷收到的信號是433 MHz還是315 MHz,然后進
行相關的數據壓縮,壓縮后存儲到FLASH中以待后期取用。如果得到的是發(fā)射信號,則進行判斷是紅外信號還是無線信號,然后從FLASH中讀取相應數據,如果FLASH中并沒有數據(即沒有學習),則返回到開始處繼續(xù)等待,若有數據則進行解壓縮操作,然后進行載波調制(紅外信號),最后由相關模塊發(fā)射出去。發(fā)射模塊配有多個發(fā)射探頭,可根據需要選擇不同通道進行發(fā)射,也可以多通道共同發(fā)射信號,發(fā)射完畢后回到開始處等待新指令。本系統(tǒng)的程序流程圖如圖3所示。
2.2 數據壓縮算法
本系統(tǒng)采用的波形數據壓縮算法為替代壓縮算法,經過大量的分析,遙控器基本分為紅外遙控器、433遙控器和315遙控器,后兩種合稱為無線遙控器。紅外遙控器控制的設備包括電視、DVD、電動窗簾、電風扇、熱水器、空調等。據大量紅外遙控器的波形分析,空調遙控器的波形為最長,測試中波形最長的空調遙控器為日本的DAIKIN空調,捕獲的脈沖數達到了5000多個,將信號和載波分離解調后實際波形達到了300多個,如果直接保存,將大大浪費FLASH的寶貴空間。相關的壓縮代碼如下所示:
由以上代碼可以看出,本系統(tǒng)采用結構體來存儲一個碼的相關信息,包括該碼波形的波形類型個數、各種波形的長度、數據長度、壓縮后的數據以及學習標志。
經過仔細觀察分析,發(fā)現現有的絕大部分遙控器的編碼都有一個共性,就是其中整段碼中單個脈沖的類型為有限個數,除了開頭和結尾部分存在部分不同的波形,其他中間部分的波形一般為兩三種,加上幾種比較少見的波形,整體而看,波形個數為5或6個。
為了盡可能地適應市面上的遙控器類型,將波形總數設置為10種,基本上可以涵蓋現有市面上任何一種遙控器上單個按鍵的碼值波形類型。分別用0~9來表示這10種波形,然后再利用一個結構圖數組來存儲相應波形的高低電平長度。
這樣,就將原先較長的高低電平長度存儲值變成了脈沖類型號的存儲,需要存儲的數據長度大大壓縮,本來需要16位甚至更多的位來存儲一個脈沖,現在只需要4位即可存下一個脈沖類型,壓縮率達到了75%。
發(fā)射相關碼時,只需根據脈沖號發(fā)射相應脈沖的高低電平。經試驗,此壓縮方法轉發(fā)成功率極高,幾乎0失誤,實現完美壓縮、自如發(fā)射。
結語
本系統(tǒng)不必考慮需要學習的編碼到底是什么協(xié)議標準,也不用考慮無線碼是433還是315,其具有自適應判斷能力,能夠自動識別碼型。不采用使用高低電平寬度存儲數據的方法,避免過度地浪費寶貴的內存空間,而利用波形類型號存儲,存儲時所用空間會小得多,大大降低了硬件成本,提高了空間利用率,簡化了電路。
本系統(tǒng)在實際應用中,能夠很好地控制各種設備,一次學習成功率和轉發(fā)成功率都很高,無線、紅外轉發(fā)切換流暢,獲得了滿意的效果,具有廣闊的市場前景。
評論