MIT APP Inventor2(以下inventor2)のBluetooth LEコンポーネントの使い方を中心にまとめておきます。従来のBluetooth規格(クライアント、サーバ)のコンポーネントは昔からありましたが、いつ頃からかBluetooth LE(Bluetooth Low Energy以下BLE)のコンポーネントが準備されてます。
ただ、BLEコンポーネントに関しては現時点、公式ではなくテスト環境でのみ使用可能な状況となっています。方法は2通りありますが良し悪しが少しあります。また当然ですがスマホがBLEに対応している必要があります。
Inventor2でBLEコンポーネントを使用するには(2016/9/24時点)
- テスト環境のサイトURLを使う方法
作成したアプリをスマホへインストールして問題なく動作します。ただ AI Companionの動きが少しおかしいためデバックは少し面倒です。
- Extensionで別途BLEコンポーネントをアップロードする方法
Extensionで別途BLEコンポーネントをアップロードして使用します。ただこの場合だと、作成したアプリをスマホへインストールした後の動作がおかしいです。AI Companionでのデバックでは正しく動作します。
検証目的であればExtensionの対応で十分ですが、スマホへインストールを考えているのであれば、テストURLを使用するしかありません。いつかは公式環境でもBLEコンポーネントが配置されると思います。
以下から具体的な使用方法を時系列で説明します。今回は、スマホ側をセントラルとして、アドバタイジングされたペリフェラルを見つけ出し接続します。その後、データの送信、及び受信を行います。
BLE機器(ペリフェラル)と接続
アドバタイジングされたペリフェラルのスキャンを開始します。ここではアプリを起動したらスキャンを開始してます。
ペリフェラルを見つけたらListPickerのリストへBLE機器の一覧を格納。
リストで選択されたペリフェラルのMACアドレス部を抜き取り接続します。BLE接続はこれで完了です。MACアドレスを一度変数へ格納してますが直接指定しても問題ないでしょう。
他にはこういったように
周辺にBLE機器が1台しかない場合はこのように直接接続しても問題ないです。複数BLE機器がある場合は、どの機器と接続するかわからないため、前述したListPickerを使用します。
BLE送信
ペリフェラルで設定されているサービスのUUIDとキャラクタリスティックのUUIDを指定して、送信するデータをvalueへセットします。データ送信はこれだけで完了です。
ここではボタンがクリックされたら、string型の文字配列を送信してますが、int型やfloat型などのブロックも準備されています。
BLE受信
送信同様に、ペリフェラルで設定されているサービスのUUIDとキャラクタリスティックのUUIDを指示して一旦データを読み込みます。ここではTimerコンポーネントを使用して定期的にデータの読み込みを行ってます。
そのあと、データが読み込まれた時にテキストボックスに受信したデータを表示しています。ローカル変数が用意されているため、受信データの読み込みはローカル変数から読み込みます。
ここではstring型を例としてますが、読み込むデータの変数型に合わせたブロックを使用します。
BLE切断
見たままですが、接続中のペリフェラルのMACアドレスを指示してBLE接続を切断します。
基本的な使い方は以上です。一部のブロックの説明でしたがほかにも多くのブロックが準備されてますのでより複雑な処理も可能で、BLEの知識があまり無くても割と簡単に利用できるかと思います。
コメント
テスト環境のサイトURLを使う方法のURLが見つからなかったけど、次のurlですかね?
ble-test.appinventor.mit.edu
しばらくMIT側の確認してませんが更新なければそうです。
テスト環境のサイトを使うというのは具体的にどう行うのでしょうか…?
ble-test.appinventor.mit.edu/
のURLからログインすればBLEコンポーネントがあるはずです。ここでログインしてアプリを作成します。
現時点で通常のURLでは未だ正式にリリースされていない機能のようです。http://appinventor.mit.edu/explore/