本文主要是介绍iBeacon设备信号距离测算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
利用CoreLocation.framework很容易扫描获得周边蓝牙设备,苹果开源代码AirLocate有具体实现,
下载地址
所获得的iBeacon在CoreLocation里以CLBeacon表示,其中有RSSI值(接收信号强度),可以用来计算发射端和接收端间距离。
计算公式:
d = 10^((abs(RSSI) - A) / (10 * n))
其中:
- d: 计算所得距离
- RSSI: 接收信号强度(负值)
- A: 发射端和接收端相隔1米时的信号强度
- n: 环境衰减因子
计算公式的代码实现:
- (float)calcDistByRSSI:(int)rssi {int iRssi = abs(rssi);float power = (iRssi-59)/(10*2.0);return pow(10, power);
}
传入RSSI值,返回距离(单位:米)。其中,A参数赋了59,n赋了2.0。
由于所处环境不同,每台发射源(蓝牙设备)对应参数值都不一样。按道理,公式里的每项参数都应该做实验(校准)获得。
当你不知道周围[蓝牙]设备准确位置时,只能给A和n赋经验值。
这篇关于iBeacon设备信号距离测算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!