渋谷ほととぎす通信

完全趣味でやってるUnityメモ。説明できないところを説明できるようにするための個人ブログ。昨日の自分より少しでも大きくなれるように。。。 ※所属団体とは一切関係がありません

micro:bitとUnityを無線通信してみる


ググればいろいろ出てくるんですが、一旦自分でmicro:bitとUnityの無線通信をやってみます。

f:id:esakun:20180824004022p:plain:w450

  1. 送信側micro:bitのAボタンを押して、文字列"A"を送信
  2. 受信側micro:bitで文字列"A"を受け取る
  3. 受信側micro:bitからUnityへ"A"を送る

というアプリを作ってみます。
※受信側micro:bitはUSBケーブルで繋がっています。

準備

Unity側のビルド設定

Unity側でSerialPortクラスを使用するので、Player Settings -> Other Settings からApi Compatibility Level.NET 2.0に設定しておく必要があります。

f:id:esakun:20180824014216p:plain:w450

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のラッパークラスを用意しました。


実際に以下のように使用します。


f:id:esakun:20180824021953p:plain:w450

USBのポート名をインスペクタに入力します。

必ずmicro:bitをUSBで接続してからUnityを再生します。

完成。

余談

ちなみにUSB接続せずにUnityを実行すると以下のエラーが出るので注意です。

No such file or directory


参考


ちなみにmicro:bitは、電池パックも結局必要になるのでこのスターターキットを購入しました。

関連記事

環境

  • Unity2018.2.0f2
  • macOS Sierra 10.12.6