自己在家接收来自飞机的ADS-B讯号!

想看飞机又不想透过 FlightRadar24 !?

那就自己架一个接收站吧 !

https://ithelp.ithome.com.tw/upload/images/20211209/20111805eFIHUOmrnS.png

一、认识 ADS-B

广播式自动相关监视(英语:Automatic dependent surveillance – broadcast,缩写ADS–B)是一种飞机监视技术,飞机通过卫星导航系统确定其位置,并进行定期广播,使其可被追踪。空中交通管制地面站可以接收这些资讯并作为二次雷达的一个替代品,从而不需要从地面发送问询信号。其他飞机也可接收这些资讯以提供姿态感知和进行自主规避。
ADS–B是一种「自动」系统,它不需要机师或其他外部资讯输入,而是依赖飞机导航系统的数据。

资料来源: wiki -广播式自动相关监视

绝大部分的民航机都会配备这个装置,并不断发送讯号告知其他飞机、塔台目前自身飞机的高度、经纬度、呼号、速度、航向等等讯息。由於这些讯息并不会加密,因此就可以透过天线来接收这些资料。蛮多能查看即时飞机的网站及App也都是透过这个原理来取得资料,像是 FlightRadar24FlightAware

https://ithelp.ithome.com.tw/upload/images/20211209/20111805qSkf4FRGpS.png

二、设备

首先你需要一个能够接收到 1090mhz 的设备,这边使用 RTL2832U + R820T 晶片组的电视棒就可以了,在露天虾皮等等平台搜寻 RTL2832U + R820T 可以找到很多厂牌及款式,价格大概400~600,买最便宜的就可以了。

如第一张图,我在四楼使用电视棒附的小天线就能收到近中国大陆的讯号,在遮蔽物少的地方是可以不用额外买天线来用。

https://ithelp.ithome.com.tw/upload/images/20211209/20111805TIPmYZic8v.jpg

由於电视棒只能接收不能发送,因此不用担心「干扰通信」以及「没有业余无线电执照」等会触法问题!
此外也可以将接收到的信号提供给 FlightRadar24 等网站,可以换取免费的高级会员资格

三、安装

在网路上能找到许多能解码ADS-B的软件,不过几乎都是要付费的,且功能也都蛮阳春的。

这边要使用的是 GitHub 上的开源专案 Dump1090,它不但是免费的还有内建 WebServer 让你能在本机上看到图形化的资料(如第一张图),如果觉得太丑的话还能自己写网页来接 Dump1090 吐出来的资料。

GitHub

Linux & Mac

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

Windows下就省下安装的步骤,简单很多!直接下载後里面有一个 dump1090-win.1.10.3010.14.zip 解压缩後一样下指令就可以用了。


<<:  数位签章(digital signature)

>>:  GPU程序设计(3) -- 矩阵运算

[Day 06] 特徵图想让人分群 ~模型们的迁移学习战~ 第一季 (迁移学习)

前言 「指月录」卷二十八有道: 「见山是山,见水是水;见山不是山,见水不是水;见山仍是山,见水仍是水...

css visibility

今天介绍visibility的两个属性:visible和hidden visibility只控制物件...

Day5 Python基础语法三

今天的影片内容为介绍之後程序设计不可或缺的if else 以及for回圈,千万别错过呦~ 以下为影片...

【额外分享】超深度铁人赛後自我审视

本文同步刊於 Medium 目录 前言 铁人赛 系列文提到的项目 比赛结束之後 区块链 近期规划 未...

Day12 数据图表化 - 如何建立 Visualize

在今天的文章中,我们准备开始建立视觉化(Visualize)元件,来展现一下kibana强大的图形化...