簡體   English   中英

如何讓 txPower 計算與 RSSI 的距離

[英]how to get txPower to calculate distance from RSSI

我從谷歌代碼得到了這個代碼:

void QBluetoothDeviceDiscoveryAgent::deviceDiscovered(const QBluetoothDeviceInfo &info)
QBluetoothDeviceInfo::rssi().

但是如何從`QBluetoothServiceDiscoveryAgent 獲得rssi 距離? 我嘗試使用 QBluetoothServiceDiscoveryAgent serviceInfo; quint i =serviceInfo.device().rssi();

這里我 = -43

如何將其轉換為距離? 我得到了“ 了解 ibeacon 距離”鏈接,但如何獲得發射器功率? 根據公式計算距離?

確保您了解 QBluetoothDeviceInfo::rssi() 的含義。 調用此函數會立即返回上次掃描設備時最后存儲的值。 如果你只收到一個廣告包,恰好是-90dB,然后立即連接,這個函數會一直返回-90,直到你斷開連接並再次掃描它。 連接的設備通常不會發送廣告數據包,因此您可以通過 Qt 讀取的 RSSI 在連接期間不會更新。

至於接近度,要獲得好的價值並不是那么容易。 要准確地從 RSSI 轉換為幾何距離,您必須知道發送方的原始/預期信號強度(或TX-power-level == RSSI at 1m distance )。 該值將因設備而異。 更糟糕的是,在實踐中,它也可能因發送方的電池電量、發送方/接收方彼此的物理方向、單個部件的質量、來自其他射頻設備的隨機干擾等因素而有很大差異。

BLE-folk 有一個博客解釋你該如何做。 你可以在這里閱讀 鏈接的文章沒有閱讀或假設發件人的理論最大 RSSI,而是建議隨時間收集多個 RSSI 值(+ 進行一些平均值/模式過濾),並使用當前平均值與之前的平均值進行比較值以確定您是接近還是遠離發件人。 結合使用您必須收集的真實世界數據進行一些微調,加上文檔閱讀和常識,您可能會為許多甚至大多數發送器設備開發接近度計算,其精確度約為一米或更小近在咫尺。 最后,這是您希望“校准”的設備數量與由於更高或更低的 TX 功率水平而改變值的設備之間的權衡。

缺點是 - 您無法測試市場上所有可能的設備,正如我之前所說,不同的設備具有不同的 TX 功率級別。 使用這種方法,您可以開發一種算法,以便對信號配置大致相同但其他設備似乎相差甚遠的設備進行非常好的測量。 這篇文章的作者談到為不同的供應商創建不同的配置文件,但這並沒有真正的幫助(考慮兩個相同的信標(“大/小”),一個用於大型,一個用於小型室內位置 - 僅使用 RSSI,您無法可靠地確定除非他們通過 GAP 或其他方式識別自己(如果您計划在 MacOS 或 iOS 上部署,請忘記 MAC 地址),否則您靠近小型信標或中距離到大型信標。

此外,為 Android BLE 開發的樂趣做好准備。 一些供應商知道他們的 BLE 實現非常糟糕和損壞,他們甚至禁用了所有 ROM 上的 HCI-Logging-Feature 來隱藏它。 在過去,其他人可以像 Win98 一樣通過以太網進行 BLE 核攻擊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM