BETA

micro:bitからの文字列を無線通信経由でUnityアプリで受信する

投稿日:2018-11-05
最終更新:2018-11-05
※この記事は外部サイト(https://qiita.com/SIHO_o/items/5300f2c5c80...)からのクロス投稿です

はじめに

2020年から小学校でプログラミング教育がはじまります。 いろいろな会社さんや自治体さんなど取り組みが始まっています。 私も2017年から、金沢市主催の小学生対象のプログラミング教室の運営にかかわっています。 人気が高く毎回定員を上回る応募があります。 参加するには高倍率の抽選に当選する必要があります。

"もっと気軽に、もっと短時間で"できるプログラミング体験を!

一度のワークショップで体験できる子供の人数が限られているから、抽選しなければなりません。それでは、短時間で体験だけできるものがあれば、よいのではないか?

開発環境

Window 10 micro:bit 2台(以上) Unity 2017

構成

(1)[送信側]iPadでプログラミングし、コードをmicro:bitに書き込む

(2)[受信側]micro:bitをUSBポートに挿したPC

micro:bitとは

micro:bitはカードサイズのマイコンボードです。英国で開発され、BLEや各種センサーが搭載されています。 プログラミングは、USBポート経由でWindowsやMac、BLEによるペアリング経由でiPadやAndoridタブレットで可能です。 端末同士でも文字列の送受信が可能です。 詳しくは、こちらで→https://microbit.org/ja/

#信号の送受信 (1)(電池ケース接続)micro:bitから文字列送信   ↓ <BLE通信:micro:bit標準機能>   ↓ (2)(PC接続)micro:bitで文字列受信/Sirial通信送信   ↓ <micro:bit→Sirial通信→Unityアプリ>   ↓ (3)PC内Unityアプリ

micro:bitをiOSで操作するときの基本操作

動画で説明していますので、参考にしてください

(1)(電池ケース接続)micro:bitから文字列送信

micro:bit⇔micro:bitでの無線通信は、無線グループを指定して行います。

(2)(PC接続)micro:bitで文字列受信/Sirial通信送信

受信側のmicro:bitでも同じ無線グループを指定します。 ワンポイント 「シリアル通信 1行書きだす」を使うと、1行の文字数30biteが書き出されます。 受信した文字が「A」の1文字だけだとしても、空白が29書き出されます。 なので、文字の最後がわかりやすくするために、改行記号を最後に追加してから、シリアル通信に書き出すようにしています。

(3)PCの準備

micro:bitからのシリアル通信をPCで受信できるようにするには、ドライバーが必要です。 これは、そのままズバリの記事がありましたのでご紹介します。 センサーなどの値をリアルタイムに確認 付録1-3シリアル通信【Windows編】

Unityでのシリアル通信

こちらもズバリの記事がありましたので、ご紹介します。 micro:bitとUnityを無線通信してみる この記事はMac環境なので、Windows環境のときは、PortNameは「COM4」などになります。 デバイスドライバーを開いてポート番号を確認して適宜変えましょう。

受信した文字のアニメーションにはTypeface Animator

文字を受け取ってただ表示しても面白くないですよね。 せっかくだからダイナミックな演出をしてたい。 ということで、Typeface Animatorを使いました。 インスペクタからも設定できるし、スクリプトからの変更もできる使いやすいコンポーネントです。緩急も付けられるし、スタート時・終了時をトリガーに別のコマンドを実行できるのも楽でよかったです。 詳しくはこちら→【Unity】uGUI のテキストに文字単位のアニメーションを実装できる「Typeface Animator」紹介

Unity内の演出タイミング調整にDOtween

出来上がりの動画です。

受信文字列に長さの差があっても、最後にパーティクルを飛ばして「終わった感」を演出したい。 今回はfor分で最後のインスタンスを作ってからアニメーションの秒数だけ遅延させてパーティクルを飛ばすコマンドを発動しました。 そんな時にとっても便利なDOTween。 AssetStoreで無料でダウンロードできます。こちら→[DOTween (HOTween v2)](https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676) 遅延処理はたったこれだけ。
compP = this.myCapsule.GetComponent<ParticleSystem>();
DOVirtual.DelayedCall ( 0.9f, ()=>compP.Play());

おわりとこれから

イベントで子供たちに使ってもらって、問題がなければこちらのアプリをダウンロードできるようにしたいと思います。 ほかにも5~10分程度でサクッと体験できるようなアプリのアイディアがあればお寄せください。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@gBIgM7sINiQ0Bnts'の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!