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)が十分に長い。