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