利用BLE和Wi-Fi三角定位進行實時室內追蹤
室內GPS使用困難?學習如何利用BLE和Wi-Fi三角定位構建DIY實時室內追蹤系統。準確追蹤人、寵物或機器人,并在設備上實時查看位置。
室內導航在許多應用領域變得越來越重要——從可穿戴設備、室內追蹤系統到寵物活動監測。它在家庭自動化和機器人等領域也發揮著關鍵作用。問題是GPS在室內根本不好用。雷達和激光雷達等技術可以解決這個問題,但它們成本高昂且日常使用時往往不切實際。
這時,一個更簡單且經濟的解決方案就派上用場了:BLE三角定位和Wi-Fi三角定位。這些方法允許通過使用BLE或Wi-Fi信號,將其信號強度(RSSI,接收信號強度指示器)轉換為距離信息,實現實時室內定位。
在典型的設置中,我們在房間或建筑的天花板或角落放置三個或更多錨點或信標。通過持續分析這些信標之間的信號強度,系統可以估算人員或物體在空間內的準確位置。
為了實現這一點,我們可以使用小型、緊湊的BLE或Wi-Fi板。一個很好的例子是Indusboard,它內置了Wi-Fi,還有加速度計和磁力計。這不僅有助于追蹤移動,還提供實時方向信息。
信標數量取決于你希望系統的準確度以及你愿意花費多少。在很多情況下,使用四個信標效果更好。
將Indusboard單元放置在房間的四個天花板角落,而非墻上,可以提高準確性并控制成本。只需對代碼做些微調,這種設置甚至可以幫助估算房間的深度和高度。

圖1。室內定位的網頁界面
在繼續之前,讓我們先了解三角測量方法是什么,以及它如何用于房間或房屋內部的實時監控和追蹤,甚至跨多層樓。
什么是三角測量法,它是如何使用的?
三角測量方法通過利用來自多個固定點的Wi-Fi或藍牙信號的角度和信號強度,精確確定物體的位置。
對于室內追蹤,我們設置了特殊的接收器——如Wi-Fi、藍牙或超寬頻錨點——能夠檢測來自設備信號的到達角度(AoA)。通過沿這些角度方向畫線,線條交匯點顯示設備的精確位置。
由于該方法依賴幾何結構而非僅限信號強度,因此更準確且穩定,非常適合在建筑物、倉庫或工廠內部導航和跟蹤。
如何計算Wi-Fi三角定位?
假設你在房間的已知位置有3個WiFi信標(例如角落分別在(0,0)、(5,0)、(2.5,4)米)。你的手機(標簽)會從每個(-60、-70、-65 dBm)接收RSSI。
將RSSI轉換為距離:使用類似“距離=10^(參考RSSI-測量RSSI)/(10 * 路徑損耗因子)”這樣的公式。
參考RSSI(A):1米波段信號(例如,-59 dBm,測試)。
路徑損耗(n):室內信號的衰落方式(例如2.5)。
示例:RSSI -60:距離 = 10^((-59 – (-60)) / (10*2.5)) = 10^(1/25) ≈ 1.1米。
對所有3個都做:d1=1.1m,d2=2.5m,d3=1.8m。
繪制圓圈(三邊形):想象每個信標周圍的圓圈,半徑為距離。
圓1:中心(0,0),半徑1.1米。
圓2:中心(5,0),半徑2.5米。
圓3:中心(2.5,4),半徑1.8米。
你的位置是它們交匯的地方(通常一點)。
求交數學:對每個圓使用公式 (x – x1)^2 + (y – y1)^2 = d1^2。
相減對以求解x/y:例如,x = (d1^2 – d2^2 + x2^2 – x1^2) / (2*(x2 – x1)) + y 項。
對于多層(3D):加Z,使用第四信標或最小二方(平均最佳擬合)。
示例結果:(2.0, 2.0)m。像Python/Excel這樣的工具可以計算。

圖2。定位與計算的三邊測量方法
所需硬件:
| 組成部分 | 數量 | 描述 |
| IndusBoard Coin V2 | 5 | 最小的硬幣大小鍵盤帶Wi-Fi |
| 3.3伏電池 | 1 | 鋰聚合物/離子電池 |
| USB-C 線纜 | 1 | 動力/編程 |
室內追蹤的逐步編碼
這里,我們需要創建兩個獨立的代碼:一個用于發送Wi-Fi信號并作為Wi-Fi熱點的錨點/信標,另一個用于接收這些信號的標簽。
錨點/信標應放置在房間的墻壁或天花板上——分別在兩側或不同樓層,具體取決于你是否想要多層定位系統。標簽會貼在寵物的項圈、人的脖子上或機器人底盤上。這些標簽將作為接收器,收集錨點所有Wi-Fi網絡的信號,并利用前述三角測量方法計算位置。最后,位置信息可以實時顯示在網頁上。
錨/信標代碼
錨代碼方面,我們使用 ESP-NOW 庫。該庫允許多個ESP設備直接通信,無需互聯網連接或外部Wi-Fi路由器。它甚至可以創建自己的連接網絡。
在代碼中,每個錨點應擁有唯一的設備ID(1、2、3、4等),以便標簽識別它正在通信的錨點,并確定每個ID的距離。接下來,為每個信標設置廣播地址,并通過ESP-NOW發送數據。
代碼準備好后,上傳到工業板上每個錨點。你需要至少3個錨點,但建議4個以提升精度。對于多層定位,你可以修改標簽代碼以包含樓層層級數據,但本例中我們重點關注單一房間定位。

圖3。Code snippet for beacon/Ancor device
除了使用 ESP-NOW外,我們還需要配置 Wi-Fi 的接入點模式,使每個錨點都能作為熱點使用。這使我們能夠連接網絡并實時查看位置數據,實現在同一網絡上的持續追蹤。
Indusboard Coin內置磁力計和加速度計,幫助實時測量移動速度和方向。磁力計用于獲取方向數據和旋轉度,使系統能夠確定精確的方向。這使得定位和定位系統更加準確和安全,提供精準的定位和實時追蹤,從而使我們的室內定位系統更加先進。

圖4。代碼片段標簽
關于標簽代碼,我們還創建了另一個版本,當Indusboard信標放置在房間天花板的角落時,不僅可以確定物體的二維位置,還能確定物體的深度和高度。

圖5。3D室內定位
測試實時室內追蹤
現在,使用3.3V電池或通過Indusboard Coin背面的JST連接器為錨點供電。將每個錨點放置在房間的角落,如圖6所示。
接著,給標簽供電并根據需要安裝:比如作為人的項圈、寵物的項圈,或者固定在機器人上——基本上任何你想追蹤的東西都可以。將你的筆記本電腦或手機連接到標簽設備的Wi-Fi熱點。
打開瀏覽器,輸入IP地址192.168.4.1。你現在可以實時查看數據,包括移動方向、房間內位置以及每個信標/錨點的距離。界面上的綠點會隨著標簽移動而移動,讓你實時追蹤它。

圖6。實時室內追蹤,支持BLE、Wi-Fi三角定位和Indusboard








評論