新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種基于微加速度計的無線教鞭系統(tǒng)設(shè)計

        一種基于微加速度計的無線教鞭系統(tǒng)設(shè)計

        作者: 時間:2014-07-22 來源:網(wǎng)絡(luò) 收藏

          3 系統(tǒng)軟件設(shè)計

        本文引用地址:http://www.104case.com/article/255889.htm

          3.1 遠端子系統(tǒng)軟件設(shè)計

          3.1.1 發(fā)送和接收模塊

          無線RF射頻收發(fā)模塊nRF24L01通過SPI總線連接用戶端和主機端,在使用時要分別對其配置,用戶端配置為發(fā)射模式,主機端配置為接收模式,并且要嚴格按照其數(shù)據(jù)格式及流程發(fā)送和接收數(shù)據(jù)。

          3.1.2 模塊

          1)寄存器中數(shù)據(jù)的重建

          與微處理器之間通過I2C總線連接,它們之間的數(shù)據(jù)傳輸需要遵循I2C總線協(xié)議,寄存器0x32至寄存器0x37分別保存x、y、z軸輸出數(shù)據(jù),輸出數(shù)據(jù)為二進制補碼,DATAx0為最低有效字節(jié),DATAx1為最高有效字節(jié),其中x代表X、Y或Z。因為為16位數(shù)據(jù)格式,從數(shù)據(jù)寄存器中獲取加速度數(shù)據(jù)后,用戶必須對數(shù)據(jù)進行重建。我們利用接口函數(shù)Multiple_read_()多字節(jié)連續(xù)讀取寄存器的數(shù)據(jù),然后將高字節(jié)左移8位和低字節(jié)8位相或的方法對數(shù)據(jù)重建,且對我們來說,只需X和Z方向的加速度數(shù)據(jù)即可,程序如下:

          ADXL345_DataReconstrution()

          { unsigned int Acceleration[2];

          Multiple_Read_ADXL345();

          Acceleration[0]=BUF[1];

          ACCeleration[0]=(ACceleration[0]<<8)|BUF[0];

          Acceleration[1]=BUF[5];

          Acceleration[1]=(Acceleration[1]<<8)|BUF[4];

          }

          2)ADXL345與普通鼠標精度的比較

          現(xiàn)在市面上普通光學(xué)鼠標主流分辨率為400DPI,即每移動1英寸可反饋400個不同點的坐標,也即該鼠標的分辨率為25.4 mm/400=0.06 35mm。而ADXL345采用13位或10位的分辨率模式,此模式可以通過DATA_FORMAT寄存器(地址0x31)進行設(shè)置,除此之外,該寄存器還可以沒置g的范圍,有±2 g,±4 g,±8 g,±16 g,該教鞭選擇10位模式,±2 g已經(jīng)能滿足對分辨率的要求,此時分辨率為4g/1024LSB=3.9mg/ LSB,我們是將采集到的加速度數(shù)據(jù)采用16進制數(shù)字方式存儲在寄存器中,然后取出數(shù)據(jù)重建劃分步長后,通過無線傳送至接收端控制鼠標的移動,而USB鼠標報告描述中規(guī)定,若接收到的數(shù)據(jù)為1則移動一個像素,假設(shè)尺寸為300mm*190 mm的14寸顯示器,分辨率設(shè)置為1 024*768,那么橫向最小點間距為300 mm/1 024=0.293 0 mm,雖然這個數(shù)據(jù)沒有普通光學(xué)鼠標高,但是對于一般教鞭已經(jīng)足夠,最重要的是我們可以通過軟件設(shè)置步長,可以在教鞭微動的時候做出準確移動,在需要情況下大幅晃動教鞭能夠快速將光標移動到屏幕邊緣,符合人體工程學(xué)的要求,并且我們可以改變g值,分辨率模式及步長來自由調(diào)整教鞭的移動。設(shè)置的步長程序如下:

          

         

          3.2 主機端子系統(tǒng)軟件設(shè)計

          圖3為接收端主程序流程圖,該接收端軟件部分主要包括:PDIUSBD12固件驅(qū)動,USB設(shè)備的枚舉過程。為了使軟件可移植性強、易維護,采用分層的方法編寫PDIUSBD12的驅(qū)動程序。USB驅(qū)動程序分成接口和設(shè)備控制驅(qū)動層、協(xié)議層和應(yīng)用層。應(yīng)用分層的方法編寫的程序條理清晰,可移植性好。而USB HID類是比較大的一個類,HID類設(shè)備屬于人機交互操作的設(shè)備。使用HID設(shè)備的一個好處就是,操作系統(tǒng)自帶了HID類的驅(qū)動程序,而用戶無需去開發(fā)很麻煩的驅(qū)動程序,只要直接使用API調(diào)用即可完成通信。所以我們將USB設(shè)備枚舉成HID設(shè)備,這樣就可以不用安裝驅(qū)動而直接使用。USB設(shè)備的枚舉過程實際上就是告知PC設(shè)備描述類型。當插入USB設(shè)備后,主機會向設(shè)備請求各種描述符來識別設(shè)備,包括5個標準描述符:設(shè)備描述符、配置描述符、接口描述符、端點描述符、字符串描述符和3個HID設(shè)備類特定描述符:HID描述符、報告描述符、實體描述符。當主機從它的描述符中知道了能夠知道的所有信息后,便開始為這個設(shè)備安裝驅(qū)動程序。此時USB枚舉過程結(jié)束,設(shè)備可以正常使用了。

          

         

          4 結(jié)束語

          本文應(yīng)用微加速度計和無線RF模塊,實現(xiàn)無線遙控的鼠標操作。遙控有效距離可達30~60 m,功耗小,成本低,而且遙控?zé)o指向性,能大大增強多媒體的人機交互性能。而且該成品外觀設(shè)計合理,手感舒適,符合人體工程學(xué)設(shè)計,能防止鼠標手的出現(xiàn)。

        加速度計相關(guān)文章:加速度計原理

        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 衡阳市| 大姚县| 玉屏| 楚雄市| 潍坊市| 西青区| 广平县| 礼泉县| 盘山县| 那坡县| 察隅县| 察雅县| 门头沟区| 泰宁县| 保德县| 绥滨县| 茂名市| 石棉县| 宜州市| 神农架林区| 彭阳县| 屏东市| 宽城| 枝江市| 乐陵市| 淄博市| 安丘市| 宝坻区| 远安县| 通化县| 尼勒克县| 兴海县| 上林县| 卢湾区| 陆川县| 石屏县| 安平县| 秦安县| 潜江市| 信宜市| 祁阳县|