我工作的蓝牙低功耗概念的项目。 我越来越1和100之间的RSSI值当我移动标签的RSSI值增加从iPhone远离外围移动,并且随着它越靠近。
任何人可以帮助我获得iPhone和基于RSSI值的蓝牙标签之间的精确距离是多少? 是否有任何可用的公式?
我得到这个蓝牙低功耗委托方法的帮助下,设备的RSSI值:
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral
*)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
我在另一个线程回答了这个,在这里重复它。
在线路的视距(无障碍物导致RSSI的变化),-6dB似乎是双重的距离 。
如果您在1m远处看RSSI -40dB和2M给人-46dB,4M给人-52dB,8M给人-58dB,16M赋予-64dB。
你不能得到一个确切的位置,只有一个圆形的最大距离。
使用三角测量2-3个或更多的设备你会得到一个更精确的定位结果。 您可以从广告包纯粹是让这一点,但您必须禁用扫描 - >启用扫描或告诉的iOS CoreBluetooth报告所有进阶包。
在前台模式,你可以这样做,但在后台模式下你不能让所有的进阶包。 您必须连接并读取RSSI做背景。
有相当数量的基于RSSI的定位技术,如三角测量和指纹。 他们都不是完美的。 RSSI是由许多因素,如障碍,多路径衰落,天线极化和交叉体屏蔽的影响。
RSSI和距离之间的理论关系是这样的:
RSSI[dbm] = −(10n log10(d) − A)
其中d是距离,A是所述偏移是所测得的RSSI1米点从BLE装置远。
只是谷歌的RSSI[dbm] = −(10n log10(d) − A)
你会发现一些关于它的来源。
从RSSI查找距离有点棘手,它取决于很多因素,甚至是测试环境和天线方向等后续的纸张是有关于同一些研究http://www.s2is.org/Issues/v1/n2/papers/ paper14.pdf
在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)))
}
}
更详细的答案在这里