micro:bitはBLEという無線通信機能を搭載しています。この機能を使用して、micro:bit間で文字を送ることが可能です。このセンサーを使用して、どのようなものが作れるのか?BLEの特徴は?どうやってプログラムするのか?ということを紹介します。
なにができる?
micro:bit (v1.5)の「Bluetooth 4.1 with Bluetooth low energy (BLE)」という無線通信機能を使用して、micro:bit同士で無線通信をすることができます。例えば、一方のmicro:bitのAボタンを押したときに、数字や文字列をもう一方のmicro:bitに送信することができます。これにより、リモコン操作やメッセージの送受信をすることができます。また、最近のスマートフォンはBLEを搭載しているものが多く、スマホのアプリと組み合わせて、micro:bitでスマホを操作することができます。反対に、スマホからmicro:bitを操作することもできます。
無線通信BLEとは?
BLEとは、Bluetooth low energyの略で、Bluetooth4.0で追加された仕様です。BLEは短距離低速通信ですが、低消費電力であることが利点です。micro:bitのような小型デバイスにぴったりな無線通信規格です。低速とはいえ、1Mbpsもあるので十分だと思います。周波数帯は2.4GHzを使用しているので、電子レンジの電磁波の影響を受けます。もし、通信環境が不安定な場合は、電子レンジのような2.4GHz帯の高周波製品が周りにないか確認してみてください。
どんな物が作れる?
今回のサンプルでは、一方のmicro:bitのAボタンとBボタンを交互に押すことで、もう一方のmicro:bitのLEDマトリクスに、大きいハートと小さいハートを交互に表示します。
プログラミング
シミュレータ用
まずは、シミュレータで動作確認をするためのプログラムを作ります。
無線通信を使う場合は、最初にグループを設定する必要があります。使用するブロックは、「無線→無線のグループを設定」です。
次に、コントローラ側のmicro:bitのプログラムを説明します。下の画像の左側のプログラムがそれに当たります。文字列の送信は、「無線→無線で文字列を送信」のブロックを使用します。今回は、Aボタンを押したときに、文字Aを送信し、Bボタンを押したときに、文字Bを送信します。
表示する側のmicro:bitのプログラムは、下の画像の右側です。文字列の受信は、「無線→無線で受信したとき」のブロックを使用します。受信した文字列は「receivedString」に格納されるので、この変数がAのときに、大きなハートを表示し、Bのときに小さなハートを表示するようにします。
ブロックを並べただけでは、シミュレータのmicro:bitは1個しか表示されませんが、Aボタンをクリックすると、もう1個のmicro:bitが表示されますので、思い通りの動作をしているか確認してください。
ダウンロード用
シミュレータでの動作確認が終わったら、実際にmicro:bitにダウンロードするプログラムを個別に作りましょう。「無線のグループを設定」は送信・受信両方のプログラムに入れ、グループ番号は同じ番号にする必要があります。あとは、先程と同じです。
<送信用Javascript>
input.onButtonPressed(Button.A, function () { radio.sendString("A") }) input.onButtonPressed(Button.B, function () { radio.sendString("B") }) radio.setGroup(1)
<受信用Javascript>
radio.onReceivedString(function (receivedString) { if (receivedString == "A") { basic.showIcon(IconNames.Heart) } if (receivedString == "B") { basic.showIcon(IconNames.SmallHeart) } }) radio.setGroup(1)
まとめ
無線通信というと、難しそうなイメージが合ったかもしれませんが、micro:bitでは非常に簡単に実現できました。無線グループを設定して、文字列や数字を送受信する。これだけです。今回のプログラムを応用して、ラジコンのようなものが作れそうです。例えば、ボタンAを押したときに左タイヤを回転、ボタンBを押したときに右タイヤを回転、というようなプログラムです。
コメントを残す