2017-02-28 406 views
1

有没有一种方法可以将RSSI信号转换为精确的距离?我们尝试了几个公式,但都用不同的结果。Wifi RSSI信号距离计算方法与javascript

,其中i是在讲式:

public double calculateDistance(double signalLevelInDb, double freqInMHz) { double exp = (27.55 - (20 * Math.log10(freqInMHz)) + Math.abs(signalLevelInDb))/20.0; return Math.pow(10.0, exp); }

+0

你尝试过哪些公式?另外,结果有多不同?没有公式的错误,结果通常会不同,而是这种计算中固有的不准确性。 [这个链接](http://electronics.stackexchange.com/questions/83354/calculate-distance-from-rssi)可能会有帮助,如果你还没有看到它。 –

+0

我编辑我的poste与公式,我在说什么。 很难验证结果是否正确,因为(正如我们所知),RSSI信号不准确,因为其他设备和房间中的物体产生的所有噪声都不准确。 @ 0101001101000010 –

回答

1

RSSI和dBm为单位测量的强度,这取决于许多因素,其中之一是从所述源过程距离。 RSSI与设备的芯片组相关(见http://www.metageek.com/training/resources/understanding-rssi.html)。除非你的JavaScript可以知道设备的芯片组,否则我不相信有一种方法可以做你想做的事。

如果您有以dBm为单位的信号强度,您可以尝试对基于信号强度的距离进行近似的“有效”距离分类,但即便如此,也可以通过其他因素信号传播,信号使用的频段(2.4穿透好于5Ghz例如)

听起来您确实需要地理位置服务,因此您可以识别设备和接入点之间的实际距离。

+0

我明白你的意思,但我们找到了一个可能的公式(它利用了频率:)),但我们不确定结果是否正确。由于(正如我们所知),RSSI信号对房间内其他设备和物体产生的所有噪声都不准确,因此很难验证结果是否正确。 其中i是在讲式: '公共双calculateDistance(双signalLevelInDb,双freqInMHz){ 双EXP =(27.55 - (20 * Math.log10(freqInMHz))+ Math.abs(signalLevelInDb))/20.0; return Math.pow(10.0,exp); } @ jk72 –

+0

@ A.vk这个链接很好地解释了你正在做的工作和固有的问题:http://electronicdesign.com/communications/understanding-wireless-range-calculations – jk72