HackRF结合GnuRadio发射接收广播

前言

本科毕设老板给了这块板子,网上也看了一些教程,但感觉实际有用的例子也不是很多,WBFM广播的发射接收是一个很好的入门的例子啦,废话不多说,就说说我实际一套操作下来的感受和心得吧.

环境配置

参考博文:ubuntu HackRF One相关环境搭建:https://blog.csdn.net/OpenSourceSDR/article/details/81143661
个人建议直接看最后的备注,一路apt安装下来就可以了,简单便捷.

Linux下使用Gqrx接收WBFM广播

个人建议可以先在linux下使用Gqrx接收WBFM广播,看一下自己所在区域接收小姑比较好的广播,方便实际接收广播时找到比较合适的频率.我在windows下和linux下都分别接收了广播,都是跟着下面这两个教程直接一步一步做的,个人感觉linux下使用gqrx效果更好一些.
windows下:https://blog.csdn.net/OpenSourceSDR/article/details/63685683
linux下:https://blog.csdn.net/OpenSourceSDR/article/details/51911220
对于linux那篇文章中提到的一个参数Squelch有些不太懂,百度了也不太理解

Gnuradio接收WBFM广播

建议可以去B站看一下Hackrf官方教程第一集,带字幕,讲解的也比较详细.
B站链接:https://www.bilibili.com/video/av7079120?from=search&seid=2218772546625839564
其他参考的博文:
使用GNURadio和RTL-SDR搭建FM广播接收机:https://blog.csdn.net/gzydominating40/article/details/78683580
GNU Radio GRC HackRF实现FM接收:https://blog.csdn.net/OpenSourceSDR/article/details/52634934

第一篇博文对WBFM的解调有一个不错的解释,第二篇博文就是具体的操作步骤了.
接下来是我个人的实验过程:

第一步:搭建如图所示框图:
HackRF结合GnuRadio发射接收广播_第1张图片1.接收信号
使用osmocom source模块来接收广播信号,设置中心频率center_freq=97.9MHz,设置了一个滑块channel_freq,默认频率为105.5MHz,注意,这里channel_freq才是我们收听广播的频率,center_freq是接收信号的中心频率,采样率设置为20MHz,决定了接收信号的范围,以中心频率为中心左右各10MHz.
如果你在运行当中看到下方显示栏中一直出现aUOOOO这种奇怪的字符,说明你采样率设置的太高了,电脑跟不上,可以调低一些,如果只是刚开始运行时出现了这种字符,稳定运行后不出现则不影响,hackrf采样率默认为10MHz,最高20MHz

2.频谱搬移
接收信号乘上频率为center_freq-channel_freq的余弦波将目标广播频谱搬移到正中心,可从频谱图中观察到频谱的移动,可以看到目标105.5MHz被搬移到了频谱中心,刚接收到的频谱正中心非常高的一个峰为DCoffset,所以最好不要将中心频率直接设置为你的目标频率,虽然我也没搞懂为什么会有这个,以及如何消除.
HackRF结合GnuRadio发射接收广播_第2张图片
3.滤波和重采样
接着就是一个低通滤波器了,把我们想听的广播信号给滤出来,滤波器设置decimation=100,则经过滤波器采样率变为20M/100=200kHz
再经过重采样,采样率变为:200k*12/5=480k,与接下来的WBFM解调模块的正交率相同

4.WBFM解调
直接用自带的WBFM解调模块就ok了,正交率设置为480k,audio decimation 设置为10,则采样率变为48k
受第一篇博文启发,可以用Quadrature Demod模块来代替WBFM解调模块,该模块就是计算前后两个字符之间的相位差,当然效果没有WBFM解调模块那么好了,重采样模块的参数也需要调整.
HackRF结合GnuRadio发射接收广播_第3张图片
5.播放器
multiply const模块来调节声音的大小
audio sink模块来播放解调后的广播信号,采样率选择48khz

如果你,一步一步照着来没有出错的话,那么这是很你就应该听到美妙的广播了!

你可能感兴趣的:(HackRF结合GnuRadio发射接收广播)