Android 蓝牙信号强度RSSI介绍

1.RSSI是什么


Received Signal Strength Indication接收的信号强度指示,无线发送层的可选部分,用来判定链接质量,以及是否增大广播发送强度。RSSI(Received Signal Strength Indicator)是接收信号的强度指示,它的实现是在反向通道基带接收滤波器之后进行的。(摘自百度)。

2.初识蓝牙RSSI


第一次听说蓝牙RSSI的概念,是在2015年,那个时候还是大二的学生,那个时候对它的印象就是可以通过RSSI信号值,来计算蓝牙设备和主设备之间的距离,也有RSSI三点定位算法,但那个时候也只是听说,没有实际的应用,不得不说到现在为止我也不能描述清楚这个东西,只能站在前人的肩膀上,加上自己的总结,若有纰漏,欢迎指出,共同探讨。

3.RSSI为什么是负值


RSSI的单位是dbm,在蓝牙中,我们可以直接理解为,收到蓝牙信号的强度,RSSI = 10*log P,P代表接收到的信号功率,蓝牙会发送广播,距离不同会影响接收到的信号功率,假设发射功率取最大值为1mw,那么RSSI的值为0,也就是说你的距离离蓝牙最近时在理想状态下所获取的RSSI的值为0,但在实际中基本不会存在这个理想状态,因此RSSI的值基本都为负数,而在蓝牙中,当距离很近时,所收到的RSSI的信号值大约在-50dbm。

4.RSSI应用


 得到RSSI值之后,因为在理想状态,所发射的功率全部被接收时RSSI的值为0,那么在同等环境下,我们可以认为接收到-20dbm信号值的强度大于接收到-50dbm信号值的强度。

计算距离:
计算公式:

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

其中:

    d - 计算所得距离

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

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

    n - 环境衰减因子

A值和N值需要不断的通过场地测试才可以得到,不同场地环境衰减因子不同,甚至同一场地物体阻碍也会很大程度影响环境衰减因子。但是在同一场地我们把A和N两个参数取默认值,是可以大致判断出相对距离的远近的。

三点定位:


        顾名思义假设在一个房间内,我们部署了三个蓝牙节点,分别为A、B、C,我们假设一个应用场景就是我们要判断房间内儿童的位置,那么我们要获取儿童到A、B、C三个节点的RSSI的信号值,在房间内我们设定好了abc的坐标,那么可以求得儿童未知点的坐标。此处我不知道如何画圆取描述,不在同一条直线上的三个点,按照半径为到未知点的距离画圆必有一个交点。

猜你喜欢

转载自blog.csdn.net/weixin_45534242/article/details/124788587