Swift 快速-将RSSI转换为距离
我在使用CoreBluetooth API进行一些工作时遇到了问题。我看过的所有地方都说,要转换RSSI(蓝牙信号强度),必须执行以下操作:Swift 快速-将RSSI转换为距离,swift,xcode,bluetooth,core-bluetooth,rssi,Swift,Xcode,Bluetooth,Core Bluetooth,Rssi,我在使用CoreBluetooth API进行一些工作时遇到了问题。我看过的所有地方都说,要转换RSSI(蓝牙信号强度),必须执行以下操作: Distance=10^((测量功率–RSSI)/(10*N)) 以及: var txPower=-59//硬编码功率值。通常在-59到-65之间 如果(rssi==0){ 回报率-1.0; } var比率=rssi*1.0/txPower; 如果(比率
Distance=10^((测量功率–RSSI)/(10*N))
以及:
var txPower=-59//硬编码功率值。通常在-59到-65之间
如果(rssi==0){
回报率-1.0;
}
var比率=rssi*1.0/txPower;
如果(比率<1.0){
返回数学功率(比率,10);
}
否则{
var距离=(0.89976)*数学功率(比率,7.7095)+0.111;
返回距离;
}
我已经尝试了以上所有的方法和我能找到的一切。没有一个能让我精确地测量出从0.5米到5-7米之间的距离
我这样做的代码是使两部手机都使用该应用程序作为中央和外围蓝牙,在我的didiscoverperipheral
从CentralManager
回拨中,我得到RSSI-我想要转换为距离(米,英尺)
还有:
我还需要了解如何获得iPhone的测量功率(1米处的RSSI强度),因为这将真正有助于精确计算
另外,就蓝牙而言,环境因素
意味着什么?不同的环境因素意味着什么(范围为2-4)。有没有办法改变或增加Apple设备的广播功率值
基本上,我正在寻找一个精确的RSSI到距离公式,该公式适用于从0.5米到5-7米的距离
非常感谢你 这是常见的解决方案:
pow(10, ((-56-Double(rssi))/(10*2)))*3.2808
它适用于大多数距离,但当你靠近或太远时会变得非常不准确,所以我最终使用了类似苹果iBeacons的垃圾箱(未知
,远
,近
,即时
)。如果原始RSSI小于-80
,则它是远的,如果它大于-50
,则它是立即的,如果它介于这两者之间,则它是近的。这个解决方案对我有效
pow(10, ((-56-Double(rssi))/(10*2)))*3.2808