依据HID 标准的六轴体感游戏手柄规划与完结

时间: 2023-04-06 08:56:47 |   作者: 优游登陆

  USB(Universal Serial Bus,通用串行总线)具有高速度、低成本、低功耗、即插即用和运用保护便利等长处,跟着USB运用范畴的逐渐扩展,USB 设备现在不但是核算机衔接外围设备的标准输入/输出,它也成为智能电视衔接外围设备的标准输入/输出。是Human Interface Dvices 的缩写,即人机接口设备, 是USB 协议中最早提出并支撑的一种设备类,也是运用最广泛的一类USB 设备, 典型的标准,只需设备契合HID 标准,便是HID 设备。操作体系自带了HID 的驱动程序,用户无需去开发很费事的驱动程序,这使HID 设备能够与操作体系便利快捷的树立通讯。

  这些长处使得HID 设备在智能电视范畴也得到了越来越广泛的运用,本论文便是研讨依据HID 标准的六轴体感游戏手柄运用于智能遥控器中的规划与完结。

  智能遥控器包含两部分遥控器和RF 接纳器(Dongle),遥控器端和DONgle 端选用射频通讯协议进行通讯;而Dongle 端通过USB 接口与电视机衔接, 它们之间通过USB协议进行通讯。依据HID 标准,在Dongle 端模仿出一个具有输入和输出功用的HID 体感游戏手柄, 与电视机通过USB协议进行通讯,然后将遥控器和体感游戏手柄合二为一。

  Dongle 端与遥控器端对码成功之后,它们之间就树立了通讯。遥控器中体感游戏手柄功用的敞开和封闭首要是通过电视机的反应信息完结的。按下遥控器端的体感开要害时,电视机收到信息当即宣布反应信息,使遥控器端的体感开关指示亮,体感游戏手柄功用敞开,用户可用遥控器体会体感游戏, 电视时机依据游戏的进展调用遥控器中的传感器模块、轰动模块、Audio 模块,完结遥控器和电视机之间的互动;再按下遥控器端的体感开要害时,电视机宣布反应信息使遥控器端的体感开关指示灯灭,体感游戏手柄功用封闭。

  体感游戏手柄的操作方法首要是按键和特别动作。在本体系中, 体感游戏手柄所需的按键与遥控器自身的按键复用,特别动作的数据转化成相应的射频键值,当有特别动作操作时,以按键键值的方法发送出去。别的,体感游戏手柄特别动作的功用能够用于操作智能电视机的TV 部分, 在体感游戏手柄形式下,遥控器通过核算传感器的数据,检测出向左右甩动和向前甩动一下、两下4 个动作,可作为切换图片、音乐等运用。比方向右甩为后一曲,向左甩为前一曲,向前为播映暂停,向前快速两下为退出。

  智能遥控器有许多功用,这儿首要研讨体感游戏手柄功用的规划与完结。涉及到的芯片首要有六轴传感器三轴加快计(G-Sensor)和三轴陀螺仪(Gyro)与MCU,选用的加快计是ADXL345,陀螺仪是IMU3000,MCU 是IA2E。Dongle 端选用的MCU 也是IA2E。

  ADXL345是一款小而薄的超低功耗三轴加快计,分辨率高(13 位),丈量规模达16 g。可通过SPI(3 线C 数字接口拜访,ADXL345 十分合适运用于移动设备。它能够在歪斜检测运用中丈量静态重力加快度,还能够丈量运动或冲击导致的动态加快度。其高分辨率(3.9 mg/LSB),能够丈量不到1.0的歪斜视点改变。

  IMU-3000内建了三轴陀螺仪与数字运动处理硬件加快引擎,并具有第二条I2C 接口来衔接外接数字加快器,以履行完好的六轴交融算法。在运用层面上,将线性及旋转动作合并为单一的数据流。透过整合之交融算法输出,IMU-3000可减轻体系主处理器的密布运动处理演算,不须频频读取运动感测数据,使之成为低成本、低功耗的微处理器。

  IA2E是SYNIC 公司的无线音频收发芯片,包含无线射频收发模块和USB 接口模块, 其USB 模块包含一个操控端点,两个同步端点和一个双向中止端点。具有十分强的RF 抗干扰特性。无需任何软件支撑即可通过I2S、USB 等接口衔接到电脑、电视、MP3 等设备。

  在体系规划上, 遥控器和六轴传感器是两个别离的模块, 这样做的优点是传感器模块不影响遥控器的其他功用。

  本论文首要介绍一下六轴传感器模块与MCU 之间的通讯方法和Dongle 端模块的硬件体系规划。

  首要,介绍传感器模块与MCU 之间的通讯方法。它们之间通过简略的I2C 通讯协议方法进行通讯。具有体感游戏手柄功用的智能遥控器的遥控器端功用模块框图如图1 所示。

  传感器模块与MCU 之间的电路衔接方法如图2 所示。由于传感器模块需求3.3 V 的电源, 而遥控器电路板上自带的电池是5 V 的,所以还需求一个电压转化电路。传感器模块中的G-sensor 发生X 轴、Y 轴和Z 轴方向的加快度数据,Gyro发生X 轴、Y 轴和Z 轴方向的角速度数据。MCU 通过I2C 总线不断的轮询传感器模块来获取这些数据,并把这些数据剖析收拾成8 个字节的数据包, 再以2.4 GHz 射频通讯协议打包发送给Dongle 端。

  Dongle 端通过射频收发模块与遥控器端进行数据传输,通过USB 总线与电视机之间进行数据传输。Dongle 端模块的硬件电路比较简略, 功用模块框图如图3 所示, 选用单片机IA2E 作为它的MCU。由于IA2E 中包含了射频收发模块和USB 接口模块,所以只需求一个MCU 即可。IA2E 集成了USB通讯中的底层协议, 具有省劲的内置固件形式和灵敏的外置固件形式,它仅仅担任数据交换,所以单片机程序规划十分简练。别的,能够在Dongle 端规划LED灯电路模块,不只漂亮,并且能够辅佐软件更好地完结体感游戏手柄的功用, 还能够用来标识电视机的作业状况,确保Dongle 端做出正确的呼应。

  本体系所规划和完结的体感游戏手柄具有输入和输出的功用,即它具有输入和输出HID 数据包。它不像键盘和鼠标是标准的HID 设备,需求依据HID 标准自界说它的数据包格局。依据数据包的格局,写出其陈述描述符,以确保在枚举进程中正确辨认出体感游戏手柄设备。Dongle 端剖析收拾从遥控器端获取到的数据,依据设备的陈述描述符,辨认出体感游戏手柄数据,并把这些数据收拾成契合其输入数据包格局的数据,然后Dongle 端再以USB 协议的通讯方法,将收拾好的数据传输给电视机。一起Dongle 端接纳电视机反应回来的数据信息, 并收拾成契合其输出数据包格局的数据,然后将信息反应给遥控器端,遥控器端再作出相应的呼应。

  与一切HID 设备相同,具有体感游戏手柄功用的智能遥控器Dongle 端的运用程序规划也首要包含以下4 个方面的作业:1)查找一切HID 设备;2)确认哪一个是用户需求的HID 设备,并衔接该设备;3)取得HID 设备的信息;4)依据用户需求,读取HID 输入陈述或许写入HID 输出陈述。

  智能遥控器中或许界说了多个HID 设备,需求运用两个接口,接口0 用于完结其他HID 设备的功用,接口1 用于完结体感游戏手柄的功用。因而需求两个非零端点,由于同一装备下的不同接口,有必要运用不同的端点。而数据是通过非零端点进行传输的,体感游戏手柄的接口选用端点2 回来或发送陈述数据。Dongle 端通过端点2 输入向电视机回来体感游戏手柄的数据,电视机通过端点2 输出中止将反应给遥控器的信息宣布。

  Dongle 刺进后,怎样让电视机辨认出USB 体感游戏手柄呢?设备枚举的功用便是完结电视机辨认设备的进程,只要枚举成功了,电视机才干辨认出设备,树立电视机与设备之间的通讯。设备的枚举进程都是通过端点0 完结的。电视机通过端点0 输出中止宣布各种恳求,数据存放在端点0 的输出缓冲区中。Dongle 端读取并剖析端点0 输出缓冲区的数据,然后通过端点0 输入中止做出相应的呼应,数据存放到端点0输入缓冲区中, 在电视机下一次发送IN 令牌包后,MCU 会主动将端点0 输入缓冲区数据回来给电视机。当Dongle 端有多个陈述描述符时,程序怎样知道电视机恳求的是哪个呢? 电视机要获取陈述描述符时,恳求是发送到接口的。当电视机宣布发送到接口1 的陈述描述符恳求时,Dongle 端会回来体感游戏手柄的陈述描述符数据给电视机, 然后成功完结枚举进程。电视机辨认出体感游戏手柄,树立它们之间的通讯。

  在本体系中,通过在芯片的集成开发环境中增加USB 模块,依据完结设备的功用特色,做出相应设置并编译,完结设备枚举进程的功用及所需的代码, 然后再依据设备的实践需求做相应的修正, 在Dongle 端程序的主函数中初始化USB 模块,就能够完结电视机辨认Dongle,从而辨认出体感游戏手柄设备。Dongle 端程序主流程图如图4 所示。进入主函数,MCU 首要完结一系列初始化,包含中止装备和USB模块初始化(开端枚举进程)。然后程序就处于一个无限循环中,完结电视机和设备之间的实时通讯。

  电视机和设备之间不是随时都能够进行通讯的,只要设置了非零装备之后才干进行数据传输。在无限循环中,首要判别电视机和Dongle 端的通讯是否准备好,即设备的枚举进程是否成功完结。这需求获取装备值,进行判别,若装备值非零,阐明电视机和Dongle 端的通讯已树立。Dongle 端不断的获取从遥控器端发来的数据,依据设备的设备描述符、装备描述符调集(包含断点描述符、接口描述符等),剖析收拾后存放到相应HID 设备的HID 包中, 然后通过USB 总线传递给电视机。

  若按感开要害,遥控器挑选的是体感游戏手柄功用;不然,遥控器挑选的是其他设备的功用。按感开要害,电视机先通过端点2 输出中止宣布反应信息, 使遥控器端的体感开关指示灯亮,体感游戏手柄功用翻开,然后遥控器能够发送体感游戏手柄数据给电视机。Dongle 端发送体感游戏手柄数据到端点2 之前,需求查看端点2 是否处于闲暇状况,即里边是否还有数据未发送出去, 能够通过端点2 输入中止和总线处于闲暇状况。假如端点2 输入处于闲暇状况,就能够通过端点2 输入回来体感游戏手柄数据给电视机了。电视时机依据游戏的进展宣布反应信息, 调用遥控器的传感器模块、轰动模块和Audio 模块,完结遥控器和电视机之间的互动。

  本体系是依据HID 标准的六轴体感游戏手柄运用于智能遥控器中的规划与完结,首要剖析了这种体感游戏手柄的作业原理,然后从硬件体系和软件体系两方面提出了体感游戏手柄规划与完结的计划。在智能遥控器中或许有多个HID设备功用的情况下,通过共用一个USB 接口再完结体感游戏手柄的功用。通过重复调试验证标明,具有这种六轴体感游戏手柄功用的智能遥控器作业功用杰出,完全能够替代一般的体感游戏手柄体会体感游戏。别的,能够依据此硬件体系和软件体系,遥控器端对传感器的数据进行相应处理后传输给Dongle 端,Dongle 端能够模仿完结其他功用, 比如进一步完结空中鼠标的功用。