基于体感算法的多功能蓝牙遥控器的设计

时间:2013-10-10来源:网络


算法的主要流程为:(1)对角速度进行采样,并进行数字滤波;(2)对加速度进行采样,并进行数字滤波;(3)通过加速度传感器数据对陀螺仪的坐标轴进行旋转;(4)计算鼠标两个轴的偏移量;(5)通过键盘扫描得到鼠标按键键值;(6)通过HID协议将键值发送给服务端。数据流程如图2所示。


3.2 状态机

软件通过状态机控制遥控器处于不同的工作状态。该状态机包括配对状态、重连状态、连接状态和休眠状态。遥控器状态示意图如图3所示。

(1)睡眠状态。系统开机首先进入睡眠模式,当按下任意按键(配对键除外)或者摇动遥控器时,遥控器被唤醒,如果遥控器中已经存有重连信息(最近一次与之配对的主机信息,包括BD Address和Pin Code)并且电量足够则进入重连状态,否则继续停留在睡眠状态。在睡眠状态中,遥控器将关闭8051微控制器、蓝牙控制器、加速度传感器、地磁传感器、E2PROM、语音模块以及所有LED,键盘和数字陀螺仪仍保持工作,但会降低采样频率,用作唤醒系统之用。

(2)重连状态。进入重连状态后,遥控器读取重连信息并尝试与最近一次配对的主机进行重连。如果重连成功则进入工作状态,如果多次重连失败则重新进入睡眠状态。在重连状态中,加速度传感器、地磁传感器、数字陀螺仪和语音模块将被关闭。

(3)配对状态。在任意状态下,如果用户按下配对键(工作模式下需要长按配对键),则遥控器清除重连信息并进入可发现状态。这时主机可以发现遥控器,并进行配对操作。在可发现状态中,加速度传感器、地磁传感器、数字陀螺仪和语音模块将被关闭。

(4)连接状态。进入工作状态后,如果用户长时间不使用遥控器,系统会增长sniff的间隔来降低功耗,最后会使系统进入睡眠状态。如果主机主动断开,连接系统则进入睡眠状态,如果连接意外断开,则系统会进入重连状态。在工作状态中,遥控器会根据不同的报文格式来选择所需的传感器和模块并控制是否给其供电,而且选择不同的sniff间隔以减少功耗。

通过样机的使用和测试,本设计方案中的遥控器解决了一般体感遥控器存在的主要问题[5]:(1)做到了高性能与低成本的平衡:HL1010中的8051微控制器不仅满足了遥控器的性能要求,与一般的蓝牙控制芯片比较,不需要在外部另加微控制器,大大降低了成本;(2)有良好的抗环境干扰:方案中选用的蓝牙通信技术具有高速、高带宽和高保真等特点,并且运用调频技术可有效地防干扰;(3)功耗低:遥控器通过电源管理模块、状态机控制和连接时的长短sniff状态切换,有效降低了功耗,睡眠状态时电流在100 ?滋A以下,空中鼠标状态下,短sniff时电流为5 mA左右,长sniff时电流为1 mA左右;(4)良好的用户体验:空中鼠标中加入了体感算法后,用户无论以什么姿势握住遥控器都可以轻松地控制鼠标,加入了防抖程序后空中鼠标可以过滤掉用户手部的细微抖动,增加了控制的精确度,在缩短sniff间隔后遥控器可以做到每1000帧/s以上的报告速率,可以完成某些高要求的体感游戏的控制。遥控器中的键盘功能和语音功能实现比较简单,并且与体感算法无关。

1 2

关键词: 体感算法 蓝牙遥控器 8051

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

或用微信扫描左侧二维码

相关文章

查看电脑版