ぷちコンでやることを決める
7/24 ZETAが勝って嬉しい。テストも100点でした。
第20回UE5ぷちコンが始まりました
UE5ぷちコンは、ヒストリアさん主催のUE限定ゲームコンテストです。(私は過去に2回受賞しています!)
なので私はコントローラを自作しようと思います。接続を処理するのはUE側なので問題ないかな!
自作するコントローラ
すごい設計図を書きました。コントローラにはI2C通信のセンサを2つまで付けることができ、付け替えてステージを攻略していきます。
接続方法としてはBLEにするつもりです。せっかくプラグインも買ってあるので、主な制御をUEで行えばコンテストの趣旨に合うはず...。
ですが問題もあり、BLE Utility V2プラグインはiOS, Androidでしか動作しません。プログラムテストもやりにくいので、テスト用アプリなど作って頑張ります。
一応、WinRTなど使ってPCでBLE通信を行うこともできるのですが、そんな実力も時間もないです。
付け替えモジュール
センサの値を読み取るのは普通にやればいいですが、LEDモジュールを追加して、ゲームの画面以外にも情報を出力したい気持ちがあります。そのため、ゲーム側からキャラクタリスティックに値を送信してLEDの色を変えてみたいと思います。
用意するものはBlinkM(LED), Arduino Nano 33 BLEです。BlinkMはI2Cで色を変えることができるLEDです。研究室に転がっていました。
Arduinoのプログラムは以下のようになります。
プログラムの折りたたみ方を知らないのでこのまま貼ってます。キャラクタリスティックを3つ用意して、16進数でRGBそれぞれの値を送ると反映されます。
動かしてみる
nRF Connectでテストします。
キャラクタリスティックを、赤0xFF, 緑0x00, 青0xFFとすることでRGB(255, 0, 255)となり、マゼンタに光るのがわかります。全部0x00にするとLEDが消えます。
付け替えする規格
大体のセンサではI2Cが採用されているので、電源供給±とSDA, SCLピンの計4ピンでいいと思います。これをポゴピンで簡単に着脱できるようにすればOKかな。
夏休み中は実家と研究室が遠いので3Dプリンターが使えなくなります。運転すれば行ける距離ではあるので、事故らないようにたまに行こうと思います。
BLEで複数の文字列を扱う
7/20 Viewfinder面白かった
3Dプリンターでカプセルを造形
お手玉のガワを作るため、
ただのカプセルにFusionでねじを付けたやつを印刷します。そのまま印刷しても入らないのでナット側を0.3mm凹ませました。参考
完成品はこちら。
ちょっと隙間があるのは、時間短縮のためにサポート材無しで印刷したらぐちゃぐちゃになってしまったからです。ねじ山の方はサポート材あったほうがいいかも。
BLEでスティックとボタンの値を送信
プログラムはこんな感じ。サービスUUIDはハートレートプロファイルを使っているので、nRF Connectではハートマークが表示されます。
で、BLE Utilitiesプラグインを使って作ったアプリで接続してみると...
こんな感じで、Dataがすべて数字になっています。Arduinoのプログラムでは文字列で送信しているので、アプリ側に問題があります。
UE C++でバイト配列を文字列に変換する
残念ながらブループリントではできないっぽいので、UE C++を扱うためにVisual Studioを入れるとこから始めます。
UE4.27はVisual Studio 2019です。プログラムは以下のような感じになります。
ChatGPT Plusにお金を払い続けているので有効活用しました。プログラマいらない
実行結果とキャラクタリスティックを2つ購読する方法は明日に回して帰ります。
ピンヘッダのはんだ付け
7/14 昨日友達が技科大受かっててうれしい
Nanoにはんだ付け
Arduino Nano 33 BLE Senseは、ピンヘッダがはんだ付けされているか否かで550円の差があります。550円あったらアセット買えますね!なので今日は550円分の仕事をします。
お手玉にするためにピンヘッダが付いてないほうが小さくて都合が良かったので、指導教員に1個欲しいと言ったら3個買ってくれました。コントローラ作るために1個はピンヘッダを付けたいと思います。
はんだ付けは1年生のときにやったのが最後なので不安になりつつ。そんなに小さくもないのではんだを斜め切りとかはしません。完成品がこちら
ピンヘッダ実装済みの商品ページより下手ですが、テスターで全ピン音なったので大丈夫そうです。
VINピンの仕様
Arduino Nano 33 BLEをUSB給電している場合、VINピンを5V出力として利用することができるみたいです。詳しくはここ
テスターで値を見てみると、4.7V出てる。USB給電の電圧がそのまま使えますね。ぺこらもさっきより強く光ってます。
Arduino Nano BLEが3.3V駆動なので、それを下回らないようにすればいっぱいモジュール繋げても大丈夫だと思う。たぶん。
昇圧してるだけのときは5V0Aになってるけど、使わないときは一応電池外そうね。
アナログスティックも3.3Vを使おう
アナログスティックを5V出るVINピンから給電すると、センサの値が安定しませんでした。これは、Arduino Nano 33 BLEが3.3Vで駆動するため、入力も3.3Vである必要があります。なので、5V用のアナログスティックやボタンであっても、3.3Vで給電するほうが良いですね。
ちなみに5VでやってるとArduinoが損傷するかも知れないので注意してください。
今日はロボット工学のテストあって疲れました。研究はテスターずっと使ってました。Testしすぎ
次回はプログラム回かな~
プラグインの仕様に悩む
7/11(火) レポートの締切が近くて動けない。
BLE Utilities V2の仕様
Q&Aによると、Windowsで動作するプラグインではないらしい。なのでiOSやAndroid用のアプリにするか、Windowsで仮想シリアルポートとして認識する必要があるかな... 有線のコントローラにする方法もあるけどなんか嫌。
あと複数デバイスの接続には対応してるみたいなので、2Playerの実装は頑張ればできそう。
お手玉の設計
電池と昇圧コンバータ、Arduinoの3つを頑張って小さくしても、USB駆動にしたのでちょっとでかい。直径9cmくらいの球体になりそうで、お手玉というよりジャグリング用のアレ。
固定するのは接着剤にするとして、ネジ山のついたカプセルを作らないといけない。Solidworks2013はネジ山を印刷できないっぽいのでFusionに切り替える必要が出てきました。
光るぺこら
小さいブレッドボードが届いていたのと、ゲーミングLEDが研究室に転がっていたのでアクスタの下に置く用の土台を印刷する...
完成品がこちら
実際に見るともっといい感じです。あとアクリルなので偏光が起きてちょっときれい。
今日は光らせたまま帰ります!
Unreal EngineでBLE通信
BLEとは?
BLEとはBluetooth Low Energyの略で、普通のBluetoothとは違います。具体的には、通信容量を減らすことで大幅な消費電力削減を実現したものです。
コントローラとゲームが通信するにあたって、画像などの大きなデータをやりとりするつもりはないので、支障はないと考えます。
環境
- Arduino Nano 33 BLE Sense
- Realme X50 Pro 5G(Bluetooth対応スマホならなんでも)
- UE4.27(Androidパッケージ化を出来るようにしておいてください)
- ある程度のUEスキル
nRF-Connectで動作確認
nRF-Connectとは、BLE通信で送られてくるデータを見たり、書き込みをしたりできる優れたアプリです。(Playストアにあります)
使い方は以下のリンクから。IDEのプログラムから書いてあってありがたいです。
Arduino NANO 33 BLEをArduinoIDEで使えるようにする方法 - Qiita
UEとの連携
BLEについて何にも知らないので、とりあえずUEのプラグインを買いました。(12500円、高い...)
研究費で買う場合、新しい研究用アカウントを作成する必要があります。その場合私が今まで持ってるアセットを使うのがグレーになるので、自腹で購入しました。
ちなみにUE4.22用の無料版もあるのですが、UE4.27とパッケージ化方法が違ったり機能が少なかったりしたのでやめました。(1日ロス)
使用方法
プラグインを有効後、コンテンツフォルダ右下の「エンジンのコンテンツを表示」からプラグインのサンプルプロジェクトが見れるのですごい参考にします。
注意点としては、権限がめんどくさい!たまにうまくいかない!ので、タスクキルやアプリデータの初期化を試しましょう。
他にも、接続完了してすぐにNotificationを購読しようとするとたぶんまだロード中なので出来ません。新しくボタンを作るなどしてちょっと時間を置いてから購読しましょう。
でかすぎる問題点
ソフトを動かすのはPCのつもりだったけど、このプラグインPCに対応してない...?
2Player対応したいのに同時に通信できるのって1つまで?UUIDが同じでも大丈夫かな...
第一次購入物品
小さいものとかいっぱい買ったのでまとめました。
作りたいもの
まずは目標であるセンサ付け替え式コントローラを作ります。ですが電子工作は初めてなので研究室を燃やすつもりです。そうなる前に練習として
Google日本語入力お手玉バージョンを作りたい!
ので、加速度センサとBluetooth付きの小さいArduinoを主軸として部品を買いました。
ちなみに、指導教員にはその旨を伝えていないのでコントローラの部品として申請しました。
購入品リスト
最初はビーフジャーキーとか本とか買おうとしてましたが、本は図書館に寄贈することになるのと、お菓子はダメみたいです。購入品の一部を紹介します。
- Arduino Nano 33 BLE Sense
- 耐火バッグ
- 18650バッテリー
- 5V昇圧モジュール
- 電池、電池ホルダー
図にするとこんな感じです。本以外買えました。
特に18650リチウムイオンバッテリーは保護回路ついていないと素人は爆発させるみたいなので、高いのを買いました。保管するとき用に耐爆・耐火バッグを買いました。
がんばってお手玉を作りたいと思います!!
UEでAndroidパッケージ化とケース作り
7/10(月) 友達が秋田大学落ちてた。
研究室のPC
スペックはCPUが強くてグラボは謎にQuadroが積んであります。4080がよかった
パッケージ化のエラー
UnrealEngine入れたてほやほやなのでAndroidパッケージ化を試すと、案の定"/Android/armv7/gradle/gradlew" :app:assembleDebug” みたいなエラーが出ました。
昔はgradle系のエラーを何回か諦めたりしていましたが、そういう関連のエラーはCode ProfさんのYouTubeを見れば大体解決することを学びました。
youtu.be
keystoreは必要ないと思います。これでパッケージ化ができました。
電池でArduino
乾電池と5V昇圧コンバータ、Arduino Nano 33 Ble Senseが届いていたので、はんだ付けして動作チェック。
普通に動いたのでArduino nano 33 Ble Senseと5V昇圧コンバータのケースを印刷してみました。
他にも届いているものがあるので、アクスタ光らせるやつでも作ろうかな...