Bluetooth Low Energyの利用周波数帯(★)

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

Bluetooth Low Energyの利用周波数帯は、2.4GHzです。
チャネルは下記のように、配置されます。
ble_ch

自分の持っているサービス情報などを周辺に送信するためのアドバータイズチャネルは、3チャネルあります。図のように、とびとびになっているのは、無線LANの帯域を避けて配置したためです。
機器どうしが接続後にデータを送受信するデータチャネルは、37チャネルあります。
それらのチャネル間をホッピングして、データ通信をします。あるチャネルでエラーが起きたとしても、違うチャネルで同じデータを送ることで、ノイズに強い通信ができます。
データチャネルのホッピングは、下記の式で決まります。f(n)が現在やりとりしているチャネル番号で、f(n+1)が次にやりとりするチャネル番号です。hopIncrementは、接続時に決める5〜16のランダムな数字です。

f(n+1) = (f(n) + hopIncrement) mod 37

なぜか都合の良いことに、37は素数です。そのため、上記のような簡単な式で、すべてのチャネルをまんべんなくカバーできます。どこかのチャネルが混雑するということはなくなります。

ここで、よくある一つの疑問が浮かびます。

上記のような簡単な式では、ホッピングのパターンが12通りしかないので、2つのネットワークで、一度、パケットが衝突したら永遠に衝突しつづけ、通信が永遠にできなくなるのではないか?という疑問です。

しかし、下記の観点からそのようなことは滅多に起こりません。

  • ホッピングを開始する時期(接続した時期)が2つのネットワークで異なる。
  • ホッピングする間隔(Connection Interval)が2つのネットワークで異なる。
  • パケットの占有時間に対して、ホッピングする間隔(Connection Interval)が十分に長い。

また、他の無線通信との干渉を避けるために、AFH(Adaptive Frequency Hopping)という通信するチャネルを動的に変更する機能が用意されていますが、実際に使ってみるとほとんど効果がないため、今では誰も使っていません。