使用 RasperryPi 解码 FM 频率的声音

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

rtl_fm 是 rtl_sdr 包中的实用程序之一,用于将电视加密狗用作 SDR。如果您需要更多信息,请前往 此处

Direwolf 是一种基于声卡的数据包调制解调器。

根据 Direwolf 文档,它支持使用 rtl_fm 作为输入,所以我想我应该看看如何让它们一起运行。

我以前在我的 Pi 上使用过 rtl_sdr 和 rtl_tcp,但不是 rtl_fm,所以首先要让它工作。

要从 rtl_fm 播放流,您需要通过管道传输到某个音频应用程序中。这与冰原狼读取流的方式相同。按照 rtl_sdr 页面上的建议,此命令适用于 96.9MHz 的本地广播电台:


 rtl_fm -f 96.9M -M wbfm -s 200000 -r 48000 | play -r 48000 -t s16 -L -c 1  -

我不确定所有这些选项是什么,但关键选项似乎是 -s 用于采样率,-r 用于分辨率。 -r 值需要在 rtl_fm 端和播放端匹配。

现在在 Raspbian 上安装冰原狼:

– 根据用户指南,首先安装 libasound-dev:


 rtl_fm -f 96.9M -M wbfm -s 200000 -r 48000 | play -r 48000 -t s16 -L -c 1  -

– 从以下位置下载源 zip: https://home.comcast.net/~wb2osz/site/ ?/page/Download/

– 解压并 cd 到 direwolf 文件夹

– 制作:


 rtl_fm -f 96.9M -M wbfm -s 200000 -r 48000 | play -r 48000 -t s16 -L -c 1  -

在这一点上,我让 Pi 上的 rtl_fm 正常工作,并且在通过 USB 声卡解码来自 2m 无线电输入的音频输入时,冰原狼工作得很好。将两者结合起来虽然给我带来了问题。

我不认为即使使用外部 1/4wave 2m 天线,我也无法在 RTL 棒上的 2m 上获得足够强的接收信号。

这是命令的组合,rtl_fm,管道进入 Direwolf:


 rtl_fm -f 96.9M -M wbfm -s 200000 -r 48000 | play -r 48000 -t s16 -L -c 1  -

我已经允许在这张 RTL 卡上调整偏移 ppm,但也许我计算错了?

无论如何,由于 Pi 上的 Direwolf 本身运行良好,而我需要一个小型数据包项目能够解码 Pi 上的数据包,我将暂时搁置 rtl_fm 并单独使用 Direwolf .