開發(fā)接近(Proximity)相關(guān)的藍(lán)牙(Bluetooth)應(yīng)用時(shí),開發(fā)者需要在不同的信號(hào)強(qiáng)度測(cè)量方法之間做出選擇,比如我的應(yīng)用是該采用RX還是RSSI呢?想要更好地理解這一問題,我們不妨先來回顧一下射頻(RF)通信的基本概念。 RX和RSSI RT通信(Real Time Communication,實(shí)時(shí)通信)使用RX和 RSSI(Received Signal Strength Indication,接收信號(hào)強(qiáng)度指示)來測(cè)量無線電信號(hào)強(qiáng)度。兩者都是天線接收到的功率水平指標(biāo),差異在于RX的測(cè)量單位是毫瓦(mW)或分貝毫瓦(dBm),而RSSI是信號(hào)強(qiáng)度百分比,RSSI值越高表示信號(hào)越強(qiáng)。與RX不同的是,RSSI是一種相對(duì)的測(cè)量方法,大多由芯片制造商定義。RSSI并無標(biāo)準(zhǔn)的物理參數(shù)。例如,廠商甲的RSSI最大值可能為100,而廠商乙的RSSI區(qū)間可以為0到127。然而在某一特定的芯片上,其RSSI值與特定物理RX值之間的映射是已知的。對(duì)于某些平臺(tái),高層 API僅提供RSSI數(shù)據(jù)。 不同無線電芯片的RSSI有所不同 你可以會(huì)注意到,即便位置和距離固定,RSSI值也會(huì)出現(xiàn)變動(dòng),其原因之一可能就是硬件/無線電平臺(tái)。例如,iOS設(shè)備的芯片組大多相同,RSSI值能夠很精確地反映距離,同樣的RSSI值在iPhone甲和iPhone乙上很可能表示相同的信號(hào)強(qiáng)度值。然而安卓設(shè)備種類多樣,設(shè)備采用的芯片組也各有不同,RSSI的絕對(duì)值就無法精確地反映距離。同樣的RSSI值在不同安卓手機(jī)上可能表示不同的信號(hào)強(qiáng)度。盡管如此,如果開發(fā)者能夠了解RSSI值變化的趨勢(shì),那么對(duì)于接近應(yīng)用仍十分有幫助。趨勢(shì)也可以給你很多有用的數(shù)據(jù)。 接近應(yīng)用中如何使用RSSI? 避免使用RSSI絕對(duì)值,而采用趨勢(shì) 基于無線電信號(hào)的波動(dòng),我們可以了解到相對(duì)準(zhǔn)確的RSSI趨勢(shì)。了解信號(hào)的強(qiáng)弱變化并不難,因此可以判斷用戶是接近還是遠(yuǎn)離信號(hào)源。更理想的情況是,如果我們了解RSSI和特定接收設(shè)備位置之間的具體映射,就能對(duì)距離作出相對(duì)準(zhǔn)確的判斷。 以下就是RSSI與距離之間關(guān)系的舉例: RSSI 值隨距離的改變 獲取RSSI值時(shí)采用區(qū)間眾數(shù) RF通信的本質(zhì)決定了RX和RSSI在很大程度上都會(huì)受到各種環(huán)境因素的影響。采用RSSI值時(shí),環(huán)境因素還會(huì)引起一定范圍內(nèi)的值漂移。為了抵御這些影響,開發(fā)者可以設(shè)計(jì)一個(gè)采樣算法,獲取特定時(shí)段內(nèi)RSSI樣本集的眾數(shù)(出現(xiàn)次數(shù)最多的值)。這樣,數(shù)據(jù)就能更準(zhǔn)確地反映實(shí)際信號(hào)強(qiáng)度,并濾過噪音。 結(jié)論 當(dāng)接近應(yīng)用選擇使用RSSI時(shí),開發(fā)者需要考慮不同芯片廠商的不同定義。不同無線電芯片的RSSI絕對(duì)值可能不同,但我們?nèi)阅軓耐恍酒腞SSI趨勢(shì)中獲取很多信息。為避免環(huán)境干擾,開發(fā)者可以定義自己的采樣算法以去除噪音。 |