(少し前から)IoT、始めました。
IoTといえば、センサー。ということでTI製のセンサタグを購入してみました。
この記事ではTexas Instruments製SimpleLink™ センサタグの購入からセンサ値までをまとめます。
センサ値の取得は Raspberry Pi 3 Model B のオンボードBLEチップを使って行います。
#Raspberry Pi 2 Model B + 下記のドングルの組合わせでもセンサ値は取れます。
Logitec Bluetooth USBアダプタ コンパクト Ver4.0 Class2 LBT-UAN04C2BK
1. 外観と内臓センサ・インターフェイス
外箱。丈夫な作りで輸送中に壊れることはなさそう。#少しへこみはあるけれど…
内容物は本体+スマホ向けアプリのダウンロード先とサポートの連絡先の説明書
表側にはトレードマークが。
裏側には周辺光センサや赤外線、周囲温度センサ、LEDチップ用の窓がある。
- 表面のセンサ
- IR サーモパイルセンサ TMP007
- 9軸モーション・センサ MPU-9250
- デジタル湿度センサ
- 高度計/圧力センサ BMP280
- 周辺光センサ OPT3001
- 裏面のセンサ
- 磁気センサ MK24
- デジタル・マイク SPH0641LU
2. 購入方法
a. Texas Instruments の通販で購入する場合
Checkout Now からどうぞ。ただしすべて英語かつ、おそらく海外からの発送。
CC2650STK | Texas Instruments | TI Store
b. アールエスコンポーネンツの通販で購入する場合(こちらがおすすめ)
組織名の入力は必須でないため個人での購入も可能。
CC2650STK | SensorTag Kit with SimpleLink CC2650 MCU | Texas Instruments 【通販RS】
#個人での購入はできないとか書いているブログもあるけれど、私は下記で普通に購入
3. センサ値を取得する
3.1. アプリでセンサ値を取得する
センサタグの電源を入れアプリを起動して取得先を選ぶだけで簡単に取得できる。が、取得できるだけ。
・Android向け
Simplelink SensorTag - Google Play の Android アプリ
・iOS向け
TI SensorTag on the App Store
3.2. Raspberry Piでセンサ値を取得する
Raspberry Pi 3 以前 or Bluez 未インストールの場合は、下記を参考にBLEを使えるようにする。
Fitbit Charge HRとBLEで通信する - もみあげあしめ
3.2.1. コマンドラインを使って取得する
・下記コマンドでセンサタグのMACアドレスを取得できる
sudo hcitool lescan
・下記のような結果が得られるので、MACアドレスをコピーしておく。※Ctrl + Cで抜けられる
pi@raspberrypi:~ $ sudo hcitool lescan LE Scan ... XX:XX:XX:XX:XX:XX (unknown) XX:XX:XX:XX:XX:XX CC2650 SensorTag
・gatttool を使って通信する
gatttool -b XX:XX:XX:XX:XX:XX -I
※XX:XX:XX:XX:XX:XXにはセンサタグのMACアドレスを指定
・connect で接続する。成功すると「 Connection successful 」が表示される。
pi@raspberrypi:~ $ gatttool -b XX:XX:XX:XX:XX:XX -I [XX:XX:XX:XX:XX:XX][LE]> connect Attempting to connect to XX:XX:XX:XX:XX:XX Connection successful [XX:XX:XX:XX:XX:XX][LE]>
・湿度センサ(温度センサ)を有効にする
[XX:XX:XX:XX:XX:XX][LE]> char-write-req 0x2f 01 Characteristic value was written successfully
・湿度センサ(温度センサ)値を取得する
[XX:XX:XX:XX:XX:XX][LE]> char-read-hnd 0x2c Characteristic value/descriptor: 04 68 7c 5f
TempLSB:TempMSB:HumidityLSB:HumidityMSBの順なので、単純に計算すると
温度(℃) | 湿度(%) | |
---|---|---|
生データ | 0x6804 | 0x5f7c |
10進数 | 26,628 | 24,444 |
#もしかして…ここは地獄?
当たり前かもしれませんが、生データから計算式を使って変換が必要です。
CC2650 SensorTag User's Guide - Texas Instruments Wiki を参考にセンサ値を変換します。
3.2.2. Python を使って取得する
・まずは関連ライブラリのインストール
sudo apt-get install python-dev libbluetooth-dev libgtk2.0-dev libboost-python-dev libboost-thread-dev
※インストール失敗する場合は sudo apt-get update
・次に pygattlib のインストール
sudo pip install gattlib
力尽きたのでこの記事はここまで