一种基于微加速度计的无线教鞭系统设计

时间:2014-07-22来源:网络

  3 系统软件设计

  3.1 远端子系统软件设计

  3.1.1 发送和接收模块

  无线RF射频收发模块nRF24L01通过SPI总线连接用户端和主机端,在使用时要分别对其配置,用户端配置为发射模式,主机端配置为接收模式,并且要严格按照其数据格式及流程发送和接收数据。

  3.1.2 微加速度计模块

  1)寄存器中数据的重建

  微加速度计ADXL345与微处理器之间通过I2C总线连接,它们之间的数据传输需要遵循I2C总线协议,寄存器0x32至寄存器0x37分别保存x、y、z轴输出数据,输出数据为二进制补码,DATAx0为最低有效字节,DATAx1为最高有效字节,其中x代表X、Y或Z。因为ADXL345为16位数据格式,从数据寄存器中获取加速度数据后,用户必须对数据进行重建。我们利用接口函数Multiple_read_ADXL345()多字节连续读取寄存器的数据,然后将高字节左移8位和低字节8位相或的方法对数据重建,且对我们来说,只需X和Z方向的加速度数据即可,程序如下:

  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与普通鼠标精度的比较

  现在市面上普通光学鼠标主流分辨率为400DPI,即每移动1英寸可反馈400个不同点的坐标,也即该鼠标的分辨率为25.4 mm/400=0.06 35mm。而ADXL345采用13位或10位的分辨率模式,此模式可以通过DATA_FORMAT寄存器(地址0x31)进行设置,除此之外,该寄存器还可以没置g的范围,有±2 g,±4 g,±8 g,±16 g,该教鞭选择10位模式,±2 g已经能满足对分辨率的要求,此时分辨率为4g/1024LSB=3.9mg/ LSB,我们是将采集到的加速度数据采用16进制数字方式存储在寄存器中,然后取出数据重建划分步长后,通过无线传送至接收端控制鼠标的移动,而USB鼠标报告描述中规定,若接收到的数据为1则移动一个像素,假设尺寸为300mm*190 mm的14寸显示器,分辨率设置为1 024*768,那么横向最小点间距为300 mm/1 024=0.293 0 mm,虽然这个数据没有普通光学鼠标高,但是对于一般教鞭已经足够,最重要的是我们可以通过软件设置步长,可以在教鞭微动的时候做出准确移动,在需要情况下大幅晃动教鞭能够快速将光标移动到屏幕边缘,符合人体工程学的要求,并且我们可以改变g值,分辨率模式及步长来自由调整教鞭的移动。设置的步长程序如下:

  

 

  3.2 主机端子系统软件设计

  图3为接收端主程序流程图,该接收端软件部分主要包括:PDIUSBD12固件驱动,USB设备的枚举过程。为了使软件可移植性强、易维护,采用分层的方法编写PDIUSBD12的驱动程序。USB驱动程序分成接口和设备控制驱动层、协议层和应用层。应用分层的方法编写的程序条理清晰,可移植性好。而USB HID类是比较大的一个类,HID类设备属于人机交互操作的设备。使用HID设备的一个好处就是,操作系统自带了HID类的驱动程序,而用户无需去开发很麻烦的驱动程序,只要直接使用API调用即可完成通信。所以我们将USB设备枚举成HID设备,这样就可以不用安装驱动而直接使用。USB设备的枚举过程实际上就是告知PC设备描述类型。当插入USB设备后,主机会向设备请求各种描述符来识别设备,包括5个标准描述符:设备描述符、配置描述符、接口描述符、端点描述符、字符串描述符和3个HID设备类特定描述符:HID描述符、报告描述符、实体描述符。当主机从它的描述符中知道了能够知道的所有信息后,便开始为这个设备安装驱动程序。此时USB枚举过程结束,设备可以正常使用了。

  

 

  4 结束语

  本文应用微加速度计和无线RF模块,实现无线遥控的鼠标操作。遥控有效距离可达30~60 m,功耗小,成本低,而且遥控无指向性,能大大增强多媒体的人机交互性能。而且该成品外观设计合理,手感舒适,符合人体工程学设计,能防止鼠标手的出现。

1 2

关键词: 无线教鞭系统 微加速度计 ADXL345

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版