群友們好!
本文是無線測距系統系列的下篇。而發表於 2024 年的 👉🏻上篇 由於論述過於寬泛和挖坑不填等原因,已經遭到了群友的批鬥 😅 更有甚者,要在我的評論區直接代替我進行續寫……我真的謝謝妳啊!!
爲了不辜負群友們的好奇心,我必須儘快嚴肅認真完成這一系列!
Contents
序:無線測距技術的普及
「嘀嘀嘀嘀嘀,嘀嘀嘀……]
蘋果用戶又™️在玩弄 AirTag 了!💢 安卓用戶不甘地想道。
AirTag 是 Apple 的明星產品,衆所周知的是,他們早已將超寬帶 (UWB) 測距技術玩得爐火純青。藉助遍佈世界各地的 Apple 設備,AirTag 不僅實現了遠程離線定位,而且任意一臺 iPhone 都能通過 UWB 信號來精確測量其位置和距離。Apple 一套軟硬件結合的拳法下來,安卓用戶們漏出了一聲最後的低吟「好強的生態影響力……」然後駕鶴西去。
現在反觀安卓陣營,據我所知,能勉強和 AirTag 扳一下手腕的追蹤器產品大概就只有三星的 SmartTag。它使用和 AirTag 非常相似的方案,依靠遍佈各地的三星手機和硬件 UWB 分別實現遠程定位和近距離測距。

這時候可能就有群友要問了:妳根本就沒把 Google Find Hub 放在眼裏!!!等我們谷爹一發力,以他的號召力,聯合全球安卓廠商,建立一個全球性的尋物網路豈不是輕而易舉??——啊對對對,妳說得非常好!尋物網路真要建,直接給全球手機的 Play 服務發個更新就完事了。聽起來很美好,然而,這個願景卻有一個巨大的缺失——UWB。
沒有 UWB,精確的近距離測距就難以實現,而由於 UWB 和一般手機通信的工作頻譜完全不同,它需要一套專門的硬件。財大氣粗的 Apple 廚子一句話就能給每一臺 iPhone 塞進 UWB 功能。而安卓陣營這邊?就算谷爹有三頭六臂,面對那些油鹽不進,我行我素,爾虞我詐,偷工減料的安卓廠商,他也沒有給每一臺安卓手機強行塞 UWB 的能力。
對於大多數安卓廠商而言,引入新硬件的阻力極大,所以最好的方案就使用已有的硬件來實現新功能。2024 年底,藍牙 6.0 標準發佈。這套標準無疑給安卓版無線測距帶去了一線生機。不過在談論藍牙 6.0 到底搞了甚麼黑科技之前,請容我先談論一下雷達系統和 UWB,帶各位體會一下它們大相徑庭的技術路線。
方案一:電老虎雷達
說到測距就不能不說雷達,雷達的測距原理就是測量信號在物體上反彈帶來的時間差,簡單粗暴,容易理解;而其毛病也很簡單,太大了,太費電了。
雖然我不是很董軍事裝備,但是這大概是我能在網上找到的最小的雷達 (KLJ-7A),用來搭載在戰鬥機上面的。

就算是這麼一個小東西,如果要供電,按保守中的保守估計的話,俺覺得也要一個外接充電寶。
啊,我指的不是妳的手機充電寶,而是這種:

那爲什麼普通的雷達會這麼費電呢?這是因爲雷達依賴於目標物體來被動反射信號,根據雷達方程:
其中左邊 是接收功率,右邊 是發射功率, 是與目標的距離, 是目標的截面积, 是接收天線的有效面積。
可見,如果完全依賴目標物的反射電磁波來探測,那麼雷達的接收功率會和距離的 4 次方成反比,所以當距離增加的時候,接收功率會迅速下降。爲了能接收微弱的反射電磁波,雷達必須增加輸出功率來彌補途中功率的損失。此外,接收功率還會受物體反射面積和天線面積影響,爲了能探測到小物體,雷達必須配備一個大型天線。
但是好在俺們沒必要把雷達塞進手機。因爲 AirTag 的測距不依賴於被動地反射電磁波,AirTag 會主動向 iPhone 發射信號,它還可以在接收到手機的信號之後,立刻返回一個信號,這樣 iPhone 就可以根據信號在空中飛行的時間 (ToF) 來計算距離了。
(距離 = 光速 * 信號飛行時間)
和雷達不同,手機上的測距系統不依賴目標物體被動反射電磁波,俺們也就脫離了無腦的輸出功率遊戲。下面就讓我們進入純粹優美的數學遊戲……
方案二:UWB 信號的物理學
這時候可能就有群友要問了:既然要探測的東西很近,還會主動發射信號,那爲什麼不直接用 Wi-Fi 或者藍牙來進行飛行時間 (ToF) 測距呢?
妳問得非常好!但是爲了回答妳,我先要去複習一下《通信原理》的課本,,,😅

我複習完了。讓我和妳進行一些微小的計算,以便對信號的飛行時間產生概念。
假設被測的距離是 15 米,並且要求精度要達到 15cm 以內,而電波以光速傳播,那麼俺們可以計算信號來回的時間是:
此外,該系統要分辨出 15cm 的距離差,那麼該系統能分辨出的最小時間間隔必須小於:
根據這個算式,俺們能夠計算出最小時間分辨間隔(誤差)和測距精度之間的關係,如下表所示。
表 1:時間誤差和測距誤差之間的關係
| 時間測量誤差 | 測距系統的最佳距離誤差 |
|---|---|
| 1 ns | 15 cm |
| 10 ns | 1.5 m |
| 100 ns | 15 m |
| 1 μs | 150 m |
| 10 μs | 1.5 km |
那麼,這個時間測量誤差是由甚麼決定的呢?我們已經知道,計算 ToF 需要知道信號的發送時間和返回的到達時間。發送時間很好確定,發送端打開接收機的同時開始計時就行了。問題是如何精確測量返回信號的到達時間。
工程師們會自然而然地想到:當天線上檢測到一個脈衝信號的時候,記錄到達的瞬間的時間,問題不就解決了?不過,爲了降低時間測量誤差,提高檢測的精度,這個脈衝信號必須要邊緣銳利,形狀明顯。看上去,一個方波信號是最佳的選擇。
讓我先火速產生一個持續時間爲 1ns、方方正正的方波信號——
500 GSa/s
左圖是脈衝的波形,電路一旦檢測到這個陡峭的上升沿就會記錄其到達時間。右邊是其頻譜,頻譜中間的 0 是低頻分量,往兩邊走是高頻分量。相信玩過信號處理的群友們已經開始會心一笑了,但是如果妳笑容逐漸消失也沒有關係 🥶 妳只需要知道頻譜資源有限,不可無限佔用就行了,然而這個信號似乎快佔滿了 0 ~ 10 GHz 的所有頻段。
試試調整脈衝的寬度,看看對頻譜有什麼影響。
爲了方便測量,俺們希望這個脈衝越方越好、越短越好,可是越短的脈衝信號佔用的頻譜就越寬。此外,即使放寬脈衝的寬度,其頻譜向高頻的衰減也是比較緩慢的,這種信號要是真放出來,就會對週圍無辜的設備造成干擾,這是現實世界所不允許的。俺們想要的是,信號的頻譜只在批准的範圍內存在,一旦超出批准的頻段,就立馬衰減到 0,這是墜吼的。
假設現在我們最多允許向這個脈衝信號分配 1 GHz 的帶寬,超出範圍的部分要清零。之後,還要把他搬運到 Wi-Fi 使用的 6 GHz 頻段才能發射出去。
爲了實現這些目標,俺們需要一條流水線來處理這些脈衝,如下所示:
脈衝產生之後先會經過一個帶通濾波器,消除掉 1 GHz 以上的頻率分量,記這個信號爲信號 1️⃣,待會要用示波器看。然後這個帶限脈衝被一個 6 GHz 的載波進行調製,把頻率搬到高頻,記這個高頻的輸出信號爲信號 2️⃣。
值得注意的是,對脈衝信號進行頻譜限制會導致信號變形,失去我們想要的清晰形狀。下面我使用一臺函數發生器來向妳展示信號 1️⃣ 是一個甚麼形狀。
500 GSa/s
左圖是之前的「1 ns 方波」的頻譜被低通濾波之後的結果,右圖的信號1️⃣則是被變形後的方波。可見這個方波再也不方了,變成了一個類似三角形的脈衝,並且兩邊出現了些許波紋。妳可以通過調整上面的濾波器帶寬來看看這個信號會如何變形。
值得注意的是,帶寬越寬,信號越方、越清晰;而帶寬越窄,信號越圓滑,而且兩邊波紋就越狂暴。當妳把帶寬限制在 160 MHz 以下的時候,兩邊的波紋已經儼然成爲瘋狂宇宙,原來的形狀早已消失不見。由於其邊緣不再清晰,我們將無法精確地測出它的到達時間,就像這樣:
最終導致無法進行精確的測距。
還記得上面那個對照表嗎?在無線測距中,時間測量上的差之毫釐,將是距離測量上的謬以千里。因此,只有帶寬足夠寬、形狀足夠清晰的的脈衝才能被用來精確測距。
工程上,在採樣率足夠的前提下,一個信號能提供的時間分辨率 和其帶寬 粗略具有如下關係:
根據這個關係,俺們可以把上面那個表擴充一下:
表 2:時間誤差/測距誤差/信號帶寬之間的關係
| 時間測量誤差 | 測距系統的最佳距離誤差 | 所需帶寬估算 |
|---|---|---|
| 1 ns | 15 cm | 1 GHz |
| 10 ns | 1.5 m | 100 MHz |
| 100 ns | 15 m | 10 MHz |
| 1 μs | 150 m | 1 MHz |
| 10 μs | 1.5 km | 100 kHz |
綜上,超寬帶信號所具有的波形清晰、容易測量的性質,已經使其成爲測距解決方案中的蘋果技術。它可以提供釐米級別的測量精度,就算成本較高,它也還是理所當然地得到了 AirTag 的重用,可謂是門當戶對。
出於好奇心,在結束本章之前,我還想看看在空中飄過的 UWB 信號究竟是長什麼樣的。根據上面的框圖,帶限方波信號1️⃣在和 6 GHz 載波混合之後會成爲已調信號2️⃣,這個信號會被進一步放大,然後從天線發射出去。
讓俺們把信號1️⃣和信號2️⃣擺在一起看看:
500 GSa/s
左圖是帶限方波信號,右邊則是調製後的輸出信號。妳可以調整方波輸出寬度,然後就會發現只要帶寬不變,其上升沿的陡峭程度是不會變的。換句話說,測量的精確度取決於上升沿的陡峭程度,也就取決於信號的帶寬。
俺們還可以發現,右邊那團波形的包絡具有左邊信號的形狀。這個載波雖然看上去是一個平平無奇的正弦波,但是妳要知道,它已經來到了 6 GHz 的高頻段,其週期只有轉瞬即逝的 秒。而這麼一個 UWB 脈衝也只具有區區十幾個個波峰的寬度,屬於是在空間和時間上的極限壓縮。
我希望這裏的內容能給妳一點想像的素材——當妳下次看到 AirTag 的時候,正好有一團團超級狹窄的波從妳眼前瞬間掠過,而接收機在捕捉到這個波之後,可以準確地測出它的到達時間。
幕間:使用 Wi-Fi 進行安卓測距的可能性
看到這邊,可能就有安卓群友想要問了:現在 Wi-Fi 的頻道帶寬動輒 160 MHz,如果可以接受一米的安卓誤差,感覺拿來測距也不難吧?——妳問得非常好!但是我很遺憾地告訴妳,現有的 Wi-Fi 硬件就不是爲了發射短脈衝而設計的,在不對硬件或者物理層進行暴力魔改的情況下,很難用來測距。讓俺們來看一眼 5 GHz 的 Wi-Fi 信號的幀格式:

如圖所示,按照 Wi-Fi 的玩法,光是發送一個 QAM 符號就需要 4 μs (4000 ns),而一個幀需要上百個符號,發送這些符號需要大量的時間。並且,長信號更容易受到多徑效應的影響,使得其邊緣更加難以測量。很明顯,這樣的信號是爲了傳輸數據而打造,而不是用來測距的。
說一句題外話,這張圖展示的僅僅是是一路信號的格式。在 160 MHz 的 Wi-Fi 中,共有 468 路這樣的信號(子載波)共同承擔傳輸任務。這些子載波中的 QAM 符號會在最後被合成一個巨大的 OFDM 符號發射出去,從而最大化吞吐量。
OFDM(正交頻分復用)是我在學習數字信號處理時最喜歡的部分。它使用了最優美的數學,通過最靈巧的方法構造信號;它還和快速傅里葉變換 (FFT) 一起,解決了曾經被視爲最無解的問題。基於 OFDM 的工程成果已經最深入地覆蓋到了世界上的每一個角落,而如果 OFDM 未曾被發明,妳手機的網速可能永遠不會比 2007 年那時的更快。
現在讓我們回到無線測距。俺們已經知道,對於 ToF 測距,一套專門的 UWB 硬件和協議是必不可少的。可是光是「安裝新硬件」這個門檻,就能勸退大部分降本增笑的安卓廠商,無線測距的普及似乎成爲了遙不可及的夢想。
方案三:安卓用戶的幸福時刻
1. 藍牙 6.0 標準的推出
AirTag 第一代於 2021 年發佈,而 iPhone 首次對 UWB 的支持卻出現在了 2019 年的 iPhone 11 上。可見在 AirTag 推出前,Apple 就已經提前爲 UWB 技術鋪好了道路。在 AirTag 推出的那一刻,人們驚奇地發現這玩意居然是無需折騰、開箱即用的,彷彿一切都已經在暗中安排好了。
一時間,人們被震撼親媽,對這個充滿了魔力的小玩具交口稱讚。評測視頻也是鋪天蓋地而來,我還記得那時一晚上就看了三條不同的評測視頻。

最令我震撼的部分莫過於 iPhone 可以實時地,精確地,同時測量 AirTag 的距離和方向。如果說 Apple 的軟件可以被山寨,雲服務和生態可以被追趕,那麼硬件的差距就是橫在 Apple 和安卓廠商之間的天塹。
身爲一個安卓人,俺從那時起就一直在想,這功能啥時候能下放安卓啊。想着想着,時間就來到了 2024 年。九月的一天,正在瀏覽科技類新聞的我看到了一個標題——
《藍牙 6.0 標準公開:支持無線測距》😇
甚麼?安卓用戶的幸福時刻要到來了?俺連夜學習技術文檔,得知了工程師們通過對硬件做出最低限度的更改,並利用一種叫「基於相位測距 (Phase-Based Ranging/PBR)」的技術,巧妙地把無線測距功能搬到了藍牙上。
當時的俺覺得,PBR 是帶着鐐銬跳舞的技術,是藍牙在面對 UWB 時唱出的最後的悲歌 😅 不過這玩意確實值得掰一掰,於是我發表了一篇 blog 叫《無線測距系統的奧妙(上)》。
可是在下篇應該怎麼寫這件事上,我陷入了江局。因爲在手撕 PBR 之前,我需要先解釋 UWB;要手撕 UWB,就必須理解數字信號處理和通信原理的一些知識,而當時的俺還不具備把示波器搬上 blog 的能力,光是文字描述也沒法傳授這些知識。於是這個系列就沒了下文。
2026 年,我對於這個話題已經變得足夠普通且自信,現在就讓我來把這個坑填了吧!
2. 基於頻率和相位差的測算
藍牙的工作頻率在 2.4 G 附近,並且單個頻道帶寬是 2 MHz 甚至是 1 MHz。根據俺們之前的分析,這麼窄的信道帶寬沒法產生足夠尖銳的脈衝,也就無法測出脈衝的到達時間,導致其無法進行 ToF 測距。所以不要再問「爲什麼我不能在檢測到波形的一瞬間記錄時間」了 😇
那麼這次藍牙 6.0 的 PBR 究竟是用了甚麼黑魔法來實現測距的呢?
從數學上來看,PBR 可以被概括爲一句話:
- 利用多個已知頻率間隔的載波,通過測量接收信號的相位差()的變化量與頻率變化()的線性比例關係 (斜率) 來計算飛行距離():
按照普通通信教材 (普信教材) 的劇本,接下來就要進行數學推導了。首先是列兩個正弦波方程,然後在一通不知所云的求解之後會得到上面那個式子。不幸的是,我以往接受的就是這種神魔教育。而這種教育方法能真正教會學生嗎?如會。我也知道大家很討厭這種教科書式寫法,所以這裏我決定略過數學推導,讓我們先想象以下場景——
現有 A、B 兩臺藍牙設備如下,他倆天賦異稟,內部振盪器完全同步。
現在把他倆分開,其距離未知。爲了測量這段距離,A 向 B 發出了一道 2.4 GHz 的正弦波:
根據 ,這個波的波長是 0.125 米。要求解 AB 之間的距離,只需要知道他倆之間有多少個波長就好了。但是 B 並不具有上帝視角,沒法看到波在半途中的狀況,他能看到的就只有波到達自己的時候的相位(右邊的橙色圓圈)。由於 B 和 A 的振盪器完全同步,B 可以計算出這個波在終點時相對於起點時的相位差 :
B 並不知道這個信號到達自己之前在空中到底轉過了多少圈,所以相位差上面會有一個 的未知項。只要……只要能求出在空中轉過的圈數 ,再用相位差算出最後的小半圈是多長,兩者之間的距離 就近在眼前了,他們之間的關係是:
我們需要嘗試構造一個方程來解出 。爲此,我們可以讓 A 改變發射頻率到 2.41 GHz:
然後讓 B 重新測量相位差 :
重新列出算式:
觀察上述兩個方程可知,俺們現在有 、、 三個未知數,要解出 d 就必須要消滅掉其中一個 n。那麼現在我們想要知道的是,這個波在改變了一點點頻率,再次到達 B 的時候,在空中轉過的完整圈數是否改變了呢?陷入沉思……
- 頻率提高了一點點(提高了 10 MHz)
- 波長縮短了一點點(縮短了 0.52 毫米)
- 這個波在空中轉過了好多好多圈,要是每一圈的波長都縮短了一點點的話……
- 有沒有可能要多轉一圈才能到達 B?
- 假設這個波多轉了一圈,相當於波長的縮短在這麼長距離的累積下,總共縮短了一個 (這裏算波長是 0.125 米)
- 每一圈縮短 0.52 毫米,累積要縮短 0.125 米的話,波在空中至少要轉 241 圈
- 241 個波長相當於 30 米
也就是說,在俺們的實驗條件下,只要測距距離不超過 30 米,就算稍微調整了一下頻率(調整了一下彈簧的緊密程度),波在空中旋轉過的完整圈數是不會變的。於是我們就可以對比兩次測量得出的「最後那一小截角度(相位差)」來反推出總距離。
根據上述思考,。現在留給我們的就是兩個方程求解兩個未知數了,在一通高中水平的代數操作和化簡過後,解得:
轉過的完整圈數:
所求距離:
從式子中可見,距離和「相位差的變化除以頻率的變化」成正比。要是我們畫一張圖,橫軸是頻率 ,縱軸是在這個頻率下測量得到的相位差 ,然後把測量結果的點畫上去,用直線連起來,這個直線的斜率乘上 就是我們想要的距離了。上面舉的例子屬於是測量兩個點然後計算直線斜率的方法。
爲了提高測距的精確度,藍牙設備在測量相位差時,會嘗試多更換幾個頻點來避免干擾和測量誤差,如上圖所示。在每個頻點的測量全部完成之後,設備會用直線進行擬合,然後計算出所需的斜率,求解出最終的距離。
3. 兩臺設備的精密配合
到了這邊,數學原理的部分就講完了。但是別忘了,俺們的理論中還有一塊最大的缺漏——俺們在一開始假設了 A 和 B 的內部振盪器完全同步,但是這是不可能的。試想大街上走來一個人,妳會覺得她的腦迴路和妳同步嗎?所以現實中大概率是這樣的:
由於 B 的振盪器和 A 不同步,計算相位差的任務就不能交給 B 來做了,因爲 B 根本不知道出發時候的相位是啥。那麼剩下的路只剩一條: A 親自上陣,親自測量波返回時和出發時的相位差。
爲了達成這個目標,B 需要配合 A,將接收到的波形按照原頻率、原相位發射回去。這聽上去是個不可能的任務,妳該怎麼精確追蹤每秒變動幾十億次的波形……但是世界上有一種好用的東西叫做鎖相環,B 可以用鎖相環的輸出信號來精確同步自己的內部振盪器。
最後,整個系統的工作狀態如下所示。注意右邊 B 的振盪器相位和接收信號的相位鎖定。
按照老方法,在 A 處求出這個頻率下的相位差爲:
這之後的步驟就和之前討論的一樣了:多取幾個不同的頻率,測出相位差,描點並擬合斜率。在 B 充當反射端的場景下,測出的長度是信號一去一回的路程,所以最終距離的公式,應該給上面方程的解除以 2:
最後,爲了方便妳理解,我畫了一個 PBR 測距流程圖,希望妳能看懂 😋
結語:技術的車輪滾滾向前
在這篇文章中,俺們分別探討了 AirTag 和藍牙 6.0 中的無線測距的原理。AirTag 使用 UWB 信號,直接測量脈衝的飛行時間來計算距離;而藍牙 6.0 由於信號帶寬太窄,無法產生用來測距的脈衝,因而採用了通過測量相位差來間接求解距離的方法。無論是哪種方法,文中提到的數學原理只是冰山一角,而要讓整個系統跑起來,通信協議、安全和加密、硬件校準和抗干擾等方面的考慮也是必不可少的。
基於相位的測距 (PBR) 的思想最早源於上個世紀,彼時的戰爭年代推動了包括 PBR 在內的雷達科技的極大進步。然而,把 PBR 塞進個人電子產品的想法應該是本世紀才出現的。藍牙作爲一種被廣泛使用的硬件標準,爲 PBR 提供了實踐的舞臺;而藍牙自己也在渴求着進行無線測距的能力,他們就這麼雙向奔赴了。我覺得,這篇 2019 年的論文『👉🏻A high-accuracy phase-based ranging solution with Bluetooth Low Energy (BLE)』應該是第一個把 PBR 塞進藍牙的嘗試。
截至我在寫這篇文章的時候,AirTag 已經出了第二代,市場上也出現了一些搭載藍牙 6.0 的手機和筆電,但是我卻沒有找到利用藍牙 6.0 進行測距的追蹤器硬件或者 APP。即使藍牙 6.0 不需要額外硬件,讓那些奸詐狡猾的安卓廠商升級現有硬件也是需要一些時間的。讓我們靜觀其變,我預測國內安卓廠商開始對這項技術進行自吹自擂的場景,應該會發生在今年下半年……😇
技術的車輪確實在滾滾向前,只不過,一項技術從紙上的數學公式到最終成爲產品,需要幾年甚至幾十年的時間。UWB 如此,PBR 如此,就連 FFT 在無孔不入地滲透到人類生活之前,都經歷了半個多世紀的發展。下一次,當我們再看到一些習以爲常的科技產品時,不要忘記「讓數學公式成爲現實」的工程學精神和一代代工程師們的不懈努力。

請停用 Dark Reader
評論區
妳的評論和建議是我前進的動力!
我很需要妳的評論!無論長短還是水,我都會非常高興 😘