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