質問から始めましょう。
BTLE RSSIは、2つのデバイスが互いに近接しているかどうかを示す良い方法ですか?フォブなどの小さなデバイスでのみ機能しますか?
問題:
私は現在、BTLEを使用し、近接性に基づいた接続を可能にするアプリの作成を検討しています。これに関しては、AppleがAdvanced Core Bluetoothの基調講演に表示されるのはデモアプリによく似ています(2つのデバイスがほとんど触れているときに、それらが接続されます)。
私が理解しているように、近接はセントラルがペリフェラルを発見したときのRSSI値に基づいて決定されます。ただし、2台のiPadでこれを試してみると、信号が強すぎるように見えるため、デバイスの近接性との相関関係があまり見られないため、近接性を正確に突き刺すのに一貫性がありません。
私はAppleサンプルコードを試してみましたが、これは、情報を相互に渡すためにデバイスをまったく閉じる必要がないという点で似ています。
周辺機器の広告の信号強度を減らす方法があったら….
助けてくれてありがとう。
マシュー・グリフィンの経験は私のものに匹敵します。ただし、かなりの期間を測定できる場合、これをより適切に調整するために2つのことが役立ちました。
ただし、アンテナの向きとIMUに単純な(カルマン)フィルターをラップして、大まかな実行中のコメントを取得する必要がありました。これは、CPUやバッテリーのライトではありません。
一般に、方向を取得するには、デバイスの向きを変える方が良いことがわかりました。そして、その距離は、「移動」キャリブレーション後、デバイスがあまり回転していない場合にのみ、約30〜600秒までしか信頼できません。そして実際には、一度に4〜5個の「その他」のデバイスが必要です。理想的には、自分が動的に調整された状態を保つために、移動しすぎないようにします。
ただし、その逆は非常に信頼できます。つまり、測定しないタイミングはわかっています。そして最終的な結果として、「キーボードの近く」や「特定のドア/開口部または方向を介して「再配置」/移動などの状況をかなりよく確認できます。同様に、部屋の中をランダムに踊ってフィールドを測定します。向きを大きく変える-静止期間の後で受信アンテナのローブがある程度うまくいったら、うまくいきます。
RSSIが乱暴にランダムにジャンプすることについて、あなたは完全に正しいです。 RSSI値を2秒ごとに取得する必要があります(これより速く、大量のエラーが発生します)。おおよその範囲をユーザーに宣言する前に、〜-40デシベルスパイクを超えるRSSI値を破棄し、過去の値の集計を使用します。
あなたの次の声明については、あなたは幸運です。
周辺機器のアドバタイズメントの信号強度を減らす方法があったら….
探しているサービスは TX Power Service と呼ばれます。このサービスを周辺機器に実装すると、デバイスの送信電力を減らすことができます。これにより、広告データが表示される範囲を絞ることができます。残念ながら、iOSデバイスでこのサービスにアクセスすることはできません。しかし、BLEペリフェラル用の独自のファームウェアを作成している場合、これが必要なサービスです。
私は先週、RSSIを厳密に扱い、位置の三角測量と距離の変換にWifiとBluetooth LEセンサーを使用しようとしました。
残念ながら、私が見つけたのは、RSSIはあまりにも細心の注意が必要であり、距離を決定するために一貫して使用するには信頼性がないことです。理論的には、RSSIと距離は逆二乗則に従って動作します(距離の2倍で、RSSIは固定数のデシベルに下がります)が、実際にはRSSIは天気などの制御できない要因の影響を受けます(乾燥した天気では= RF移動するフィールド)と障害物(あるセンサーから別のセンサーへの経路にある金属物体または人間は減衰を引き起こし、センサーの1つによって近接して配置された金属物体は、電波強度)。
これを補正する方法はいくつかあります。 この論文 は、正確な結果を得る方法について私が読んだ最高の論文の1つですが、デバイスの場所についての一般的な考えが必要なだけでない限り、肝心な点はそれが信頼できない方法です。
私がよく理解しているのであれば、WWDCデモで見られるものや Bump のようなアプリが実装するものと同様の機能を実装しようとしていることになります。そのためにはRSSIで十分です。適切なしきい値(例:> -30)をテストすると、問題ありません。