【導讀】很多開發(fā)者在開發(fā)接近相關的藍牙應用時,需要選擇不同的信號強度測量方法,應用是采用RX還是RSSI?針對這一問題,我們先更好的理解射頻通信的相關概念。
RX和RSSI
RT通信(RealTimeCommunication,實時通信)使用RX和RSSI(ReceivedSignalStrengthIndication,接收信號強度指示)來測量無線電信號強度。兩者都是天線接收到的功率水平指標,差異在于RX的測量單位是毫瓦(mW)或分貝毫瓦(dBm),而RSSI是信號強度百分比,RSSI值越高表示信號越強。與RX不同的是,RSSI是一種相對的測量方法,大多由芯片制造商定義。RSSI并無標準的物理參數(shù)。例如,廠商甲的RSSI最大值可能為100,而廠商乙的RSSI區(qū)間可以為0到127。然而在某一特定的芯片上,其RSSI值與特定物理RX值之間的映射是已知的。對于某些平臺,高層API僅提供RSSI數(shù)據(jù)。
不同無線電芯片的RSSI有所不同
你可以會注意到,即便位置和距離固定,RSSI值也會出現(xiàn)變動,其原因之一可能就是硬件/無線電平臺。例如,iOS設備的芯片組大多相同,RSSI值能夠很精確地反映距離,同樣的RSSI值在iPhone甲和iPhone乙上很可能表示相同的信號強度值。然而安卓設備種類多樣,設備采用的芯片組也各有不同,RSSI的絕對值就無法精確地反映距離。同樣的RSSI值在不同安卓手機上可能表示不同的信號強度。盡管如此,如果開發(fā)者能夠了解RSSI值變化的趨勢,那么對于接近應用仍十分有幫助。趨勢也可以給你很多有用的數(shù)據(jù)。
接近應用中如何使用RSSI?
避免使用RSSI絕對值,而采用趨勢
基于無線電信號的波動,我們可以了解到相對準確的RSSI趨勢。了解信號的強弱變化并不難,因此可以判斷用戶是接近還是遠離信號源。更理想的情況是,如果我們了解RSSI和特定接收設備位置之間的具體映射,就能對距離作出相對準確的判斷。
以下就是RSSI與距離之間關系的舉例:
RSSI值隨距離的改變
獲取RSSI值時采用區(qū)間眾數(shù)
RF通信的本質決定了RX和RSSI在很大程度上都會受到各種環(huán)境因素的影響。采用RSSI值時,環(huán)境因素還會引起一定范圍內的值漂移。為了抵御這些影響,開發(fā)者可以設計一個采樣算法,獲取特定時段內RSSI樣本集的眾數(shù)(出現(xiàn)次數(shù)最多的值)。這樣,數(shù)據(jù)就能更準確地反映實際信號強度,并濾過噪音。
結語
當接近應用選擇使用RSSI時,開發(fā)者需要考慮不同芯片廠商的不同定義。不同無線電芯片的RSSI絕對值可能不同,但我們仍能從同一芯片的RSSI趨勢中獲取很多信息。為避免環(huán)境干擾,開發(fā)者可以定義自己的采樣算法以去除噪音。
相關閱讀:
5大藍牙誤解,物聯(lián)網(wǎng)開發(fā)者眼里的刺!
一款低功耗的藍牙空中鼠標的設計電路
拆藍牙尋物防丟器Tile,丟三落四的朋友有救了