本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!
温馨提示:“开源SDR实验室”是北京的。
本文实例可以用于了解ADS-B工作原理、ADS-B接收及ADS-B报文数据解析数据。
目录
一、ADS-B系统简介
ADS-B系统即广播式自动相关监视系统,由多地面站和机载站构成,以网状、多点对多点方式完成数据双向通信。它主要实施空对空监视。 一般情况下,只需机载电子设备(GPS接收机、数据链收发机及其天线、驾驶舱冲突信息显示器CDTI),不需要任何地面辅助设备即可完成相关功能,装备了ADS-B的飞机可通过数据链广播其自身的精确位置和其它数据(如速度、高度及飞机是否转弯、爬升或下降等)。ADS-B接收机与空管系统、其它飞机的机载ADS-B结合起来,在空地都能提供精确、实时的冲突信息。【百度百科:ADS-B系统】
二、实验软硬件
硬件:RaspberryPi 4B、Hackrf One、支持L波段的全向天线
软件:RaspberryPi OS、gnuradio 3.7
三、实验步骤
1、硬件连接
将Hackrf One连接在RaspberryPi 4B,天线连接在Hackrf One天线接口上,并将天线放在窗外。
2、安装HackRF和GNU Radio
具体方法参见《树莓派安装HackRF、LimeSDR、GNU Radio、Gqrx》。
3、安装gr-adsb
打开终端依次输入:
git clone https://github.com/wnagele/gr-adsb.git
mkdir build
cd build
cmake ../
make
sudo make install
安装完成以后就可以在gnuradio中搜索到ADSB Freamer、ADSB Decoder模块,这两个模块是用于在gnuradio中处理ADSB消息的成帧器和解码器模块。
4、运行实例流图
在examples文件夹下有flowagraph.grc文件,可以在gnuradio下打开并运行。注意:Correlate Access Code模块可能因gnuradio的不同版本模块而丢失(miss block),此时在gnuradio下重新搜索一个可替代模块即可,并正确输入原模块的Access Code:1010000101000000。 File Sink模块重新选择一个用于存储CVS解码信息的文件。
默认情况下,设备源使用Osmocom Source,并具有适合RTL-SDR的增益设置。如果要使用任何其他外围设备,请确保使用瀑布图测试不同的增益设置,以检测其接收效果是否良好。 ADSB成帧器的输入期望位序列是实际数据速率的两倍(以识别下降沿和上升沿)。如果要以更高的速率进行采样,则必须确保最终的比特流与该速率(2Msps)相匹配。
5、实验结果
gnuradio下运行时的结果:
2、查看接收到CVS解码信息
找到File Sink模块所保存的文件,其中包含航班号、实时经纬度等信息。该文件可用于后续对信息的处理。
四、有用链接和联系方式
https://baike.baidu.com/item/ADS-B%E7%B3%BB%E7%BB%9F/15596886?fr=aladdin
https://github.com/wnagele/gr-adsb.git