33

Bluetooth Low Energy コンセプト プロジェクトに取り組んでいます。1 から 100 の間の RSSI 値を取得しています。タグを移動すると、周辺機器が iPhone から遠ざかると RSSI 値が増加し、近づくと減少します。

RSSI 値に基づいて、iPhone と Bluetooth タグの間の正確な距離を取得するのを手伝ってくれる人はいますか? 利用可能な数式はありますか?

この bluetooth Low energy デリゲート メソッドを使用して、デバイスの RSSI 値を取得しています。

 - (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral   
   *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
4

4 に答える 4

34

別のスレッドでこれに答え、ここで繰り返します。

見通し内 (RSSI の変化を引き起こす障害物がない) では、-6dB は距離の 2 倍のようです

1m の距離で RSSI -40dB を読み取ると、2m では -46dB、4m では -52dB、8m では -58dB、16m では -64dB となります。

正確な位置を取得することはできません。円形の最大距離のみです。

2 ~ 3 台以上のデバイスで三角測量を使用すると、より正確な測位結果が得られます。これは純粋に Advertisement パッケージから取得できますが、スキャンを無効にする -> スキャンを有効にするか、iOS CoreBluetooth にすべての adv パッケージを報告するように指示する必要があります。

フォアグラウンド モードではこれを行うことができますが、バックグラウンド モードではすべての adv パッケージを取得することはできません。バックグラウンドで行うには、RSSI に接続して読み取る必要があります。

于 2012-12-05T13:11:31.623 に答える
28

三角測量やフィンガープリンティングなど、RSSI ベースのローカリゼーション手法は数多くあります。それらのどれも完璧ではありません。RSSI は、障害物、マルチパス フェージング、アンテナ偏波、クロスボディ シールドなど、多くの要因の影響を受けます。

RSSI と距離の理論的な関係は次のようになります。

RSSI[dbm] = −(10n log10(d) − A) 

ここで、dは距離、Aはオフセットで、BLE デバイスから 1 メートル離れた場所で測定された RSSI です。

グーグルで検索するだけでRSSI[dbm] = −(10n log10(d) − A)、それに関するいくつかのソースが見つかります。

于 2013-03-01T04:01:12.200 に答える
10

RSSI からの距離を見つけるのは少しトリッキーで、テスト環境やアンテナの向きなど、多くの要因に依存します。次の論文では、同じ http://www.s2is.org/Issues/v1/n2/papers/ paper14.pdf

于 2012-12-07T04:25:09.450 に答える
1

Swift 4.2で

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if let power = advertisementData[CBAdvertisementDataTxPowerLevelKey] as? Double{
   print("Distance is ", pow(10, ((power - Double(truncating: RSSI))/20)))
   }
}

詳しい回答はこちら

于 2019-01-25T08:20:53.607 に答える