it-swarm.com.de

Entfernung des RSSI-Werts eines Bluetooth Low Energy-Geräts ermitteln

Ich arbeite an einem Bluetooth-Low-Energy-Projekt. Ich erhalte den RSSI-Wert Zwischen 1 und 100. Beim Verschieben des Tags steigt der RSSI-Wert an, wenn sich das Peripheriegerät vom iPhone entfernt und mit zunehmender Entfernung abnimmt. 

Kann mir jemand helfen, die genaue Entfernung zwischen dem iPhone und dem Bluetooth-Tag anhand des RSSI-Werts zu ermitteln? Gibt es verfügbare Formeln?

Ich erhalte den RSSI-Wert des Geräts mithilfe dieser Bluetooth-Delegiertenmethode mit geringem Energieverbrauch:

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

Ich beantwortete dies in einem anderen Thread und wiederholte es hier.

In Sichtlinie (keine Hindernisse, die zu einer Änderung der RSSI führen) scheint -6dB die doppelte Entfernung zu sein .

Wenn Sie bei 1m Abstand RSSI -40dB lesen, ergibt 2m -46dB, 4m ergibt -52dB, 8m ergibt -58dB, 16m ergibt -64dB.

Sie können keine exakte Position erhalten, nur eine kreisförmige maximale Entfernung.

Wenn Sie die Triangulation mit 2-3 oder mehr Geräten verwenden, erhalten Sie ein viel genaueres Positionierungsergebnis. Sie können dies nur aus Ankündigungspaketen abrufen. Sie müssen jedoch entweder Scan deaktivieren -> Scan aktivieren oder iOS CoreBluetooth mitteilen, um alle Adv-Pakete zu melden.

Im Vordergrundmodus können Sie dies tun, aber im Hintergrundmodus können Sie nicht alle Adv-Pakete erhalten. Sie müssen RSSI anschließen und lesen, um dies im Hintergrund tun zu können.

32
henrik

Es gibt eine Reihe von RSSI-basierten Lokalisierungstechniken wie Triangulation und Fingerprinting. Keiner von ihnen ist perfekt. RSSI wird von vielen Faktoren wie Hindernissen, Multipath-Fading, Antennenpolarisation und Cross-Body-Abschirmung beeinflusst.

Die theoretische Beziehung zwischen RSSI und Entfernung ist ungefähr so:

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

dabei ist d der Abstand undAder Versatz, bei dem es sich um den gemessenen RSSI-Punkt handelt, der 1 Meter vom BLE-Gerät entfernt ist.

Google einfach für RSSI[dbm] = −(10n log10(d) − A) und du findest einige Quellen dazu.

26
foresightyj

Die Entfernung von RSSI ist etwas schwierig und hängt von vielen Faktoren ab, sogar von der Testumgebung und der Ausrichtung der Antenne usw. In den folgenden Abhandlungen werden einige Studien zu diesem Thema durchgeführt http://www.s2is.org/ Ausgaben/v1/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)))
   }
}

Ausführlichere Antwort Hier

0
Saranjith