rssi和dbm的轉換
WIFI衡量接收信號強度可以用直接的RF能量dBm來表示,也可以用RSSI這個相對值。
下圖中WIFI信號強度為-65dBm,一般-60~-70算是信號很好。
Received signal strength indicator (RSSI)是WIFI衡量接收信號強度的一個相對值。
說白了就是讓大家好理解信號強度,不然都用dBm誰知道多少dBm算信號強啊。
如:
RSSI = 0時,我們PC WIFI那個Bar可能信號只有一格或一格都沒有,我們說信號很差,其可能對應實際能量《 -90dBm。
RSSI=120~127時,WIFI Bar可能信號滿格,其可能對應實際能量》 -60dBm等。
RSSI值的定義由WIFI芯片廠家自己定,如一個廠家可以定義RSSI = 80對應-65dBm;另一個可以定義RSSI = 80對應-60dBm等。 Qualcomm Atheros的RSSI一般是0-127。
所以,對于相同信號強度,實際的RSSI值可能不同,對于用戶還是看有幾格信號最直接和省事。
dBm
dbm是一個表示功率絕對值的單位,他的計算公式為10lg功率值/1mw。例如如果接收到的功率為1mw,按照dbm單位進行折算后的值應該為10lg 1mw/1mw=0dbm。當然在實際傳輸過程中接收方是很難達到接收功率1mw的。因此我們通過這個公式就可以從dbm值反向推出接收方接收到的功率值了。
dBm是一個表示功率絕對值的值(也可以認為是以1mW功率為基準的一個比值),計算公式為:10log(功率值/1mw)。
[例] 如果功率P為1mw,折算為dBm后為0dBm。
[例] 對于40W的功率,按dBm單位進行折算后的值應為:
10log(40W/1mw)=10log(40000)=10log4+10log10000=46dBm。
? ? ? ?RSSI
Received Signal Strength Indication接收的信號強度指示,無線發送層的可選部分,用來判定鏈接質量,以及是否增大廣播發送強度。通過接收到的信號強弱測定信號點與接收點的距離,進而根據相應數據進行定位計算的一種定位技術如無線傳感的ZigBee網絡CC2431芯片的定位引擎就采用的這種技術、算法。接收機測量電路所得到的接收機輸入的平均信號強度指示。這一測量值一般不包括天線增益或傳輸系統的損耗。
?
? ? ? ? 公式:
“RSSI – 95 = dBm
RSSI_MAX for Atheros chips is 60. So, -35 dBm is equivalent to 》 100%, and -95 dBm to 0%”
但是也只是針對該特例的公式,沒有普適性。
我們常說的RSSI和RSCP都有兩個值,一個是report value(正值),一個是quanlity value(負值),在3G 中RSSI中2個值的對應關系如下:
quanlity value=report value-100 Reported value Measured quantity value Unit UTRA_carrier_RSSI_LEV _00 UTRA carrier RSSI 《 ?100 dBm UTRA_carrier_RSSI_LEV _01 -100 £ UTRA carrier RSSI 《 ?99 dBm UTRA_carrier_RSSI_LEV _02 -99 £ UTRA carrier RSSI 《 ?98 dBm … … … UTRA_carrier_RSSI_LEV _74 -27 £ UTRA carrier RSSI 《 -26 dBm UTRA_carrier_RSSI_LEV _75 -26 £ UTRA carrier RSSI 《 -25 dBm UTRA_carrier_RSSI_LEV _76 -25 £ UTRA carrier RSSI dBm
還有就是RSCP,對應關系如下:
quantity value=reported value*2-116 Reported value Measured quantity value Unit CPICH_RSCP_LEV _00 CPICH RSCP 《?115 dBm CPICH_RSCP_LEV _01 -115 £ CPICH RSCP 《 ?114 dBm CPICH_RSCP_LEV _02 -114 £ CPICH RSCP 《 ?113 dBm … … … CPICH_RSCP_LEV _89 -27 £ CPICH RSCP 《 -26 dBm CPICH_RSCP
對于想要找個統一的公式去計算如何從RSSI轉換為信號強度百分比的事情,結論只能是:
沒有統一的公式,你自己看著辦。
最終我暫時的做法是:
既然沒有準的公式,那么就根據此處的實際情況:
基本都是在-100以上的值,所以,暫時就簡單起見,把RSSI直接加上100,得到0到100的信號強度。
相關代碼如下:
// signal strength==RSSI=Received signal strength indication
//-89, -51, -95, -94
private int rssi;
//private int signalStrength;
public void setRssi(int rssi) {
this.rssi = rssi;
}
public int getRssi() {
return rssi;
}
// public void setSignalStrength(int signalStrength) {
// this.signalStrength = signalStrength;
// }
public int getSignalStrength() {
//return signalStrength;
int signalStrength = rssi + 100;
if(signalStrength 《 0){
signalStrength = 0;
}
else if(signalStrength 》 100) {
signalStrength = 100;
}
return signalStrength;
}
非常好我支持^.^
(16) 100%
不好我反對
(0) 0%
相關閱讀:
- [RF/無線] 射頻技術中的基本單位dB/dBm/dBw介紹 2023-10-23
- [電子說] 無線射頻單片機CW32W031讀取RSSI功能介紹 2023-09-20
- [電子說] 基于UWB的非暴露空間位置服務探究 2023-08-29
- [電子說] DolphinDB 入選 Gartner《中國數據庫市場指南》代表廠商 2023-08-29
- [RF/無線] dB,dBi,dBc,dBm這些你都分的清嗎? 2023-08-18
- [電子說] 關系型數據庫的基本原理(什么是關系型數據庫) 2023-07-10
- [電子說] 電池管理系統ADBMS6815系列滿足電動車隊和大型儲能系統要求 2023-07-14
- [電子說] E-RSSI技術助力更精確的短距離測距應用 2023-07-10
( 發表人:李倩 )