李佰財(cái) 寧偉勛
(國(guó)防科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)學(xué)院,長(zhǎng)沙 410073)
摘 要:計(jì)算機(jī)應(yīng)用領(lǐng)域的擴(kuò)大,應(yīng)用需求的種類增多,對(duì)計(jì)算機(jī)的輸入也提出了更高的要求。在二維平面運(yùn)動(dòng)的傳統(tǒng)鼠標(biāo)已經(jīng)不能滿足更高的人機(jī)交互需求,文中基于三軸加速度計(jì)ADXL345和Cortex-M0處理器,對(duì)三維鼠標(biāo)的設(shè)計(jì)進(jìn)行了探索。通過(guò)加速度計(jì)ADXL345完成X、Y、Z方向的數(shù)據(jù)采集,使用I2C將數(shù)據(jù)傳輸給Cortex-M0處理器;處理器對(duì)數(shù)據(jù)加工處理后,使用UART將動(dòng)作的偏移量傳輸給PC機(jī);根據(jù)三維方向的偏移量實(shí)現(xiàn)鼠標(biāo)的三維控制。
關(guān)鍵詞:三軸加速計(jì);ADXL345;Cortex-M0;三維鼠標(biāo)
中圖分類號(hào):TP391.41 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9599 (2013) 09-0000-02
1 引言
從“圖靈獎(jiǎng)”獲得者道格拉斯.恩格爾巴特(Douglas Englebart)1968年12月在IEEE會(huì)議上展示了世界上的第一個(gè)鼠標(biāo)開(kāi)始,多年來(lái),從早期的機(jī)械鼠標(biāo)到現(xiàn)在的光學(xué)鼠標(biāo),鼠標(biāo)在形狀、性能及工作原理上都有了巨大的變化。鼠標(biāo)的使用代替了鍵盤(pán)繁瑣的指令,使計(jì)算機(jī)的操作更加簡(jiǎn)便,鼠標(biāo)也成為了計(jì)算機(jī)的重要輸入設(shè)備。隨著計(jì)算機(jī)三維動(dòng)畫(huà)圖形技術(shù)的發(fā)展、三維游戲的出現(xiàn),二維鼠標(biāo)在三維視覺(jué)空間的使用越來(lái)越不方便。雖然鼠標(biāo)上增加一個(gè)滾輪,在某些應(yīng)用中實(shí)現(xiàn)了三維控制,但是在二維空間的操作不能滿足人們?nèi)S人機(jī)交互帶來(lái)的身臨其境的舒適體驗(yàn)。因此,三維鼠標(biāo)的研究和設(shè)計(jì)及其在虛擬三維現(xiàn)實(shí)中的應(yīng)用將是一個(gè)熱門(mén)課題。
2 系統(tǒng)總體設(shè)計(jì)框架
系統(tǒng)設(shè)計(jì)過(guò)程分為硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分。硬件設(shè)計(jì)部分:首先根據(jù)三軸加速度計(jì)設(shè)計(jì)一個(gè)三維數(shù)據(jù)采集電路,采集X、Y、Z方向的加速度信號(hào);其次,設(shè)計(jì)數(shù)據(jù)處理、存儲(chǔ)電路,將加速度計(jì)傳輸過(guò)來(lái)的數(shù)據(jù)進(jìn)行相應(yīng)處理,得到X、Y、Z方向的數(shù)據(jù)偏移量。軟件設(shè)計(jì)部分:首先設(shè)計(jì)數(shù)據(jù)處理過(guò)程,將三軸加速度計(jì)傳輸?shù)教幚砥髦械脑紨?shù)據(jù)進(jìn)行存儲(chǔ)、數(shù)據(jù)格式轉(zhuǎn)換、數(shù)據(jù)處理;其次,設(shè)計(jì)三軸加速度計(jì)與處理器之間I2C接口驅(qū)動(dòng)和處理器與PC機(jī)間的UART串口驅(qū)動(dòng)。如圖1是系統(tǒng)整體結(jié)構(gòu)框圖。
圖1 三維鼠標(biāo)設(shè)計(jì)結(jié)構(gòu)框圖
3 硬件設(shè)計(jì)方案
加速度數(shù)據(jù)采集電路主要由三軸加速度計(jì)ADXL345來(lái)實(shí)現(xiàn)。ADXL345是美國(guó)模擬器件公司于推出的MEMS技術(shù)具有SPI和I2C數(shù)字輸出功能的三軸加速度計(jì),具有小巧輕薄、超低功耗、可變量程、分辨率高等特點(diǎn),測(cè)量范圍達(dá)±16g,數(shù)字輸出數(shù)據(jù)為16位二進(jìn)制補(bǔ)碼格式,集成了32級(jí)FIFO緩存器。加速度數(shù)據(jù)采集電路加3.3V電壓供電,通訊方式用I2C接口。
處理器電路主要由Cortex-M0處理器來(lái)實(shí)現(xiàn)。Cortex-M0處理器是市場(chǎng)上現(xiàn)有的最小、能耗最低、最節(jié)能的ARM處理器。該處理能耗非常低、門(mén)數(shù)量少、代碼占用空間小,使得MCU開(kāi)發(fā)人員能夠以8位處理器的價(jià)位,獲得32位處理器的性能。Cortex-M0處理器對(duì)三軸加速度計(jì)采集的數(shù)據(jù)進(jìn)行處理、存儲(chǔ),得出加速度計(jì)在三個(gè)方向上的偏移量,并通過(guò)串口發(fā)送給PC機(jī)。
圖2 硬件實(shí)際連接圖
4 軟件設(shè)計(jì)方案
三軸加速度計(jì)與處理器之間的通訊采用I2C接口模式。I2C(Inter-Integrated Circuit)總線是PHILIPS半導(dǎo)體公司設(shè)計(jì)出來(lái)的串行數(shù)據(jù)傳輸總線規(guī)范,一般有兩根信號(hào)線:一要是雙向的數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。兩個(gè)線即可實(shí)驗(yàn)全雙工數(shù)據(jù)傳輸。將ADXL345的/cs片選信號(hào)接高電平時(shí),其工作在I2C通訊模式,與處理器的連接電路如圖3所示。
圖3 I2C總線連接電路
對(duì)接口的設(shè)置和數(shù)據(jù)的處理,使用Keil uVision4軟件編寫(xiě)生成,并通過(guò)Flashmagic軟件燒寫(xiě)進(jìn)芯片中。
圖4 三軸加速計(jì)數(shù)據(jù)采集流程圖 圖5 鼠標(biāo)驅(qū)動(dòng)流程圖
上位機(jī)通過(guò)鼠標(biāo)驅(qū)動(dòng)程序,利用X方向偏移量控制光標(biāo)左右移動(dòng)、Y方向偏移量控制光標(biāo)上下移動(dòng)、Z軸方向偏移量來(lái)實(shí)現(xiàn)鼠標(biāo)放大縮小功能。通過(guò)X、Y、Z的綜合定義實(shí)現(xiàn)三維方向移動(dòng)的功能。驅(qū)動(dòng)軟件流程如圖5所示。
判斷鼠標(biāo)的偏移量是通過(guò)計(jì)算傳感器給出的加速度得出的,鼠標(biāo)正常使用過(guò)程中的加速度數(shù)值為:
X方向運(yùn)動(dòng)時(shí):X軸的加速度值區(qū)間為-12g—12g,Y軸的加速度值區(qū)間為-1g—1g,Z軸的加速度值區(qū)間為-1g—1g;
Y方向運(yùn)動(dòng)時(shí):X軸的加速度值區(qū)間為-1g—1g,Y軸的加速度值區(qū)間為-12g—12g,Z軸的加速度值區(qū)間為-1g—1g;
Z方向運(yùn)動(dòng)時(shí):X軸的加速度值區(qū)間為-1g—1g,Y軸的加速度值區(qū)間為-1g—1g,Z軸的加速度值區(qū)間為-12g—12g。
加速度值經(jīng)過(guò)處理后傳輸給PC機(jī)的三維方向數(shù)據(jù)偏移量如圖6.
圖6 三軸加速計(jì)運(yùn)動(dòng)時(shí)各方向加速值偏移量
在PC機(jī)端,使用環(huán)境為Windows操作系統(tǒng)。PC機(jī)通過(guò)USB模擬的串口通道接收三個(gè)方向上的偏移量,采用Microsoft Visual C++6.0作為開(kāi)發(fā)工具,編寫(xiě)驅(qū)動(dòng)程序,根據(jù)三個(gè)方向的偏移量控制實(shí)現(xiàn)三維鼠標(biāo)的功能。
5 結(jié)束語(yǔ)
通過(guò)ADXL345采集三軸加速度數(shù)值,通過(guò)Cortex-M0計(jì)算加速度數(shù)值并獲取偏移量,通過(guò)串口將所獲取的偏移量傳給電腦,實(shí)現(xiàn)控制鼠標(biāo)光標(biāo)的移動(dòng)和其他的一些必要功能。三維空間的拓展開(kāi)發(fā)離不開(kāi)鼠標(biāo)這個(gè)經(jīng)典人機(jī)交互設(shè)備的三維化,隨著模擬空間的三維化,鼠標(biāo)的需求還會(huì)進(jìn)一步體現(xiàn),但三軸加速計(jì)的天然三維性質(zhì)使得它成為三維鼠標(biāo)核心的首選器件,隨著需求的出現(xiàn),其功能也會(huì)進(jìn)一步得到挖掘。
參考文獻(xiàn):
[1]賈珠紅,張曉東.基于IIC的單主多從單片機(jī)之間的通信[J].微計(jì)算機(jī)信息,2009,25(3-2):101.
[2]林鄧偉,邢文生.光電鼠標(biāo)芯片組在無(wú)接觸檢測(cè)運(yùn)動(dòng)物體中的應(yīng)用[J].微計(jì)算機(jī)信息,2006,22(7-2).
[3]王卓柱,周皓,等.基于鼠標(biāo)芯片1P8452的方向角傳感器設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2007,15(6):834-836.
[4]Doug A.Bowman著. 張風(fēng)軍,紀(jì)連恩譯.三維用戶界面:理論與實(shí)踐[M].電子工業(yè)出版社,2006.
[5]袁西,陳棟,田湘,呂晶.三軸數(shù)字加速度計(jì)ADXL345及其在捷聯(lián)慣導(dǎo)中的應(yīng)用[J].電子設(shè)計(jì)工程,3(18).
[6]王富東,陳蕾.微機(jī)原理與接口技術(shù)[M].蘇州大學(xué)出版社.