「つくる人」と「つかう人」のこだわりを追求する

tsumug edge

Bluetooth Low Energy(BLE):TiNKのテクノロジー

株式会社tsumug(ツムグ)の「TiNK(ティンク)」シリーズにはさまざまな技術が使われていますが、ここではその中で使われている技術について、紹介します。第3回は「Bluetooth Low Energy(BLE)」です。

tsumugが提供する「TiNK」シリーズには、鍵を安全に開け閉めするために、さまざまな技術が使われています。ここでは、通信の技術でもある「BLE」について説明します。 f:id:tsumuginc:20180401220631j:plain

BLEの仕組み

「BLE」は、Bluetooth Low Energyの略で、数メートル程度の近距離通信を目的とした、無線規格です。
「Low Energy」という言葉からもわかるように、省電力で通信できるのが特徴です。反面、通信速度は数キロ~数十キロbpsと、決して速くはありません。

構造が簡単なため、BLEに対応した「マイコン」や「通信モジュール」が多く登場しており、IoT(Internet of Things:モノのインターネット)の世界では、幅広く使われています。

さまざまな機器を同じ方法で接続するためのプロファイル

BLEは、キーボードやマウス、ヘッドセット、プリンタなどをつなぐときに使う、従来のBluetooth規格(Bluetooth BR/EDRやクラシックBluetoothとも言う)の拡張規格です。

Bluetoothでは、さまざまなデバイスを利用できますが、当然、機器の種類によって流れるデータの種類が違うので、通信方法も異なります。この違いを吸収するのが、「プロファイル」という規約です。

Bluetoothには、それぞれの代表的な周辺機器に必要となるプロファイルが定められており、対応する周辺機器は、そのプロファイルに則って通信します。
たとえばキーボードやマウスなら「HID」、ヘッドホンなら「A2DP」、プリンタなら「HCRP」などです(表1)。

機器によっては、複数のプロファイルに対応することもあります。たとえば、電話の通話も対応するヘッドホンなら、「A2DP」に加えて「HFP」や「HSP」もサポートします。

表1 Bluetoothの主なプロファイル

プロファイル 用途
A2DP ステレオ音声を送信する
AVRCP AV機器のリモコン操作を実現する
HCRP プリンタ出力する
HFP ハンズフリーを実現する
HID キーボードやマウスを接続する
HSP ヘッドセットと接続する

こうしたBluetooth機器を使うには、パソコンやスマホ側と、周辺機器側の双方が、同じプロファイルに対応していなければなりません(図1)。
このプロファイルは、「こういう構造のデータが来たら、次にこういう構造のデータを送信する」という流れが全部定義されており、そのとおりに周辺機器を作るのは、意外と大変です。
そして基本的には、接続しっぱなしのプロトコルなので、消費電力も多くなりがちです。

また、そもそも既存のプロファイルに当てはまらない周辺機器はどうすればよいのか、という問題もあります。

※逆に、プロファイルに対応していればその機器して見えるので、違うものをその周辺機器に見立てることは可能です。
たとえば、Bluetooth対応のバーコードリーダーはHIDに対応しており、「ピッ」とバーコードを読み込むと、あたかも、その数字をキー入力しているように見せかけているので、キーボードからの入力を受け付けるアプリケーションであれば、どんなものでも使えるようになっています。

f:id:sofkun:20180617223043p:plain
双方が同じプロファイルで通信する(図1)

キャラクタリスティックのデータを読み書きして制御するBLE

BLEは、こうしたBluetoothの複雑なやりとりではなく、もっと単純にデータの読み書きだけで汎用的な制御を可能とするものです。

BLE対応機器の構造は図2の通りで、「サービス(Service)」という機能の塊が実装されていて、そのなかに「キャラクタリスティック(Characteristic)」という、値の読み書きができる場所があります。

サービスやキャラクタリスティックには、「UUID」と呼ばれる固有の番号が付けられており、その番号を指定することで、コンピュータやスマホなどから、値を読み書きすることでBLE機器を制御します。

f:id:sofkun:20180617223209p:plain
サービスとキャラクタリスティック(図2)

キャラクタリスティックの先に、制御対象の機器が接続されている

BLEの肝となるのは、このキャラクタリスティックです。 たとえば、BLE対応で「スマホで操作すると電灯が付く装置」があるとします。このような機器には、電灯のオン・オフに対応するキャラクタリスティックが備わっています。

実際にはもっと複雑ですが、簡略化して言えば、スマホからこのキャラクタリスティックに「1」というデータを書き込むと電灯が付き、「0」というデータを書き込むと電灯が消えるという仕組みになっています。

キャラクタリスティックにデータを書き込んだり、読み込んだりする機能は、標準化されており、OSの機能でサポートされています。なので、プログラムから、「このUUIDに値を書き込んで」と指示するだけで書き込めます。

読み込みについても同様です。たとえば、BLEの温度センサーがあるとします。この場合、温度の値がキャラクタリスティックから読み込めるようになっており、そのUUIDから値を読み込めば、温度がわかります(図3)。

f:id:sofkun:20180617223316p:plain
キャラクタリスティックを読み書きするとIoT機器を制御できる(図3)

この図からわかるように、制御するスマホ側では、ただキャラクタリスティックの値を読み書きしているだけなので、どんな機器を制御する場合でも、違いはUUIDだけで、プログラムの仕組みや通信の方法自体は同じです。 たとえば、コーヒーを淹れるコーヒーメーカーをBLEで制御する場合でも、スマホ側は、キャラクタリスティックに書き込んでいるだけなのです。

このような統一化した仕組みなので、BLE機器を制御するプログラムを作るのは、とても簡単です。IoT機器側も、BLE機能をもつマイコンモジュールを使えば、同様に簡単に対応できるので、多くのIoTデバイスで使われています。

GATTプロファイル

もっとも各社のBLE対応機器のサービスやキャラクタリスティックのUUIDがまちまちだと、たとえば同じ「温度計」のBLE対応機器でも、A社のものとB社のものとでは制御方法が違い、A社が提供するソフトでB社の温度計が制御できない(もしくは逆)ということになり、利便性が低くなります。

こうしたことがないよう、BLEでは、「温度計」「体重計」「心拍計」など、ある程度のサービスの枠組みのなかで、「どのようなサービスやキャラクタリスティックのUUIDを使い、どのような値を読み書きすると、どのようになるのか」という決まりが定義されています。 これを「GATT(Generic Attributes)プロファイル」と言います。

BLE対応機器がGATTプロファイルに対応しているのなら、同じ方法で制御できます。 最近では、腕に巻いて心拍数などをスマホで記録できる「活動計」が流行りですが、これはBLE対応デバイスであり、心拍計のGATTプロファイルである「Heart Rate Service」に対応しているものが多いです。

こうしたBLE機器は、汎用的に扱うことができ、どのメーカーのものであっても、さまざまなスマホアプリから、同じ方法で制御できます。

GATTという枠組みによって統一された方法でも制御できるのは、BLEの大きな特徴です。最近では、スマホで家電を操作できるようになってきていますが、どのようなメーカーの機器でも同じように操作できるようにするためには、こうした共通のGATTを採用することが不可欠です。

BLEの安全性

BLEは接続相手を固定するためにペアリングします(しないこともできますが、ほとんどのデバイスでは安全のためペアリングします )。 このとき、通信に使う鍵の情報を交換して暗号化できます。

一度ペアリングしてしまえば、そのときに交換した鍵で暗号化されるので、通信データが漏洩することはありません。また、間違った相手に接続されてしまうこともなく安全です。

TiNKにおけるBLEの利用

TiNKでは、室内機と室外機との通信にBLEを使っています。BLEは省電力なので、こうした近距離の通信にもってこいの技術です。

室内機と室外機は、工場出荷時にペアリングの設定がされており、室内機と室外機とは1対1で対応します。ですから、他の室外機で操作されてしまうことはありません。また通信も暗号化されており、盗聴の危険もありません。

f:id:sofkun:20180617223434p:plain
TinKでは室内機と室外器との通信にBLEを採用している(図4)

文:大澤文孝 

株式会社 tsumug | 〒810-0041 福岡市中央区大名 2 丁目 6-11 FUKUOKA growth next 301