これはWeb Bluetooth API を試行した備忘です。
- 概要
- chromeブラウザ配下でのプログラミング教育用の環境を作っているとき,chromeブラウザにWeb-Bluetooth APIというのが実装されており,これを使えばBLEデバイスとchromeブラウザをリンクさせて利用できることを知った。
- このAPIを使えばmicro:bitなどのBLEデバイスがchromeブラウザを介してjavascriptのプログラムでWebと連携するサービス(いわゆるIoT)が実現できる。
- micro:bitのBLEを利用してWeb連携させる方法はRaspberry Piとmicro:bitでNode.jsやGoで試したが追加のソフトウェアなしでchromeだけでWeb連携ができることに大いに興味を惹かれた。
- Googleで探索すると多くの先行事例がヒットした。その中で,次のページの事例を忠実に模倣してWeb-Bluetooth APIを試して見た。
- micro:bit web-bluetooth 資料
- 模倣して試した後,今後に向けてBLEリンクさせる部分をできるだけ抽象化してmicro:bit搭載の色々なセンサー利用のプログラムを簡単に作れるようにした。
- 実験環境
- macOS Hight Sierra + Chrome 66
- ChromeOS 65
- Raspbian Stretch + Chromium 60 (chrome://flags で Experimental Web Platform features をenableにしておく)
- プログラム
- micro:bit
- ブロック・プログラムエディタ右上の歯車マークをクリックし「プロジェクトの設定」から”No Pairing Required: Anyone can connect via Bluetooth.”を選択して事前のペアリングなしでBLEリンクできるようにしておく。
- 次のようなBluetoothサービスを起動するプログラムをmicro:bitに書き込む。
- 書き込みが終わるとLEDマトリクスに”DRAW CIRCLE”と表示され磁気コンパス校正モードに入るのでCalibrating the micro:bit Compassのように操作。
- ブロック・プログラムエディタ右上の歯車マークをクリックし「プロジェクトの設定」から”No Pairing Required: Anyone can connect via Bluetooth.”を選択して事前のペアリングなしでBLEリンクできるようにしておく。
- 加速度センサー
試行ページ https://kimio-kosaka.github.io/Web-Bluetooth/accelerometer/
ソースコード https://github.com/kimio-kosaka/Web-Bluetooth/tree/master/accelerometer - 磁気コンパス
試行ページ https://kimio-kosaka.github.io/Web-Bluetooth/compass/
ソースコード https://github.com/kimio-kosaka/Web-Bluetooth/tree/master/compass
読み取り値が”おかしい”場合はコンパスの校正不良。参考ページ↓
Compass results are inaccurate in some circumstances - 温度センサー
試行ページ https://kimio-kosaka.github.io/Web-Bluetooth/temperature/
ソースコード https://github.com/kimio-kosaka/Web-Bluetooth/tree/master/temperature - ボタンA,B状態読み取り
試行ページ https://kimio-kosaka.github.io/Web-Bluetooth/button/
ソースコード https://github.com/kimio-kosaka/Web-Bluetooth/tree/master/button
- micro:bit
- 以上のようにchromeプラウザ側のjavascriptプログラムだけでmicro:bitを簡単に連携動作させることができる。