「そもそもBLEって何?」Bluetoothの技術概要

開発部の上條です。
今回は「そもそもBLEって何?」というテーマのもと、BLEについて学んで得た情報をまとめていきます。

BLEとは?

BLEについてお話しする前に、BLEのベースであるBluetoothについて簡単にご説明しましょう。
Bluetoothは近くの物同士を無線で繋げるための通信技術で、1999年に最初の規格であるBluetooth1.0が発表されました。それ以降、度々規格の更新が行われており、本記事投稿時点での最新バージョンはBluetooth5.0となっています。日本では2003年ごろから普及されていき、現在ではマウスやキーボードなどのパソコン周辺機器、ワイヤレスイヤホンなど私たちの身近なところで広く活用されています。
BLEはそんなBluetoothの規格の一部で、2009年に発表されたBluetooth4.0で追加されました。正式にはBluetooth Low Energy と言い、その名の通り低電力消費・低コスト化に特化した規格です。しかし、それまでのBluetooth規格(クラシックBluetooth)との変更点が多く、互換性はありません。

BLEの特徴

BLEの最大の特徴は消費電力の低さです。BLEでは接続確立やデータ通信など、大きな電力を必要とする動作にかかる時間を極力カットしています。その結果、ボタン電池1個で約1年間の稼動が可能なほど、従来よりも大幅に消費電力を削減することが出来ているのです。また、ボタン電池で長時間の稼動が可能なため、対応デバイスを小型化しやすいというメリットもあります。
ただし、省電力性を実現した一方で通信速度は低くなっているため、画像データや動画データなど、大規模データの通信には不向きです。ちなみに、規格上の最大通信速度はリリース当初のBluetooth4.0で1Mbps、最新バージョンのBluetooth5.0で2Mbpsとされていますが、省電力性との兼ね合いなどの要因からおよそ10kbpsで運用されているのが実情です。
また電波到達距離も5メートル程度までの非常に短い距離に設定して運用されることが多いです。一般的な規格としてはBluetooth4.0で数十メートル、Bluetooth5.0において通信速度を125kbpsに設定した場合で最大400メートルまで電波を到達させることが出来ます。

【Bluetoothの通信範囲】
Bluetoothの通信範囲はClassという規格によって定められています。
Classは1〜3の3種類あり、以下のように分類されます。
・Class1:100mW(約100メートル)
・Class2:2.5mW(約10メートル)
・Class3:1mW(約1メートル)
最も多くの製品に使われているのはClass2です。

BLEの仕様定義

BLEの仕様定義には大きくプロトコルとプロファイルの2種類が存在します。プロトコルは「全てのBLEデバイス」が利用する定義、プロファイルは「特定のBLEデバイス」で利用されるデータの送受信定義やユースケースが含まれます。

プロトコル

プロトコルの定義には、デバイス間のペアリング実施やデータ送受信の方法、通信周波数定義・制御などのハードウェア定義など、あらゆるBLEデバイスが利用する定義が含まれています。プロトコルは大きく「コントローラ」「ホスト」「アプリケーション」の3層で構成されています。
コントローラは実際にやり取りを行う物理層(PHY)とそれを制御するリンク層(Link Layer / LL)で構成されています。コントローラはホストコントローラインターフェース(HCI)によってホストと命令・イベントをやり取りします。
ホストは通信の多重化やBluetoothの標準的な機能を実装します。セキュリティー・マネージャー(Security Manager / SM)・論理リンク制御及びアダプテーションプロトコル(L2CAP)・属性プロトコル(Attribute Protocol / ATT)・汎用属性プロファイル(Generic Attribute Profile / GATT)・汎用アクセスプロファイル(Generic Access Profile / GAP)などから構成されます。
アプリケーションは開発者が個別に実装・定義する部分です。アプリケーションは各種APIを用いてホストと命令・イベントのやり取りを行います。

図1. BLEのプロトコル構成

プロファイル

先述の通りプロファイルは特定デバイスに関する仕様書なので、基本的にはデバイスによって定義が異なります。しかし、GAPとGATTの2つはプロトコルに含まれる特殊なプロファイルで、他のプロファイルとは別に定義されています。
GAPは通信における役割(セントラルorペリフェラル、詳細は後述)および接続確立までの手順に関する仕様を定義したプロファイルです。GAPはBLEにおける最上位の定義であり、全てのBLE機器はこのGAPプロファイルに従って実装されています。
それに対して、GATTはデータの送受信やデータの構造について定義したプロファイルで全てのデータ定義の基本となっています。データ層の最上位定義なので、全てのBLEデバイスはGATTで定義されている仕様に従ってデータのやり取りが行われなければなりません。
その他のプロファイルについては、デバイス毎の振る舞いやデータ構成などを定めたものとなっています。特定の機能を用いて通信を行う際は、そのデバイス同士が同じプロファイルに対応していなければなりません。また、あらかじめ策定されているプロファイル以外にも、メーカーが独自にプロファイルを策定することが可能です。
例えば、マウスやキーボードの無線接続にはHOGP(HID over GATT Profile)というプロファイルが利用されます。また、アラームやバイブレーションなどを鳴らすことで、デバイスの位置を特定するような場合に用いられるプロファイルにFMP(Find Me Profile)というものがあります。

チャンネル

BLE通信では2.4GHz帯の電波が利用されています。しかし、この帯域の電波はWi-Fi通信や電子レンジを含む多くの機器にも利用されています。そのため、これをそのまま利用してしまうと電波の干渉や混信を起こしてしまい、通信能力の低下につながります。
そこでBluetoothでは周波数帯全体を使うのではなく、周波数帯を何本かのチャンネルに分けてそれを切り替えながら通信を行います。これを適応型周波数ホッピング (Adaptive Frequency Hopping / AFH)と呼びます。
BLEでは周波数帯を2MHz幅でch.0〜ch.39の計40チャンネルに分けて利用しています。そのうち、ch.37〜ch.39の3つのチャンネルはBLEデバイスの発見・接続に利用される特殊なチャンネルで、アドバタイズメントチャンネル(アドバタイジングチャンネル)と呼ばれます。残りの37個のチャンネルはデータチャンネルと言い、実際にデータのやり取りを行う際に利用されるチャンネルです。

図2. BLEのチャンネル構成

BLEの通信方法

セントラルとペリフェラル

BLE通信ではセントラル(Central)とペリフェラル(Peripheral)の2種類の役割が存在し、この2者の間でやり取りがなされます。セントラルはマスタとも呼ばれ、通信の制御を行う役割を持ちます。BLEではセントラルがペリフェラルに対して要求を出すことでデータ通信が行われ、一般的にはPCやスマートフォンがこの役割です。
一方のペリフェラルはスレーブとも呼ばれ、セントラルからの要求に応える形で通信を行います。そのため通信の制御機能は持ちません。弊社のBeacon製品であるBLEAD(ブリード)などのBLEデバイスが、この役割になることが多いです。
ペリフェラルはサービス(Service)とキャラクタリスティック(Characteristic)で定義されています。サービスは機能単位を表すもので、ペリフェラル内に必ず存在します。そのサービスの中に存在しているのがキャラクタリスティックで、その中には実際にやりとりするデータが含まれています。
また、これらのデータにはUUIDと呼ばれる識別子が付与されており、このUUIDを指定する事でセントラルはペリフェラル内の情報にアクセスします。

BLE通信の流れ

BLE通信は2段階で行われます。ここでは例として、専用アプリ(BLEAD-MC-Light)を用いて弊社のBeacon製品のBLEADの設定変更(UUID・Major・Minorの設定)を行う場面を想定してご説明します。なお、このシチュエーションにおいてセントラルに該当するのがスマートフォン、ペリフェラルの役割となるのがBeaconです。
第1段階は、スマートフォンにBeaconを認識させる段階です。BLEADについているスイッチを押すと、BLEADはメンテナンスモードに切り替わりフォーマットがiBeacon用(通常モード)からBLEAD用(メンテナンスモード)に切り替わります。
その後、Beaconはスマートフォンに自身を認識させるために単方向通信(ブロードキャスト型通信)によって自分自身に関する情報を定期的に発信し続けます。この動作のことをアドバタイズと言い、アドバタイズメントチャンネルを通じて行われます。
一方、スマートフォン側は発信されてきたデータをスキャンすることで、アプリを通じて自身の周辺に存在するBeaconを認識し、通信可能なデバイスを検索します。

図3. アドバタイズのイメージ

スマートフォン側が接続可能なBeaconを発見し、接続対象を選択すると第2段階に移行します。アプリ上で設定したいBeaconを選択すると、スマートフォンから対象のBeaconに対して接続開始の要求が出されます。要求を受けたBeaconはアドバタイズを終了し、スマートフォンとの接続を確立します。接続が確立した後はデータチャンネルを通じて実際にデータのやり取り(設定)が行われます。
その後、全てのやり取りが完了するとスマートフォン側からBeaconとの接続を切断します。設定が完了しスマートフォンとの接続を終えたBeaconは、再度iBeacon用のフォーマットに切り替わりアドバタイズを開始します。ちなみにBLEADにおいては、第2段階のデータ通信はメンテナンスモードでのみ実行可能で、通常モード時はアドバタイズのみ行います。

図4. データ通信の流れ

このようにBLE通信は以下の流れで行われます。

  1. ペリフェラルからセントラルへアドバタイズ
  2. アドバタイズで送られたデータからセントラルがペリフェラルをスキャン
  3. セントラルがペリフェラルを選択し接続要求
  4. 要求を受けたペリフェラルはアドバタイズ終了、セントラルとの接続確立
  5. データ通信を行い、やり取り終了したらセントラルが接続切断
  6. ペリフェラルが再度アドバタイズを実施
BLEの活用

BLEの活用方法についてですが、Beaconとして利用されることが多いようです。また、位置情報や加速度センサーといった別の情報と組み合わせることで活用の幅を広げています。Beaconの詳細については、また改めてお話ししたいと思います。
以上、BLEの基本についてまとめました。ご質問・ご指摘等ありましたら、弊社までお気軽にお問い合わせください。

※2018年10月11日追記
Beaconを使ったアプリ開発方法を連載しています。こちらも合わせてご参照下さい!
Beaconアプリ開発記【その1 開発準備編】
Beaconアプリ開発記【その2 領域監視編】
Beaconアプリ開発記【その3 情報取得編】

Beaconアプリ開発記【その4 画面表示編】

※2021年6月4日追記
Windows で BLE 通信をするアプリを開発する方法はこちら
Windows でも BLE を扱うことは可能か?〜できるかどうかやってみた〜

Web Bluetooth の基礎講座(ハンズオン解説)はこちら
Web Bluetooth を使ってみよう!その1

関連記事

  1. Windows でも BLE を扱うことは可能か?〜できるかどうかやっ…

  2. Elastic Stack を使った予兆検知結果の可視化 〜概要と環境…

  3. WPF Prism 8.0 の新機能「複数のダイアログウィンドウのサポ…

  4. Azure Functions に挑戦!(Node.js から SQL…

  5. Beaconアプリ開発記【その2 領域監視編】

  6. Azure に挑戦!(IoT Hub と Data Explorer …