United Statesからアクセスのようです。言語設定をEnglishに切り替えますか?
Switch to English site
Skip to main content

Bluetooth 4.2 Low Energy (BLE) の秘密の世界を探る

最近は何もかもワイヤレスに対応した「スマート」デバイスになっているように思えます。手元のスマートデバイスがBrian Krebs氏のWebサイトに対するDDoS攻撃に加わっていないことを確認したら、その仕組みを調べてみると楽しいでしょう。今回の「一日でやってみよう!」では、Bluetooth Low Energy (BLE)を使用して(低コストで)楽しめる内容を紹介します

Bluetooth 4.2 Low Energy (BLE)

さて、BLE (Bluetooth Smartとも呼ばれる)は家庭でどんな使い方があるでしょう。既にBluetoothに詳しい方はこのセクションを飛ばして「機能の詳細」にお進みください。その他の方は、こちらの「エグゼクティブ概要(Executive Précis™)」におつき合いください。

BLEについてまず評価すべき点は、旧Bluetoothと同様、免許不要の2.4GHz周波数帯で機能しながら、実際はコア仕様が異なるBluetooth 4.2の軽量サブセットであることです(Nokia ‘Wibree’プロトコルから開発されました)。このため、BLEは短距離のワイヤレス用途では旧Bluetoothと互換性がありません。

設計者にとってのメリットは、シンプル(製品のリリースまでの法的課題がはるかに少ない)で低消費であることです。BLEデバイスは、ほとんどの時間スリープ状態で過ごします。起動してデータを送信するときは、非常にシンプルな(即座に接続できる)リンクレイヤーを使用し、わずか数ミリ秒(旧Bluetoothは100ミリ秒)で可変長のメッセージを0.1%の短いデューティサイクルで送信します。電流消費は驚くほど低く、電池の駆動時間は数時間や数日でなく数年にまで伸びます。

図1

 

BLEでは、2.4 GHZ帯域(2402MHz~2480Mz)を2MHz間隔で40チャネルに分割し(3つの「アドバタイズメント」チャネルと37のデータチャネル)、ガウス型周波数偏移変調(GSFK)とアダプティブ周波数ホッピングを使用します。

BLE接続

BLE接続には、周辺デバイスと中央デバイスの2つのデバイスが存在します。周辺(通常はセンサやモニタ)デバイスは、接続しようとするデバイスに、アドバタイジングチャネルでその存在を知らせます。周辺デバイスはプロトコルのスレーブで、サーバーを実行して生成データを送出します。中央デバイス(通常はスマートフォンやタブレット)はアドバタイジングチャネルをスキャンして接続する周辺デバイスを探します。中央デバイスは、プロトコルを起動する役割をし、クライアントを実行して周辺デバイスから送られたデータを受信します。この段階でのデバイスのやり取りの詳細は、汎用アクセスプロファイル(GAP)により定義されます。

接続は排他的に行われる(周辺デバイスは一度に1つの中央デバイスにだけ接続できる)ので、周辺デバイスは自動でアドバタイズを止めます。中央デバイスは、周辺デバイスとの間の接続パラメータを規定します。このやり取りは、データフローを制御する汎用属性(GATT)プロファイルにより定義されます。

 図2

サービス、特性、その記述子は総称して属性と呼ばれ、UUID (Universally Unique Identifier)によって識別されます。

UUIDは128ビット値(例、126e4589-e87b-12d3-a456-926344550000)にするか、Bluetooth SIG標準プロファイル用の16ビット値(例、e87b)にすることができます。

中央デバイスはサービス検出を実行して、周辺デバイスが送信するデータを検出します。中央デバイスに送り返されるのはプロファイルです。このプロファイルは、基本的に1つ以上のサービス(送信データのタイプ)のエンベロープで、特性に関するデータが含まれます(必要に応じて記述子を含むことができる)。特性は、必要とされるデータのコンテナの役割をし、記述子はデータのラベルであると考えることができます。特性には常に少なくとも2つの属性が含まれます。この2つの属性は、(実際のデータに関するメタデータを提供する)特性の宣言と、ハンドルによってアドレス指定される特性値(実際のデータ)です。これらの事項は、少し後で実例を考えるときに参考になるでしょう。

相互運用性を保つため、Bluetooth Special Interests Group (SIG)は明確な用途タイプに応じていくつか標準プロファイルを指定しています。環境検知、心拍数、グルコース測定、(なくした鍵の場所を知らせる)ファインドミーなど多くの標準プロファイルが用意されています。もちろん、カスタムプロファイルの作成も可能です。

たとえば、心拍数プロファイルには、心拍数サービスとデバイス情報サービスの2つのサービスがあります。心拍数サービスには、心拍数測定の特性、ボディセンサ位置の特性、心拍数制御ポイントの特性が含まれます。

機能の詳細

ちょっとした実験として、LattePandaを使用し、中央デバイスとしてCypress CY5677 USBドングルを使います。周辺デバイスはSensirion SHT31 Smart Humigadgetです。

なぜLattePandaを使うのか?」と思われるでしょうが、これには2つの理由があります。1. 100ポンド以下のとても魅力的なWindows 10 PCであること。2. 「魅力的でも実際役に立つのか」というお決まりの質問に、この短い実験で答えること。以上がLattePandaをテスト機器に使う理由です。

 

はじめに

最初に、Cypress社のWebサイトから無料のCysmartソフトウェアをダウンロードする必要があります。

サイトの登録を行い、CypressのダウンロードマネージャのAkamai NetSession Interfaceをセットアップする必要があります。

図 3

このソフトウェアを実行するために.NET Framework 3.5が有効にされていることを確認します。

  1. キーボードの[Windowsキー] + [R]を押して、[ファイル名を指定して実行]を表示します。
  2. [名前]に「appwiz.cpl」を入力して、[ENTER]を押します。
  3. [プログラムと機能]ウィンドウが開くので、左上にある[Windows機能の有効化または無効化]をクリックします。
  4. [Windowsの機能]ボックスが開きます。[.NET Framework 3.5 (includes .NET 2.0 and 3.0)]オプションが有効になっていることを確認して、[OK]をクリックします。

Cysmartソフトウェアをインストールして、ドングルをUSBポートに挿入すると、準備は完了です。ただし、(私がそうでしたが)ドングルのファームウェアが古い場合があります。

図 4

 

この場合は、PSoC Programmerソフトウェアをダウンロードしてインストールし、ドングルのファームウェアを最新バージョンに再プログラムします。

PSoC Programmerを実行します。

  1. [File] > [Load]をクリックして(又は[F4]を押して)、hexファイルを読み込みます。
  2. ファイルC:\Program Files\Cypress\CySmart\1.2\dongle\CY5677\BLE_4_2_Dongle_CySmart_256K.hexを選択します。
  3. [File] > [Program]をクリックして(又は[F5]を押して)、ファームウェアをプログラムします。

すべて完了すると、BLEの機能を試すことができます。

Cysmartを使う

最初にソフトウェアを実行するときに、次のようなウィンドウが表示されます。

図5

[Start Scan]ボタンを押して接続先を検出する前に、BLEで存在のアドバタイズを開始するようにSensirion SHT31センサデバイスがセットアップされていることを確認する必要があります。これには、正面のボタンを押し続けて、LCDディスプレイに「rFon」と表示されるまで待ちます。4桁の数字も表示され、複数のデバイスがあるときにどのデバイスを使用しているのかを確認できます。それでは、スキャンを開始しましょう。

 図6 

使用可能なデバイスの一覧が表示されたら、スキャンを止めます。周辺デバイスの他にもいくつのBluetoothデバイス(ほとんどがスマートフォン)が存在するようです。Smart Humigadgetを選択すると、Smart Humigadgetがアドバタイズする内容を見ることができます。

図7

 

右側のアドバタイズデータのタブを見ると、スキャンを実行するデバイスに使用可能な接続を知らせる「フラグ」データバイトがあります。ここでは、0x06がアドバタイズされています。その下の説明を見ると、HumigadgetがBluetooth LEの汎用検出モードで動作しており、Bluetoothコア仕様のBR/EDR (Basic Rate/Enhanced Data Rate)はサポートしていないことが分かります。つまり、デバイスは「旧BluetoothでなくBLE」に対応していることを伝えています。

範囲内のスマートフォンを見てみると、Bluetoothの全仕様がサポートされ(「Simultaneous LE and BR/EDR to Same Device Capable (Controller + Host)」をサポート)、Humigadgetのような低位の周辺デバイスでなく中央デバイスであることが分かります。

図8

 

Humigadgetに戻り、[Scan Response Data]タブを見ると、要求に対してデバイスが通知する内容を見ることができます。先頭バイトは「特性の宣言」で、これは中央デバイスに対して「完全なローカル名」特性のデータ量を知らせるメタデータである0x11 (10進数の17)となっています。

図9

ここで[Connect]ボタンをクリックすると、Humigadgetとの排他接続を構築できます。

Humigadgetのディスプレイには、アドバタイズを行っていないことが表示されています。Humigadgetからプロファイルを取得するため、[Discover All Attributes]ボタンを押します。取得には数分かかりますが、完了するとHumigadgetのプロファイルを見ることができます。

図10

 

このディスプレイには、プロファイルの構成が表示されています。右上に、宣言されたプロファイルの最初のサービスがあります。これは、デバイスへのアクセスを制御するプライマリサービスであり、(続く汎用属性サービスと併せて)BLEデバイスの必須サービスとなります。このサービスには、それぞれの特性が含まれています(各特性には必ず宣言があり、その後に特性値(データ)が続きます)。

それぞれの属性は、増分値のハンドルでアドレス指定され、UUID (Universally Unique Identifier)があることも分かります。これらの最初の属性はすべてBluetooth SIGの定義済み属性で、わずか2バイト(16ビット)の長さです。たとえば、この画像にはUUID 0x2803が何度か表示されています。これは、GATTの特性の宣言に割り当てられたUUIDです。

ここで[Pair]ボタンを押して[Enable All Notifications]を選択すると、中央デバイスが周辺デバイスとペアリングを行います。ページをスクロールすると、更新されたデータを確認できます。

図11

 

もちろん、中央デバイスで受信された生データ(青でハイライト)は、デバッガで16進表示されます。人が読める形式にするには、RS製のアプリで変換してスマートフォンやタブレットで読めるようにする必要があります。

カスタム特性を使用しているので、サービスデータのUUIDは128ビットになっています。それぞれ、16ビットのサービスUUIDとベースUUIDで構成されています。ここでは、ベースUUIDは0000-xxxx-B38D-4985-720E-0F99-3A68-EE41で、使用するサービスUUIDはそれぞれ0x1235と0x2235です。

まとめ

この他にも多くの機能を見ることができます。そして、少し先に進めば、BLE対応の開発キットを入手して、自分でBLEアプリケーションを作成することができます。このBLEの短い紹介で新たな素晴らしい世界に関心を持っていただければ幸いです。革新的なワイヤレス環境を体験する障壁は、必要とされる技術とコストの面で大きく下がってきています。試してみない手はないでしょう。

Mark completed his Electronic Engineering degree in 1991 and worked in real-time digital signal processing applications engineering for a number of years, before moving into technical marketing.