文獻標識碼: A
文章編號: 0258-7998(2012)04-0031-03
隨著三網(wǎng)融合[1]的推進,,多功能電視機頂盒已經(jīng)進入了千家萬戶,。電視除了能夠收看電視節(jié)目外,視頻點播,、瀏覽網(wǎng)頁,、多媒體游戲、視頻通話等功能也已經(jīng)或即將被引入現(xiàn)代電視(或電視機頂盒)中,。因此,,僅具有按鍵功能的紅外線遙控器已經(jīng)無法滿足如此眾多的功能需求。為此,,本文在普通遙控器的按鍵功能上增加了體感模塊和語音模塊,,引入了體感控制算法,并以藍牙協(xié)議作為通信方式,,設(shè)計了一款具有體感控制功能的多功能遙控器,。
1 系統(tǒng)總體設(shè)計
系統(tǒng)總體設(shè)計框圖如圖1所示。系統(tǒng)以HL1010芯片為控制核心,,數(shù)字加速度傳感器,、數(shù)字陀螺儀和地磁計的數(shù)據(jù)通過I2C總線傳至HL1010的8051微控制器,經(jīng)過濾波和體感算法的處理,,轉(zhuǎn)化為主機服務(wù)端可用的數(shù)據(jù),,由HL1010的藍牙控制器傳至主機服務(wù)端。8051微控制器對鍵盤模塊進行鍵盤掃描,,將鍵值通過藍牙發(fā)送至主機服務(wù)端外,,還可以進行簡單的音頻壓縮和解碼,并通過藍牙控制器和語音模塊,,完成遙控器和主機服務(wù)端的語音傳輸,。遙控器中加入了E2PROM,用以存儲程序和初始化數(shù)據(jù)以及藍牙通信所需的重連信息,。電源管理模塊用以管理各個模塊之間的電源,,達到節(jié)能和延長電池使用壽命的作用。此外,,串口接口為HL1010燒錄程序的接口,。
2 硬件設(shè)計
2.1 HL1010接口及外圍電路
HL1010為藍牙控制芯片,其特點是:除了具有獨立的藍牙控制核心外,,還集成了一顆8051微控制器核心,;具有28個獨立的GPIO,,兩路語音輸入輸出通道;集成了I2C和SPI控制器,,便于外圍設(shè)備的擴展,;內(nèi)部固化了鍵盤掃描固件,可以通過簡單的寄存器讀寫完成鍵盤掃描,。
利用HL1010的外圍電路,,其中,GPIO10~GPIO17作為鍵盤行掃描,,GPIO30~GPI-O37作為鍵盤列掃描,;GPIO20~GPIO27為電源管理GPIO,分別通過軟件來控制加速度傳感器,、數(shù)字陀螺儀,、地磁計、E2PROM,、揚聲器、振動電機等模塊的開關(guān),,以達到節(jié)能的作用,;Pin44、45,、48,、49、50為語音模塊接口,,pin23,、24為I2C接口。其余引腳為芯片的供電和射頻匹配電路,。HL1010的外圍電路可參考文獻[2],。
2.2 傳感器模塊
表1為本設(shè)計中傳感器的部分參數(shù),三個傳感器都通過I2C總線與主控芯片進行交互,,電路設(shè)計較為簡單,。
3 軟件設(shè)計
3.1 體感算法
體感功能中最常用的是空中鼠標,即通過遙控器在空中的揮舞來控制屏幕中鼠標的運動,,同時通過遙控器按鍵實現(xiàn)鼠標按鍵的操作,,從而使用戶能在遠距離的三維空間中獲得鼠標的操作功能。為了實現(xiàn)空中鼠標的功能,,本文采用陀螺儀和加速度傳感器,。通過對陀螺儀得到的角速度數(shù)據(jù)分析得出遙控器的運動狀態(tài),作為空中鼠標的主要數(shù)據(jù),;通過對加速度傳感器提供的加速度(主要是判斷重力加速度的方向)數(shù)據(jù)進行分析,,得到遙控器所處的姿態(tài),,從而對陀螺儀的數(shù)據(jù)進行坐標轉(zhuǎn)換。陀螺儀所得數(shù)據(jù)中與重力加速度平行的方向為Y軸,,與重力加速度垂直的為X軸,,使最終空中鼠標的Y軸與重力加速度的平行方向始終一致、X軸與重力加速度的垂直方向始終一致,。其數(shù)學(xué)方法如下[3-4]:
遙控器的加速度為as,,大地系加速度為ai,兩者的轉(zhuǎn)化關(guān)系為:
ai=asRis (1)
其中,,Ris為遙控器相對于大地系的余弦陣,,其表達式為:
經(jīng)過坐標轉(zhuǎn)換后,無論使用者如何將遙控器握在手中(正握,,反握,,豎立,倒立等),,空中鼠標的運動僅與使用者手臂的運動方向有關(guān),,而與遙控器的運動方向無關(guān)。
算法的主要流程為:(1)對角速度進行采樣,,并進行數(shù)字濾波,;(2)對加速度進行采樣,并進行數(shù)字濾波,;(3)通過加速度傳感器數(shù)據(jù)對陀螺儀的坐標軸進行旋轉(zhuǎn),;(4)計算鼠標兩個軸的偏移量;(5)通過鍵盤掃描得到鼠標按鍵鍵值,;(6)通過HID協(xié)議將鍵值發(fā)送給服務(wù)端,。數(shù)據(jù)流程如圖2所示。
3.2 狀態(tài)機
軟件通過狀態(tài)機控制遙控器處于不同的工作狀態(tài),。該狀態(tài)機包括配對狀態(tài),、重連狀態(tài)、連接狀態(tài)和休眠狀態(tài),。遙控器狀態(tài)示意圖如圖3所示,。
(1)睡眠狀態(tài)。系統(tǒng)開機首先進入睡眠模式,,當(dāng)按下任意按鍵(配對鍵除外)或者搖動遙控器時,,遙控器被喚醒,如果遙控器中已經(jīng)存有重連信息(最近一次與之配對的主機信息,,包括BD Address和Pin Code)并且電量足夠則進入重連狀態(tài),,否則繼續(xù)停留在睡眠狀態(tài)。在睡眠狀態(tài)中,,遙控器將關(guān)閉8051微控制器,、藍牙控制器,、加速度傳感器、地磁傳感器,、E2PROM,、語音模塊以及所有LED,鍵盤和數(shù)字陀螺儀仍保持工作,,但會降低采樣頻率,,用作喚醒系統(tǒng)之用。
(2)重連狀態(tài),。進入重連狀態(tài)后,,遙控器讀取重連信息并嘗試與最近一次配對的主機進行重連。如果重連成功則進入工作狀態(tài),,如果多次重連失敗則重新進入睡眠狀態(tài),。在重連狀態(tài)中,加速度傳感器,、地磁傳感器,、數(shù)字陀螺儀和語音模塊將被關(guān)閉。
(3)配對狀態(tài),。在任意狀態(tài)下,,如果用戶按下配對鍵(工作模式下需要長按配對鍵),則遙控器清除重連信息并進入可發(fā)現(xiàn)狀態(tài),。這時主機可以發(fā)現(xiàn)遙控器,并進行配對操作,。在可發(fā)現(xiàn)狀態(tài)中,,加速度傳感器、地磁傳感器,、數(shù)字陀螺儀和語音模塊將被關(guān)閉,。
(4)連接狀態(tài)。進入工作狀態(tài)后,,如果用戶長時間不使用遙控器,,系統(tǒng)會增長sniff的間隔來降低功耗,最后會使系統(tǒng)進入睡眠狀態(tài),。如果主機主動斷開,,連接系統(tǒng)則進入睡眠狀態(tài),如果連接意外斷開,,則系統(tǒng)會進入重連狀態(tài),。在工作狀態(tài)中,遙控器會根據(jù)不同的報文格式來選擇所需的傳感器和模塊并控制是否給其供電,,而且選擇不同的sniff間隔以減少功耗,。
通過樣機的使用和測試,,本設(shè)計方案中的遙控器解決了一般體感遙控器存在的主要問題[5]:(1)做到了高性能與低成本的平衡:HL1010中的8051微控制器不僅滿足了遙控器的性能要求,與一般的藍牙控制芯片比較,,不需要在外部另加微控制器,,大大降低了成本;(2)有良好的抗環(huán)境干擾:方案中選用的藍牙通信技術(shù)具有高速,、高帶寬和高保真等特點,,并且運用調(diào)頻技術(shù)可有效地防干擾;(3)功耗低:遙控器通過電源管理模塊,、狀態(tài)機控制和連接時的長短sniff狀態(tài)切換,,有效降低了功耗,睡眠狀態(tài)時電流在100 ?滋A以下,,空中鼠標狀態(tài)下,,短sniff時電流為5 mA左右,長sniff時電流為1 mA左右,;(4)良好的用戶體驗:空中鼠標中加入了體感算法后,,用戶無論以什么姿勢握住遙控器都可以輕松地控制鼠標,加入了防抖程序后空中鼠標可以過濾掉用戶手部的細微抖動,,增加了控制的精確度,,在縮短sniff間隔后遙控器可以做到每1000幀/s以上的報告速率,可以完成某些高要求的體感游戲的控制,。遙控器中的鍵盤功能和語音功能實現(xiàn)比較簡單,,并且與體感算法無關(guān)。
參考文獻
[1] 雷震洲.什么是三網(wǎng)融合[J].科技術(shù)語研究,,1999(2):35-36.
[2] 漢凌微電子有限公司.HL1010技術(shù)手冊.2011.
[3] 熊曉華,,李維嘉.六自由度飛行模擬器體感模擬算法及仿真實現(xiàn)[J].系統(tǒng)仿真學(xué)報,2002,,14(1):27-30.
[4] 王建中,,唐毅,張學(xué)玲.大型特種車駕駛模擬系統(tǒng)體感算法研究[J].北京理工大學(xué)學(xué)報,,2008,,28(8):760-673.
[5] 柳春青.基于MCU的IPTV體感遙控器[J].通信與信息技術(shù),2010(3):96-100.