使用RTL2832电视棒接收ADS-B信号追踪飞机飞行轨迹
前言 无线电技术在当今世界非常重要，从生活中的遥控小玩具到我们通信的手机，再到航空航天，无时无刻不起到重要作用。从麦克斯韦提出电磁场理论并预言了电磁波存在，到业余无线电爱好者发明早期的“电报装置”-“火花电台”；无线电技术的时代就拉开了序幕。随着电子技术的发展，半导体技术到超大规模集成电路的发展，也让无线电通信技术从模拟通信转向数字通信。如今在一个芯片上集成调制解调、编码解码、发射接收已经成为一件非常简单的事情。但是如此高的集成度，便意味着编解码算法的的升级换代需要更换整个芯片处理，这既是浪费也是麻烦，于是人们就想有没有办法设计一套硬件，其信号的编解码、调制解调等都可以通过软件数据定义实现，硬件只提供一个信号发射接收的平台。于是软件定义无线电的概念便出现了。 RTL2832电视棒的价格非常便宜，只需要人民币50元左右即可在淘宝买到。它是基于瑞昱RTL2832方案实现的一个USB DVB-T电视调谐接收器，将其插在电脑USB口上，安装一个软件就可以在电脑上接收电视节目。目前中国大陆用它看电视可能够呛了，也许国外可能有市场吧。国外某大佬发现RTL2832有个特殊模式，可以直接将原始数据传输到电脑上，其工作频率大约在20M~1700M范围。随后几位大佬逆向了这货的驱动程序、接口，成功的把原始数据拉到了电脑上，然后他们开发了各种处理这种原始数据的程序，为我们带来了低廉的软件定义无线电方案。更多硬件相关资料见文末参考链接 入手此物后作为入门的第一件事自然就是跟随前辈的脚步，复现使用其配合SDR#接收FM广播的用途。国内应该不会有人买这货看电视吧！主要操作就是下载SDR#，解压并运行内部的一个批处理下载扩展文件，使用zadig替换驱动程序并最终运行SDR#接收FM广播。确定无误后可以尝试接收民航频段与对讲机频段。通过这些操作，你已经初步领略了软件定义无线电的魅力，同一个硬件，可以收FM广播频段，也可以收对讲机使用的430M频段；可以按调频的方式解，也可以按条幅的方式解，而这设备只需要人民币50元左右，这便是软件定义无线电的优点。以上这些都非常简单，本文就不再赘述。 本文目标是接收ADS-B信号以追踪飞机飞行轨迹。民航飞机为了安全性等原因，设计了一个ADS-B发信机，具体历史不再赘述。飞行中它不断的向周围发送一个ADS-B信号，信号频率为1090MHz，信号中包含了飞机的ICAO编码、飞机航班号、机型、经纬度、当前高度、目标高度、速度、航向角等信息。我们接收这些信息后就可以在地图中标记出飞机的位置，了解到飞机的航线，通过航班号我们可以在互联网上查到这架飞机的航线等信息。 操作 整个过程并不复杂，大致如下：首先下载相关工具，将电视棒接好天线通过USB接口与电脑连接并安装驱动程序；配置软件RTL1090，其解码RTL电视棒获取的数据并在本地搭建一个服务端。然后安装配置VirtualRadar，其提供一个可以通过浏览器访问的图形界面。以下为详细过程： 安装配置RTL1090套件 在RTL1090官网下载RTL1090-IMU，按官网介绍，这是一个安装和维护工具，它通过网络获取最新版本的RTL1090主程序以及RelWithDebInfo与zadig。RelWithDebInfo是RTL_SDR工具包，它提供各种访问接口；zadig则是驱动程序。 在欲安装的位置新建一个文件夹，名称自拟。将RTL1090-IMU的程序解压到文件夹中，将RTL2832电视棒插入到USB接口，双击运行。在主界面的Install and Update页面右侧点击New Install然后选择操作系统，然后点击Return to application folder按钮将安装目录设置为当前文件夹。继续等待安装工具完成相关文件的下载，这个过程中工具会自动解压相关资源并放在正确的位置。 等待其完成安装后，Zadig会自动运行，若出现UAC提示，请同意其管理页权限。参考安装工具的提示完成驱动安装并关闭RTL1090-IMU。具体如下： 在Zadig中勾选Options->List All Devices，然后在设备列表中尝试选择BULK-IN INTERFACE (INTERFACE 0)或类似RTL2832XXX字样的设备。选定后应该能在下方的USB ID中看到0BDA:2832或0BDA:2838字样，即为正确选择设备。箭头右侧应选择WinUSB而不是其他，然后点击下方的Install Driver按钮开始安装驱动，完成后关闭Zadig。 在RTL1090官网下载最新版主程序包，覆盖解压到之前建立的安装目录。 双击运行 rtl1090.exe ,点击START按钮若出现防火墙提示，请允许。这样便完成了RTL1090的配置。此时正常应能收到上空经过飞机的信号了，相关信息可以在Table选项卡中看到。 安装配置VirtualRadar 在VirtualRadar官网下载Virtual Radar Server并安装，安装过程中Server Port页面可以设置网页访问的端口。然后下载Database Writer Plugin选择同一目录安装。 右键管理员权限运行主程序，点击Tools->Options，在左侧选择Receivers->Receiver。在右侧点击Wizard按钮打开接收器配置向导，Kind of receiver选择A software defined radio，Decoder program选择RTL1090，是否运行在本地选择Yes，然后点击Finish完成向导。 此时点击Test Connection按钮，应该会弹出Connection can be made的提示，如果不正常请检查防火墙设置、软件配置等信息无误，并尝试重启RTL1090和Virtual Radar。若一切正常建立，RTL1090软件中右下的TCP图标应该会亮起。 确保右键管理员权限运行VirtualRadar，点击Tools->Plugins，在Database Writer中点击Options，勾选Enabled，点击Create Database后点击OK。 此时，访问本机IP:之前设置的端口号即可访问飞机追踪页面。点击Menu -> 第二个图标，将语言设置为中文。然后点击菜单->选项，勾选设置当前坐标，然后去地图上拖动地图到自己所在的区域，然后在此页面取消勾选。以此完成当前坐标的设置,这样每次打开页面便会默认加载正确的位置。 勾选通知所有已选择的航空器，可以在监测到飞机时语音播报相关信息。其他设置可自行研究。 参考 RTL-SDR（RTL-2832）的模拟前端硬件结构分析 RTL1090官网 VirtualRadar官网