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