2015-05-11 296 views
0

我以距离Kontakt信标的距离为基础计算: RSSI(dBm)= -10n log10(d)+ A 我设置n = 2,它位于空闲空间中。 A应该在1米距离内接收RSSI。RSSI到信标距离

通向下面的计算方法:

private double getDistance(double rssi) { 
    // TODO Auto-generated method stub 
    return Math.pow(10.0,((rssi-(-54.0))/-25.0)); 

} 

-54是平均值I meassured 1m处中的一个。信标被设置为TxPower 4dB。有人做了更多的测试,找出kontakt信标在1米处距离的理想值吗?或者任何改进的公式?

问候

回答

1

在开发Android Beacon Library,我们开始了类似的公式,却发现我们得到的BLE信做一个最合适的功率曲线为更好的结果。我们提出的论坛详细描述如下:https://stackoverflow.com/a/20434019/1461050

该公式针对Nexus 4进行了优化。由于每个Android设备都有不同的天线增益,因此需要针对每个设备调整常量。您可以阅读更多关于此过程的信息here.

了解RSSI由于无线电噪声导致读数波动很大也很重要,因此如果您将多个读数平均在一起,则可以获得更好的结果。默认情况下,Android Beacon库采用最近30秒的读数,抛出最高和最低10%,并使用剩余值的平均值。最新版本的库还实现ARMA filter,在某些情况下可以提供更好的结果。

+0

我已经看过所有这些文档。我认为你不想因为高或低而抛高或低抛。您需要查看样本中的所有值,以确切知道要抛出哪些点。我认为你应该每隔一秒做一次,只保留高可靠性的样品。然后在一段时间内对接受的手段/样本进行移动平均。 mov avg也很受静态测量误差的影响,所以低通和移动平均值的结合可能是一个好主意。使用统计数据可以计算出标准偏差等参数 – snovva