Let's play 般若心経

研究日記です。

UE5で作り直し

11/9 研究室にいたハエを追い掛け回す

BLE Utilities V2がUE4.27のサポートを終了していたのでこの際解説する

Nineva Studios ←公式ドキュメント この記事はAndroid前提です。

 

まずUIで接続テストなどをします。

UIのグラフの方でアンドロイド権限のリクエストとBLE Managerを作ります。

BLE ManagerはBluetoothの状態やスキャンしているかを持っています。

 

次にスキャンするのですが、Constructの後にすぐスキャンしてもおそらく失敗します。なのでボタンを作って押したらスキャンするようにします。

UUIDは短縮形を変換するやつを使って、Arduinoで設定したUUIDのみをスキャンするようにします。

(下の画像には無いですが、スマートロックのUUIDとコントローラーのUUIDが被っているのでBLE DeviceからGet Device Nameを取得し判別するようにしてください)

 

次にCharacteristicのサブスクをしましょう。Arduinoのプログラムに合わせて、作ったUUID分の登録します。ここでも、Forで一気にSubscriptionしてもおそらく失敗します。

ここではDo Nを使ってボタンを押すごとに購読します。2A37~2A44です

次は購読して送られてくるやつを読めるようにします。デフォルトだとByte文字列で送信されるのでHex文字列に変換するやつを使います。

Hex文字列を読める文字に変換します。nRF Connectを使って読んでみると以下のような感じになっています。

"496,515,506,523"とArduinoで送信した奴がHexだと34-39-36-2C-35-31-35-2C-35-30-36-2C-35-32-33になってます。このプラグインだとハイフンすら消えて送られてきます。
これは16進数とASCIIの変換をすれば読めます。

34(Hex) -> 52(Dec) -> 4(ASCII) のような感じです。なので2C(hex)は44(dec)なので、ASCIIだと","(カンマ)に該当します。

まずはHex to Decを関数にしてみましょう。2文字入ってくるのでそれぞれ10進数に変換し、十の位は16を掛けて足します。もっときれいに作れると思います。

返されたInt型をASCII変換するマクロを作成します。長いのでリンク先に置いておきます。

https://blueprintue.com/blueprint/d7rx6z13/

最後に、最初のHex文字列を2文字ずつに分けてHextoDec、ASCIIを通す関数を作って終わりです。

 

Notificationされたらこの関数を通して出力すると、Arduinoで送信した文字列が読めると思います。わかんなかったら連絡してください Discord : horikogasa