用rtl-sdr接收ADS-B信号

因为工作中要对ADS-B信号进行软解调,于是买了一块rtl28xx电视棒接收ADS-B信号。

首先安装rtl-sdr

git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install

sudo ldconfig
sudo cp ../rtl-sdr.rules /etc/udev/rules.d/

安装好rtl-sdr之后,需要增加黑名单(因为系统默认为RTL28xx为电视棒)。进入路径 /etc/modprobe.d,获得超级用户权限

touch blacklist-rtl.conf
echo "blacklist dvb_usb_rtl28xxu" > blacklist-rtl.conf

由于我之前已将rtl28xxu电视棒插到电脑上了,我还需要重启机器。然后运行

rtl_test -t

运行结果如下

运行结果会出现PLL not locked!和 No E4000 tuner found, aborting的提示字样。这是正常的,不用担心。

接着,从github上下载antirez的代码。

git clone git://github.com/tedsluis/dump1090.git dump1090
cd dump1090
make
./dump1090 --interactive

应该就可以就接收到信号了。

但是,这个代码在我的台式机上编译报错。因为Makefile指向的库文件找不到(但是我感觉Makefile的设置没有问题),无奈之下,上网找解决方案。通过把库的绝对路径直接写进makefile里才顺利编译。
 

CFLAGS?=-O2 -g -Wall -W $(shell pkg-config --cflags librtlsdr)
LDLIBS+=$(shell pkg-config --libs librtlsdr) -lpthread -lm
CC?=gcc
PROGNAME=dump1090

all: dump1090

%.o: %.c
	$(CC) $(CFLAGS) -c $<

dump1090: dump1090.o anet.o
	$(CC) -g -o dump1090 dump1090.o anet.o $(LDFLAGS) $(LDLIBS)

clean:
	rm -f *.o dump1090

改成

CFLAGS?=-O2 -g -Wall -W $(shell pkg-config --cflags librtlsdr)
LDLIBS+=-lrtlsdr -lpthread -lm
CC?=gcc
PROGNAME=dump1090

all: dump1090

%.o: %.c
	$(CC) $(CFLAGS) -c $<

dump1090: dump1090.o anet.o
	$(CC) -g -o dump1090 dump1090.o anet.o $(LDFLAGS) $(LDLIBS)

clean:
	rm -f *.o dump1090

刚运行程序,就收到了一条消息

打开航旅纵横

再看一下现在的时间大概11点30左右,确认就是这架航班了。

其它结果

在房间里用一颗普通的烂天线收到 17675 米海拔高度的信号。另外,还可以对 rtl28xxu 的频偏进行校正,将增益模式设为 AGC 模式或者提高接收增益,可以进一步提高接收性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值