2026年2月17日

使用RTL-SDR V4收飛機的 ADS-B畫出畫出航跡地圖

10年前寫過一篇文章《從飛機雲估測我和誰看同一片天空》,那段時間,我的興趣全在天邊那些稍縱即逝的飛機雲。那時候用望遠鏡和 FlightRadar24 的 App,看著高空的飛機雲,手動對照飛航紀錄,確認自己在新竹的窗前,視覺極限大約能觸及 80 公里外的北海岸上空。

十年過去了,現在可以直接在電腦前,直接收集那些從萬米高空來的無線電訊號。這一次用的工具是 RTL-SDR v4-一根像USB隨身碟的小東西,是一個廣域的無線電接收器。

它內部是 RTL2832U 這顆由台灣瑞昱(Realtek)設計的晶片。最初它是為了讓電腦看 DVB-T 數位電視而生,但因為它能將類比訊號直接轉為數位數據(SDR,軟體定義無線電),且價格極其低廉,意外被開發者開啟了「上帝視角」。

我購買的這款 RTL-SDR Blog V4,比起一般的電視棒做了更多專業改進。它內建了 R828D 調諧器,並加上了三路濾波器,可以應對常見的 FM 電台、手機基地台或 Wi-Fi 干擾。價格也不貴,我在前幾周從官網以 $49.95 USD 的價格入手。

最近用它玩了好幾個專案,先來介紹這個收飛機訊號的專案吧。

飛機在飛行時,會透過 ADS-B (Automatic Dependent Surveillance-Broadcast) 系統,不斷地向四周廣播自己的經緯度、高度、速度與編號。要收這個訊號,只要把偶極天線架起來,再安裝 readsb 和 tar1090 這些開源軟體( windows上也有軟體),就可以直接接收。

飛機廣播 ADS-B 訊號的頻率固定在 1090 MHz。在這個頻率下,訊號像光線一樣是「直視傳輸,只要中間有山頭或建築物擋住,你就收不到它。剛好我的窗戶面東北有廣闊的天空,所以當然可以收到不少訊號。

再來是天線,RTL-SDR Blog V4的套件有兩組偶極天線,有一組長一組短。要收1090MHz就用兩組短的,單根長度6.5cm左右,兩根擺成垂直地面,貼在窗戶上就可以了。

天線長度需從無線電波的波長來計算。偶極天線設計為「半波偶極天線」(Half-wave Dipole),也就是天線的總長度約為半個波長。
  1. 光速約 300,000,000 m/s,1090MHz的無線電波在空氣中的全波長是300 / 1090  = 0.275  m
  2. 半波長就是27.5 / 2 =  13.75 cm
  3. 考量無線電波在金屬導體中傳輸的速度比在真空慢,實際天線長度需要乘以一個修正係數(通常取 0.95):理論總長度:13.75 cm x  0.95 = 13.1 cm
  4. 偶極天線的兩臂長度偶極天線由兩根對稱的金屬棒組成,中央連接同軸電纜,因此單臂長度 13.1 cm/ 2 = 6.55 cm

我使用的軟體 readsb 負責在底層解碼這些 1090 MHz 的原始脈衝,而 tar1090 則提供了類似 FlightRadar24 的視覺介面,讓我能即時在地圖上看到飛機的動向。(其實就和flightradar24界面相似,但看到的就是自己收的飛機訊號)


為了讓數據更有趣,我寫了一段 Python 腳本,將接收到的 Hex 碼轉換為視覺化的地圖,就可以看看自己的「新竹收訊圖」。

透過熱點圖和航線圖就能看到一些有趣現象:

這張圖定義了我的「數位視野」。因為我的窗戶面東北,加上東南方有山脈屏障,熱點圖展示的是地形對無線電的物理限制。紅色點代表是三萬英呎的飛機,過台灣不停的那種,而藍色點就是要進出桃園機場的飛機。

與 10 年前手動比對不同,現在我可以自動抓取訊號在地圖上標示出來那些飛機的航路,整體範圍大約是我觀測地的北方到東北方半徑80公里的範圍,這和十年前我用望遠鏡看到的範圍一致。

這次的觀察最令我著迷的不再只是看飛機在哪裡,因為我看到透過 SDR 接收到的進階數據(EHS),還有更多有趣的資料可以應用來分析,這就等下篇再來說。