micro:bitでBluetooth-UARTを作るには、どうすればいいのだろうか。
自分はmicroPythonでmicro:bitのプログラムを書いているのだが、残念ながらmicro:bitのmicroPythonはBluetoothに対応していない。
一番ポピュラーな開発環境であるMake:codeではBluetoothに対応しているので、そちらを使えば可能なようだ。これはTypeScript(Microsoft版JavaScript)の開発環境だが、Node-REDみたいにGUIでブロックを組み合わせてプログラムをするグラフィカルな開発環境だ。
Make:codeでBluetoothのブロック部品を配置するのは、標準では出てこないので、Advanceという項目からAdd PackageでBluetoothを追加する。日本語だと、高度な機能→パッケージを追加という操作となる。
→ microbit Bluetooth Low Energy serial UART Support
Bluetoothのブロック部品には、このようなものがある。
加速度サービスとかボタンサービス、入出力端子サービスなどのサービスと名前のついたブロックは、これだけでBluetoothに加速度センサーなどの状態を送信してくれるもののようだ。
下の方にあるアドバタイズという名前のものはiBeaconのようなものを作るときに使うもののようだ。
基本的にはBluetoothのシリアル通信プロファイルを使うものばかりなので、Bluetooth HIDとかを使うことはできなさそう。
上記には、Bluetooth加速度サービスというブロックがあるのだが、これを使わずに普通に接続からいちいち全部をブロックで作る例があるのを見つけた。
Bluetooth関係のブロックの使い方の参考になりそうだ。
→ microbitは業務に使える 加速度を表示するiOSアプリを作ってみる Reinforce-Lab.’s Blog
あと、あらかじめペアリングをしておかないといけないのがちょっと面倒かもしれない。
→ Bluetooth Pairing – Microsoft MakeCode
micro:bitでBluetoothを使うメリットとデメリットは、次のようなものが考えられる。
メリット:
・ micro:bit側1台から送信して、受信側にmicro:bitを使わず、Bluetooth機能を持っているスマートフォンやPCで受信することができる。
デメリット:
・PCやスマートフォンなどでBluetoothの通信のソフトをそれぞれ作るのが難しい。特に、3台以上の複数のmicro:bitからの計測値を受信させようとすると、かなり難しい気がする。GATTとかで1対多数の通信ができるらしいのだが、micro:bitは対応してなさそうなので、いちいち個々の通信を切断して別の機器に接続しなおす処理が必要っぽい。
BluetoothシリアルとUARTのブリッジの部品としてmicro:bitを使うようにして、接続数も1対1に限定すれば、少し開発が楽になりそうだ。
ブラックボックスとしてUARTを無線化することができる。
ただし、それなら既に試したNordic Semiconductorの独自方式の無線を使うのと、変わらなくなってしまう。