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

本文介绍了一维定位中使用RSSI(接收信号强度指示)计算距离的方法,给出了计算公式,并转换为Java代码实现。在实际应用中,RSSI值会因环境差异导致参数变化,作者通过微信小程序获取RSSI值并进行实地测量,误差在几十厘米。建议进行参数测试以获取更精确的距离估算。
摘要由CSDN通过智能技术生成

本实例只适用于一维定位,其他定位方式可以参考:https://refined-x.com/2019/04/01/IBeacon-Location-Technology/。

计算公式:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值