Bluetoothに関する開発を行うことがあったため、Bluetoothについて簡単にまとめてみた。
目次
Bluetooth
Bluetoothは、2.4GHz帯の周波数を利用した近距離無線通信規格のこと。2.4GHz帯の周波数はISMバンドであり、医療、産業、科学分野が汎用的に利用できるように割り当てられた周波数帯であるため、Bluetooth以外にも利用されており、一般家庭では電子レンジや無線LAN、RFIDなどで利用されている。
ClassicとBLE
Bluetoothは、Bluetooth Classic(レガシーBluetooth)とBluetooth Low Energy(BLE)に大別される。Bluetooth Classicは、オーディオ関連の分野で利用されており、ワイヤレス通話、ワイヤレスヘッドホン、ワイヤレススピーカーなどで利用されている。Classicとの名がついている通り、初期のBluetooth1.0の頃からある、通常のBluetooth。一方で、BLEは低消費電力無線技術が導入されたBluetoothで、2010年にリリースされたBluetooth4.0から追加された。BLEは、省電力に特化しており、使い方によっては電池で何年も持つこともある。従って、スマートウェアラブル、キーボード、マウスなどの多くがBLEを利用している。Bluetooth Classicは、2.4GHzを帯域幅1MHz(チャンネル間隔)で分割し80チャンネルで利用されており、BLEでは、2.4GHzを帯域幅2MHzで分割し、40チャンネルで利用されている。
セントラルとペリフェラル
BLE通信において、通信するデバイスはセントラルとペリフェラルに分かれる。これは所謂、親機と子機との関係性であり、セントラルが親機、ペリフェラルが子機にあたる。基本的に、スマホやパソコンがセントラルとなり、スマートウェアラブルやキーボードがペリフェラルとなる。セントラルの機器によっては複数台のペリフェラルの機器と接続できるが、接続台数はセントラルの仕様による。
アドバタイズ
ペリフェラル機器が、自分の存在を知らせるために発信するブロードキャスト通信の無線信号。100[ms]毎か1[s]毎に発信することが多いよう。ブロードキャストなので、不特定多数のデバイスに一方通行の通信を試みる。このアドバタイズ信号には、ペリフェラル機器の名前、属性データなどを含めて発信する。一方で、セントラル機器は、スキャンを行い、アドバタイズ信号を受信し、周囲に存在するペリフェラル機器を確認する。アドバタイズはブロードキャスト通信なので、ペリフェラル機器が複数あった場合は、セントラル機器はスキャンすると自分が接続したいペリフェラル機器以外のペリフェラル機器も拾ってきてしまう。また、ペリフェラル機器は、アドバタイズ信号を出した後、自分にセントラル機器から接続要求が来ていないか確認する。この確認している期間に、セントラル機器から接続要求があれば通信を開始する。
RSSI
RSSIは、セントラル機器がアドバタイズ信号を受信した際の受信電波強度のこと。このRSSIの値と距離とは相関があるため、おおよその距離感がわかる。よって、RSSIが強い場合はペリフェラル機器が近くに存在し、RSSIが遠い場合は遠くに存在することがわかる。
GATT通信
ペリフェラル機器がアドバタイズ信号を発信し、それに対してセントラル機器が接続要求を送り、ペリフェラル機器が接続要求を確認している期間中に、その接続要求を受信するとセントラル機器と接続し、通信を開始する。この1対1の通信のことをGATTO(Generic Attribute Profile l )通信という。呼び方はガット通信でいいと思う。
接続要求には、ユニークなBDアドレスを利用する。BDアドレスは、Bluetoothデバイスの識別子で、セントラル機器はスキャンし、アドバタイズ信号の受信とともに各ペリフェラル機器のBDアドレスを取得し、そのBDアドレスを指定することで、特定のペリフェラル機器に接続要求を行う。
サービスとキャラクタリスティック
キャラクタリスティックは、GATT通信でセントラル機器がペリフェラル機器が送るデータ構造であり、1つ以上のキャラクタリスティックをまとめて機能単位にしたものをサービスという。例えば、歩数計の機能を持ったサービスがあったとすると、歩数を読み込むためのキャラクタリスティック、歩数の時間を読み込むためのキャラクタリスティックがあり、セントラル機器はそのキャラクタリスティックから歩数や歩数時間を読み込んで表示したりする。キャラクタリスティックには、16バイトのユニークな値であるUUIDが付けられており、セントラル機器はこのUUIDを指定して、キャラクタリスティックのデータにアクセスする。また、ペリフェラル機器が持つサービスは、1つでなく複数あってもいい。GATT通信のプロファイルについては、BluetoothSIG(標準化団体)が公開しており、そのGATTプロファイルを利用することで、メーカーの違う機器同士でも通信できる。
チャンネル
BLEでは、2.4GHzを帯域幅2MHzで分割し、40チャンネル(0ch~39ch)で利用されているが、GATT通信する際に利用するチャンネルは0ch~36chのチャンネルで、このチャンネルをデータチャンネルという。残りの37ch、38ch、39chはというとアドバタイズのときに利用され、このチャンネルをアドバタイズチャンネルという。
電波の衝突
2.4GHz帯は、ISMバンドであるため様々な機器が利用している。また、Bluetooth機器も増えてきており、2.4GHz帯の電波が混雑しやすい環境にある。電波が干渉し合うと、送信データが破損し、上手く届かなかったり、再送が増えて通信速度が低下したり、通信距離が短くなったりする。そのため、BLEでは、電波の衝突を避けるための仕組みがいくつかある。
アドバタイズの衝突回避
アドバタイズでは、3チャンネル(37ch、38ch、39ch)を利用するわけだが、このチャンネルの周波数は、Wi-Fiの電波を極力避けるような周波数(37ch : 2402MHz、38ch : 2426MHz、39ch ; 2480)に配置されている。
周波数ホッピングにによる衝突回避
GATT通信では、37チャンネル(0ch~36ch)でデータ通信を行うが、他の機器が利用している周波数との衝突を避けるために、高速に周波数を切替えて通信を行い、仮に他の機器が利用している周波数と衝突しても瞬間的に衝突するだけ、連続的に衝突しないようになっている。これを周波数ホッピングといい、Bluetooth Classicでも利用されている。
また、通常の周波数ホッピングを機能的にしたAFH(Adaptive Frequency Hopping : 適応型周波数ホッピング)では、他の機器が占有している可能性のある周波数を一時的に避けて周波数ホッピングを行い、再送が減り、より効率的に通信できる。
通信速度
Bluetoothにおける通信速度は、通信する相手や電波環境、通信距離によって変わる。同じ周波数の電波が混雑していれば、もちろん電波がぶつかり上手く通信できなくなる。Bluetoothは省電力で近距離の通信を目的としているため、遠距離通信が目的で、電力が大きい機器の無線通信と衝突した場合、単純にパワー負けしてしまう。これは、声の小さい人と声の大きい人が同時に話すと、声の小さい人の声は声の大きい人の声に埋もれてしまい聞こえない、声の大きい人の声の方がより遠くまで聞こえる、のと同じである。また、声の大きな人の声でも、遠くなればなるほど、声の内容が聞き取りにくくなる。これは、距離が離れれば離れるほど通信速度が低下するのと同じである。聞く側の通信相手も、機器の性能の問題などで、聞こえやすかったり、聞こえにくかったりする。従って、様々な変数があり、一概に通信速度を決めることはできない。
通信距離
Power Class
Bluetoothは、近距離無線通信であるものの、近年では200m~300mの範囲でも通信できるレベルにある。通信距離については、最大送信出力によっても変わるが、最大送信出力はBluetoothの仕様で”Power Class”という分類で分けられている。
Power Class | 送信出力 |
Class1 | 100mW(+20dBm) >= 送信出力 > 2.5mW(+4dBm) |
Class2 | 2.5mW(+4dBm) >= 送信出力 > 1mW(0dBm) |
Class3 | 1mW(0dBm) >= 送信出力 |
Power Class | 送信出力 |
Class1 | 100mW(+20dBm) >= 送信出力 > 10mW(+10dBm) |
Class1.5 | 10mW(+10dBm) >= 送信出力 > 2.5mW(+4dBm) |
Class2 | 2.5mW(+4dBm) >= 送信出力 > 1mW(0dBm) |
Class3 | 1mW(0dBm) >= 送信出力 >= 0.01mW(-20dBm) |
もちろん、送信出力を上げれば、消費電力も増えるため、通信距離と消費電力はトレードオフの関係となる。
PHY
Bluetoothの構造で、物理層にあたるPHY(フィジカルレイヤー : ファイともいう)層。ここでも通信距離を変えられる。1M PHYはBluetooth4.0、2M PHYとLE Coded PHYはBluetooth5.0から搭載された。
1M PHY | 2M PHY | LE Coded PHY S=2 | LE Coded PHY S=8 |
標準搭載 | オプション | オプション | オプション |
1Mbps(データレート) | 2Mbps | 500kbps | 125kbps |
1倍(通信距離の基準) | 0.8倍 | 2倍 | 4倍 |
通信距離は、1M PHYを通信距離の基準とした場合の倍率となる。このことから通信速度と通信距離の倍率はトレードオフの関係にある。
BLEの消費電力
BLEはBluetooth Low Energyの略であるように、低消費電力が売りである。よって、小型化できたり、条件によっては太陽電池で動作させることができる。
試しに、電池駆動の場合の寿命時間を計算してみる。単四電池の公称容量は大体800mAhとなっている。800mAhは、1mAの電流を消費し続けた場合に、800時間持つということなので、0.1mAhだと8000時間(300日以上)持つことになる。ただし、消費する電流は一定でないため、実際の運用によって変わってくる。
BLEでいえば、アドバタイズを出す状態やGATT通信を行う状態、そのどちらもせずに待機している状態によって、消費する電流が変わってくる。これらの消費電流を平均し(マイコンなどが利用する電流も合算して考える)、求めた平均電流を公称容量で割ってやれば、ざっくりとした電池寿命が計算できる。
\(\displaystyle 平均電流 = \frac{(動作電流 \times 動作時間) + (待機電流 \times 待機時間)}{24} \)
プロファイル
プロファイルは、デバイス同士が通信する上で必要な情報をまとめた仕様のこと。デバイスの動作方法や製造者、シリアル番号、通信するデータの内容などの情報がまとめられている。要するに、デバイス同士が通信をする上での決まり事。プロファイルは1つだけでなく、複数持つこともできる。代表的なプロファイルは下記の通り。
A2DP | 音楽を再生するためのプロファイル |
AVRCP | オーディオ関連の制御を行うプロファイル |
HFP | ハンズフリーの制御を行うプロファイル |
HSP | ヘッドセット用のプロファイル |
HID | マウス・キーボード用のプロファイル |
HOGP | マウス・キーボード用のプロファイル |
IPSP | Bluetoothテザリング用のプロファイル |
PXP | 近接判定のためのプロファイル |
HRP | 心拍測定用プロファイル |
コーデック
コーデックは、符号化方式を利用してデータをエンコード及びデコードするプログラムのこと。例えば、Bluetoothでは音声コーデックで音を圧縮して通信を行う。音声コーデックは複数あり、種類によって圧縮方式が変わり、音質や遅延に影響を及ぼす。この音声コーデックは、音声再生用のプロファイルA2DPに含まれている。
コーデック | サンプリングレート | ビットレート | 内容 |
SBC | 48kHz/16bit | 328kbps | Bluetoothで必ずサポートしなければならない標準コーデック。 |
LC3 | 48kHz/16bit | 160kbps | 次世代のBluetoothのコーデック。SBCの半分のビットレートで、SBCと同等の音質を実現し、省電力・低遅延を実現。 |
AAC | 48kHz/16bit | 128kbps/256kbps | 主にApple製品で使用されているコーデック。製品化にはライセンスが必要。 |
aptX | 48kHz/16bit | 384kbps | 主にAndroidスマホで利用されている。CDと同等の音質で転送できる。 |
aptX HD | 48kHz/24bit | 576kbps | CDを超える音質で転送が可能。aptXと下位互換性がある。 |
aptX LL | 48kHz/16bit | 352kbps | 高音質で転送することを目的としたコーデック。aptX HDとの違いは、低遅延化されている。 |
aptX Adaptive | 48kHz/24bit | 280kbps/420kbps | 高音質と低遅延化に加え、音の途切れに対し強いコーデック。 |
LDAC | 96kHz/24bit | 330kbps/660kbps/990kbps | ハイレゾ音源のような音源でも転送可能にしたコーデック。 |
ペアリングとボンディング
ペアリングは、通信相手であるペリフェラル機器のデバイス名、Bluetoothアドレスを覚え、互いに共通の暗号化情報を保持し、その暗号を利用しセキュアな通信をすること。また、暗号化するためにペアリングした際に交換した鍵を保持することをボンディングという。Bluetoothでの暗号化にはLE Legacy PairingとLE Secure Connections(LESCペアリング)がある。Bluetooth Classicでは、ペアリングが必須だが、BLEに関してはペアリングしなくても接続できる。ただし、ペアリングをせずに通信するということは平文で通信するため、セキュリティ対策が必要。
ペアリングの流れ
1.セントラルがペアリングを要求
ペリフェラルのキャラクタリスティックに鍵を仕掛けておくことで、セントラルとペリフェラル間でBLE接続された後にセントラルがペアリング要求を送信する。その後、ペリフェラルはペアリング要求に対して応答する。
2.認証処理
認証を行う。ペアリング要求とその応答から認証方法が決定される。
- Just Works : 自動的に接続相手を認証するためセキュリティ強度がないに等しい
- Passkey Entry : パスキーの入力で認証を行う
- Numeric comparison : 毎回ランダムの認証番号を表示し、お互いが同じ認証番号を確認した上で認証を行う
- Out Of Band : NFCなどの通信方法を利用して認証を行う
3.暗号化情報の交換
認証後は、お互いに暗号鍵(LTK : Long Term Key)といったペアリング情報を交換し、以後このペアリング情報を利用して通信を行う。また、再接続時にもお互いがペアリング情報を保持していれば、ペアリング済みのデバイスとして、ペアリング処理を省略して、すぐ通信を開始できる。ただし、どちらか片方がペアリング情報を紛失してしまった場合は、通信できなくなるため、ペアリング情報を削除し、再度ペアリング処理を行う必要がある。
記事を読んでいただきありがとうございました。