
在上篇文章中我们通过将 AM Demod 替换为 WBFM Receive 以及一些简单修改,从 AM 转变为了 FM 接收器,这篇文章将在此基础上,连接 HackRF,使用 SDR 设备接收和处理实时的无线电信号,实现真正意义上的收听 FM 广播

将 File Source 替换为 Soapy HackRF Source,中心频率设置为 freq,可以额外加一个 QT GUI Frequency Sink 来查看频域图

然后直接运行即可,慢慢拖动 频率 按钮,找到频域图中的尖峰附近,看看能不能听到,如果你在屋里大概率是听不到的,只有嗤嗤啦啦的噪音,这时可以把天线甩到窗外去再试试。简单吧,只需要替换一个模块就可以使用硬件 SDR 设备啦!

刚接触 HackRF 的时候看过一个使用 HackRF 收听广播的教程,当时做出来的流程图是这样的:

我们来对比一下区别在哪,这是现在的流程图:

首先是 Source 信号源模块不同,一个采用的是 Soapy HackRF Source,一个采用 osmocom Source,Soapy 支持多种不同的 SDR 设备,可以直接在右侧 ctrl+f 搜索出来,不同设备要选择不同的模块;osmocom Source 支持的是 osmocom 项目的 SDR 设备,虽然也挺全的,但是参数设置上要复杂一些,很多参数都没用到

两者都使用了 Multiply 模块来进行频移,后面都通过了一个低通滤波器,再后面就有了一些差异,Rational Resampler 和 WBFM Receive 的位置不太一样,Rational Resampler 在前处理的是 FM 的信号,在后处理的是音频的信号,但不管在什么位置,都是为了调整采样率
之前的流程图中还额外加了一个调节音量的模块,最终都通过 Audio Sink 输出
整体的思路是一样的,都是通过 HackRF 硬件接收信号,通过与正弦函数相乘进行频移,然后经过低通滤波器进行滤波,再进行重采样与解调,最终通过电脑音频播放出来
记得刚接触的时候看着教程特别懵,仅仅是跟着教程一个一个搜索模块,把模块拖出来跟着教程设置参数、连线... 最后也不知道为什么这样一个流程图就可以把无线信号转换为音频信号,经过这轮的学习,已经不觉得之前这个流程图有多么复杂了,也知道了每个模块的用途,还不错