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;
}

继电器与接触器的区别及其在电路中的应用
AlphaNu平台正在使用区块链技术进行访问控制
安徽省首例5G远程协同手术由安徽医科大学第二附属医院牵头完成
光学经典导读之非线性脉冲传输
如何通过GSM发送和接收以及怎样通过Arduino GSM发送SMS消息
rssi和dbm的转换
揭秘示波器四大捕获方式
分流器和路由器的区别
光电池三大分类
双通道数字隔离器的用途
人形机器人的应用场景及发展前景
“灵采”咽拭子采样机器人在沈阳核酸检测中进行了试验性应用
怎么确定需要补偿多少功率容量?
涂料行业智能工厂如何实现工业物联网数字化升级
闪迪存储设备,呵护你的“数据”
一个高度自动化的多渠道配送中心
全球三大机器视觉公司
聚焦SC15:Ryft推出基于Xilinx FPGA云加速解决方案
NASA公布由朱诺号探测器在卫星木卫三时拍摄的照片
Redmi note11正式发布!redmi note11参数配置详情