Flightradar24获得飞机实时数据的原理

botbot
最后编辑于 2019年02月19日 开发

想要查看某个飞机的位置,可以用Flightradar24或Flightaware,它们能实时跟踪全球航班动态。

那么Flightradar24和Flightaware是如何获得飞机数据的呢?一位叫做DmitrySpb79的俄罗斯开发者,解释了获取飞机数据的原理。

原来是每架民用客机都配备了一个叫做ADS-B(Automatic Dependent Surveillance-Broadcast)的应答器,该应答器使用1090M赫兹的无线电频率,以未加密的方式发送各种飞行遥测数据,包括飞机类型、坐标、目的地等。

所以只需要使用适当的硬件,接受应答器发射出的信号,然后解码,就可以获得飞机的数据。

下图中标有"1200"的盒子就是ADS-B应答器:

Photo from Garmin.com

接收无线电信号的设备很多,常用的是一种叫做RTL-SDR的无线电接收器。RTL-SDR全称是Register Transfer Logic Software Defined Radio,寄存器传输逻辑软件定义无线电。

把RTL-SDR接收器连接到电脑,解码信号,就可以得到数据。也可以不使用电脑,而是使用更便宜的芯片系统,比如能运行Linux的卡片式电脑树莓派Raspberry Pi 2/3。

所以,一个可以上网的Raspberry Pi 2/3、一个带适配器的RTL-SDR、一个天线,就可以自己获取飞机数据。当然这些东西都有现成的,网上一搜一堆。DmitrySpb79使用的是从中国买的基于RTL-SDR V3的套件,27美元,带有一个天线和一个迷你支架,如下图右侧所示:

硬件都安装好之后,需在在Raspberry Pi安装Flightradar24的软件解码器,命令如下:

sudo bash -c "$(wget -O - http://repo.feed.flightradar24.com/install_fr24_rpi.sh)"

该解码器安装后会自动请求它所需要的数据(坐标、接收器类型、电子邮件地址),因此要保持网络连接。

一切OK后,可以用电脑登录Raspberry Pi的IP地址,会看到解码器的工作状态:

Image From: DmitrySpb79

如果不愿意上传数据,或者不愿意使用Flightradar24的软件解码器,还可以使用在Raspberry Pi本地运行的软件解码器,源代码及使用方法在Github上:
https://github.com/antirez/dump1090

DmitrySpb79在habr.com的文章:
Flightradar24 — how it works?

登录注册后才能评论。