I Connect M5Stack-Gray and Unity(Windows10) by Bluetooth.
無線ジャイロコントローラを自前でUnityに実装中野洋輔 @naninuneno_y2019.6.25Roppongi.unity #3 in メルカリ@六本木ヒルズ
View Slide
自己紹介• Moffのエンジニア• Unity2年くらい• Qiitaに記事書いてますhttps://twitter.com/naninuneno_y
弊社紹介
M5Stack• ESP32を備えた開発モジュール• Bluetooth/Wi-fi• カラーLCDとボタン3つ搭載• 5.4cm x 5.4cm x 1.7cm• Grayモデルには 9軸センサ搭載• 加速度/角速度/地磁気• ¥4,860• 専用リスバンド拡張あり• ¥1,782• https://www.switch-science.com/catalog/3648/• https://www.switch-science.com/catalog/3730/
やったこと1. .9軸センサ読み取りとBluetoothでデータを送るm5Stackのファームウェア作成2. 1.のBluetoothのデータをwindows10で受け取るクラスライブラリ(.dll)を作成3. 2.のクラスライブラリを含んだUnityプラグインを作成
成果• https://github.com/naninunenoy/GrayBlue
さらに4. Unity Editorでも実行できるよう、Bluetoothで受け取ったデータをJsonに変換してWebScoketでやりとりできるProxy作成
成果• https://github.com/naninunenoy/GrayBlue_WinProxy
IMU Button I/OBluetooth 4.0 Bluetooth 4.0.dllGATT: Byte[]クラスライブラリファームウェアWSA(.Net)EditorUWPアプリ.exeUnityUnity EditorProxyWebSocketセンサの値センサの値センサの値
UWP ApplicationUnity Game(WSA)Unity Editor(mono)M5Stack Gray Windows 10 PCPeripheral CentralFirmwareMPU-9250UWP ClassLibrary(.dll)Win RT APIPlatformIOC/C++Visual StudioC#UnityC#naninunenoy/GrayBluenaninunenoy/GrayBlue_UWPnaninunenoy/GrayBlue_UnityVisual StudioC#naninunenoy/GrayBlue_WinProxyWebSocket
作ってみた感想• Bluetoothのプログラムは受信+送信を両方書く必要があり、敷居が高い• かなり頑張った• Githubにあるので、参考にしてください• 全プラットフォーム対応させるにはそれぞれのためのBluetoothドライバプログラムを自作させる必要がある(辛い)• windows/macOS/iOS/Android/Web Bluetooth• 多接続ができない(用途が限られる)• Surface Book(2015)でBTマウスをつないだ状態だと動作しない• LANでつないでWebSocketとかRPCで処理った方がよくない?
以上です