通过蓝牙的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值,再代入该方法。为了验证结果我用卷尺测量最终的结果。误差大概在几十厘米左右,微信小程序的代码一搜有很多,这里就不放了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM