利用树莓派追踪飞机航行轨迹的骚姿势分享

2017-08-12 105780人围观 ,发现 8 个不明物体 极客

8.jpg

开篇

你知道如何利用你手中的树莓派来观察天空中的飞机吗?通过调谐和接收距离你所在地点250英里以外飞机无线电信号,你就可以追踪飞机航线,而完成这个任务,仅需要随处就能购买到的廉价USB电视棒。

本文将介绍如何追踪飞机飞行航道以及规律,同时介绍项目中用到的软件、硬件,以及使用Docker开源容器引擎来管理物联网项目中的软件。

该项目类似 FlightAware网站项目,后者已经可以可以分析来自世界各地几万人次的飞机飞行路线,而这种项目中需要用到的设备,仅仅是35美元的树莓派以及USB电视棒。

如果你有兴趣的话可以拿起手中的工具来,并为这些实时追踪飞机的网站(FlightAware.com、Flightradar24和planefinder.net)尽一份力,你将会获得详细的度量值(无线电定向与测距(雷达))数据以及其它奖励。

2.jpg

为什么要分析飞机飞行规律?

对于那些对树莓派不感兴趣的人来说该项目很实用,成本也很低

可以实现在线追踪飞机飞行规律并与你所在地的航班日程对比

安放天线并获取超详细的飞行统计数据

将数据用于自己的编程项目,同时可以学习到有关航空的知识

最重要的是,这是一个非常有趣的项目,可通过研究树莓派来获得满足感,值得一提的是,这个项目不会用到很多钱。

零件

树莓派,SD卡(Raspbian Lite 、PIXEL)

我建议使用树莓派2、3代,这样有更多的可用内存,并可以进行多任务处理(如果想安装多个接收器还想省钱可以使用Pi Zero)

USB电视棒

FlightAware Pro Stick(注意自己树莓派的型号)-内置静噪滤波器

SMA连接器-配置1090 MHz天线

DVB-T USB电视棒(Pimoroni上购买的)-我之前做了测试并选择该芯片型号,并将伸缩天线推至最小位置

NESDR SDR-三天线、SMA接口,考虑城市环境因素内置静噪滤波器

如果你想要买更便宜的接收器,需要保证他们有R820T 芯片组的设备。

注:为了取得更明显的实验结果,请购买品牌USB电视棒(没有必然联系)

天线

DVB-T USB电视棒主要利用天线接收电视机信号,而非1090 MHz的ADS-B信号。虽然你仍可以观察到一些飞机航道,但这取决于你所在位置范围内飞机高度和地面开阔度。

如果你需要一个1090 MHz天线,你可以购买一个SMA接头(3 dBi版本)。我曾做了一个样品,并将它放在窗台上,结果仅获取到150英里范围内的飞行航道。

最终当我使用FlightAware外置天线的时候,你可以观察到250英里的飞行航道,如果你安装在屋顶上,那么你就会观察的更远。

功率问题

你也需要一个2.5a-3a的电源,以确保有足够的电力为树莓派和USB电视棒供电,你当然可去官网购买树莓派(Pimoroni),ModMyPi还有树莓派3件套,然后你就可以继续开始这个项目了。

术语

我们将会使用usb电视棒来接收飞机ADS-B信号,但我们先从飞机的定义开始解释。

ADS-B信号

现代飞机可以从导航仪器面板上的自动应答器上收集信息,并利用ADS-B信号将这些信息传播到周边地区。任何人都可以接收这样的信号信息,无论是一架飞行控制台、飞机或一台树莓派。

自动相关监视-广播(ADS-B),确切说是一种监视技术,飞机通过卫星导航确定其位置,并定期发送信号,使之能被追踪。

DVB-T USB电视棒

电视调谐器DVB-T,主要为数字视频广播(地面站)接收设备。当然你也可以使用这些设备来接收喜欢的电视节目,也不是所有的DVB-T设备都能改变用途,这就需要购买之前进行详细的研究。

SMA天线接头

SMA(微型版)连接器会比同轴款小些,如果你购买了廉价的DVB-T,那么有可能需要配更小的连接器,上面会有一个“辫子”。这些主要的天线连接器(同轴款连接器、SMA以及RF)都可以从网上电子商店购买,解码ADS-B信号核心便是 dump1090,就1090来说是我们处理和解码原始数据时,所用到的频率大小。

dump1090是一个开源项目,该项目经手数人,不断进行完善和改进。所以在选择软件构建和测试时会令人觉得困惑。

3.jpg

5.jpg

这是我在GitHub上找到该系统的历史:

antirez在2012年圣诞节期间开始这个项目

MalcolmRobb 接手该项目,衍生代码并添加更多功能

mutability在MalcolmRobb衍生代码工作之后继续开始

FlightAware 接手项目后保留了mutability 库文件

我们使用 Docker来架构代码,这样你就可以很容易的在终端运行指令,使用Docker 优点:

可重复构建编写脚本程序

可以让我们在不同版本代码之间切换

不用安装在树莓派什么程序,这样使用起来也很方便

可以与朋友共享映像文件,也可以与其它树莓派共享

对于dump1090多数版本来说还有一个网络接口,可以让你实时查询飞机航道

FlightAware

FlightAware是上文提到的网站之一,你可以使用dump1090汇总到的数据,之后使用虚拟雷达将其可视化。当然你也可以获得详细的统计数据,帮助你跟踪飞机航道以及飞行范围。

这是我的显示界面,利用的工具是FlightAware专用天线以及DVB-T(降噪)。

6.png

你可以查看我的详细信息(alexellisuk),这里有更多的统计数据。

MLAT

MLAT-多点定位场面监视系统(如树莓派),用来追踪ADS-B信号,它能够准确的分析时间偏差,这样可以比单一追踪信号获取更多航道信息。

软件安装

安装Docker

我们下面就会使用Docker 映像,我们可以添加除主机二进制文件以外的文件

$ curl -sSL https://get.docker.com | sh

从GitHub上下载

$ git clone https://github.com/alexellis/eyes-in-the-sky

USB电视棒黑名单

为了电视棒兼容 dump1090,我们在其内核模块设置了黑名单。

添加到文件目录/etc/modprobe.d/blacklist.conf:

blacklist dvb_usb_rtl28xxu  

重新启动

dump1090

7.jpg

安装dump1090

如果你想要查看自己的位置(经度以及维度),请用CMD命令 编辑最后一行Dockerfile.malcolmrobb,你就可以在谷歌地图发现自己的位置了。

$ cd eyes-in-the-sky/dump1090

$ docker build -t alexellis2/dump1090:malcomrobb . -f Dockerfile.malcolmrobb

-t-指的是我们之后指定的图像名称

-f-我自定义一个函数名称Dockerfile,同时相当于为mutability也提供一个

使用Docker ,你可以在软件中将图像分享给其他人,同时上传到Docker 项目中,这样出现问题之后可以继续架构dump1090,如若出现问题也不需要从头再来。

$ docker pull alexellis2/dump1090:malcolmrobb

测试dump1090

测试代码

$ docker rm -f 1090 # remove any old container

$ docker run --privileged -p 8080:8080 -p 30005:30005 -p 30003:30003 --privileged --name 1090 -d alexellis2/dump1090:malcomrobb

docker 的功能主要负责运行你的代码,如果你重启树莓派并运行docker,同时加载dump 1090,则需要在docker运行指令rm -f 1090来阻止这一进程。

- P指令已经标记Docker容器端口,你可以通过更改Docker容器端口号和名称,并运行dump1090

-d指令便是将Docker容器以daemon方式运行,如果仅仅是看到控制台输出信息,请输入

docker logs --tail 20 -f 1090

sample-log.png

如果你清楚树莓派的IP地址,那么你现在就可以打开网页

http://192.168.0.10:8080/

当然你也可以利用ifconfig指令查找IP地址

那么你现在就可以登录到树莓派,找出飞机航道,以及你现在所在位置

提示:无权限访问

如果不想用高级权限运行Docker容器,那么可以利用以识别USB设备名称,然后更改,例如输入–privileged 或–device=/dev/bus/usb/001/004

这时你应该输入004,最终通过输入lsusb指令查找正确号码

$ lsusb

Bus 001 Device 004: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T  

安装FlightAware

虽然之前也介绍了几个飞行航道分析网站,但我还是选择FlightAware,他们的软件与你dump1090相连,并统计数据与网上的其他人的数据对比。

你可以安装FlightAware.deb文件到你的树莓派中,当然我已经创建了一个文件(Docker),这样做有两个优点,即不需要进行软件拷贝,还有就是不需要在树莓派的帮助下进行程序版本切换,无论是使用图像文件还是分享图像,都需要输入指令如下

docker pull alexellis2/flightaware:3.5.0

:

$ cd eyes-in-the-sky/flightaware

$ docker build -t alexellis2/flightaware:3.5.0 .

注:一定小心最后一行末尾的圆点

现在就可以在FlightAware.com网站上注册一个账号

编辑piaware.conf 文件更改下面信息

主机地址(树莓派IP地址)

FlightAware用户名(注册信息)

FlightAware密码(注册信息)

FlightAware 通过 MAC地址选取树莓派信息是正确的,幸运的是,我们可以利用软件更改Docker中 MAC地址。如果仅仅是改变MAC 地址,那么里面每一部分都是独立的。

运行并观察最后结果

$ cd eyes-in-the-sky/flightaware

$ docker rm -f piaware_1

$ docker run --mac-address 02:42:ac:11:00:01 -v `pwd`/piaware.conf:/etc/piaware.conf --name piaware_1 -d alexellis2/piaware:3.5.0

看到出现结果之后按下Control + C

$ docker logs --tail 20 -f piaware_1

几分钟后你就可以在线看到自己树莓派的相关信息

常见问题

设备功率多少?

树莓派2/3以及Pi Zero 需要2-3瓦特,当dump1090程序在树莓派上工作时,用电量会增长50%,这对Pi Zero来说也是一样的,这其中额外电力主要为 USB DVB-T供电。

能用充电宝为设备供电吗?

可以,如果你每天追踪航班运行不到3个小时,那么就可以坚持3天。

我可以使用太阳能发电装置供电?

我想使用太阳能发电装置并不是一个明智的选择,你不能在这种情况下稳定运行树莓派,而且你还需要额外的设备,包括控制器、太阳能电池板以及蓄电池。

你最好在屋顶开阔地方放置设备,然后通过网络控制树莓派,这是我之前用到的零件清单(点我查看)。

有没有在外部设备存储镜像文件的解决方案?

首先你可以趣 FlightAware上下载相应文件,并存储在sd卡中,如果你之前按前文使用标准的配件,那么你可以直接在设备上安装dump1090系统以及对应软件。

你打算详细解读里面每个零件功能以及其它用途吗?

如果大家对这篇文章关注多了,我会在以后详细解读里每个组件的其它用途。

注:树莓派易受电压尖峰影响,因此请考虑使用电涌保护器以防止损坏,如果您所在地区为高电压尖峰地区,请考虑使用800焦耳的电涌保护器。

*参考来源:alexellis,饭团君编译,转载请注明来自Freebuf.com

发表评论

已有 8 条评论

取消
Loading...

特别推荐

关注我们 分享每日精选文章

css.php