通过蓝牙的RSSI计算两端之间的距离(一维定位)

本实例只适用于一维定位,其他定位方式可以参考:iBeacon蓝牙定位技术原理及实现 | 前端路上 (refined-x.com)

计算公式:

d = 10^((abs(RSSI) - A) / (10 * n))

其中:

d - 计算所得距离

RSSI - 接收信号强度(负值)

A - 发射端和接收端相隔1米时的信号强度

n - 环境衰减因子

转换为java 代码,只是做了公式计算处理,参数校验还没有:

 public double getDistByRSSI(int rssi) {
        int iRssi = Math.abs(rssi);
        double power = (iRssi - 50) / (10 * 2.0);
        return Math.pow(10, power);
    }

 

传入RSSI值,返回距离(单位:米)。其中,A参数赋了50,n赋了2.0。

由于所处环境不同,每台发射源(蓝牙设备)对应参数值都不一样。按道理,公式里的每项参数都应该做测试获得。

我这里是用的微信小程序测试获取RSSI值,再代入该方法。为了验证结果我用卷尺测量最终的结果。误差大概在几十厘米左右,微信小程序的代码一搜有很多,这里就不放了。

posted @ 2021-11-24 17:17  Rolay  阅读(1360)  评论(0编辑  收藏  举报