Windows IoT Core から BLE(Bluetooth Low Energy) を使う例として、テキサスインスツルメンツの Senser Tag を使ってみます。が、どうも調子(?)が悪いのかうまくつながりません。オンボードの BLE だと繋がらないし、RPi2 で繋がっていたバッファローの BLE ドングルでもうまくいかないので、参考程度にしてください。そこは、ほら、流行のキュレーションメディアっぽくということで。
Bluetooth のペアリング
Windows IoT Core から BLE を使うときはあらかじめペアリングが必要になります。これは Windows 10 のときと同じですね。
デバイスポータルで目的のデバイスを見つけて「Pair」をクリックして、PIN コードを入れます。
Windows IoT Core の設定からもペアリングができます。
BLE のサンプルを動かす
ここから、TI BLE Senser Tag を使うためのサンプルがダウンロードできます。
samples/BluetoothGATT/CS at develop · ms-iot/samples
実は、Windows 10 から Bluetooth の GATT を扱うのは結構大変で、下記のような GUID を設定しながらちまちまか動かす必要があります。おそらく、この大変さは Android や iPhone でも同じなんでしょうけど、適当な Java や Objective-C のライブラリを各BLEセンサーの会社がSDKとして提供されている分、楽だったりします。そういう点では、C# の場合は用意されていないことが多くて、仕様書を見ながらちまちま設定という手順が必要なる...みたいですね。
const string SENSOR_GUID_PREFIX = "F000AA";
const string SENSOR_GUID_SUFFFIX = "0-0451-4000-B000-000000000000";
const string SENSOR_NOTIFICATION_GUID_SUFFFIX = "1-0451-4000-B000-000000000000";
const string SENSOR_ENABLE_GUID_SUFFFIX = "2-0451-4000-B000-000000000000";
const string SENSOR_PERIOD_GUID_SUFFFIX = "3-0451-4000-B000-000000000000";
const string BUTTONS_GUID_STR = "0000FFE0-0000-1000-8000-00805F9B34FB";
readonly Guid BUTTONS_GUID = new Guid(BUTTONS_GUID_STR);
readonly Guid BUTTONS_NOTIFICATION_GUID = new Guid("0000FFE1-0000-1000-8000-00805F9B34FB");
readonly Guid BAROMETER_CONFIGURATION_GUID = new Guid("F000AA42-0451-4000-B000-000000000000");
readonly Guid BAROMETER_CALIBRATION_GUID = new Guid("F000AA43-0451-4000-B000-000000000000");
上手く動くと、こんな風になります。きちんと繋がってはいませんが、ペアリングまではできています。
一時期、BLEセンサーの類を「使い捨て」のように提案する場合もありましたが、Amazon Dash Button や IoT Hub などの登場を見れば、「非常にたくさんの BLE 機器を長く使う」ようにシフトされるのは明らかでしょう。BLE の場合 2,3年という長寿命の使い方ができることもあり、電池を含んだまま(あるいは太陽電池などを使って半永久的に)で「壊れるまで使い倒す」という昔ながらの機器の使い方ができると思われます。
Azure の場合は、Azure IoT Hub のデバイス管理機能を利用する | 技術との戯れ なものを使います。他にもいくつか IoT Hub があるので探してみてください。
Bluetooth ありの PC の場合
アプリは UWP でできているので PC からも使えます。デスクトップ PC でも Bluetooth 4.0 なドングル(1,000円位です)を買って取り付けておくと使えます。
で、BLE 経由の GATT で使うと結構大変なので、古式ゆかしき BLE でシリアル通信を使うと楽です。これは別途解説していきましょう。