开篇
你知道如何利用你手中的树莓派来观察天空中的飞机吗?通过调谐和接收距离你所在地点250英里以外飞机无线电信号,你就可以追踪飞机航线,而完成这个任务,仅需要随处就能购买到的廉价USB电视棒。
本文将介绍如何追踪飞机飞行航道以及规律,同时介绍项目中用到的软件、硬件,以及使用Docker开源容器引擎来管理物联网项目中的软件。
该项目类似 FlightAware网站项目,后者已经可以可以分析来自世界各地几万人次的飞机飞行路线,而这种项目中需要用到的设备,仅仅是35美元的树莓派以及USB电视棒。
如果你有兴趣的话可以拿起手中的工具来,并为这些实时追踪飞机的网站(FlightAware.com、Flightradar24和planefinder.net)尽一份力,你将会获得详细的度量值(无线电定向与测距(雷达))数据以及其它奖励。
为什么要分析飞机飞行规律?
对于那些对树莓派不感兴趣的人来说该项目很实用,成本也很低
可以实现在线追踪飞机飞行规律并与你所在地的航班日程对比
安放天线并获取超详细的飞行统计数据
将数据用于自己的编程项目,同时可以学习到有关航空的知识
最重要的是,这是一个非常有趣的项目,可通过研究树莓派来获得满足感,值得一提的是,这个项目不会用到很多钱。
零件
树莓派,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是一个开源项目,该项目经手数人,不断进行完善和改进。所以在选择软件构建和测试时会令人觉得困惑。
这是我在GitHub上找到该系统的历史:
antirez在2012年圣诞节期间开始这个项目
MalcolmRobb 接手该项目,衍生代码并添加更多功能
mutability在MalcolmRobb衍生代码工作之后继续开始
FlightAware 接手项目后保留了mutability 库文件
我们使用 Docker来架构代码,这样你就可以很容易的在终端运行指令,使用Docker 优点:
可重复构建编写脚本程序
可以让我们在不同版本代码之间切换
不用安装在树莓派什么程序,这样使用起来也很方便
可以与朋友共享映像文件,也可以与其它树莓派共享
对于dump1090多数版本来说还有一个网络接口,可以让你实时查询飞机航道
FlightAware
FlightAware是上文提到的网站之一,你可以使用dump1090汇总到的数据,之后使用虚拟雷达将其可视化。当然你也可以获得详细的统计数据,帮助你跟踪飞机航道以及飞行范围。
这是我的显示界面,利用的工具是FlightAware专用天线以及DVB-T(降噪)。
你可以查看我的详细信息(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
安装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
如果你清楚树莓派的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焦耳的电涌保护器。