안 드 로 이 드 블 루 투 스 블 루 투 스 강도 Rssi

4205 단어 #AndroidBluetooth
전환 하 다https://blog.csdn.net/lhc1105/article/details/54585632 전환 하 다https://blog.csdn.net/jasonwang18/article/details/73131020 전환 하 다http://www.cnblogs.com/lele/articles/2832885.html
RSSI (수신 신호 강도) 수신 신호 강도 표시 기
Rss = 10logP, 받 은 신호 출력 P 만 대 입 하면 수신 신호 강도 (민감 도) 입 니 다. [예 1] 발사 전력 P 가 1mw 이면 dBm 로 환산 하면 0dBm 이다. [예 2] 40W 의 출력 에 대해 dBm 단위 로 환산 한 값 은 10lg (40W / 1mw) = 10lg (40000) = 10lg 4 + 10lg 10 + 10lg 1000 = 46dBm 이다.
Rssi 는 수신 전력 과 관련 이 있 고 단 위 는 dBm 이다.
일반적으로 마이너스 이 고 반응 하 는 것 은 신호 의 감쇠 정도 이다. 이상 적 인 상태 에서 (무 감쇠), Rssi = 0dBm, 실제 상황 은 블 루 투 스 장치 가 매우 가 까 워 도 Rssi 는 - 50dBm 의 강도 만 있 기 때문에 전송 과정 에서 손실 이 불가피 하 다.일반적인 상황 에서 전형 적 인 블 루 투 스 강도 - 50 ~ 0dBm 신호 강 - 70 ~ - 50dBm 신호 중
저 소모 블 루 투 스 4 레벨 - 60 ~ 0 4 - 70 ~ - 60 3 - 80 ~ - 70 2
/**
 * A n  ,              
 */
public class RssiUtils {

    /** A          1        */
    private static final double A_Value = 50;
    /** n        */
    private static final double n_Value = 2.5;

    /**
     *   Rssi  ,    ,  m
     * @param rssi     ,  dB
     */
    public static double getLeDistance(int rssi) {
        double power = (Math.abs(rssi) - A_Value) / (10 * n_Value);
        return Math.pow(10, power);
    }

    /**
     *        
     * -50 ~ 0dBm     
     * -70 ~ -50dBm       
     * 
    public static byte getBredrLevel(int rssi) {
        if(rssi > -50) {
            return 3;
        } else if(rssi > -70) {
            return 2;
        } else {
            return 1;
        }
    }

    /**
     *         
     * -60 ~ 0     4
     * -70 ~ -60   3
     * -80 ~ -70   2
     * 
    public static byte getLeLevel(int rssi) {
        if(rssi > -60) {
            return 4;
        } else if(rssi > -70) {
            return 3;
        } else if(rssi > -80) {
            return 2;
        } else {
            return 1;
        }
    }
}

좋은 웹페이지 즐겨찾기