《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于體感算法的新型藍牙遙控器的設(shè)計
基于體感算法的新型藍牙遙控器的設(shè)計
來源:電子技術(shù)應(yīng)用2012年第4期
寇 凡1,盛懷茂2,王直杰1
1.東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海201600; 2.漢凌微電子有限公司,上海200120
摘要: 提出了一種具有體感控制功能的多功能遙控器的設(shè)計方案。遙控器通過藍牙與主機通信,數(shù)字加速度傳感器、數(shù)字陀螺儀和磁力計的數(shù)據(jù)通過體感算法處理后,實現(xiàn)對空中鼠標以及體感游戲的控制。在此基礎(chǔ)上,遙控器還加入了鍵盤和語音傳輸功能。經(jīng)測試證明,該方案是可行的。
關(guān)鍵詞: 體感算法 藍牙通信 遙控器
中圖分類號: TN919.6+
文獻標識碼: A
文章編號: 0258-7998(2012)04-0031-03
Design of novel bluetooth remote controller based on somatosensory algorithm
Kou Fan1,Sheng Huaimao2,Wang Zhijie1
1.College of Information Science and Technology, Donghua University,Shanghai 201600,China; 2.Hanlynn Technologies, Shanghai 200120,China
Abstract: A design of multifunctional remote controllor which has somatosensory function was proposed. It was connected with service though bluetooth. Data from a digital accelerometer, a magnetometer and a digital gyroscope was processed by somatosensory algorithm. Therefore, air mouse function and control of somatosensory video games were realized. Besides, keyboard input and voice function were added. And its feasibility was verified by a set of samples.
Key words : somatosensory algorithm;bluetooth;remote controllor

    隨著三網(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)開機首先進入睡眠模式,當按下任意按鍵(配對鍵除外)或者搖動遙控器時,遙控器被喚醒,如果遙控器中已經(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。