基于體感算法的多功能藍(lán)牙遙控器的設(shè)計(jì)
算法的主要流程為:(1)對(duì)角速度進(jìn)行采樣,并進(jìn)行數(shù)字濾波;(2)對(duì)加速度進(jìn)行采樣,并進(jìn)行數(shù)字濾波;(3)通過(guò)加速度傳感器數(shù)據(jù)對(duì)陀螺儀的坐標(biāo)軸進(jìn)行旋轉(zhuǎn);(4)計(jì)算鼠標(biāo)兩個(gè)軸的偏移量;(5)通過(guò)鍵盤(pán)掃描得到鼠標(biāo)按鍵鍵值;(6)通過(guò)HID協(xié)議將鍵值發(fā)送給服務(wù)端。數(shù)據(jù)流程如圖2所示。
3.2 狀態(tài)機(jī)
軟件通過(guò)狀態(tài)機(jī)控制遙控器處于不同的工作狀態(tài)。該狀態(tài)機(jī)包括配對(duì)狀態(tài)、重連狀態(tài)、連接狀態(tài)和休眠狀態(tài)。遙控器狀態(tài)示意圖如圖3所示。
(1)睡眠狀態(tài)。系統(tǒng)開(kāi)機(jī)首先進(jìn)入睡眠模式,當(dāng)按下任意按鍵(配對(duì)鍵除外)或者搖動(dòng)遙控器時(shí),遙控器被喚醒,如果遙控器中已經(jīng)存有重連信息(最近一次與之配對(duì)的主機(jī)信息,包括BD Address和Pin Code)并且電量足夠則進(jìn)入重連狀態(tài),否則繼續(xù)停留在睡眠狀態(tài)。在睡眠狀態(tài)中,遙控器將關(guān)閉8051微控制器、藍(lán)牙控制器、加速度傳感器、地磁傳感器、E2PROM、語(yǔ)音模塊以及所有LED,鍵盤(pán)和數(shù)字陀螺儀仍保持工作,但會(huì)降低采樣頻率,用作喚醒系統(tǒng)之用。
(2)重連狀態(tài)。進(jìn)入重連狀態(tài)后,遙控器讀取重連信息并嘗試與最近一次配對(duì)的主機(jī)進(jìn)行重連。如果重連成功則進(jìn)入工作狀態(tài),如果多次重連失敗則重新進(jìn)入睡眠狀態(tài)。在重連狀態(tài)中,加速度傳感器、地磁傳感器、數(shù)字陀螺儀和語(yǔ)音模塊將被關(guān)閉。
(3)配對(duì)狀態(tài)。在任意狀態(tài)下,如果用戶(hù)按下配對(duì)鍵(工作模式下需要長(zhǎng)按配對(duì)鍵),則遙控器清除重連信息并進(jìn)入可發(fā)現(xiàn)狀態(tài)。這時(shí)主機(jī)可以發(fā)現(xiàn)遙控器,并進(jìn)行配對(duì)操作。在可發(fā)現(xiàn)狀態(tài)中,加速度傳感器、地磁傳感器、數(shù)字陀螺儀和語(yǔ)音模塊將被關(guān)閉。
(4)連接狀態(tài)。進(jìn)入工作狀態(tài)后,如果用戶(hù)長(zhǎng)時(shí)間不使用遙控器,系統(tǒng)會(huì)增長(zhǎng)sniff的間隔來(lái)降低功耗,最后會(huì)使系統(tǒng)進(jìn)入睡眠狀態(tài)。如果主機(jī)主動(dòng)斷開(kāi),連接系統(tǒng)則進(jìn)入睡眠狀態(tài),如果連接意外斷開(kāi),則系統(tǒng)會(huì)進(jìn)入重連狀態(tài)。在工作狀態(tài)中,遙控器會(huì)根據(jù)不同的報(bào)文格式來(lái)選擇所需的傳感器和模塊并控制是否給其供電,而且選擇不同的sniff間隔以減少功耗。
通過(guò)樣機(jī)的使用和測(cè)試,本設(shè)計(jì)方案中的遙控器解決了一般體感遙控器存在的主要問(wèn)題[5]:(1)做到了高性能與低成本的平衡:HL1010中的8051微控制器不僅滿(mǎn)足了遙控器的性能要求,與一般的藍(lán)牙控制芯片比較,不需要在外部另加微控制器,大大降低了成本;(2)有良好的抗環(huán)境干擾:方案中選用的藍(lán)牙通信技術(shù)具有高速、高帶寬和高保真等特點(diǎn),并且運(yùn)用調(diào)頻技術(shù)可有效地防干擾;(3)功耗低:遙控器通過(guò)電源管理模塊、狀態(tài)機(jī)控制和連接時(shí)的長(zhǎng)短sniff狀態(tài)切換,有效降低了功耗,睡眠狀態(tài)時(shí)電流在100 ?滋A以下,空中鼠標(biāo)狀態(tài)下,短sniff時(shí)電流為5 mA左右,長(zhǎng)sniff時(shí)電流為1 mA左右;(4)良好的用戶(hù)體驗(yàn):空中鼠標(biāo)中加入了體感算法后,用戶(hù)無(wú)論以什么姿勢(shì)握住遙控器都可以輕松地控制鼠標(biāo),加入了防抖程序后空中鼠標(biāo)可以過(guò)濾掉用戶(hù)手部的細(xì)微抖動(dòng),增加了控制的精確度,在縮短sniff間隔后遙控器可以做到每1000幀/s以上的報(bào)告速率,可以完成某些高要求的體感游戲的控制。遙控器中的鍵盤(pán)功能和語(yǔ)音功能實(shí)現(xiàn)比較簡(jiǎn)單,并且與體感算法無(wú)關(guān)。 紅外遙控器相關(guān)文章:紅外遙控器原理
萬(wàn)能遙控器相關(guān)文章:萬(wàn)能遙控器代碼
加速度計(jì)相關(guān)文章:加速度計(jì)原理
評(píng)論