《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于體感算法的新型藍(lán)牙遙控器的設(shè)計(jì)
基于體感算法的新型藍(lán)牙遙控器的設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2012年第4期
寇 凡1,盛懷茂2,王直杰1
1.東華大學(xué) 信息科學(xué)與技術(shù)學(xué)院,上海201600; 2.漢凌微電子有限公司,上海200120
摘要: 提出了一種具有體感控制功能的多功能遙控器的設(shè)計(jì)方案。遙控器通過藍(lán)牙與主機(jī)通信,數(shù)字加速度傳感器、數(shù)字陀螺儀和磁力計(jì)的數(shù)據(jù)通過體感算法處理后,實(shí)現(xiàn)對空中鼠標(biāo)以及體感游戲的控制。在此基礎(chǔ)上,遙控器還加入了鍵盤和語音傳輸功能。經(jīng)測試證明,該方案是可行的。
中圖分類號(hào): TN919.6+
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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ìn),多功能電視機(jī)頂盒已經(jīng)進(jìn)入了千家萬戶。電視除了能夠收看電視節(jié)目外,視頻點(diǎn)播、瀏覽網(wǎng)頁、多媒體游戲、視頻通話等功能也已經(jīng)或即將被引入現(xiàn)代電視(或電視機(jī)頂盒)中。因此,僅具有按鍵功能的紅外線遙控器已經(jīng)無法滿足如此眾多的功能需求。為此,本文在普通遙控器的按鍵功能上增加了體感模塊和語音模塊,引入了體感控制算法,并以藍(lán)牙協(xié)議作為通信方式,設(shè)計(jì)了一款具有體感控制功能的多功能遙控器。

1 系統(tǒng)總體設(shè)計(jì)
    系統(tǒng)總體設(shè)計(jì)框圖如圖1所示。系統(tǒng)以HL1010芯片為控制核心,數(shù)字加速度傳感器、數(shù)字陀螺儀和地磁計(jì)的數(shù)據(jù)通過I2C總線傳至HL1010的8051微控制器,經(jīng)過濾波和體感算法的處理,轉(zhuǎn)化為主機(jī)服務(wù)端可用的數(shù)據(jù),由HL1010的藍(lán)牙控制器傳至主機(jī)服務(wù)端。8051微控制器對鍵盤模塊進(jìn)行鍵盤掃描,將鍵值通過藍(lán)牙發(fā)送至主機(jī)服務(wù)端外,還可以進(jìn)行簡單的音頻壓縮和解碼,并通過藍(lán)牙控制器和語音模塊,完成遙控器和主機(jī)服務(wù)端的語音傳輸。遙控器中加入了E2PROM,用以存儲(chǔ)程序和初始化數(shù)據(jù)以及藍(lán)牙通信所需的重連信息。電源管理模塊用以管理各個(gè)模塊之間的電源,達(dá)到節(jié)能和延長電池使用壽命的作用。此外,串口接口為HL1010燒錄程序的接口。

2 硬件設(shè)計(jì)
2.1 HL1010接口及外圍電路

    HL1010為藍(lán)牙控制芯片,其特點(diǎn)是:除了具有獨(dú)立的藍(lán)牙控制核心外,還集成了一顆8051微控制器核心;具有28個(gè)獨(dú)立的GPIO,兩路語音輸入輸出通道;集成了I2C和SPI控制器,便于外圍設(shè)備的擴(kuò)展;內(nèi)部固化了鍵盤掃描固件,可以通過簡單的寄存器讀寫完成鍵盤掃描。
    利用HL1010的外圍電路,其中,GPIO10~GPIO17作為鍵盤行掃描,GPIO30~GPI-O37作為鍵盤列掃描;GPIO20~GPIO27為電源管理GPIO,分別通過軟件來控制加速度傳感器、數(shù)字陀螺儀、地磁計(jì)、E2PROM、揚(yáng)聲器、振動(dòng)電機(jī)等模塊的開關(guān),以達(dá)到節(jié)能的作用;Pin44、45、48、49、50為語音模塊接口,pin23、24為I2C接口。其余引腳為芯片的供電和射頻匹配電路。HL1010的外圍電路可參考文獻(xiàn)[2]。
2.2 傳感器模塊
    表1為本設(shè)計(jì)中傳感器的部分參數(shù),三個(gè)傳感器都通過I2C總線與主控芯片進(jìn)行交互,電路設(shè)計(jì)較為簡單。

3 軟件設(shè)計(jì)
3.1 體感算法

 


    體感功能中最常用的是空中鼠標(biāo),即通過遙控器在空中的揮舞來控制屏幕中鼠標(biāo)的運(yùn)動(dòng),同時(shí)通過遙控器按鍵實(shí)現(xiàn)鼠標(biāo)按鍵的操作,從而使用戶能在遠(yuǎn)距離的三維空間中獲得鼠標(biāo)的操作功能。為了實(shí)現(xiàn)空中鼠標(biāo)的功能,本文采用陀螺儀和加速度傳感器。通過對陀螺儀得到的角速度數(shù)據(jù)分析得出遙控器的運(yùn)動(dòng)狀態(tài),作為空中鼠標(biāo)的主要數(shù)據(jù);通過對加速度傳感器提供的加速度(主要是判斷重力加速度的方向)數(shù)據(jù)進(jìn)行分析,得到遙控器所處的姿態(tài),從而對陀螺儀的數(shù)據(jù)進(jìn)行坐標(biāo)轉(zhuǎn)換。陀螺儀所得數(shù)據(jù)中與重力加速度平行的方向?yàn)閅軸,與重力加速度垂直的為X軸,使最終空中鼠標(biāo)的Y軸與重力加速度的平行方向始終一致、X軸與重力加速度的垂直方向始終一致。其數(shù)學(xué)方法如下[3-4]:
    遙控器的加速度為as,大地系加速度為ai,兩者的轉(zhuǎn)化關(guān)系為:

    ai=asRis                                                                                                     (1)
其中,Ris為遙控器相對于大地系的余弦陣,其表達(dá)式為:

    經(jīng)過坐標(biāo)轉(zhuǎn)換后,無論使用者如何將遙控器握在手中(正握,反握,豎立,倒立等),空中鼠標(biāo)的運(yùn)動(dòng)僅與使用者手臂的運(yùn)動(dòng)方向有關(guān),而與遙控器的運(yùn)動(dòng)方向無關(guān)。
    算法的主要流程為:(1)對角速度進(jìn)行采樣,并進(jìn)行數(shù)字濾波;(2)對加速度進(jìn)行采樣,并進(jìn)行數(shù)字濾波;(3)通過加速度傳感器數(shù)據(jù)對陀螺儀的坐標(biāo)軸進(jìn)行旋轉(zhuǎn);(4)計(jì)算鼠標(biāo)兩個(gè)軸的偏移量;(5)通過鍵盤掃描得到鼠標(biāo)按鍵鍵值;(6)通過HID協(xié)議將鍵值發(fā)送給服務(wù)端。數(shù)據(jù)流程如圖2所示。
3.2 狀態(tài)機(jī)
    軟件通過狀態(tài)機(jī)控制遙控器處于不同的工作狀態(tài)。該狀態(tài)機(jī)包括配對狀態(tài)、重連狀態(tài)、連接狀態(tài)和休眠狀態(tài)。遙控器狀態(tài)示意圖如圖3所示。

    (1)睡眠狀態(tài)。系統(tǒng)開機(jī)首先進(jìn)入睡眠模式,當(dāng)按下任意按鍵(配對鍵除外)或者搖動(dòng)遙控器時(shí),遙控器被喚醒,如果遙控器中已經(jīng)存有重連信息(最近一次與之配對的主機(jī)信息,包括BD Address和Pin Code)并且電量足夠則進(jìn)入重連狀態(tài),否則繼續(xù)停留在睡眠狀態(tài)。在睡眠狀態(tài)中,遙控器將關(guān)閉8051微控制器、藍(lán)牙控制器、加速度傳感器、地磁傳感器、E2PROM、語音模塊以及所有LED,鍵盤和數(shù)字陀螺儀仍保持工作,但會(huì)降低采樣頻率,用作喚醒系統(tǒng)之用。
    (2)重連狀態(tài)。進(jìn)入重連狀態(tài)后,遙控器讀取重連信息并嘗試與最近一次配對的主機(jī)進(jìn)行重連。如果重連成功則進(jìn)入工作狀態(tài),如果多次重連失敗則重新進(jìn)入睡眠狀態(tài)。在重連狀態(tài)中,加速度傳感器、地磁傳感器、數(shù)字陀螺儀和語音模塊將被關(guān)閉。
    (3)配對狀態(tài)。在任意狀態(tài)下,如果用戶按下配對鍵(工作模式下需要長按配對鍵),則遙控器清除重連信息并進(jìn)入可發(fā)現(xiàn)狀態(tài)。這時(shí)主機(jī)可以發(fā)現(xiàn)遙控器,并進(jìn)行配對操作。在可發(fā)現(xiàn)狀態(tài)中,加速度傳感器、地磁傳感器、數(shù)字陀螺儀和語音模塊將被關(guān)閉。
    (4)連接狀態(tài)。進(jìn)入工作狀態(tài)后,如果用戶長時(shí)間不使用遙控器,系統(tǒng)會(huì)增長sniff的間隔來降低功耗,最后會(huì)使系統(tǒng)進(jìn)入睡眠狀態(tài)。如果主機(jī)主動(dòng)斷開,連接系統(tǒng)則進(jìn)入睡眠狀態(tài),如果連接意外斷開,則系統(tǒng)會(huì)進(jìn)入重連狀態(tài)。在工作狀態(tài)中,遙控器會(huì)根據(jù)不同的報(bào)文格式來選擇所需的傳感器和模塊并控制是否給其供電,而且選擇不同的sniff間隔以減少功耗。
      通過樣機(jī)的使用和測試,本設(shè)計(jì)方案中的遙控器解決了一般體感遙控器存在的主要問題[5]:(1)做到了高性能與低成本的平衡:HL1010中的8051微控制器不僅滿足了遙控器的性能要求,與一般的藍(lán)牙控制芯片比較,不需要在外部另加微控制器,大大降低了成本;(2)有良好的抗環(huán)境干擾:方案中選用的藍(lán)牙通信技術(shù)具有高速、高帶寬和高保真等特點(diǎn),并且運(yùn)用調(diào)頻技術(shù)可有效地防干擾;(3)功耗低:遙控器通過電源管理模塊、狀態(tài)機(jī)控制和連接時(shí)的長短sniff狀態(tài)切換,有效降低了功耗,睡眠狀態(tài)時(shí)電流在100 ?滋A以下,空中鼠標(biāo)狀態(tài)下,短sniff時(shí)電流為5 mA左右,長sniff時(shí)電流為1 mA左右;(4)良好的用戶體驗(yàn):空中鼠標(biāo)中加入了體感算法后,用戶無論以什么姿勢握住遙控器都可以輕松地控制鼠標(biāo),加入了防抖程序后空中鼠標(biāo)可以過濾掉用戶手部的細(xì)微抖動(dòng),增加了控制的精確度,在縮短sniff間隔后遙控器可以做到每1000幀/s以上的報(bào)告速率,可以完成某些高要求的體感游戲的控制。遙控器中的鍵盤功能和語音功能實(shí)現(xiàn)比較簡單,并且與體感算法無關(guān)。
參考文獻(xiàn)
[1] 雷震洲.什么是三網(wǎng)融合[J].科技術(shù)語研究,1999(2):35-36.
[2] 漢凌微電子有限公司.HL1010技術(shù)手冊.2011.
[3] 熊曉華,李維嘉.六自由度飛行模擬器體感模擬算法及仿真實(shí)現(xiàn)[J].系統(tǒng)仿真學(xué)報(bào),2002,14(1):27-30.
[4] 王建中,唐毅,張學(xué)玲.大型特種車駕駛模擬系統(tǒng)體感算法研究[J].北京理工大學(xué)學(xué)報(bào),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)載。