2017-02-28 259 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