USB(Universal Serial Bus,通用串行总线)具有高速度、低成本、低功耗、即插即用和使用维护方便等优点,随着USB应用领域的逐步扩大,USB 设备现在不但是计算机连接外围设备的标准输入/输出,它也成为智能电视连接外围设备的标准输入/输出。HID 是Human Interface Dvices 的缩写,即人机接口设备, 是USB 协议中最早提出并支持的一种设备类,也是应用最广泛的一类USB 设备, 典型的HID 设备有键盘和鼠标等。USB 串行总线规范专门定义了HID 规范,只要设备符合HID 规范,就是HID 设备。操作系统自带了HID 的驱动程序,用户无需去开发很麻烦的驱动程序,这使HID 设备能够与操作系统方便快捷的建立通信。
这些优点使得HID 设备在智能电视领域也得到了越来越广泛的应用,本论文就是研究基于HID 规范的六轴体感游戏手柄应用于智能遥控器中的设计与实现。
1 工作原理
智能遥控器包括两部分———遥控器和RF 接收器(Dongle),遥控器端和DONgle 端采用射频通信协议进行通信;而Dongle 端通过USB 接口与电视机连接, 它们之间通过USB协议进行通信。依据HID 规范,在Dongle 端模拟出一个具有输入和输出功能的HID 体感游戏手柄, 与电视机通过USB协议进行通信,从而将遥控器和体感游戏手柄合二为一。
Dongle 端与遥控器端对码成功之后,它们之间就建立了通信。遥控器中体感游戏手柄功能的开启和关闭主要是通过电视机的反馈信息实现的。按下遥控器端的体感开关键时,电视机收到信息立即发出反馈信息,使遥控器端的体感开关指示亮,体感游戏手柄功能开启,用户可用遥控器体验体感游戏, 电视机会根据游戏的进度调用遥控器中的传感器模块、震动模块、Audio 模块,实现遥控器和电视机之间的互动;再按下遥控器端的体感开关键时,电视机发出反馈信息使遥控器端的体感开关指示灯灭,体感游戏手柄功能关闭。
体感游戏手柄的操作方式主要是按键和特殊动作。在本系统中, 体感游戏手柄所需的按键与遥控器本身的按键复用,特殊动作的数据转换成相应的射频键值,当有特殊动作操作时,以按键键值的形式发送出去。另外,体感游戏手柄特殊动作的功能可以用于操作智能电视机的TV 部分, 在体感游戏手柄模式下,遥控器通过计算传感器的数据,检测出向左右甩动和向前甩动一下、两下4 个动作,可作为切换图片、音乐等使用。比如向右甩为后一曲,向左甩为前一曲,向前为播放暂停,向前快速两下为退出。
2 系统组成
2.1 硬件系统
智能遥控器有许多功能,这里主要研究体感游戏手柄功能的设计与实现。涉及到的芯片主要有六轴传感器———三轴加速计(G-Sensor)和三轴陀螺仪(Gyro)与MCU,采用的加速计是ADXL345,陀螺仪是IMU3000,MCU 是IA2E。Dongle 端采用的MCU 也是IA2E。
2.1.1 ADXL345、IMU3000 和IA2E 性能简介
ADXL345是一款小而薄的超低功耗三轴加速计,分辨率高(13 位),测量范围达±16 g。可通过SPI(3 线或4 线)或I2C 数字接口访问,ADXL345 非常适合应用于移动设备。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9 mg/LSB),能够测量不到1.0°的倾斜角度变化。
IMU-3000内建了三轴陀螺仪与数字运动处理硬件加速引擎,并具有第二条I2C 接口来连接外接数字加速器,以执行完整的六轴融合算法。在应用层面上,将线性及旋转动作合并为单一的数据流。透过整合之融合算法输出,IMU-3000可减轻系统主处理器的密集运动处理演算,不须频繁读取运动感测数据,使之成为低成本、低功耗的微处理器。
IA2E是SYNIC 公司的无线音频收发芯片,包含无线射频收发模块和USB 接口模块, 其USB 模块包含一个控制端点,两个同步端点和一个双向中断端点。具有非常强的RF 抗干扰特性。无需任何软件支持即可通过I2S、USB 等接口连接到电脑、电视、MP3 等设备。
2.1.2 硬件系统设计
在系统设计上, 遥控器和六轴传感器是两个分离的模块, 这样做的好处是传感器模块不影响遥控器的其他功能。
本论文主要介绍一下六轴传感器模块与MCU 之间的通信方式和Dongle 端模块的硬件系统设计。
首先,介绍传感器模块与MCU 之间的通信方式。它们之间通过简单的I2C 通信协议方式进行通信。具有体感游戏手柄功能的智能遥控器的遥控器端功能模块框图如图1 所示。
图1 遥控器端功能模块框图
传感器模块与MCU 之间的电路连接方式如图2 所示。由于传感器模块需要3.3 V 的电源, 而遥控器电路板上自带的电池是5 V 的,所以还需要一个电压转换电路。传感器模块中的G-sensor 产生X 轴、Y 轴和Z 轴方向的加速度数据,Gyro产生X 轴、Y 轴和Z 轴方向的角速度数据。MCU 通过I2C 总线不断的轮询传感器模块来获取这些数据,并把这些数据分析整理成8 个字节的数据包, 再以2.4 GHz 射频通信协议打包发送给Dongle 端。
图2 传感器与MCU 之间连接的电路图
Dongle 端通过射频收发模块与遥控器端进行数据传输,通过USB 总线与电视机之间进行数据传输。Dongle 端模块的硬件电路比较简单, 功能模块框图如图3 所示, 采用单片机IA2E 作为它的MCU。由于IA2E 中包含了射频收发模块和USB 接口模块,所以只需要一个MCU 即可。IA2E 集成了USB通讯中的底层协议, 具有省事的内置固件模式和灵活的外置固件模式,它只是负责数据交换,所以单片机程序设计非常简洁。另外,可以在Dongle 端设计LED 灯电路模块,不仅美观,而且可以辅助软件更好地实现体感游戏手柄的功能, 还可以用来标识电视机的工作状态,保证Dongle 端做出正确的响应。
图3 Dongle 端功能模块框图