今回のテーマは、ラズパイ(Raspberry Pi)に関するものです。
RATOC e2eStore では、近年IoT関連で注目されている超小型シングルボードコンピュータ Raspberry Pi
のサポートを開始しました。
RATOC e2eStoreのサイトでは、Raspberry Pi で使用するための設定方法やサンプルプログラムなどの
情報を提供しており、Raspberry Pi をサポートする製品を集めた ラズパイ対応製品のカテゴリページ も
新たに追加しました。
Raspberry Pi はLinuxをベースとしたOSが搭載可能で、インターネットへの接続環境が標準で
利用できることから、様々なセンサーデバイスと組み合わせてIoTを実現するための産業用
コンピュータとしても使われ始めています。
2016年から発売の「Raspberry Pi 3 Model B」はBluetooth 4.1 に標準で対応しており、ラズパイを
Bluetooth LEタグとして動作させたり、ラズパイからBluetooth LEタグへの接続が簡単になっています。
そこで今回は、ラズパイからBLEデバイスへ接続し制御する方法を Bluetooth4.0+LE対応 紛失防止タグ
のREX-SEEK2を使って紹介します。
REX-SEEK2について
最初に、Bluetooth4.0+LE対応 紛失防止タグ REX-SEEK2について説明します。
REX-SEEK2(レックス・シークツー)は、Bluetooth4.0+LE対応のiPhoneやAndroidスマートフォンと
組み合わせて使用するBLEタグ(Bluetooth Low Energy対応タグ)です。
スマホやカギなどの探し物を見つけたいときに、タグとスマホをお互いに呼び出したり、スマホや大切な
ものの置き忘れを防ぐために、タグとスマホが一定距離以上離れたら知らせるといった機能があります。
製品の詳しい仕様についてはこちらをご覧ください。
【Bluetooth4.0+LE対応 紛失防止タグ REX-SEEK2】
Bluetoothでは、機器同士の通信プロトコルや関連情報をプロファイルと呼んで定めています。
Bluetooth標準化団体が標準GATTプロファイルというものを策定しており、
REX-SEEK2では、Bluetooth 4.0 から利用可能になった標準GATTプロファイルのうち、
PXP (Proximity Profile) とFMP (Find Me Profile) が実装されています。
・PXP(Proximity Profile)について
PXPとは、対象のものが付近にあるかどうかを調べるためのプロファイルで以下のサービスが提供されます。
サービス名 | サービス内容 |
Link Loss Service | 接続が切れたときにアラートを鳴らすかの設定を行うサービス |
Immediate Alert Service | すぐさまアラートを鳴らせるサービス |
Tx Power Service | BLEの送信パワーを読めるサービス |
・FMP(Find Me Profile)について
FMPとは、失くした端末を別のデバイスから鳴らして探すためのプロファイルで以下のサービスが提供されます。
サービス名 | サービス内容 |
Immediate Alert Service | すぐさまアラートを鳴らせるサービス |
これらのサービスによって、スマホやカギなどの探し物を見つけたいときに、紛失防止タグとスマホをお互いに
呼び出す機能や、スマホや大切なものの置き忘れを防ぎたいときに、紛失防止タグとスマホが一定距離以上
離れたらお知らせする機能を実現しています。
それでは、これらのサービスをラズパイ上でどのように使用していくか具体的に見ていきます。
紛失防止タグであるBluetoothデバイスを探索、サービス問合せ、Bluetoothデバイス内の情報の読書きを実際
に行って説明します。
デバイスアドレスについて
Bluetoothデバイスでは、それぞれの機器を識別するために各機器固有の12桁のデバイスアドレスを持ちます。
有線LANやWiFi無線LANで使用するMACアドレスと構造的には同一(XX:XX:XX:XX:XX:XX の形式)ですが、
番号付けはMACアドレスとは別管理で行われています。
(BDアドレスとかBDデバイスアドレスと呼ばれることもありますが、ここでは単にデバイスアドレスと呼びます。)
ラズパイ上でBluetoothを制御するためのコマンド hctiools や gatttool 等は、対象とするBluetoothデバイスを
指定するためにこのデバイスアドレスを使用します。
そこで、REX-SEEK2が持つBluetoothのデバイスアドレスの取得から行います。
デバイスアドレスの取得
Bluetoothデバイスのデバイスアドレスを取得する方法はいくつかあります。
今回は、hcitool コマンドを使う方法で説明します。
hcitool には、検出しているBleutooth LEデバイスのデバイスアドレスとデバイス名の組合せを一覧表示する
lescan コマンドがあります。
~ $ sudo hcitool lescan
1デバイスごとにデバイスアドレスが左側にデバイス名が右側といった形式で表示されます。
デバイス名として「SEEK2_V1.0」と表示している行がREX-SEEK2の情報です。
左側に表示されている「C5:E6:B7:56:05:42」が、このREX-SEEK2のデバイスアドレスです。
これで対象とするREX-SEEK2のデバイスアドレスが取得できたので、以降の制御では
このデバイスアドレスを使ってREX-SEEK2を制御していきます。
※ lescan コマンドは、BLEデバイスが見つかる都度、その情報が画面に表示されます。
停止させるまでこの処理は継続されて検索したデバイスを表示し続けます。
このため、対象となるデバイスが見つかったら、[CTRL+C] を入力して検索を終了させます。
[…] ▼Bluetooth4.0+LE対応 紛失防止タグ REX-SEEK2(e2eブログ) http://www.ratoc-e2estore.com/blog/2017/04/seek2-01 […]