web-dev-qa-db-fra.com

Recherche de la distance entre la valeur RSSI et le périphérique compatible Bluetooth Low Energy

Je travaille sur un projet de concept Bluetooth Low Energy. La valeur RSSI Est comprise entre 1 et 100. Lorsque je déplace le tag, la valeur RSSI augmente lorsque le périphérique s'éloigne de l'iPhone et diminue à mesure qu'il se rapproche. 

Quelqu'un peut-il m'aider à obtenir la distance exacte entre l'iPhone et la balise Bluetooth en fonction de la valeur RSSI? Existe-t-il des formules disponibles?

Je reçois la valeur RSSI de l'appareil à l'aide de cette méthode de délégué Bluetooth faible énergie:

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

J'ai répondu à cela dans un autre fil, en le répétant ici.

En visibilité directe (pas d'obstacles entraînant une modification du RSSI), -6dB semble être le double de la distance .

Si vous lisez à 1m RSSI -40dB, 2m donne -46dB, 4m donne -52dB, 8m donne -58dB, 16m donne -64dB.

Vous ne pouvez pas obtenir une position exacte, seulement une distance maximale circulaire.

En utilisant la triangulation avec 2 ou 3 appareils, vous obtenez un résultat de positionnement beaucoup plus précis . Vous pouvez l'obtenir uniquement à partir de packages de publication, mais vous devez soit Désactiver l'analyse -> Activer l'analyse, soit demander à iOS CoreBluetooth de signaler tous les packages adv.

Vous pouvez le faire en mode de premier plan, mais vous ne pouvez pas obtenir tous les packages adv en mode d’arrière-plan. Vous devez vous connecter et lire RSSI pour le faire en arrière-plan.

32
henrik

Il existe un grand nombre de techniques de localisation basées sur RSSI, telles que la triangulation et les empreintes digitales. Aucun d'entre eux n'est parfait. Le RSSI est affecté par de nombreux facteurs tels que les obstacles, les évanouissements par trajets multiples, la polarisation des antennes et le blindage transversal.

La relation théorique entre RSSI et la distance ressemble à ceci:

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

d est la distance etAest le décalage qui est le RSSI mesuré à 1 mètre du dispositif BLE.

Il suffit de chercher sur Google pour RSSI[dbm] = −(10n log10(d) − A) et vous trouverez quelques sources à ce sujet.

26
foresightyj

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

Réponse plus détaillée Ici

0
Saranjith