Bluetooth Low Energyの長距離通信(★)

[BLE(Bluetooth Low Energy)の開発依頼は、フィールドデザインまでお気軽にお問い合わせください。]

Bluetooth Low Energyでは、ver.5.0からLE CODED PHYと呼ばれるデータ伝送速度が125kbpsのモード(このモードは、Long Rangeとも呼ばれます)を採用することで、長距離の通信が可能になりました。

なお、現状(2024/1)、スマートフォン(iOS)ではLE CODED PHYには対応しておりません。また、スマートフォン(Android)では、対応しているのもありますが(isLeCodedPhySupported()でtrueが返る)、動作が不安定なものやCODED PHYのアドバータイズが取れないものなど、いろいろです。SamsungやOPPOなどのスマートフォンは、正常に動作しています。

長距離通信(Long Range)を実現する仕組み
長距離を飛ばす仕組みとしては以下のようになります。

  • 変調方式は1Mbpsのままで実質ビットレートを1/8の125kbps(LE CODED PHY)まで落としたことで、SNRが9.03dB向上します。これは、同じデータを8回送ると当然エラーに強くなることからです。
  • さらにエラー訂正機能をいれたことで約3dBのSNRが向上します。これは、純粋に同じデータを8回送るよりも、エラーが起きた時に復元できる冗長な符号として送ることにより、さらにエラーに強くなるからです。そのようなエラーに強い符号の作り方については、ガロア理論など話が長くなるので、割愛します。しかし、ハードウェアで、この符号化の論理回路を作ると、3つのフリップフロップだけで簡単にできてしまいます。
  • これらにより、SNRが約12dB向上し、4倍に通信距離が伸びるようになります。
長距離通信(Long Range)を実現する動作
Bluetooth Low Energyでは、アドバータイズチャネルと、データチャネルがありますが、Long Rangeを実現するには、両方ともLE CODED PHYを利用し、SNRをあげる必要があります。(なお、実装方法として、アドバータイズは1M PHYを利用し、接続後にデータチャネルでPHYをLE CODED PHY変更することもできますが、それでは遠くからアドバータイズを拾うことができません。)
Bluetooth 4.2までは、37ch,38ch,39chをアドバータイズチャネルとして、Advertising PDUを送っていました。Bluetooth5.0からは、37ch, 38ch, 39chをプライマリーアドバータイズチャネルといい、0ch〜36chまでをセカンダリーアドバータイズチャネルというようになりました。また、Bluetooth 5.0からは、新たに8種類(ADV_EXT_IND, AUX_ADV_IND, AUX_SYNC_IND, AUX_CHAIN_IND, AUX_SCAN_REQ, AUX_SCAN_RSP, AUX_CONNECT_REQ, AUX_CONNECT_RSP)のPDU Typeが増えました。ADV_EXT_INDだけは、プライマリーアドバータイズチャネルにて使用できます。それ以外は、セカンダリーアドバータイズチャネルでの使用です。
LE CODED PHYで、アドバータイズから接続までを行うのは、下記の手順が必要です。

  1. ペリフェラルは、プライマリーアドバータイズチャネル(37,38,39ch)にて、LE CODED PHYのADV_EXT_INDを送ります。ADV_EXT_INDには、アドバータイズのデータ(サービスUUID等の中身)を含めることができません。直後にアドバータイズのデータ(中身)をセカンダリーアドバータイズチャネルにて送信するので、ADV_EXT_INDでは、そのチャネル番号を含めています。
  2. ペリフェラルは、前記のADV_EXT_INDを送った直後に、セカンダリーアドバータイズチャネルにて、LE CODED PHYのAUX_ADV_INDにて、アドバータイズのデータ(中身)をアドバータイズします。
  3. セントラルは、上記のADV_EXT_IND, AUX_ADV_INDを受信し、接続要求であるAUX_CONNECT_REQを送ります。
  4. ペリフェラルは、AUX_CONNECT_REQを受けると、接続応答であるAUX_CONNECT_RSPを送り、両者が接続状態になります。
  5. その後は、セントラルとペリフェラルで、Connection Intervalごとに、通常のデータ通信をLE CODED PHYにて行なっていきます。
長距離通信(Long Range)の実際の距離
LE CODED PHYを利用した実際の距離はどれくらい飛ぶのかといいますと、0dBmの出力で、1.3km以上飛ぶことが確認されています。しかし、それは2.4GHz帯に何もノイズがない状態での調査ですので、普通の事務所や工場の環境で使う場合は、周辺のノイズの方が大きくなり、そこまでは飛びません。免許のいらない帯域(900MHz, 2.4GHz, 5GHz等)での無線通信一般に言えることですが、通信距離は近くにノイズ源があるか、ないかで決まってしまいます。免許のいらない無線通信では、山奥や海上でない限り、スペック上の距離(理論値)はあてになりませんので、注意してください。

ノイズ要因は下記のものがあります。

  • 他のBluetooth端末による漏れノイズ。Bluetoothの仕様では、チャネルが分かれており、他のBluetooth通信とは干渉しないことになっています(厳密にはチャネルホッピングにて、エラーを回避できる仕様)。しかし、無線の信号は、電波をあるチャネルで送信すると、そのチャネル外にも少しだけ漏れてしまいます(物理現象上、絶対に避けられません)。他のBluetooth端末が複数いると、これらのノイズが重なり、弱い電波は受信できず、通信距離を伸ばすことができなくなります。
  • 他の通信方式の電波によるノイズ。例えば、Bluetoothで通信をしていても、近くの無線LAN(Wi-Fi)での電波はそのままノイズになってしまいます。また、電子レンジは2.45GHz帯を利用しますが、ノイズを100mW近く出しますので、大きく影響します(普通に3km先くらいまで影響します)。これらによって、弱い電波は潰れてしまいます。
  • 遠近問題によるノイズ。RTS/CTSと隠れ端末問題にも書かれていることと同じですが、特に長距離を飛ばそうとする場合には、電波の送信する場所ではノイズは検知されないが、電波を受信する場所で、他の無線機器が通信をしていて、欲しい信号が全てノイズに埋もれてしまうということがあります。

とは言いましても、通常のBluetooth Low Energyの1M PHYよりも、距離が飛びますので、弊社でも大きな空間で通信をする場合は、LE CODED PHYを利用しております。