项目介绍
1、方案主题:基于STM32+MPU9250的重力感应游戏控制器
2、方案功能:使用STM32CubeMX配置了Nucleo-L476RG,开发了USB HID复合设备用于体感游戏控制,板载STM32L476RG ARM核微控制器支持USB2.0 全速设备,通过I2C读取九轴姿态传感器-MPU9250(三轴加速度、三轴陀螺仪、三轴磁力计),使用高效的传感器数据融合算法、姿态解算算法,实现体感控制PC游戏,精度高,超低延迟,可作为虚拟自行车等控制器,支持硬件定制。
硬件:带USB控制器的STM32都可以,我这里使用的是Nucleo-L476RG,芯片是STM32L476RG,支持USB2.0全速模式,其中
PA12---->USB_DP
PA11---->USB_DM
软件:使用STM32CubeMX配置
直接用USB线连接到电脑USB即可,按照USB规范,USB线里面的绿线为DP(D+),白线为DM(D-),全速设备是要在DP线加上拉1.5K电阻的,由于STM32的USB外设内部有这个电阻,因此无需外加上拉电阻。
配置过程不解释了,查看附件的PDF文档即可
工作原理介绍
1、硬件组成与介绍:
Demo板采用了Nucleo-L476RG板卡,板载STM32L476RG高性能ARM Cortex-M4内核MCU,主频高达80MHz,1MB Flash、128KB SRAM,支持浮点DSP;8个轻触按键连接到了STM32的GPIO;MPU9250采用GY-91模块,通过I2C接口连接到STM32,MPU9250由应美盛(InvenSense)出品,是MPU6050的升级版,第二代9轴组合传感器将6轴惯性测量单元(三轴加速度计+三轴陀螺仪)和三轴轴磁力计集成于3 mm x 3 mm QFN封装中。
2、此项目中STM32的功能:
通过I2C接口采集传感器数据;强大的运算性能和浮点DSP的支持保证了数据融合、姿态解算等算法的高效、准确运行;控制LED作为状态指示;扫描按键状态;通过USB接口与PC机通信。
3、软件流程介绍:
采用前后台系统,主要分为三大部分,一是外设初始化,二是数据处理,三是业务逻辑处理。使用STM32CubeMX配置生成了USB HID复合设备,是一个USB键盘和USB鼠标、2个游戏Pad,配置方法和测试工程源码点我。或者“相关文件”直接下载
如下图,可看到USB枚举成功为键盘、鼠标、游戏控制器复合设备。
程序流程图如下:
实物与演示
1、实物图片与说明:
Demo板说明:Demo板配置了9个按键,Nucleo板载蓝色按键为模式切换按键,开机板载LD2绿色LED快闪表明此时为锁定状态,控制器不起作用,短按1下,切换到按键控制模式,LD2慢闪,再短按切换到体感控制模式,LD2 1s闪烁一次,再按切换到锁定状态;板载4个大按键,依次映射为WASD,4个小按键依次映射为R、shift、鼠标左键、鼠标右键。
2、演示视频:
QQ飞车测试:
https://player.youku.com/player.php/sid/XMjUyOTY3ND...
坦克世界测试: