raspberry piからSensorTagへ接続、データの取得を試してみた。
OSはraspbian
bluetoothのドングルはplanexのBT-Micro4
※ネットで調べるとラズパイで割と使ってる人が多く実績がありそうだったのでこれを購入。
SensorTagはもちろんTIのもの。
raspbianにbluezをインストール
# apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline6-dev
# wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.15.tar.xz
# tar xvJf bluez-5.15.tar.xz
# cd bluez-5.15
# ./configure --disable-systemd --enable-library
# make
ここまでやって調べていたところ、
http://ohwhsmm7.blog28.fc2.com/blog-entry-390.html
のように
割とapt-get install bluetooth bluezutilとかやってるのがみつかったのでここでやめた。
※が、後からわかったのはbluetoothキーボードなどのLEでないデバイスとの接続には問題ないようだが、
今回はソースからビルドしたほうがよさげ。
SensorTagへの接続
ここ
http://joost.damad.be/2013/08/experiments-with-bluetooth-low-energy.html
を参考にしたが、connectのところで何故かtimeout.
下記を参考にしたところ、
http://www.zephyr-labs.com/?p=87
hcitool lecc
が足りなかったらしい。
まず
# lsusb
でbluetoothデバイス確認。
SensorTagの横のスイッチを押してアドバタイズ状態にし、
# hcitool lescan
これでmacアドレスを確認。※ctrl-cで止める。
さらに
# hcitool lecc XX:XX:XX:XX:XX:XX
# 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
[CON][XX:XX:XX:XX:XX:XX][LE]>
[CON][XX:XX:XX:XX:XX:XX][LE]> char-read-hnd 0×25
[CON][XX:XX:XX:XX:XX:XX][LE]>
Characteristic value/descriptor: 00 00 00 00
ここまではよかったが
[CON][XX:XX:XX:XX:XX:XX][LE]> char-write-cmd 0×29 01
A valid handle is required
となってうまくいかない。
http://mike.saunby.net/2013/04/raspberry-pi-and-ti-cc2541-sensortag.html
によると、
IF you get 'A valid handle is required' when you try to enable the sensor, you need to update your gatttool by building bluez from scratch.
やはり、当初のソースコードからビルドしたほうがよかったのかも。
というわけで当初ビルドしたソースツリーを探すとattribディレクトリの中にgatttoolがあった。
このバイナリを使って上記をもう一度試したところ、無事データが返ってきた。
遅くなったので今回はここまで。
次回は何らかプログラム(cかjava,python?)を作成してデータ取得できるようにする予定。