Widora-neo+电视棒 玩软件无线电

SDR看起来很高深的样子, 其实用一个电视棒 通过USB连接widora-neo就可以做成个简单的SDR接收机了.

1. 硬件
电视棒选择使用RTL2832U+R820T芯片的 .
R820T是调谐器,接收频率范围24MHz - 1766 MHz, RTL2832U是螃蟹家的一款用于数字电视广播接收的解调芯片,后来有大神发现它可以直接输出原始的I/Q采样数据.
下面是其中一款:
0_1482130600535_DVB.jpg

2. SDR 软件.
在openwrt平台上使用rtl_sdr软件可以方便地接收和处理数字信号.
依次安装下列软件:
2.1 opkg install libusb-1.0 ( ???RTL2832是支持USB2.0的)
2.2 opkg install librtlsdr
2.3 opkg install rtl-sdr

(可以在此下载: 2_1482130632396_libusb-1.0_1.0.19-1_ramips_24kec.ipk 1_1482130632396_librtlsdr_2014-02-10_ramips_24kec.ipk 0_1482130632395_rtl-sdr_2014-02-10_ramips_24kec.ipk

3. 收听调频广播
3.1 做一个fm.sh文件,内容如下:
#!/bin/sh
rtl_fm -A fast -M wbfm -E deemp -s 256k -r 96k -f ${*}M | aplay -r 48k -f dat -t raw -c 2

3.2 完成后赋权限:
chmod 755 fm.sh

3.3 运行 ./fm.sh 103.7 可以播放当地103.7MHz的调频电台
接收灵敏度略低于商品调频收音机.

4. 指定频率范围内搜索电台:
例子:
rtl_fm -A fast -M wbfm -E deemp -s 256k -r 96k -l 120 -f 100M:103M:25k | aplay -r 48k -f dat -t raw -c 2
100MHz 至 103MHz 范围内搜索调频电台, 步进25k, 播放搜索到的第一个台.
(-l 120 噪音抑制电平,弱台取小值.)

5. 收听航空波段
航空波段属于调幅波,仅给个例子,可以自己去研究.
rtl_fm -A lut -M am -s 10k -f 126.2917M | aplay -r 10k -f S16_LE -t raw

6. 接收飞行器广播信息
运行命令: rtl_adsb -V
可视化软件参见 http://www.rtl1090.com/

可以从中提取航班和检验码等信息:
使用方法: rtl_adsb | decode
放在后台运行: screen sh -c "rtl_adsb | decode >> record.data " (将提取的信息存到record.data文件中)
如果decode的当前目录未加入到PATH环境变量中,用 rtl_adsb | ./decode

7. 其他
7.1 可以tcp传送接收到的原始采样数据.
7.2 参考http://kmkeen.com/rtl-demod-guide/index.html可以了解更多rtl_sdr的使用说明.

@tykgood 是的,图形界面更直观,而且电脑上的SDR软件性能更好。嵌入式用的rtl_fm性能相对弱小,并且频率不能即时微调,应该可以修改下rtl_fm.c源码,让它用按键或遥控器来步进调台,这样就会方便多。

楼主大神呀!!
不过我觉得航班都是数据不是很直观,图像看着好点…个人观点哈

感觉在op下面的rtl命令不如win的hdsdr方便,如果听广播的话

老火腿了!!!!

用了一个上变频模块,将0-30MHz的短波搬移到 125-155MHz电视棒频率接收范围内。这样就可以收听短波了。
0_1487302157279_psb.JPG

  1. 按如下接线:
    0_1487302188841_widora-radio.jpg

  2. 我用下面的脚本来收听:
    freq=134.495M ( 9.5M实际频率 +125M变频 - 0.005M 固有频偏)
    rtl_fm -A lut -M am -s 6k -l 0 -f $freq | aplay -r 6k -f S16_LE -t raw
    0_1487302928515_upload-b1a3e857-6941-44d4-966c-2ce847d85008
    http://player.youku.com/player.php/sid/XMjUxNjc0NzQzMg==/v.swf
    我只是甩了根软线在窗外作为天线,在晚上可以收到不少台,在白天可以收到中国之音等强台. 用好点的短波天线效果会更好。

  3. rtl_fm 软件有缺点:
    3.1就是不能实时调谐,每次换台都要重新启动任务。不过我想这个肯定是可以改进的。
    3.2 软件没有AFC功能,容易漂台。
    3.3 邻台干扰。

总之,在Widora-openwrt上安装和使用SDR软件是可行的。

@tykgood 自己抓出来的数据更有意思 0_1486893261999_flight.xls

用过这个dump1090, 很不错。

使用dump1090
opkg install dump1090

最好在screen中运行
screen -S dump
dump1090 --aggressive --net --interactive

浏览器打开ip:8080就有了

给你提供个简便的方法

这几天玩得意犹未尽,增加了hash和定时保存的功能,0_1484267539250_decode

源代码放在这里:https://github.com/widora/ctest 见ads_b.c

0_1484268999531_ss.JPG

改进了一下,现在可以检错并提取座标了。0_1483512692979_decode2

0_1483512710876_upload-1aaf4566-635b-4802-8caf-3723c564a26f

直接用rtl_adsb 命令可以输出飞行器发布的ADS-B 28位字符信息。
为此编了一个程序,可以从中提取航班和检验码等信息0_1482980769822_decode
使用方法: rtl_adsb | decode
放在后台运行: screen sh -c "rtl_adsb | decode >> record.data " (将提取的信息存到record.data文件中)

结果会是这样的:
0_1482981147366_adsb.JPG
24位的CRC还可以用来纠错,还不知道如何来操作。

大神,我以后要跟你玩了!