首先簡單介紹一下 RSSI,英文全稱是 Received Signal Strength Indication,中文釋義為接收的信號強度指示,RSSI 的基本屬性是一種定位技術,通過接收到的信號強弱測定信號點與接收點的距離,進而根據相應數據進行定位計算,RSSI 值的計量單位是 dBm,是一個表示功率絕對值的單位,其計算公式為 10lg(功率值/1mw),所以 RSSI值一般為負數,最大值為理想狀態下的 0dBm。對 RSSI 的基本概念有了一個了解之後,我們再通過 NXP KW45 去嘗試獲取這個 RSSI 值看看。
-
硬體環境:KW45B41Z_EVK 板
-
軟體環境:kw45b41zevk_wireless_uart_freertos
-
代碼內容:
/* Enable/Disable Controller Adv/Scan/Connection Notifications */
#ifndef gUseControllerNotifications_c
#define gUseControllerNotifications_c 1
#endif
2. RSSI 獲取接口,通過 RX event types 下的 rssi 接口,可以獲取到 RSSI 值。
3. 在 BleApp_HandleControllerNotification 函數中,通過 gNotifConnRxPdu_c 通知事件,就可以一直獲取連接狀態下非空數據包的 RSSI 值。
4. 之後我們可以使用手機上的 NXP IoT Toolbox app 中的 WirelessUART 與 KW45_EVK 板進行 BLE 連接,連接成功後,串口會一直列印實時的 RSSI 值,因為這裡給出來的是無符號 uint 類型的 RSSI 值,而實際的 RSSI 值都是負數值,所以需要將該值取補碼才是我們標準的 rssi_value(dBm)。
以上就是對 KW45 RSSI 值獲取的一個介紹,通常來說, RSSI 值是比較不穩定的,因為受環境因素的影響較大,所以如果用來做定位的時候,需要對其進行濾波後才能保證定位更加精準。
參考資料:
- Bluetooth Low Energy Application Developer's Guide
評論