劉浩宇,侯政旭,郝白東
(黑龍江科技大學(xué) 電子與信息工程學(xué)院,哈爾濱 150022)
嵌入式系統(tǒng)的多維藍(lán)牙HID激光鼠標(biāo)設(shè)計(jì)*
劉浩宇,侯政旭,郝白東
(黑龍江科技大學(xué) 電子與信息工程學(xué)院,哈爾濱 150022)
系統(tǒng)基于嵌入式ARM Cortex-M3系列芯片,采用激光感應(yīng)器件、加速度計(jì)、二維操作桿等對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)采集。激光感應(yīng)器件對(duì)平面移動(dòng)數(shù)據(jù)采集,結(jié)合了加速計(jì)對(duì)手部姿態(tài)計(jì)算,計(jì)算的移動(dòng)數(shù)值通過藍(lán)牙HID發(fā)送到PC機(jī),省去不便攜帶的接收器。其可實(shí)時(shí)更新到電腦的屏幕上,光標(biāo)會(huì)跟隨人手部移動(dòng)的方向而移動(dòng),實(shí)現(xiàn)鼠標(biāo)辦公、演講多平面維度使用。
多維鼠標(biāo);激光傳感器;BlueCore-04;HID;Cortex-M3
隨著通信網(wǎng)絡(luò)及控制技術(shù)的提高,新興技術(shù)也逐漸融入到日常生活之中。一直以來,電腦鼠標(biāo)的存在具有普遍性,但普通的有線光電鼠標(biāo)對(duì)平面要求高,無法在任意平面使用,在需要教學(xué)等空間中操作不便,在一定程度上限制了人們對(duì)電腦的操縱范圍,不能給更多電腦用戶提供更方便的服務(wù)。與普通2.4 GHz鼠標(biāo)相比,使用藍(lán)牙HID接口,可省去接收器的硬件接口,可輕松與PC、平板電腦、智能手機(jī)等藍(lán)牙設(shè)備連接。由于常見空中鼠標(biāo)定位難,因此將激光傳感器融合參與加速度校偏,能得到較好數(shù)據(jù)值。
在移動(dòng)辦公的時(shí)代,人們?cè)缫褜⒁苿?dòng)PC設(shè)備作為日常輕辦公的首選,隨著電子設(shè)備的成本降低,在硬件上提供豐富的外設(shè)接口,如藍(lán)牙、紅外等基礎(chǔ)接口。并且隨著3D行業(yè)的發(fā)展,人們對(duì)顯示效果的追求不斷提高,要求身臨其境,傳統(tǒng)的鼠標(biāo)控制器已不能滿足人們對(duì)真實(shí)體驗(yàn)的追求了[1]。人們?cè)谕嬗螒驎r(shí)常常會(huì)隨著游戲畫面的更迭而左右搖擺、擺動(dòng)手腳,此時(shí),人們便把手中的鼠標(biāo)當(dāng)成一個(gè)實(shí)體操控器,盡情娛樂[2]。
本文首先研究了藍(lán)牙協(xié)議棧相關(guān)內(nèi)容,討論了藍(lán)牙HID的實(shí)現(xiàn)方式;通過不斷修改激光感應(yīng)器件,實(shí)現(xiàn)空中鼠標(biāo)應(yīng)用激光輔助加速度矯正,平面鼠標(biāo)使用加速計(jì)對(duì)位移值矯正,空中鼠標(biāo)采用搖動(dòng)替換滾輪編碼器。經(jīng)過產(chǎn)品需求分析,常見空中鼠標(biāo)具有位移飄、定位難等人工操作缺陷,因而本文設(shè)計(jì)采用空中鼠標(biāo)差速操作模式,在精準(zhǔn)點(diǎn)擊時(shí)使用慢速搖桿進(jìn)行精準(zhǔn)移動(dòng),大幅度跨越平面使用陀螺儀輕松跨越大幅平面,對(duì)相關(guān)嵌入式系統(tǒng)技術(shù)進(jìn)行了研究,完成了系統(tǒng)總體方案的設(shè)計(jì)。
圖1 系統(tǒng)軟硬件框圖
新一代ARM Cortex-M3的32位處理器性價(jià)比非常高,有很廣闊的應(yīng)用前景。[3]系統(tǒng)分為數(shù)據(jù)處理和發(fā)送兩部分,數(shù)據(jù)處理端又分為平面控制和空間控制兩部分,平面控制使用激光傳感器采集平面偏移值,融合移動(dòng)速度影響的偏移干擾??臻g控制使用加速計(jì)解算手部轉(zhuǎn)動(dòng)姿態(tài),激光傳感器對(duì)圖像偏移量融合,減少位置偏移量。結(jié)構(gòu)圖如圖1所示。
1.1 激光傳感器
激光傳感器選用的是Avago Technologies(安華高科技)的ADNS-9500,它是一款高性能激光導(dǎo)航傳感器,通過比較兩圖片使用STM32F103的內(nèi)部高速DMA外設(shè),可以訪問ADNS-9500的數(shù)值變化。
ADNS-9500擁有功能強(qiáng)大的導(dǎo)航處理引擎,可以提供超高速移動(dòng)檢測(cè)和高達(dá)150 ips(1 bps=inches per second 英寸/秒)的高速運(yùn)動(dòng)檢測(cè),ADNS-9500可以使用SPI串行外設(shè)接口進(jìn)行數(shù)據(jù)通信,而 STM32F103內(nèi)部集成高速SPI協(xié)議,數(shù)據(jù)傳輸速率最快可達(dá)18 Mbps;可對(duì) X 軸 Y 軸進(jìn)行獨(dú)立的分辨率設(shè)置,可以對(duì)不同場(chǎng)景進(jìn)行編程處理,如ATM取款機(jī),降低相應(yīng)使用軸的分辨率,從而減少主控負(fù)載,降低功耗。
使用Motion_Burst突發(fā)模式可提高通信時(shí)延時(shí)時(shí)常,極大程度地提高傳輸速率;且激光傳感器響應(yīng)速度優(yōu)于傳統(tǒng)光學(xué)鼠標(biāo),激光對(duì)平面處理能力優(yōu)于傳統(tǒng)光學(xué)傳感器,平面兼容性測(cè)試如圖2所示。
圖2 ADNS-9500平面兼容性圖示
1.2 加速度計(jì)及陀螺儀
美國(guó)Invensense公司的MPU-6050為整合性6軸運(yùn)動(dòng)處理組件,MPU-6050可以使用I2C總線進(jìn)行讀取,自帶DMP高速運(yùn)動(dòng)引擎直接輸出四元數(shù),降低微處理器的工作負(fù)擔(dān),數(shù)據(jù)轉(zhuǎn)化后會(huì)產(chǎn)生中斷信號(hào)通知CPU從而降低CPU采集次數(shù),提高轉(zhuǎn)換速率,且具有成本低、市場(chǎng)應(yīng)用廣等特點(diǎn)[4]。MPU-6050對(duì)人的手部轉(zhuǎn)動(dòng)進(jìn)行結(jié)算,經(jīng)芯片使用DMP庫(kù)處理分析,得到優(yōu)化降噪的原始數(shù)據(jù),轉(zhuǎn)換成為可讀的移動(dòng)數(shù)據(jù)。使用手腕擺動(dòng)的數(shù)據(jù)及多姿態(tài)角度融合后,可適應(yīng)不同握姿,結(jié)合藍(lán)牙HID無線傳輸直接傳送到PC端及安卓智能終端。利用差速搖桿運(yùn)動(dòng),可實(shí)現(xiàn)高低速定位轉(zhuǎn)換,同時(shí)實(shí)現(xiàn)單擊雙擊及空中翻頁(yè)等功能。設(shè)計(jì)具有體積小 、重量輕、功耗低、可靠性高、易于集成和實(shí)現(xiàn)智能化等特點(diǎn)[5]。
本文設(shè)計(jì)的多維鼠標(biāo)對(duì)不同平臺(tái)進(jìn)行二維三維兩用變換,通過DSP高速處理器融合算法,在不同表面均可自適應(yīng)。
1.3 藍(lán)牙HID基礎(chǔ)簡(jiǎn)介
藍(lán)牙無線技術(shù)是一種短距離的連接便攜且可固定電子設(shè)備的傳統(tǒng)線纜替代技術(shù)。這種技術(shù)的特點(diǎn)是高效、低功耗、低成本[6]。The Human Interface Device (HID)協(xié)議規(guī)范是專為USB人機(jī)交互設(shè)備開發(fā)的[7]。HID協(xié)議定義了藍(lán)牙在人機(jī)接口設(shè)備中的協(xié)議、特征和使用規(guī)程。典型的應(yīng)用包括藍(lán)牙鼠標(biāo)、藍(lán)牙鍵盤、藍(lán)牙游戲手柄等藍(lán)牙鏈路控制器,其有2個(gè)主要狀態(tài):待機(jī)(STANDBY)和連接(CONNECTION)狀態(tài)[8],以英國(guó)Cambridge SiliconRadio(簡(jiǎn)稱CSR)公司生產(chǎn)的BlueCore-04藍(lán)牙芯片作為研究對(duì)象,以藍(lán)牙1.2協(xié)議棧為設(shè)計(jì)指導(dǎo),提出基于藍(lán)牙HID協(xié)議棧的鼠標(biāo)讀取數(shù)據(jù)采集實(shí)現(xiàn)[9]。HID是藍(lán)牙設(shè)計(jì)中人性化接口設(shè)備的簡(jiǎn)稱,基于BlueCore-04芯片,更改協(xié)議棧實(shí)現(xiàn)方式,本設(shè)計(jì)基于CSR公司芯片所提供的藍(lán)牙HID解決方案,底層源碼及固件庫(kù)均由廠家提供,自主設(shè)計(jì)完成上層應(yīng)用設(shè)計(jì)。
2.1 系統(tǒng)工作原理
本設(shè)計(jì)采用STM32F103芯片負(fù)責(zé)數(shù)據(jù)融合及姿態(tài)結(jié)算,通過藍(lán)牙HID將數(shù)據(jù)發(fā)送到PC機(jī)或智能設(shè)備。在桌面時(shí),STM32F103將SROM固件下載進(jìn)入ADNS-9500傳感器,然后發(fā)送指令喚醒激光傳感器,將傳感器數(shù)據(jù)讀回,同時(shí)讀回加速計(jì)平面加速度,將回執(zhí)數(shù)據(jù)融合處理后,通過藍(lán)牙HID協(xié)議發(fā)送至移動(dòng)端。在空中使用時(shí),用MPU-6050使用DMP庫(kù)引擎快速讀取四元數(shù),通過內(nèi)置高速FIFO濾波器及互補(bǔ)濾波器后,通過四元數(shù)的AHRS航角姿態(tài)解算法換算得到最優(yōu)姿態(tài),發(fā)送至移動(dòng)端。
通過對(duì)不同數(shù)據(jù)的實(shí)時(shí)處理,實(shí)現(xiàn)空中平面兩用鼠標(biāo)設(shè)計(jì),同時(shí)設(shè)計(jì)可疊形3D打印工學(xué)折疊外殼,在應(yīng)用于不同平面時(shí)使用不同握姿過渡。
2.2 藍(lán)牙HID協(xié)議實(shí)現(xiàn)
藍(lán)牙設(shè)計(jì)采用CRS公司的BlueCore-04,采用Bluelab-SDK開發(fā)包專門對(duì)上層應(yīng)用進(jìn)行開發(fā)。符合藍(lán)牙3.0+EDR標(biāo)準(zhǔn)并遵守HID Profile 1.1規(guī)范,將藍(lán)牙HID設(shè)置為默認(rèn)主設(shè)備,直接連接無需加密。
主要對(duì)協(xié)議說明如下:
① HID_Init_RC:在收到消息說明之后,初始化自定義的HID結(jié)構(gòu)體,并嘗試重新連接上次連接的主機(jī);
② HID_Connect_CMD:連接請(qǐng)求位,收到消息后,判斷是否處于空閑狀態(tài),若空閑則接受連接請(qǐng)求;若已有主機(jī)連接,則拒絕請(qǐng)求。
③ HID_Connect_RM:回執(zhí)連接確認(rèn)消息,收到此消息后,判斷連接是否成功,若正確對(duì)接,則保存主機(jī)藍(lán)牙地址,設(shè)置為連接狀態(tài)。
④ HID_Data_RC和HID_Data_RM:由主機(jī)發(fā)送的消息,接收定義幀速度和鼠標(biāo)中斷返回信息。
⑤ HID_Disconnect_MS:斷開連接信息,當(dāng)主機(jī)與藍(lán)牙連接超出范圍或一方斷開時(shí),會(huì)收到這條斷開信息回執(zhí)。收到消息后,設(shè)置為Idle態(tài),并啟動(dòng)Idle timeout定時(shí)器。
“不錯(cuò)。一開始我只是把他當(dāng)作棋子,故意把照片泄露給他。只是,我沒有想到他乘虛而入,騙得雪螢同他結(jié)婚。我當(dāng)然不會(huì)坐視不管,就收買那個(gè)看守公廁的老頭兒,讓他誣陷夏冰,并讓你來推波助瀾。這樣,我就可以一箭雙雕?!狈秷?jiān)強(qiáng)把手里剩下的幾顆魚飼料投到魚缸里,抽出一張濕巾紙擦手。
⑥ HID模塊上報(bào)用戶按鍵、鼠標(biāo)、轉(zhuǎn)動(dòng)數(shù)據(jù)都是通過調(diào)用Bluelab-SDK中的HID庫(kù)函數(shù)接口。
HID發(fā)送流程如圖3所示。
圖3 HID發(fā)送流程圖
2.3 DMP四元數(shù)全角轉(zhuǎn)換歐拉角
Invensense公司官方提供的姿態(tài)解算算法、陀螺儀標(biāo)度因數(shù)、安裝誤差系數(shù)以及零偏移值的計(jì)算與處理方法[8]由DMP 實(shí)現(xiàn)姿態(tài)解算算法處理,等待DMP (數(shù)字運(yùn)動(dòng)處理器)解算完成后產(chǎn)生的外部中斷,在外部中斷里去讀取姿態(tài)解算的結(jié)果??傮w不但提高了系統(tǒng)的實(shí)時(shí)性,還增強(qiáng)了系統(tǒng)的可靠性和單片機(jī)處理能力[10]。所得到的四元數(shù)通過STM32F103內(nèi)置轉(zhuǎn)換處理后,得到Roll、Pitch及Yaw角。所需要注意的是,Yaw角在地磁影響下輸出值偏移量急劇增大,所以針對(duì)Yaw角偏航使用地磁計(jì)HMC-5883進(jìn)行矯正,得到去磁偏影響,以有效避免歐拉角任意一軸轉(zhuǎn)動(dòng)90°時(shí)均會(huì)與其他軸相重合導(dǎo)致重合旋轉(zhuǎn)軸失去作用的萬(wàn)向軸鎖問題(Gimbal Lock)。[11]
2.4 四元數(shù)轉(zhuǎn)換
(1)
其中E3×3為單位陣,HX定義為
(2)
展開式(1)可得:
(3)
設(shè)方向余弦矩陣AΦ的元素為aij,旋轉(zhuǎn)特征向量Η的元素可表示為:
(4)
四元數(shù)由矢量和標(biāo)量部分組成,可寫成如下形式:
(5)
根據(jù)旋轉(zhuǎn)特征向量和旋轉(zhuǎn)角,定義四元數(shù)矢量部分和標(biāo)量部分如下:
(6)
式(6)滿足:
(7)
根據(jù)4式和6式,方向余弦可用四元數(shù)表示:
(8)
式(8)中:
(9)
將式(9)代入式(8)中可得:
(10)
顯然,方向余弦矩陣與歐拉角轉(zhuǎn)動(dòng)順序有關(guān),以Z-Y-X轉(zhuǎn)動(dòng)順序?yàn)槔?,即先繞偏航軸轉(zhuǎn)動(dòng)ψ,其方向余弦矩陣為A3(ψ);接著繞俯仰軸轉(zhuǎn)動(dòng)θ,其方向余弦矩陣為A2(θ);最后繞滾動(dòng)軸轉(zhuǎn)動(dòng)φ,其方向余弦矩陣為A1(φ)。[1-2]則Z-Y-X轉(zhuǎn)動(dòng)的方向余弦矩陣為:
(11)
設(shè)Z-Y-X轉(zhuǎn)動(dòng)的四元數(shù)為q,用四元數(shù)表示,Z-Y-X轉(zhuǎn)動(dòng)的方向余弦矩陣即為式(10)。
俯仰角為-180°~-90°或+90°~+180°時(shí),滾動(dòng)角和偏航角取值范圍為-180°~180°。通過數(shù)據(jù)采集,將數(shù)據(jù)融合校驗(yàn)得到數(shù)據(jù)真實(shí)偏差,為了保證不不失一般性,因此原則上選擇超過90°角,免正切值趨近無窮。
如表1所列,歐拉角到四元數(shù)的轉(zhuǎn)換顯示是正確的,同時(shí),3個(gè)軸取值范圍在±90°之間的全角度四元數(shù)到歐拉角的轉(zhuǎn)換顯然能正確輸出結(jié)果。
表1 偏移量數(shù)據(jù)融合校驗(yàn)表
本設(shè)計(jì)硬計(jì)相對(duì)簡(jiǎn)單,由主控電路、傳感器電路及藍(lán)
牙HID發(fā)射端組成。藍(lán)牙模塊采用英國(guó)CSR公司的BC417芯片,并與MX公司的8 MHz的Flash芯片29LV800C構(gòu)成了模塊。藍(lán)牙模塊電路如圖4所示。
圖4 CRS-BC147串口HID模塊設(shè)計(jì)電路
通過STM32F103系列32位處理器內(nèi)置SPI接口及I2C通信高速接口[11],可以實(shí)現(xiàn)對(duì)移動(dòng)傳感器的數(shù)據(jù)采集,高速濾波融合通過協(xié)議擬合后發(fā)送到藍(lán)牙接收端,藍(lán)牙接收端通過在應(yīng)用層的搭建并遵守HID Profile 1.1規(guī)范[12],將偏移量數(shù)據(jù)發(fā)送至接收機(jī)。整體實(shí)現(xiàn)方式說明如圖5所示。
圖5 整體功能實(shí)現(xiàn)說明
[1] 王康.多功能藍(lán)牙遙控器的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:武漢理工大學(xué),2012.
[2] 戴明.可穿戴遠(yuǎn)程健康監(jiān)測(cè)預(yù)警系統(tǒng)研究及設(shè)計(jì)[D].南昌:南昌航空大學(xué),2015.
[3] 丁華峰. 基于HID協(xié)議的工控自定義鍵盤接口設(shè)計(jì)[J].電子設(shè)計(jì)工程,2013(24):2-3.
[4] 杜麗敏.基于力矩陀螺的高分敏捷小衛(wèi)星姿態(tài)機(jī)動(dòng)控制研究[D].北京:中國(guó)科學(xué)院研究生院,2012.
[5] 張海鵬,房建成. MEMS陀螺儀短時(shí)漂移特性實(shí)驗(yàn)研究[J].中國(guó)慣性技術(shù)學(xué)報(bào),2007(1):101-103.
[6] 劉錦偉.智能手機(jī)模擬藍(lán)牙鍵盤——基于Android平臺(tái)的實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù),2013,13(9):2-3.
[7] 彭孝東.MEMS三軸數(shù)字陀螺儀標(biāo)定方法研究[J].傳感器與微系統(tǒng), 2013,32(6):6-8.
[8] 韓鵬. 藍(lán)牙無線鍵盤鼠標(biāo)的研制 [D].西安: 西北工業(yè)大學(xué), 2004.
[9] 魏剛. 基于HID協(xié)議的串口藍(lán)牙鍵盤鼠標(biāo)設(shè)計(jì)[D].西安:西安科技大學(xué),2005.
[10] 張穎,邢玉秀.淺析鏈路無關(guān)HID驅(qū)動(dòng)程序[J].學(xué)術(shù)交流,2014,14(1):1-2.
[11] 田亮亮,王國(guó)發(fā),臧家偉,等.3D無線射頻鼠標(biāo)的設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新, 2011(3).
[12] ASK.三位一體 藍(lán)牙悄然進(jìn)入4.0時(shí)代[J].電腦迷,2012(1):20.
[13] 張鵬飛,李亞,蔣亞飛,等.一種可適用于虛擬現(xiàn)實(shí)的3D無線鼠標(biāo)的探討與設(shè)計(jì)[J].電子世界, 2016(7):1-2.
劉浩宇(學(xué)生),主要研究方向?yàn)榍度胧较到y(tǒng)、無線通信等。
參考文獻(xiàn)
[1] 王科俊,丁宇航.基于靜脈識(shí)別的身份認(rèn)證方法研究[J].科技導(dǎo)報(bào),2005,35(3):35-37.
[2] 余成波,秦華鋒.生物特征識(shí)別技術(shù):手指靜脈識(shí)別技術(shù)[M].北京:清華大學(xué)出版社,2009.
[3] 王元鉑,何玉青,侯雨石,等.基于DSP的靜脈識(shí)別系統(tǒng)[J].光學(xué)技術(shù),2009,35(5):739-741.
[4] 李鋼鐵.靜脈識(shí)別算法研究[M].長(zhǎng)春:吉林大學(xué)出版社,2007.
[5] 王躍宗,劉京會(huì).TMS320DM642 DSP應(yīng)用系統(tǒng)設(shè)計(jì)與開發(fā)[M].北京:人民郵電出版社,2009.
(責(zé)任編輯:楊迪娜 收稿日期:2016-09-01)
Multi-dimensional Bluetooth HID Laser Mouse Based on Embedded System
Liu Haoyu,Hou Zhengxu,Hao Baidong
(College of Electronics and Information Engineer,Heilongjiang University of Science and Technology,Harbin 150022,China)
The system uses the laser sensor device,accelerometer and two-dimensional joystick to collect the data in real-time,which is based on ARM Cortex-M3.The laser sensor is used to collect the moving data of the plane,the system uses the accelerometer to calculate the hand pose,the value is sent to the PC via Bluetooth HID,which eliminates the receiver carrying.The data can be updated in real-time to the computer screen,the cursor will follow the unit direction of the movement of our hands.The design can solve the difficulties of multi-planar dimension.
air mouse;laser sensor;BlueCore-04; Bluetooth; Cortex-M3
* 黑龍江省級(jí)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃省重點(diǎn)項(xiàng)目(項(xiàng)目編號(hào):201510219006)。
TN24
A
?迪娜
2016-09-14)