iPhone (5s) のアプリを使用して、半径 50 ~ 100 m 内で多数のビーコン (~500) を一度に追跡したいと考えています。仕様とオンラインを調べましたが、BLE を使用して一度に追跡できるビーコンの数に制限があるかどうかはわかりません。追跡できるビーコンの数に制限があるかどうか、または iPhone 5s がその数のビーコンを追跡できるかどうかを知っている人はいますか?
5 に答える
適切なフレームワークを設定する Tim Tisdall の回答に追加します。iPhone 5s や iOS の特定の機能について話すことはできませんが、受信したすべての ADV_IND パケット (つまりビーコン送信) を返さない理由がわかりません。
問題は、500 個のビーコンが衝突することなく ADV_IND パケットを送信できるかどうかです。
ADV_IND パケットの送信には約 0.128ms かかります。アドバタイジング送信間の時間は 20ms から 10240ms (0.625ms 間隔) の間で設定できるため、衝突の確率はビーコンの設定によって異なります。
ポアソン分布に基づくと、任意の ADV_IND パケットの衝突確率は 1-exp(-2*N*(0.128/AI)) です。ここで、N は範囲内のビーコンの数、AI はビーコンのミリ秒単位の時間です。アドバタイズ間隔 (すべてのビーコンが同じように構成されていると仮定)、0.128 は ADV_IND パケットの送信にかかる時間 (ミリ秒) です。(説明が必要な場合は、http://www3.cs.stonybrook.edu/~jgao/CSE590-fall09/aloha-analysis.pdfを参照してください。)
最大アドバタイズ間隔が約 10 秒の 500 ビーコンの場合、81 パケットごとに約 1 回 (または 500 のうち約 6 回) 衝突が発生します。2、3 間隔 (つまり 30 秒) 待機する場合は、500 個の ADV_IND パケットすべてを受信できる可能性が高くなります。
一方、アドバタイズ間隔が 500 ミリ秒などのように短い場合、約 23% (または 500 のうち 113) の確率で衝突が発生します。すべてのビーコンからのブロードキャストが表示される可能性を高めるには、さらに数回待つ必要があります。
別の見方をすれば、ビーコンが多いほど、すべてのパケットを確実に受信するまでの待ち時間が長くなるということです。(ビーコンの数とアドバタイズ間隔から一定の確率でパケットを受信するための遅延を計算する計算は、今日の私には多すぎます。)
1 つの注意点: ADV_IND パケットを受信するだけではなく、これらのビーコンに接続する場合は、アドバタイジング チャネルでさらに 2 つのパケットを交換する必要があり、アドバタイジング チャネルでの衝突の可能性が少し高くなります。
私があなたの質問を正しく読んでいれば、500 個の iBeacon をすべて 100 メートル以内に配置したいと考えています。つまり、それらの送信がオーバーラップします。iOS7 や携帯電話の制限に遭遇するずっと前に、おそらく無線輻輳の問題に遭遇するでしょう。
私は 20 個の iBeacon を近接して問題なくテストしましたが、500 個の iBeacon は極端な密度です。 ハードウェアの問題に関するこの議論は、問題が発生する可能性があることを示唆しています。
少なくとも、500 個の iBEacon の送信が衝突すると、iOS デバイスが各 iBeacon を認識するのに時間がかかります。通常、iOS7 は各 iOS デバイスに対して 1 秒に 1 回範囲の更新を提供しますが、更新の頻度がはるかに低いことに気付く場合があります。頻度の低い更新が許容されるかどうかは、アプリケーションによって異なります。
遅延が許容できる場合でも、これが機能することを期待する前に、これを絶対にテストします。残念ながら、それは多くの iBeacon を手に入れることを意味します。
同意しません。確かに、ble ビーコンは広告データのみを送信しますが、そのようなデータの送信は約 3 ミリ秒続きます (3 つの広告チャネルを考慮すると)。500 個のビーコンがあり、衝突を考慮しない場合、スキャナはそれらすべてを確認するのに 1.5 秒かかります。ただし、すべてのビーコンが同じ方法 (同じアドバタイズ間隔) で構成されている場合、衝突が発生し、未検出のビーコンが発生することは避けられません。ビーコン同士でアドバタイジング間隔が異なっていても衝突が発生します。衝突の可能性を回避するには、より長いアドバタイズ間隔を使用する必要がありますが、これにより発見の待ち時間が長くなります。この推論は非常に生々しく、多くの効果を考慮していませんが、大きさの計算にすぎません。
ところで、質問は簡単ではありません。役割を果たしている多くのパラメーターがあり、既知のものもあれば未知のものもあります。しかし、私は約 1 年間 ble を使用しています。私にとって、500 は膨大な数であり、衝突のために大部分のノードが表示されない可能性があります。
この質問のために、私は iBeacon についていくつかの調査を行っていました (それが何であるかはわかりませんでした)。
「ビーコン」側では、一般的なアドバタイジング パケットが送信されるだけのようです。これは、接続できることをデバイスがアドバタイズする方法に似ています。ただし、実際に iBeacon に接続するわけではなく、広告パケットを読み取るだけです。デバイスが受信できるアドバタイジング パケットの数に、組み込みの制限はありません。
したがって、500 個の iBeacon が問題なく実行されたとしても、私は驚かないでしょう。アドバタイジング パケットは小さく、間隔をあけて配置されています (時間的には、X ミリ秒ごとに繰り返されます)。電話から iBeacon への通信は行われません。電話は、受信したパケットを受信しているだけです。1 つのパケットに干渉がある場合、次のパケットを取得できる可能性があります。