寻找蓝牙低功耗设备RSSI值对应的距离

33

我正在进行蓝牙低功耗概念项目的工作。我获取了标签与iPhone之间的RSSI值,该值在1到100之间变化。随着标签移动,RSSI值会增加,外围设备离iPhone越远,RSSI值会减少。

有人可以帮助我根据RSSI值获取iPhone和蓝牙标签之间的确切距离吗?是否有任何可用的公式?

我使用蓝牙低功耗委托方法获取设备的RSSI值:

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

这个线程在某种程度上是这个的重复:https://dev59.com/I2Uo5IYBdhLWcg3w5Syl。结论是这很棘手。 - Jessedc
你能使用RSSI获取BLE设备和用户位置之间的距离吗?如果可以,请指导我如何操作。 - Moxarth
4个回答

34

我在另一条线程中回答了这个问题,现在重复一遍。

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

如果你在1米的距离读取RSSI为-40dB,那么2米就是-46dB,4米就是-52dB,8米就是-58dB,16米就是-64dB。

你无法得到精确的位置,只能得到一个圆形的最大距离。

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

在前台模式下,你可以这样做,但在后台模式下,你无法获取所有广告包。你必须连接并读取RSSI才能在后台完成它。


3
嗯,我不认为在我的情况下完全正确。在我这种情况下,距离1米以内,它总是读取约-66dB。 - Yeung
1
这实际上不是-66dB,而是-66dBm。基本上,这是模拟放大器输出电压,这取决于使用的天线类型、天线位置以及许多其他方面,而不仅仅是距离。当您距离增加两倍时,变化约为6 dB。 - Tõnu Samuel
5
不是挑剔,但在这种情况下实际上是三边定位(trilateration),而不是三角定位(triangulation)。你不知道涉及的角度,这就是重点,你只知道横向距离,因此它是三边定位。 - Max von Hippel
这个算法让你以645米的距离和-96的RSSI值,但是该算法不正确,增长也不是真正的指数增长。 - John Foley
有人解决了这个问题吗?使用RSSI计算BLE和外围设备之间的距离?有人知道吗? - Moxarth

28

有相当数量的RSSI定位技术,如三角定位和指纹定位。但它们都不是完美的。RSSI受到许多因素的影响,如障碍物、多径衰落、天线极化和交叉体屏蔽。

RSSI与距离之间的理论关系大致如下:

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

其中d表示距离,A表示偏移量,即距离BLE设备1米处测得的RSSI值。

只需在谷歌上搜索RSSI[dbm] = −(10n log10(d) − A),您就可以找到一些相关资料。


5
这个方程中的'n'是什么? - Sten Petrov
这是一个经验值,在不同的地形,城市地区,山区,偏远地区都有所不同。通常大约在2到4之间。我目前手头没有参考资料。 - foresightyj
1
本文提到(并进一步引用了来源):“评估RSSI在室内定位中的可靠性”http://www.rn.inf.tu-dresden.de/dargie/papers/icwcuca.pdf。 - user484261
1
在我基于WiFi进行的测试中,ITU室内路径损耗模型取得了出色的结果。 - Rob Anderson
1
d实际上是一个无量纲的量,等于(距离/1米)。 - Airsource Ltd
显示剩余3条评论

10

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

更详细的答案请点击这里

txPower始终为null - a.masri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接