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