廣播式自動相關監視(英語:Automatic dependent surveillance – broadcast,縮寫ADS–B)是一種飛機監視技術,飛機通過衛星導航系統確定其位置,並進行定期廣播,使其可被追蹤。空中交通管制地面站可以接收這些資訊並作為二次雷達的一個替代品,從而不需要從地面發送問詢信號。其他飛機也可接收這些資訊以提供姿態感知和進行自主規避。
ADS–B是一種「自動」系統,它不需要機師或其他外部資訊輸入,而是依賴飛機導航系統的數據。資料來源: wiki -廣播式自動相關監視
絕大部分的民航機都會配備這個裝置,並不斷發送訊號告知其他飛機、塔台目前自身飛機的高度、經緯度、呼號、速度、航向等等訊息。由於這些訊息並不會加密,因此就可以透過天線來接收這些資料。蠻多能查看即時飛機的網站及App也都是透過這個原理來取得資料,像是 FlightRadar24、FlightAware。
首先你需要一個能夠接收到 1090mhz
的設備,這邊使用 RTL2832U + R820T
晶片組的電視棒就可以了,在露天蝦皮等等平台搜尋 RTL2832U + R820T
可以找到很多廠牌及款式,價格大概400~600,買最便宜的就可以了。
如第一張圖,我在四樓使用電視棒附的小天線就能收到近中國大陸的訊號,在遮蔽物少的地方是可以不用額外買天線來用。
由於電視棒只能接收不能發送,因此不用擔心「干擾通信」以及「沒有業餘無線電執照」等會觸法問題!
此外也可以將接收到的信號提供給 FlightRadar24 等網站,可以換取免費的高級會員資格
在網路上能找到許多能解碼ADS-B
的軟體,不過幾乎都是要付費的,且功能也都蠻陽春的。
這邊要使用的是 GitHub 上的開源專案 Dump1090,它不但是免費的還有內建 WebServer
讓你能在本機上看到圖形化的資料(如第一張圖),如果覺得太醜的話還能自己寫網頁來接 Dump1090 吐出來的資料。
Linux 跟 Mac 會比較麻煩一點,首先先把專案 clone 下來:
git clone https://github.com/MalcolmRobb/dump1090.git
接著進資料夾下指令
cd ./dump1090
make
這時候會遇到問題,缺少了 rtl-sdr.h
。其實他就在資料夾 rtlsdr
裡面,只要把資料夾內的兩個東西複製到外面的目錄就好了!
/bin/sh: pkg-config: command not found
出現這個問題就是電腦中沒安裝 pkg-config
套件。只要安裝就好了。
# Linux
sudo apt-get install pkg-config
# Mac
brew install pkg-config
Package librtlsdr was not found in the pkg-config search path
這個問題是缺少 librtlsdr
套件,一樣也是安裝就好。
# Linux
sudo apt-get install librtlsdr
# Mac
brew install librtlsdr
透過 --help
可以看到有哪些可以使用的指令
./dump1090 --help
-----------------------------------------------------------------------------
| dump1090 ModeS Receiver Ver : 1.10.3010.14 |
-----------------------------------------------------------------------------
--device-index <index> Select RTL device (default: 0)
--gain <db> Set gain (default: max gain. Use -10 for auto-gain)
--enable-agc Enable the Automatic Gain Control (default: off)
--freq <hz> Set frequency (default: 1090 Mhz)
--ifile <filename> Read data from file (use '-' for stdin)
--interactive Interactive mode refreshing data on screen
--interactive-rows <num> Max number of rows in interactive mode (default: 15)
--interactive-ttl <sec> Remove from list if idle for <sec> (default: 60)
--interactive-rtl1090 Display flight table in RTL1090 format
--raw Show only messages hex values
--net Enable networking
--modeac Enable decoding of SSR Modes 3/A & 3/C
--net-beast TCP raw output in Beast binary format
--net-only Enable just networking, no RTL device or file used
--net-bind-address <ip> IP address to bind to (default: Any; Use 127.0.0.1 for private)
--net-http-port <port> HTTP server port (default: 8080)
--net-ri-port <port> TCP raw input listen port (default: 30001)
--net-ro-port <port> TCP raw output listen port (default: 30002)
--net-sbs-port <port> TCP BaseStation output listen port (default: 30003)
--net-bi-port <port> TCP Beast input listen port (default: 30004)
--net-bo-port <port> TCP Beast output listen port (default: 30005)
--net-ro-size <size> TCP raw output minimum size (default: 0)
--net-ro-rate <rate> TCP raw output memory flush rate (default: 0)
--net-heartbeat <rate> TCP heartbeat rate in seconds (default: 60 sec; 0 to disable)
--net-buffer <n> TCP buffer size 64Kb * (2^n) (default: n=0, 64Kb)
--lat <latitude> Reference/receiver latitude for surface posn (opt)
--lon <longitude> Reference/receiver longitude for surface posn (opt)
--fix Enable single-bits error correction using CRC
--no-fix Disable single-bits error correction using CRC
--no-crc-check Disable messages with broken CRC (discouraged)
--phase-enhance Enable phase enhancement
--aggressive More CPU for more messages (two bits fixes, ...)
--mlat display raw messages in Beast ascii mode
--stats With --ifile print stats at exit. No other output
--stats-every <seconds> Show and reset stats every <seconds> seconds
--onlyaddr Show only ICAO addresses (testing purposes)
--metric Use metric units (meters, km/h, ...)
--snip <level> Strip IQ file removing samples < level
--debug <flags> Debug mode (verbose), see README for details
--quiet Disable output to stdout. Use for daemon applications
--ppm <error> Set receiver error in parts per million (default 0)
--help Show this help
Debug mode flags: d = Log frames decoded with errors
D = Log frames decoded with zero errors
c = Log frames with bad CRC
C = Log frames with good CRC
p = Log frames with bad preamble
n = Log network debugging info
j = Log frames to frames.js, loadable by debug.html
如果要開成網頁並顯示在終端機則可以使用
./dump1090 --interactive --net
接著在終端就可以看到附近的飛機啦,這時打開瀏覽器進入 localhost:8080 就能看到網頁上的資訊啦!
Windows下就省下安裝的步驟,簡單很多!直接下載後裡面有一個 dump1090-win.1.10.3010.14.zip
解壓縮後一樣下指令就可以用了。