こんにちは、エンジニアのオオバです。
ググればいろいろ出てくるんですが、一旦自分でmicro:bitとUnityの無線通信をやってみます。
- 送信側micro:bitのAボタンを押して、文字列"A"を送信
- 受信側micro:bitで文字列"A"を受け取る
- 受信側micro:bitからUnityへ"A"を送る
というアプリを作ってみます。
※受信側micro:bitはUSBケーブルで繋がっています。
→11万文字で徹底解説した「DOTweenの教科書」Unityアニメーションの超効率化ツールはこちら
準備
Unity側のビルド設定
Unity側でSerialPortクラスを使用するので、Player Settings
-> Other Settings
からApi Compatibility Level
を.NET 2.0
に設定しておく必要があります。
Unity2019以降の場合
.NET4.xを選ぶ必要があります。
※.NET Standard2.0ではコンパイルが通りません
USBポート名を調べる
必ず受信側micro:bitをUSBにつないだ状態で、ターミナルから以下のコマンドを実行します。
ls /dev/cu.*
すると、 /dev/cu.Bluetooth-Incoming-Port /dev/cu.usbmodem1412
こんな感じで出力されると思います。
USBポート名の /dev/cu.usbmodem1412
をコピっておきます。
※1412の数値は環境毎に違う可能性があります
実装
送信側micro:bit
radio.setGroup(1)
input.onButtonPressed(Button.A, () => {
radio.sendString("A")
})
受信側micro:bit
radio.setGroup(1)
radio.onDataPacketReceived(({ receivedString }) => {
serial.writeLine(receivedString)
})
受け取った文字列をシリアル通信でUnityへ送信します。
Unity側
以下のようなSerialPortのラッパークラスを用意しました。
GitHub - baobao/SerialPortWrapper
実際に以下のように使用します。
[リンク](https://gist.github.com/baobao/80ace64f7ffdf1d42ff3fe5ea8b44c6c のサンプル · GitHub)(https://gist.github.com/baobao/6cf9e7f21c3c617dda5bbccf5e13a020)
USBのポート名をインスペクタに入力します。
必ずmicro:bitをUSBで接続してからUnityを再生します。
micro:bitとUnityを無線通信 - YouTube
完成。
余談
ちなみにUSB接続せずにUnityを実行すると以下のエラーが出るので注意です。
No such file or directory
ちなみにmicro:bitは、電池パックも結局必要になるのでこのスターターキットを購入しました。
BBC micro:bit go スターターキット リテールBOX
この記事が気に入ったらフォローしよう
- Unity2018.2.0f2
- macOS Sierra 10.12.6