首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快速-将RSSI转换为距离

快速-将RSSI转换为距离
EN

Stack Overflow用户
提问于 2020-06-16 00:57:14
回答 1查看 1.9K关注 0票数 3

我正在使用CoreBluetooth API做一些工作,遇到了一个问题。所有我看过的地方,他们都说要转换RSSI (蓝牙信号强度),你必须做以下事情:

Distance = 10 ^ ((Measured Power – RSSI)/(10 * N))

和:

代码语言:javascript
运行
复制
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米之间工作。

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-07 05:57:34

这是一个共同的解决办法:

代码语言:javascript
运行
复制
pow(10, ((-56-Double(rssi))/(10*2)))*3.2808

它在大部分距离上都很好,但当你离得太近或太远时,它变得非常不准确,所以我最终使用了类似于苹果的iBeacons (UnknownFarNearImmediate)的回收箱。如果原始RSSI小于-80,那么它就是far,如果它比-50多,那么它就是RSSI,如果它介于这两者之间,那么它就是附近的。这个解决方案对我有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62399361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档