桂林电子科技大学信息科技学院 陈奇生 梁桂英
随着社会信息技术的发展,各种各样的游戏也成为了广大市民日常必备的娱乐项目之一。想要玩大型的游戏必定需要用到游戏手柄,然而游戏手柄的选择固然也很重要,市场上面有很多的有线游戏手柄,此类游戏手柄不仅灵活性差、操作不方便,而且很大程度上限制游戏操作者的活动范围,一不小心就会把手柄拉脱电脑,这样就会导致游戏的终止。这种游戏手柄影响游戏者的兴趣不说,重要的是有着损坏电脑的潜在危机。
为了让游戏者在游戏过程中获得更多的乐趣,然而无线游戏手柄就此诞生。无线手柄的诞生,让游戏者可以摆脱空间以及距离的束缚。使用NRF24L01模块2.4G无线高速传输数据让手柄和PC机无延时,再加入MPU6050角度传感器实现姿态感应和前后各两组震动马达,还有设计无线充电等功能。因此,此类游戏手柄在市场上面有很大的前景。
NRF24L01是一款工作在2.4-2.5GHz通用ISM频段的单片机芯片,无线收发器包括:频率发生器增强型SchockBurstTM模式控制器、功率放大器、晶体放大器、调制器、解调器、输出功率频道选择和协议的设置可以通过SPI接口进行设置极低的电流消耗,当工作在发射模式下发射功率为6dBm时电流消耗为9.0mA接受模式为12.3mA掉电模式和待机模式下电流消耗模式低。全球开放ISM频段,最大0dBm发射功率,免许可证使用,支持六路通道的数据接收。
(1)低工作电压:1.9-3.6V低电压工作。
(2)高速率:2Mbps,由于空气传输时间很短,极大的降低了无线传输中碰撞现象(软件设置1Mbps或者2Mbps的空气传输速率)。
(3)多频点:125频点,满足多点通信和调频通信需要。(4)超小型:内置2.4GHz天线,体积小巧,15*29mm(包括天线)。(5)低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。
(6)低应用成本:NRF24L01集成了所有与RF协议相关的高速信号处理部分,比如:自动重发丢失数据包和自动产生应答信号等,NRF24L01的SPI接口可以利用单片机的硬件SPI口连接或用单片机I/O口进行模拟,内部有FIFO可以与各种高低速微处理器接口,便于使用低成本单片机。
(7)便于开发:由于链路层完全集成在模块上,非常便于开发。自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制。自动存储未收到应答信号的数据包自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程载波检测一固定频率检测。内置硬件CRC检错和点对多点通信地址控制数据包传输错误计数器及载波检测功能用于调频设置可同时设置六路接收通道地址,可有选择性的打开接收通道标准插针Dip3.54MM间距接口,便于嵌入式应用。
充分利用NRF24L01模块这些特性可用于游戏手柄与PC机的进行无延时传输。
串口6轴JY-61模块采用高精度的陀螺仪加速度计MPU6050,通过处理器读取MPU6050的测量数据然后通过串口输出,免去了用户自己去MPU6050复杂的I2C协议,同时精心的PCB布局和工艺保证了MPU6050收到外接的干扰最小,测量的精度最高。
(1)模块内部集成了姿态解算器,配合动态卡尔曼滤波算法,能够在动态环境下输出模块的当前模块的当前姿态,姿态测量精度0.01度,稳定性高。
(2)模块内部自带电压稳定电路,可以兼容3.3V/5V的嵌入式系统,连接方便。
(3)模块保留了MPU6050的I2C接口,以满足用户希望访问底层测量数据的需求。
(4)采用数字滤波技术,能有效降低测量噪声,提高测量度。
(5)数据输出频率100Hz(波特率115200)/20Hz(波特率9600)。
(6)测量纬度:加速度:3维,角速度:3维,姿态角:3维。
(7)量程:加速度:+2g,角速度:+250°/s。
(8)分辨率:加速度:6.1e-5g,角速度:7.6e-3°/s。
(9)稳定性:加速度:0.0001g,角速度:0.02°/s。
加速度传感器精度差,而且运动情况下由于运动加速度的干扰,无法得到准确的角度,但加速度求出的角度不会随时间积累误差。陀螺仪的精度高,通过积分运算得到的姿态角度准确度高,但积分会有累计误差,会随时间积累。JY-61模块中的卡尔曼滤波法正好可以取二者之长,根据统计规律自动计算出二者的权重,融合出最准确的状态值。
主要采用电磁感应原理,通过线圈进行能量耦合实现能量的传递。系统工作时输入端将交流市电经全桥整流电路变换成直流电,或用12V直流电端直接为系统供电。经过电源管理模块后输出的直流电通过2M有源晶振逆变转换成高频交流电供给初级绕组。通过2个电感线圈耦合能量,次级线圈输出的电流经接受转换电路变化成直流电。
(1)采用无接触式充电供电,可使产品完全密封,防水防尘;增加产品的使用寿命、使用更加方便。
(2)发射模块工作电流会随接收负载电流的大小自动增减,这有利于延长电池的使用寿命以及提高充电的安全性避免出现不良情况。
该游戏手柄是以STM32F1作为MCU设计的,由MPU6050角度传感器来采集游戏者的状态以达到姿态感应,采集到姿态角度数据送给MCU模块处理后,再通过NRF24L01无线串口模块传输个PC机,进而实现游戏者能灵活操控游戏。另外PC机上的数据也可以通过NRF24L01无线串口模块反馈给MCU,这样就可以实现实时操控游戏而不产生延时。其主要由USB无线串口转NRF24L01模块、TTL串口转NRF24L01模块、按键和摇杆模块、YG-61模块、震动马达模块还有无线充电等模块组成,如图1所示。
编写上位机软件,用来检测游戏手柄按键以及摇杆与PC机通信是否成功,还有可以用来查看通信是否存在长延时等。同时也提高了用户使用灵活性,手柄即插即用而不用进行繁琐操作,可以说是老少皆宜的产品。
该手柄的设计具有高灵活性、高可靠性、操作简便、操作舒适、实用性等优点。
图1 系统原理流程图
选用ARM32位的Cortex-M3系列的STM32F103C8T6芯片,它是中等容量增强型,基于ARM核心的带64或128K字节闪存的微控制器,具有USB、CAN、7个定时器、2个ADC、9个通信接口。其有多达80个快速I/O口可以影像到16个外部中断,几乎所有端口均可容忍5V信号,这样有利于TTL无线串口转NRF24L01模块的转接。因为其I/O口非常多,所以可以在极大程度上外接各种模块。
选用PS2游戏双轴摇杆传感器模块,采用优质金属PS2摇杆电位器制作,具有(X,Y)2轴模拟输出,(Z)1路按钮数字输出。数据类型的X,Y维模拟输入信号而Z维是数字输入信号,因此X和Y端口连接到模拟插脚传感器端,而Z端口连接到数字端口,这样在使用者操作游戏舒适的同时也不会出现游戏延时等情况。
手柄前方两端采用1030手机震动马达,后方两端采用030电机3V静音震动马达。手机震动旋转方向任何,这可以很好模拟各种震动比如:游戏中炮弹落地后发出那种震撼的感觉,让操作者仿佛身临其境,更重要的是它的额定转速达到12000+2500RPM/Min比起普通的马达要快而且价格比较便宜。030震动马达放置于手柄后方两端,主要用来模仿游戏中操作者扮演的角色受到碰撞或者攻击时自身受到的撞击。该款马达采用半圆铁层叠振动头且四层叠加,这使振动更加强烈。
这两个模块是PC机和手柄之间进行通信的核心,有Enhanced ShockBurstTM收发模式、ShockBurstTM模式和直接收发模式三种,这三种模式高质量的保证了手柄和PC机之间的数据传输。
本文给出了USB姿态感应游戏手柄设计方法。在设计选了STM32F1芯片作为控制器,减少了电路板的体积和降低整个电路布线布局的难度。将MPU6050角度传感器采集回来的姿态角度变化送给MCU进来处理,实时的将角度变化值内容通过TTL串口转NRF24L01模块高效、快速发送出去。MCU发送出来姿态角度变化数据再经过USB无线串口转NRF24L01模块送达PC机端进而就可实现对游戏的姿态控制。
[1]康维新.嵌入式Linux系统开发与应用[M].机械工业出版社,2011,4.
[2]张勇.ARM Cortex-M3嵌入式开发与实践——基于STM32F103[M].清华大学出版社,2017,3.
[3](意)阿尔梅尼塞.新型陀螺仪技术[M].国防工业出版社,2013,7.