わふうの人が書いてます。

iOSアプリケーション開発、BLEのファームウェアとハードウェア試作のフリーランスエンジニア。

BLEの物理層

Bluetooth Low Energy(以下、BLE)の物理層の話をします。物理層とは、無線通信であればどんな電波を出して、相互に情報をやり取りするのかを決める層です。

BLEのハードウェアを使うiOSアプリケーションを開発するから、物理的なことは知らなくてもいいのではと思われるかもしれません。
しかしBLEは無線通信を使うために、例えば:

  • WiFiが周囲にあっても通信ができるのか
  • iOSデバイスと同時に何台までBLEデバイスは接続できるのか
  • 展示会場でデモンストレーションをするときに周囲に多数のBLEデバイスがある場合でも、接続するのか

という、この状況でも動くのかという、振る舞いの質問を利用者からされます。その質問に答えるには、物理層の基本知識は必要です。

自分が開発する部分がアプリケーションだけであっても、
ハードウェアと連携するアプリケーションは、
利用者からみれば、
そのハードウェアとアプリケーション、2つをあわせて1つの製品になります。

確実に動かすための知識として、物理層を理解してください。

まとめ

電波の混信/干渉

BLEは2.4GHzのISM帯を使います。
この無線帯域はWiFiや電子レンジなど多くの機器が利用しています。
BLEは、周波数帯域を40個のチャンネルに分割して、干渉や混信するチャンネルを避ける適応周波数ホッピングという仕組みを使います。

同時何台まで接続できるか

規格では、制約はありません。実装依存です。
60台くらいは大丈夫っぽい?

接続距離は

規格は送信電力の最小と最大を規定しています。
それぞれの場合の通信距離は、見通しで、最大のとき50m程度、最小のとき2.5m程度、です。

仕様はどこにある

BLEの規格は、Bluetooth SIGから公開されています。
https://www.bluetooth.org/Technical/Specifications/adopted.htm
のCore Version 4.0 Vol.6 がBLEの物理層からの規格を述べています。

2.4GHzISM帯を使います

BLEは2400MHzから2483.5MHzまでを使います。クラシックBTと同じ周波数範囲を使います。
BLEは、この周波数帯を2MHz幅 40個のチャンネルに分割して利用します。チャンネルごとの中間周波数fcは:

fc = 2402 + 2*k MHz, K=0,1 … 39

となります。例えばfcが2402MHzのチャンネルは、2401MHzから2403MHzまでの周波数を使います。

チャンネルは、周波数帯域を有効に使うための工夫です。例えば、
たくさんのBLEデバイスがあっても、それぞれが違うチャンネルを通信に使えば混信しません。

BLEは、40のチャンネルのうち、3つをアドバタイズメント・チャンネルに、のこる37つをデータ・チャンネルに割り当てます。

アドバタイズメント・チャンネルは、BLEデバイスの発見と接続に使うチャンネルです。
BLEデバイスは、デバイスを発見するためのアドバタイズメント・パケットを、3つのアドバタイズメント・チャネルそれぞれで送信しています。
iOSデバイス(セントラル)は、デバイスを発見するとき(スキャンするとき)、この3つのアドバタイズメントを受信して、デバイスを発見します。
BLEデバイスを発見すれば、データ通信に必要な接続処理をおこない、データ通信は、37つのデータ・チャネルを次々に切り替えながら、通信を続けます。

データ・チャンネルは、文字通り、データ通信につかうチャンネルです。
BLEは、適応周波数ホッピング方式をとっています。これは一定時間ごとにデータ通信につかうチャンネルを、ランダムな計算式で、
切り替えていく方式です。2.4GHz帯は、BLEだけではなくWiFiや電子レンジなど、様々な電波が飛び交っています。上図のように、もしもあるデータ・チャンネルが運悪くWiFiとぶつかり通信ができなくても、次の通信の機会でそのWiFiと重なっていないデータ・チャンネルに切り替われば、データ通信が継続出来ます。

BLEの適応周波数ホッピングの“適応”は、どのデータ・チャネルを使うかを、指定できる機能を指しています。例えば、WiFi チャネル1が使われているとわかっているならば、そこと重なるチャンネルは、そもそも使わないようにできれば、通信ができない状態を避けられます。

デバイスが発見できることは、とても重要です。
アドバタイズメント・チャネルは、上図の、37, 38, および39チャネルです。
2.4GMHzのWiFiの1, 6, 11チャネルと重ならならないチャンネルから、周波数帯域の下端/上端/真ん中の、なるべく周波数が離れたチャンネルを、
アドバタイズメント・チャンネルに割り当てています。

到達距離は見通し50mくらいです

BLEの送信電力は、最小 0.01mW (-20dBm) ~ 最大 10mW (+10dBm)です。一般のBLEの半導体の受信感度(0.1% ビットエラー)は-90dBmです。

伝送ロスは:

pass loss = 40 + 25 log (d)

ここで d は伝送距離(m)です。

これから、通信距離は見通しで最大50m程度です。

アドバンス: 変調方式は低消費電力で低コストの工夫があります

BLEの変調方式は、低消費電力かつ低コストで製造できるよう工夫されています。

クラシックBTは:

  • GFSK
    • BT=0.5
  • 変調指数 0.28 ~ 0.35
  • シンボルタイミング+- 20ppm

BLEは:

  • GFSK
    • BT=0.5
  • 変調指数 0.45 ~ 0.55
  • シンボルタイミング+- 50ppm

です。

変調指数が0.5の周波数変調を、ミニマムシフトキーイング(MSK: Minimum Shift Keying)といいます。BLEは、シンボル・レート1Mbps、1シンボル1ビットです。
ですから、ベースの変調周波数は、500kHzです。これから周波数遷移幅は250kHzになります。

この条件の時、1シンボルの期間で、搬送波に比べて変調波の位相が+-π/2ずれます。周波数変調ですが、連続に位相が遷移するので、I/Q復調器が使えます。

またシンボルタイミングは、クラシックBTの+-20ppmに比べ+-50ppmと緩くなっています。これは1パケットの最大ビット長を短くするなどで、得られています。
これらは、クラシックBTほど安定度が高い回路また精度がよい水晶でなくとも実現できる、低コスト化につながります。