項目介紹
1、方案主題:基于STM32+MPU9250的重力感應游戲控制器
2、方案功能:使用STM32CubeMX配置了Nucleo-L476RG,開發(fā)了USB HID復合設備用于體感游戲控制,板載STM32L476RG ARM核微控制器支持USB2.0 全速設備,通過I2C讀取九軸姿態(tài)傳感器-MPU9250(三軸加速度、三軸陀螺儀、三軸磁力計),使用高效的傳感器數據融合算法、姿態(tài)解算算法,實現體感控制PC游戲,精度高,超低延遲,可作為虛擬自行車等控制器,支持硬件定制。
硬件:帶USB控制器的STM32都可以,我這里使用的是Nucleo-L476RG,芯片是STM32L476RG,支持USB2.0全速模式,其中
PA12---->USB_DP
PA11---->USB_DM
軟件:使用STM32CubeMX配置
直接用USB線連接到電腦USB即可,按照USB規(guī)范,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的支持保證了數據融合、姿態(tài)解算等算法的高效、準確運行;控制LED作為狀態(tài)指示;掃描按鍵狀態(tài);通過USB接口與PC機通信。
3、軟件流程介紹:
采用前后臺系統(tǒng),主要分為三大部分,一是外設初始化,二是數據處理,三是業(yè)務邏輯處理。使用STM32CubeMX配置生成了USB HID復合設備,是一個USB鍵盤和USB鼠標、2個游戲Pad,配置方法和測試工程源碼點我?;蛘摺跋嚓P文件”直接下載
如下圖,可看到USB枚舉成功為鍵盤、鼠標、游戲控制器復合設備。
程序流程圖如下:
實物與演示
1、實物圖片與說明:
Demo板說明:Demo板配置了9個按鍵,Nucleo板載藍色按鍵為模式切換按鍵,開機板載LD2綠色LED快閃表明此時為鎖定狀態(tài),控制器不起作用,短按1下,切換到按鍵控制模式,LD2慢閃,再短按切換到體感控制模式,LD2 1s閃爍一次,再按切換到鎖定狀態(tài);板載4個大按鍵,依次映射為WASD,4個小按鍵依次映射為R、shift、鼠標左鍵、鼠標右鍵。
2、演示視頻:
QQ飛車測試:
https://player.youku.com/player.php/sid/XMjUyOTY3ND...
坦克世界測試: