SensorTagとRaspberry Pi 2を接続し、スクリプトで情報を取得する

2016.07.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

SensorTagとRaspberry Pi 2をBLE接続して、Raspberry Pi内でスクリプトを実行して情報を取得してみました。今回取得できた情報は以下のようになります。

  • Temp: 温度
  • Humidity: 湿度
  • Barometer: 気圧
  • Accelerometer: 加速度
  • Magnetometer: 磁力
  • Gyroscope: ジャイロスコープ(傾き)
  • Light: 光量

SensorTag

SensorTagについては特に難しいことはなく、電池を入れるのみです。緑色の点滅が光れば準備完了だと思います。

Raspberry Pi 2

次にRaspberry Pi 2の準備です。Raspberry Pi 2と書きましたが、大体の手順やその他のRaspberry Piと共通するかと思います。Raspberry Pi 2には以下が既にインストール・接続済みのものとします(私はOSをインストールした時点でこれらも設定されていた)。

  • OS
  • BLEのアダプタ・ライブラリ
  • Python(今回は2.7.9を使用)
  • git

1.SSH接続

SSH接続は必須ではありませんが、PC上でターミナルを操作出来た方が便利なので行います。Raspberry Pi 2を直接操作する方は飛ばしても構いません。

Raspberry Pi 2に接続したキーボードより以下のコマンドを入力し、IPを取得します。

$ ifconfig eth0

IPが分かれば、PCよりSSH接続するだけです。(以下の例はユーザ名が「pi」の場合です)

$ ssh pi@xxx.xxx.xxx(上記で取得したIP)

2.スクリプトの準備

SensorTagよりデータを取得するスクリプトの準備です。今回は既に公開されているスクリプトを実行します。Raspberry Pi 2で以下のコマンドを実行して取得します。

$ git clone https://github.com/IanHarvey/bluepy.git

この後で実行するスクリプトですが、そのまま実行するとimport処理でエラーとなりました。なのでエラーとなった箇所を修正します。対象のソースは「bluepy/bluepy/sensortag.py」で、以下のように1行目をコメントアウトして、2行目のようにします。

#from .btle import UUID, Peripheral, DefaultDelegate
from btle import UUID, Peripheral, DefaultDelegate

スクリプトの実行 - SensorTagの情報を取得

ではスクリプトを実行し、SensorTagの情報を取得します。まずはRaspberry Pi 2でSensorTagのアドレスを取得します。

$ sudo hcitool lescan
LE Scan ...
xx:xx:xx:xx:xx:xx (unknown)
xx:xx:xx:xx:xx:xx CC2650 SensorTag
xx:xx:xx:xx:xx:xx (unknown)
xx:xx:xx:xx:xx:xx CC2650 SensorTag

「CC2650 SensorTag」と表示されてアドレスが出てくると思います。

先ほど修正したスクリプトを実行します。パラメータとして、取得したアドレスを渡します。

$ cd bluepy/bluepy
$ python sensortag.py --all SensorTagのアドレス
Connecting to xx:xx:xx:xx:xx:xx
('Temp: ', (28.65625, 23.375))
('Humidity: ', (28.57208251953125, 85.406494140625))
('Barometer: ', (28.94, 1006.9))
('Accelerometer: ', (0.019287109375, 0.039306640625, 0.927490234375))
('Magnetometer: ', (5.097924297924298, 27.588766788766787, 203.61709401709402))
('Gyroscope: ', (0.57220458984375, 0.18310546875, 1.86920166015625))
('Light: ', 151.52)

最初に上げた項目を取得することができました。

まとめ

Raspberry Pi 2でスクリプトを実行しSensorTagからの値を取得することができました。値が取得できれば、後はAWSへ送信するなど色々と遊べるかと思います。引き続き、色々とやってみようと思います。