通過藍牙的RSSI計算兩端之間的距離(一維定位)


本實例只適用於一維定位,其他定位方式可以參考:iBeacon藍牙定位技術原理及實現 | 前端路上 (refined-x.com)

計算公式:

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值,再代入該方法。為了驗證結果我用卷尺測量最終的結果。誤差大概在幾十厘米左右,微信小程序的代碼一搜有很多,這里就不放了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM