基于三轴加速计的三维鼠标设计探索

2013-08-21 03:32李佰财宁伟勋
计算机光盘软件与应用 2013年9期

李佰财 宁伟勋

(国防科学技术大学 计算机学院,长沙 410073)

摘 要:计算机应用领域的扩大,应用需求的种类增多,对计算机的输入也提出了更高的要求。在二维平面运动的传统鼠标已经不能满足更高的人机交互需求,文中基于三轴加速度计ADXL345和Cortex-M0处理器,对三维鼠标的设计进行了探索。通过加速度计ADXL345完成X、Y、Z方向的数据采集,使用I2C将数据传输给Cortex-M0处理器;处理器对数据加工处理后,使用UART将动作的偏移量传输给PC机;根据三维方向的偏移量实现鼠标的三维控制。

关键词:三轴加速计;ADXL345;Cortex-M0;三维鼠标

中图分类号:TP391.41 文献标识码:A 文章编号:1007-9599 (2013) 09-0000-02

1 引言

从“图灵奖”获得者道格拉斯.恩格尔巴特(Douglas Englebart)1968年12月在IEEE会议上展示了世界上的第一个鼠标开始,多年来,从早期的机械鼠标到现在的光学鼠标,鼠标在形状、性能及工作原理上都有了巨大的变化。鼠标的使用代替了键盘繁琐的指令,使计算机的操作更加简便,鼠标也成为了计算机的重要输入设备。随着计算机三维动画图形技术的发展、三维游戏的出现,二维鼠标在三维视觉空间的使用越来越不方便。虽然鼠标上增加一个滚轮,在某些应用中实现了三维控制,但是在二维空间的操作不能满足人们三维人机交互带来的身临其境的舒适体验。因此,三维鼠标的研究和设计及其在虚拟三维现实中的应用将是一个热门课题。

2 系统总体设计框架

系统设计过程分为硬件设计和软件设计两部分。硬件设计部分:首先根据三轴加速度计设计一个三维数据采集电路,采集X、Y、Z方向的加速度信号;其次,设计数据处理、存储电路,将加速度计传输过来的数据进行相应处理,得到X、Y、Z方向的数据偏移量。软件设计部分:首先设计数据处理过程,将三轴加速度计传输到处理器中的原始数据进行存储、数据格式转换、数据处理;其次,设计三轴加速度计与处理器之间I2C接口驱动和处理器与PC机间的UART串口驱动。如图1是系统整体结构框图。

图1 三维鼠标设计结构框图

3 硬件设计方案

加速度数据采集电路主要由三轴加速度计ADXL345来实现。ADXL345是美国模拟器件公司于推出的MEMS技术具有SPI和I2C数字输出功能的三轴加速度计,具有小巧轻薄、超低功耗、可变量程、分辨率高等特点,测量范围达±16g,数字输出数据为16位二进制补码格式,集成了32级FIFO缓存器。加速度数据采集电路加3.3V电压供电,通讯方式用I2C接口。

处理器电路主要由Cortex-M0处理器来实现。Cortex-M0处理器是市场上现有的最小、能耗最低、最节能的ARM处理器。该处理能耗非常低、门数量少、代码占用空间小,使得MCU开发人员能够以8位处理器的价位,获得32位处理器的性能。Cortex-M0处理器对三轴加速度计采集的数据进行处理、存储,得出加速度计在三个方向上的偏移量,并通过串口发送给PC机。

图2 硬件实际连接图

4 软件设计方案

三轴加速度计与处理器之间的通讯采用I2C接口模式。I2C(Inter-Integrated Circuit)总线是PHILIPS半导体公司设计出来的串行数据传输总线规范,一般有两根信号线:一要是双向的数据线SDA,另一根是时钟线SCL。两个线即可实验全双工数据传输。将ADXL345的/cs片选信号接高电平时,其工作在I2C通讯模式,与处理器的连接电路如图3所示。

图3 I2C总线连接电路

对接口的设置和数据的处理,使用Keil uVision4软件编写生成,并通过Flashmagic软件烧写进芯片中。

图4 三轴加速计数据采集流程图 图5 鼠标驱动流程图

上位机通过鼠标驱动程序,利用X方向偏移量控制光标左右移动、Y方向偏移量控制光标上下移动、Z轴方向偏移量来实现鼠标放大缩小功能。通过X、Y、Z的综合定义实现三维方向移动的功能。驱动软件流程如图5所示。

判断鼠标的偏移量是通过计算传感器给出的加速度得出的,鼠标正常使用过程中的加速度数值为:

X方向运动时:X轴的加速度值区间为-12g—12g,Y轴的加速度值区间为-1g—1g,Z轴的加速度值区间为-1g—1g;

Y方向运动时:X轴的加速度值区间为-1g—1g,Y轴的加速度值区间为-12g—12g,Z轴的加速度值区间为-1g—1g;

Z方向运动时:X轴的加速度值区间为-1g—1g,Y轴的加速度值区间为-1g—1g,Z轴的加速度值区间为-12g—12g。

加速度值经过处理后传输给PC机的三维方向数据偏移量如图6.

图6 三轴加速计运动时各方向加速值偏移量

在PC机端,使用环境为Windows操作系统。PC机通过USB模拟的串口通道接收三个方向上的偏移量,采用Microsoft Visual C++6.0作为开发工具,编写驱动程序,根据三个方向的偏移量控制实现三维鼠标的功能。

5 结束语

通过ADXL345采集三轴加速度数值,通过Cortex-M0计算加速度数值并获取偏移量,通过串口将所获取的偏移量传给电脑,实现控制鼠标光标的移动和其他的一些必要功能。三维空间的拓展开发离不开鼠标这个经典人机交互设备的三维化,随着模拟空间的三维化,鼠标的需求还会进一步体现,但三轴加速计的天然三维性质使得它成为三维鼠标核心的首选器件,随着需求的出现,其功能也会进一步得到挖掘。

参考文献:

[1]贾珠红,张晓东.基于IIC的单主多从单片机之间的通信[J].微计算机信息,2009,25(3-2):101.

[2]林邓伟,邢文生.光电鼠标芯片组在无接触检测运动物体中的应用[J].微计算机信息,2006,22(7-2).

[3]王卓柱,周皓,等.基于鼠标芯片1P8452的方向角传感器设计[J].计算机测量与控制,2007,15(6):834-836.

[4]Doug A.Bowman著. 张风军,纪连恩译.三维用户界面:理论与实践[M].电子工业出版社,2006.

[5]袁西,陈栋,田湘,吕晶.三轴数字加速度计ADXL345及其在捷联惯导中的应用[J].电子设计工程,3(18).

[6]王富东,陈蕾.微机原理与接口技术[M].苏州大学出版社.