警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : Armadillo-IoT G3で「Bluetooth ほこりセンサー」からデータを収集

対象製品: Armadillo-IoT G3

このHowtoでは、Armadillo-IoT G3 を用いた Bluetooth ほこりセンサー REX-BTPM25,Bluetooth エアクオリティ モニター REX-BTPM25Vのデータ収集手順とデータ構造について紹介します。

REX-BTPM25

Bluetooth ほこりセンサー REX-BTPM25とは、ラトックシステム株式会社より販売されているセンサーデバイスです。
以下のようなセンサーを搭載しており、計測命令を受けて一斉に各情報を計測します。

  • PM2.5/PM10ダストセンサー
  • 温湿度センサー
  • 照度センサー
  • 気圧センサー

詳細な仕様につきましては、ほこりセンサー付属のマニュアルを確認してください。

GATTツールを利用した動作確認手順

はじめにGATTツールを用いてほこりセンサーにBluetoothで接続し、動作を確認する手順を記載します。
ほこりセンサーへ接続するためには、ほこりセンサーのBDアドレスを取得する必要があります。
ほこりセンサーの電源がONになっていることを確認し、Armadillo-IoT G3のコンソールからコマンドを入力します。
入力後に表示される行のうち、末尾に「PM25」と名のついたBDアドレスを確認します。
確認後、Ctrl+Cでコマンドを終了します。

[armadillo ~]# hcitool lescan
LE Scan ...
00:0C:BF:16:36:EA (unknown)
D6:25:F5:C8:D4:60 PM25 # <- この BDアドレスを確認します。

確認したBDアドレスを用いて、GATTツールでほこりセンサーへ接続します。 「Connection successful」と表示されれば接続完了です。

[armadillo ~]# gatttool -t random -b D6:25:F5:C8:D4:60 -I
[D6:25:F5:C8:D4:60][LE]> connect
Attempting to connect to D6:25:F5:C8:D4:60
Connection successful

Armadillo-IoT G3からほこりセンサーの動作を確認するため、次のコマンドを入力します。

[D6:25:F5:C8:D4:60][LE]> char-write-req 0x0023 0100000000000000000000000000000000000000

このコマンド入力後、ほこりセンサーが「正面の4つのLEDを点滅し、動作音とともに空気を吸い込む」という測定動作を開始したら動作確認は完了です。 次のコマンドを入力して接続を終了します。

[D6:25:F5:C8:D4:60][LE]> disconnect
[D6:25:F5:C8:D4:60][LE]> exit
[armadillo ~]#

Armadillo-IoT G3でデータを収集する設定手順

ほこりセンサーから計測データを収集するために、次の内容を設定します。

  • 現在時刻設定
  • 連続計測開始設定
  • 計測結果通知設定

このHowtoでは例として、設定用に用意したshellスクリプト「rex-btpm25_sample.sh」を使用します。
下記にスクリプトを記載します。
http://download.atmark-techno.com/misc/howto_armadillo_rex-btpm25/rex-btpm25_sample.sh

スクリプトの実行に必要なパッケージをインストールします。

[armadillo ~]# apt-get update
[armadillo ~]# apt-get install bc

このスクリプトは「現在時刻の1分後から連続測定をスタート。1分毎に測定を行い、結果を標準出力に表示する設定を行う」という内容になっています。
スクリプト実行後、以下のように出力されます。

[armadillo ~]# ./rex-btpm25_sample.sh D6:25:F5:C8:D4:60
Characteristic value was written successfully
Characteristic value was written successfully
Characteristic value was written successfully
Notification handle = 0x0011 value: 3a 11 19 08 11 06 00 00 00 e8 03 1d 1e 72 01 ff ff ff ff 00 
Notification handle = 0x0011 value: 3b 11 19 08 11 08 00 00 00 e8 03 1d 1e 75 01 ff ff ff ff 00 
Notification handle = 0x0011 value: 00 12 19 08 11 03 00 00 00 e8 03 1c 1f 6c 01 ff ff ff ff 00
...

出力された行の「value」が、ほこりセンサーのデータになります。
上記のようにデータ収集を行った後、収集したデータを「まとめてクラウドにアップする」「見やすい形に整えてログファイルに保存する」等の運用が可能です。

詳細なGATTサービスの仕様については、ラトックシステム株式会社に問い合わせてください。

データ構造

上記で収集した計測データの構造を説明します。
今回取得したデータ構造は次の表のようになっています。
各値はリトルエンディアンで構成されています。

例:3b 11 19 08 11 08 00 00 00 e8 03 1d 1e 75 01 ff ff ff ff 00

データ値 内容 解析後の値 詳細
3b 11 19 08 11 計測日時 2017年8月25日17時59分 [分][時][日][月][年]の順で表示
08 00 PM2.5濃度 8 μg/m3 -32,768 ~ 32,767 μg/m3
00 00 PM10濃度 0 μg/m3 -32,768 ~ 32,767 μg/m3
e8 03 気圧 1000 hpa -32,768 ~ 32,767 hpa
1d 温度 29 ℃ -128 ~ 127 ℃
1e 湿度 30 % -128 ~ 127 %
75 01 照度 373 lx -32,768 ~ 32,767 lx
ff ff ff ff CO2,TVOC AQ センサ非搭載 AQ センサ非搭載ならばff ff ff ff
00 計測モード 連続計測モード 00:連続計測モード

REX-BTPM25V

Bluetooth エアクオリティ モニター REX-BTPM25Vとは、2017年9月下旬より発売されたREX-BTPM25の次世代機です。
搭載センサーはREX-BTPM25と変わりません。

詳細な仕様につきましては、付属のマニュアルを確認してください。

Armadillo-IoT G3でデータを収集する設定手順

REX-BTPM25でArmadillo-IoT G3からデータを収集した例と同様の操作をREX-BTPM25Vでも行います。

REX-BTPM25の確認動作と同様に、ほこりセンサーの電源がONになっていることを確認してArmadillo-IoT G3のコンソールからコマンドを入力します。
入力後に表示される行のうち、末尾に「PM25V」と名のついたBDアドレスを確認します。
確認後、Ctrl+Cでコマンドを終了します。

[armadillo ~]# hcitool lescan
LE Scan ...
00:0C:BF:16:36:EA (unknown)
ED:F6:ED:80:F1:C5 PM25V # <- この BDアドレスを確認します。

「REX-BTPM25V」は「REX-BTPM25」から一部仕様が変化しており、「REX-BTPM25」で使用したシェルスクリプトがそのまま使えません。
そのため、REX-BTPM25V専用に用意したshellスクリプト「rex-btpm25v_sample.sh」を使用します。
スクリプトの動作内容は「rex-btpm25_sample.sh」と同様です。
下記にスクリプトを記載します。
http://download.atmark-techno.com/misc/howto_armadillo_rex-btpm25/rex-btpm25v_sample.sh

スクリプト実行後、以下のように出力されます。

[armadillo ~]# ./rex-btpm25v_sample.sh D6:25:F5:C8:D4:60
Characteristic value was written successfully
Characteristic value was written successfully
Characteristic value was written successfully
Notification handle = 0x0011 value: e0 88 66 23 1c 74 00 00 94 72 08 56 96 27 f1 01 0f b8 0f 10
Notification handle = 0x0011 value: 00 89 66 23 1b 58 00 00 94 7a 08 56 97 27 f0 01 0f b8 0f 10
Notification handle = 0x0011 value: 20 89 66 23 13 7c 00 00 94 82 08 56 97 27 ee 01 11 10 10 10
...

出力された行の「value」が、ほこりセンサーのデータになります。

詳細なGATTサービスの仕様については、ラトックシステム株式会社に問い合わせてください。

データ構造

上記で収集した計測データの構造を説明します。
「REX-BTPM25V」の計測データは「REX-BTPM25」と異なっており、専用の分解方法を使用します。
以下に例を用いたREX-BTPM25Vの分解方法を記載します。

例:value: e0 88 66 23 1c 74 00 00 94 72 08 56 96 27 f1 01 0f b8 0f 10

1.4byteずつにグループ分けする
例:「e0 88 66 23」「1c 74 00 00」「94 72 08 56」「96 27 f1 01」「0f b8 0f 10」

2.各グループ内の16進数値を「a b c d」から「d c b a」に入れ替え、空白を削除する
例:「236688e0」「0000741c」「56087294」「01f12796」「100fb80f」

3.変換ツール等でそれぞれを2進数に変換する。変換後の値がそれぞれ32bitずつあることを確認する。
例:「00100011011001101000100011100000」「00000000000000000111010000011100」「01010110000010000111001010010100」「00000001111100010010011110010110」「00010000000011111011100000001111」

4.左端を31ビット目,右端を0ビット目として、各グループ毎に決められた分解パターンに沿って2進数値を切り分ける。
  その後10進数変換して値を得る。
  一部の値は数値計算を行う。
各グループの分解表を以下に記載します。

グループ1

ビット値範囲 文字数 2進数データ値 内容 変換後の値
31~25ビット目 7文字 0010001 計測年 17年(2017年)
24~21ビット目 4文字 1011 計測月 11月
20~16ビット目 5文字 00110 計測日 6日
15~11ビット目 5文字 10001 計測時 17時
10~5ビット目 6文字 000111 計測分 7分
4~0ビット目 5文字 00000 ダミー 0

グループ2

ビット値範囲 文字数 2進数データ値 内容 変換後の値
31~24ビット目 8文字 00000000 RFU 0
23~20ビット目 4文字 0000 UVI 0
19~10ビット目 10文字 0000011100 PM10濃度 28[μg/㎥]
9~0ビット目 10文字 0000010111 PM2.5濃度 23[μg/㎥]

グループ3

ビット値範囲 文字数 2進数データ値 内容 変換後の値
31~21ビット目 11文字 01010011011 気圧計温度 667/10-40 = 26.7[℃]
20~11ビット目 10文字 0100101010 湿度 298/10 = 29.8[%/RH]
10~0ビット目 11文字 01000010111 温度 535/10-40 = 13.5[℃]

グループ4

ビット値範囲 文字数 2進数データ値 内容 変換後の値
31~16ビット目 16文字 0000000111110001 照度 497[lx]
15ビット目 1文字 0 VOCセンサー状態:起動 0
14ビット目 1文字 0 VOCセンサー状態:初期 0
13~0ビット目 14文字 10011110010110 気圧 10134/10 = 1013.4[hPa]

グループ5

ビット値範囲 文字数 2進数データ値 内容 変換後の値
31~24ビット目 8文字 00010000 計測データモード 16(拡張連続計測データ)
23~11ビット目 13文字 0000111110111 eCO2 503[ppm]
10~0ビット目 11文字 00000001111 TVOC 15[ppb]

カテゴリ: