項(xiàng)目介紹
1、方案主題:基于STM32+MPU9250的重力感應(yīng)游戲控制器
2、方案功能:使用STM32CubeMX配置了Nucleo-L476RG,開發(fā)了USB HID復(fù)合設(shè)備用于體感游戲控制,板載STM32L476RG ARM核微控制器支持USB2.0 全速設(shè)備,通過(guò)I2C讀取九軸姿態(tài)傳感器-MPU9250(三軸加速度、三軸陀螺儀、三軸磁力計(jì)),使用高效的傳感器數(shù)據(jù)融合算法、姿態(tài)解算算法,實(shí)現(xiàn)體感控制PC游戲,精度高,超低延遲,可作為虛擬自行車等控制器,支持硬件定制。
硬件:帶USB控制器的STM32都可以,我這里使用的是Nucleo-L476RG,芯片是STM32L476RG,支持USB2.0全速模式,其中
PA12---->USB_DP
PA11---->USB_DM
軟件:使用STM32CubeMX配置
直接用USB線連接到電腦USB即可,按照USB規(guī)范,USB線里面的綠線為DP(D+),白線為DM(D-),全速設(shè)備是要在DP線加上拉1.5K電阻的,由于STM32的USB外設(shè)內(nèi)部有這個(gè)電阻,因此無(wú)需外加上拉電阻。
配置過(guò)程不解釋了,查看附件的PDF文檔即可
工作原理介紹
1、硬件組成與介紹:
Demo板采用了Nucleo-L476RG板卡,板載STM32L476RG高性能ARM Cortex-M4內(nèi)核MCU,主頻高達(dá)80MHz,1MB Flash、128KB SRAM,支持浮點(diǎn)DSP;8個(gè)輕觸按鍵連接到了STM32的GPIO;MPU9250采用GY-91模塊,通過(guò)I2C接口連接到STM32,MPU9250由應(yīng)美盛(InvenSense)出品,是MPU6050的升級(jí)版,第二代9軸組合傳感器將6軸慣性測(cè)量單元(三軸加速度計(jì)+三軸陀螺儀)和三軸軸磁力計(jì)集成于3 mm x 3 mm QFN封裝中。
2、此項(xiàng)目中STM32的功能:
通過(guò)I2C接口采集傳感器數(shù)據(jù);強(qiáng)大的運(yùn)算性能和浮點(diǎn)DSP的支持保證了數(shù)據(jù)融合、姿態(tài)解算等算法的高效、準(zhǔn)確運(yùn)行;控制LED作為狀態(tài)指示;掃描按鍵狀態(tài);通過(guò)USB接口與PC機(jī)通信。
3、軟件流程介紹:
采用前后臺(tái)系統(tǒng),主要分為三大部分,一是外設(shè)初始化,二是數(shù)據(jù)處理,三是業(yè)務(wù)邏輯處理。使用STM32CubeMX配置生成了USB HID復(fù)合設(shè)備,是一個(gè)USB鍵盤和USB鼠標(biāo)、2個(gè)游戲Pad,配置方法和測(cè)試工程源碼點(diǎn)我。或者“相關(guān)文件”直接下載
如下圖,可看到USB枚舉成功為鍵盤、鼠標(biāo)、游戲控制器復(fù)合設(shè)備。
程序流程圖如下:
實(shí)物與演示
1、實(shí)物圖片與說(shuō)明:
Demo板說(shuō)明:Demo板配置了9個(gè)按鍵,Nucleo板載藍(lán)色按鍵為模式切換按鍵,開機(jī)板載LD2綠色LED快閃表明此時(shí)為鎖定狀態(tài),控制器不起作用,短按1下,切換到按鍵控制模式,LD2慢閃,再短按切換到體感控制模式,LD2 1s閃爍一次,再按切換到鎖定狀態(tài);板載4個(gè)大按鍵,依次映射為WASD,4個(gè)小按鍵依次映射為R、shift、鼠標(biāo)左鍵、鼠標(biāo)右鍵。
2、演示視頻:
QQ飛車測(cè)試:
https://player.youku.com/player.php/sid/XMjUyOTY3ND...
坦克世界測(cè)試: