2016-09-21 7 views
0

私はいくつかの場所で、広告パケットが距離の範囲内のすべてに送信されることを読んでいます。しかし、他のデバイスがそれらを受信するためにスキャンする必要がありますか、それともそれを受信しますか?BLEデバイスはスキャンしていないときに広告パケットを読み取りますか? (自動接続)

問題: 5または6個のBLEデバイス間にピコネットを確立しようとしています。ある時点で私は奴隷と1人のマスターの間にいくつかの関係を持っています。その後、デバイスの1つが数日の間に取り外されたりシャットダウンされたりすると、電源がオンになるとすぐにネットワークに再接続します。

自動接続機能については読んでいますが、これをtrueに設定すると、手動スキャンよりも実際には周波数が遅いバックグラウンドスキャンがデバイスに作成されます。これは、autoConnectが動作するためには、再びオンになっているデバイスを再度宣伝する必要があると結論づけます。したがって、自動接続が実際にバックグラウンドで低速スキャンを実行している場合は、何らかのスキャンをしない限り、すぐにadvパケットを受信することはできないようです。それは理にかなっていますか?

もしそうなら、その周りには何か方法がありますか?私は、範囲に即座に戻って来ているデバイスを検出することを意味しますか?

答えて

0

「インスタント」はありません。あなたは遅延、タイムアウト、再送信、妨害などの無線プロトコルについて話しています。常に遅延があります。重要なことは、あなたのアプリケーションに受け入れられると考えられるものです。

無線トランシーバは、一度に1つの特定のチャネルで受信、スリープまたは送信しています。送受信は電力消費を意味する。

セントラルがアイドル状態(接続をまったく処理していない状態)の場合、スキャンするだけでスキャンが実行されます。それはフルタイムで行うことができます(スペックがデューティサイクルにする必要があるといっても)。最初にピア周辺機器から送信された広告パケットを実際に受信することが期待できます。

Centralが複数の周辺機器との接続を維持している場合、トランシーバの時間は、維持するすべての接続間で共有されます。バックグラウンドスキャンは優先度が低いとみなされ、残りのトランシーバ時間の一部が使用されます。次に、広告周辺機器は、セントラルがリスニングしていない間にそのADVパケットを送信することができる。ここで

は、統計魔法が来る:

仕様は、二つの宣伝イベントの間隔は、(擬似)ランダムな遅延で拡張する必要がありますと言います。これにより、中央(スキャナ)とペリフェラル(広告主)がある時点でお互いに見えるようになります。このランダムな遅延がなければ、タイミング割り当ては調和的になる可能性がありますが、位相がずれてしまい、互いが決して見えなくなる可能性があります。

中央および周辺機器(advInterval、advDelay、scanWindow、scanInterval)および無線リンクの品質に使用されるパラメータによっては、一定時間後にノードに到達できる確率を計算できます。これは、読者の練習として残されています... :)

最後に、あなた自身が "私の周辺機器が私のセントラルに300ms後に再接続されているかどうかは、95% ?

+0

ありがとうございます。実際、私は瞬時に言うと少し誇張していました。ポイントは、このバックグラウンドスキャン(autoConnect = 1の場合)に1秒程度の間隔があることをどこかに読んだからです。それは私にとっては長すぎますが、300msは大丈夫でしょう。 autoConnectのスキャン頻度を上げることは可能ですか(少し優先させてください)。 –

+0

あなたのデバイスとその実装によって異なります。仕様定義のスキャン期間は「推奨値」です。ファームウェア/スタックによって制限が適用される場合とされない場合があります。参照してください。 – Nipo

+0

私はスキャン時にこの不一致の可能性も考えていました。私は広告主が広告を継続的に宣伝するように設定して、マスターがその時間枠で広告を見ない可能性はあまりありません。しかし、最小の広告間隔は20msと思われる。あなたはこれもデバイス/スタックに依存していると思いますか、おそらく私は20ms以下にはならないでしょうか? –

関連する問題