我正在使用CoreBluetooth API做一些工作,遇到了一个问题。所有我看过的地方,他们都说要转换RSSI (蓝牙信号强度),你必须做以下事情:
Distance = 10 ^ ((Measured Power – RSSI)/(10 * N))
和:
var txPower = -59 //hard coded power value. Usually ranges between -59 to -65
if (rssi == 0) {
return -1.0;
}
var ratio = rssi*1.0/txPower;
if (ratio < 1.0) {
return Math.pow(ratio,10);
}
else {
var distance = (0.89976)*Math.pow(ratio,7.7095) + 0.111;
return distance;
}我已经尝试了以上所有的和我能找到的一切。所有这些都没有给我精确的测量,从0.5米到5-7米之间的距离。
我这样做的代码是让这两款手机都使用该应用程序作为中心和外围蓝牙,在我从didDiscoverPeripheral回调的CentralManager中,我得到了RSSI --我想把它转换成一个距离(米、脚)。
,还有:
我还需要了解如何获得iPhones的测量功率(1米处的RSSI强度),因为它确实有助于精确的计算。
另外,environmental factor在蓝牙方面意味着什么?不同的环境因素意味着什么(其范围为2-4)。有没有办法改变或增加苹果设备的Broadcasting Power value?
基本上,我正在寻找一个精确的RSSI到距离公式,从0.5米到5-7米之间工作。
非常感谢!
发布于 2020-08-07 05:57:34
这是一个共同的解决办法:
pow(10, ((-56-Double(rssi))/(10*2)))*3.2808它在大部分距离上都很好,但当你离得太近或太远时,它变得非常不准确,所以我最终使用了类似于苹果的iBeacons (Unknown,Far,Near,Immediate)的回收箱。如果原始RSSI小于-80,那么它就是far,如果它比-50多,那么它就是RSSI,如果它介于这两者之间,那么它就是附近的。这个解决方案对我有效。
https://stackoverflow.com/questions/62399361
复制相似问题