発信し、ゲートウェイ経由でAmbientに送って、記録し、グラフ化(可視化)します。micro:bitとゲートウェイをBLEコネクトモードで通信する方法を説明します。ブロードキャストモードでの通信は「micro:bitで温度データーをAmbientに送りグラフにする(ブロードキャストモード編)」をご覧ください。micro:bitmicro:bitはイギリスBBCが教育用に開発したシングルボードコンピューターです。ボード上に25個のLED、2個のボタンスイッチ、加速度センサー、磁力センサーが搭載されており、照度や温度を測ることもできます。温度はプロセッサー内蔵の温度センサーを使っています。Editor、MicroPython、JavaScriptなどが使えます。Editorはビジュアルに機能ブロックを組み合わせてプログラムが書けます。Editorを使ってプログラミングします。WHをゲートウェイにしてBLEでデーターを受信し、Ambientに送って、グラフ化します。プロセッサー内蔵の温度センサーはプロセッサーの発熱の影響を受けます。その影響を避けるため、ブロードキャスト編ではBME280を使って温度などを測るバージョンも開発します。「拡張機能」を選択し、bluetoothを追加します。Bluetoothはradio機能と同居できないので、radioを削除します。これでbluetoothが追加されます。Bluetooth.」を選択します。Bluetooth機能ブロックBluetooth機能ブロックには、加速度、ボタン、温度計などのサービスと、「接続されたとき」、「接続が切断されたとき」といった条件、「UIDをアドバタイズ」、「URLをアドバタイズ」、UARTでの文字の送受信などがあります。BLEデバイスの動作BLEデバイスの通信にはコネクトモードとブロードキャストモードがあります。Pi編)」をご覧ください。コネクトモードは双方向通信なので、ゲートウェイからセンサー端末のデーターを取得するだけでなく、センサー端末のモード設定をおこなうこともできます。センサー端末は常にゲートウェイからのコネクトを待つため、消費電力が多くなりがちです。ブロードキャストモードは一方向通信です。センサー端末からデーターを発信するには適した方式ですし、5分に1回、10秒間だけブロードキャストするといった間欠動作をおこなうことで消費電力を低く抑えることも可能です。温度計サービス」ブロックを入れると、温度計サービスが組み込まれます。プログラムをダウンロードして動かせば、アドバタイズが始まります。ゲートウェイなどのセントラル側でスキャンしてmicro:bitを見つけ、接続して温度データーを読めます。一般的にBLE通信では、サービスとキャラクタリスティクスを定義して、UUIDを付与し、キャラクタリスティクスにread要求があった場合にセンサーデーターを返す処理を書く必要があります。micro:bitで予め用意された温度、加速度などのサービスは、機能ブロックを「最初だけ」に入れるだけで必要な処理がすべて組み込まれます。これだけだとmicro:bitの動作が見えないので、「接続されたとき」に温度をLEDに表示し、「接続が切断されたとき」に悲しい顔マークを表示してみます。このプログラムのhexファイルを作り、micro:bitにダウンロードします。ダウンロードが終わると、プログラムが動きます。Scanner」が便利です。[puzup]」が表示されます。部分は端末によって異なるようです。UUIDなどの情報が表示され、micro:bitのLEDは温度の表示に変わります。micro:bitのBLEプロファイルによれば、サービスとキャラクタリスティクスのUUIDは次のようになっています。E95D9250-251D-470A-A062-FA1922DFA9A8UUIDの5桁目から8桁目までがサービスやキャラクタリスティクスによって固有の値に変わります。Scannerで温度計サービスとその先の温度のキャラクタリスティクスを見ると、値が0x17(23°C)で、LEDにも同じ値が表示されています。これでmicro:bit側の動作は確認できました。次はゲートウェイ側です。Pi編)」で開発したものをベースにします。PiへのBLEライブラリーのインストールなどはこの資料をご覧ください。大まかな流れはESP32やOMRONセンサー端末を対象にしたものと共通です。スキャンしてmicro:bitを見つけます。[xxxxx]」です。[xxxxx]の部分はボードによって変わるようです。micro:bit」に前方一致したものを見つけます。端末を見つけたら、スレッドを起動し、端末にコネクトして、周期的にデーターを読み出します。温度のキャラクタリスティクスUUIDを指定してgetCharacteristics()し、read()すると温度データーが取得できます。ゲートウェイプログラムはGithubに公開しました。・AmbientDataInc/EnvSensorBleGw/src/gw_RPi/env2ambientCS.pymicro:bitとゲートウェイのプログラムを動かすと、温度を測定し、ゲートウェイ経由でAmbientに温度データーが送信され、グラフ表示されます。ブロードキャストモードは「micro:bitで温度データーをAmbientに送ってグラフにする(ブロードキャストモード編)」をご覧ください。