web-dev-qa-db-ja.com

Bluetooth Low Energy対応デバイスのRSSI値から距離を見つける

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

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

このBluetooth低エネルギーデリゲートメソッドを使用して、デバイスのRSSI値を取得しています。

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

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

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

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

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

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

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

32
henrik

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

RSSIと距離の理論的な関係は次のようなものです。

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

ここで、dは距離であり、[〜#〜] a [〜#〜]は、BLEデバイスから1メートル離れた場所で測定されたRSSIであるオフセットです。

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

26
foresightyj

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

9
Arathil

In 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)))
   }
}

より詳細な回答 ここ

1
Saranjith