查找蓝牙低功耗设备的RSSI值的距离

时间:2012-12-04 14:54:02

标签: iphone objective-c ios7 bluetooth-lowenergy

我正在研究蓝牙低能耗概念项目。我得到了RSSI值 当我移动标签时,RSSI值随着外围设备离开iPhone而增加,并随着它移近而减小。

有人可以帮我根据RSSI值获得iPhone和蓝牙标签之间的确切距离吗?有没有可用的公式?

我借助这种蓝牙低能量代表方法获取设备的RSSI值:

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

4 个答案:

答案 0 :(得分:32)

我在另一个帖子中回答了这个问题,在这里重复一遍。

在视线范围内(没有障碍导致RSSI发生变化), -6dB似乎是距离的两倍

  

如果你在1m距离读取RSSI -40dB然后2m给出-46dB,4m给出-52dB,8m给出-58dB,16m给出-64dB。

您无法获得确切的位置,只能获得圆形的最大距离。

使用2-3个或更多设备进行三角测量可以获得更准确的定位结果。 你可以完全从广告包中获得这个,但你必须要么禁用扫描 - >启用扫描或告诉iOS CoreBluetooth报告所有adv软件包。

在前台模式中你可以这样做,但在后台模式下你无法获得所有的adv包。您必须连接并读取RSSI才能在后台执行此操作。

答案 1 :(得分:26)

有许多基于RSSI的定位技术,如三角测量和指纹识别。它们都不是完美的。 RSSI受到许多因素的影响,如障碍物,多径衰落,天线极化和横向屏蔽。

RSSI和距离之间的理论关系是这样的:

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

其中 d 是距离, A 是距离BLE设备1米测量RSSI的偏移量。

只需谷歌搜索RSSI[dbm] = −(10n log10(d) − A),您就会找到一些相关信息来源。

答案 2 :(得分:9)

寻找与RSSI的距离有点棘手,这取决于很多因素,甚至是测试环境和天线方向等。 以下论文正在对此进行一些研究 http://www.s2is.org/Issues/v1/n2/papers/paper14.pdf

答案 3 :(得分:1)

迅速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)))
   }
}

更详细的答案Here