Fitbit Charge HR はアプリを使えば現在計測中の心拍数を取得できます。
これをRaspberry Piから取得できれば、面白いことができそうですよね!
この記事はRaspberry Pi(OSがrapbian wheezy)で Bluetooth Low Energy(BLE)
を使えるようにしようとして、通信できなかったことを書いたものです。
経緯はいいから、通信に成功した版を読ませろという方は下記の記事へ
BlueZ をソースからコンパイルする方法が知りたければ続きをどうぞ。
Control Bluetooth LE Devices From A Raspberry Pi を参考に BlueZ をインストールします。
1. 最新版の BlueZ のインストール
1.2. BlueZ のダウンロード
・https://www.kernel.org/pub/linux/bluetooth/ から最新版の BlueZ を探してダウンロード
※2016年6月3日時点ではbluez-5.40.tar.xzが最新
wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.40.tar.xz
1.3. BlueZ のインストール
・ダウンロードした BlueZ を展開する
tar xvf bluez-5.40.tar.xz
・bluetooth の動作に必要なその他のライブラリをインストール
sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
・環境変数設定
export LDFLAGS=-lrt
#LDFLAGS=-lrtってなんだろ
・展開したディレクトリで configure して make ファイル生成
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-library -disable-systemd
・ビルドする(Raspberry Pi 2 上で約10分くらい)
make
・ビルドに成功したならばインストール
sudo make install
・なぜか gattool だけインストールされないので自分でコピーする
sudo cp attrib/gatttool /usr/bin/
2. BLEのUSBドングルを確認する
今回はどのご家庭にもある、これを使ってみました。
Logitec Bluetooth USBアダプタ コンパクト Ver4.0 Class2 LBT-UAN04C2BK
- 出版社/メーカー: ロジテック
- 発売日: 2012/05/16
- メディア: Personal Computers
- この商品を含むブログを見る
・ドングルを差し込んで lsusb で認識するか確認
lsusb
繋がっていれば下記のような感じの結果が表示される
Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
・繋げただけだと通信できないので、通信可能な状態にする
sudo hciconfig hci0 up
・下記コマンドで「UP RUNNING PSCAN」が表示されればOK
hciconfig
3. BLEデバイスを探してみる
BLEで通信できるデバイスは、Advertising パケットと呼ばれるパケットを
一定周期で飛ばしているので、下記コマンドでそれを拾って表示する。
sudo hcitool lescan
Fitbit Charge HR は BLE を使っているので次のように表示される
#MAC はとりあえず伏字にしておく
LE Scan ... XX:XX:XX:XX:XX:XX (unknown) XX:XX:XX:XX:XX:XX Charge HR :
4. BLEデバイスに接続する
・スキャンした時のMACアドレスを使って接続する(-Iで対話モード)
sudo gatttool -b XX:XX:XX:XX:XX:XX -I
※gatttool の対話モードが始まると「[XX:XX:XX:XX:XX:XX][LE]>」が表示されます。
・下記コマンドで接続
[XX:XX:XX:XX:XX:XX][LE]>connect
・下記のような表示が出て無事、接続できませんでした!
Attempting to connect to D8:2A:FC:43:0E:2F Error: connect: Connection refused (111)
めでたしめでたし
…ではなくてですね。続きの解決編はこちら