在 balena 上运行 OpenWebRX 以远程监控本地无线电频谱
将 Raspberry Pi 和便宜的 SDR(软件定义无线电)加密狗结合起来,创建一个远程监控设备,您可以将其放置在世界任何地方(通过互联网访问),以查看周围的无线电频谱并从一些检测到的信号中流式传输音频。
它托管一个小型 Web 服务器,一个或多个用户可以浏览该服务器以查看包含接收到的广播的实时显示的可定制页面。
SDR 涉及消除传统无线电使用的大部分硬件和电路,并在软件中实现它。作为一个过度简化的例子,我们知道 AM/FM 收音机、WiFi 接入点、Z-Wave 网关和警察扫描仪都是各种类型的收音机,但它们通常使用非常不同的硬件构建。但是,如果您可以在一个设备中实现所有这些(以及更多),只使用它们共有的少量硬件,即调谐器,会怎么样?SDR 设备和计算机允许这种情况发生并提供近乎通用的无线电系统。
虽然 SDR 的概念已经存在了几十年,但直到最近 10 年左右,价格和性能的提升才让爱好者和实验者能够接受它。就在那时,人们发现基于 Realtek RTL2832U 芯片的 25 美元 USB 电视调谐器很容易被逆向工程用作廉价的软件定义无线电。
从那时起,这些 U 盘就被用于许多业余爱好者和专业项目中,这些项目以前太复杂而无法使用传统的无线电硬件来实现。仅举几个例子,包括使用 ADS-B 跟踪飞机、嗅探汽车钥匙扣和解码气象卫星图像。
当 SDR 变得触手可及时,一些伟大的开源项目被引入以利用该技术。其中之一是András Retzler的 OpenWebRX。它是一个远程频谱监控解决方案,最初是为业余无线电社区设计的,但它也是将 RTL-SDR 与 Raspberry Pi 和 balena 结合使用的一个很好的入门项目。它使用“瀑布显示”来显示随时间推移在整个频率范围内接收到的信号。
我们将使用 balena 来增强 OpenWebRX 的一些功能。首先,我们将利用 balena 公共 URL 功能为远程访问您的设备将托管的本地 OpenWebRX 网页提供一个简单、安全的路径。这使您不必处理路由器转发、动态 DNS 或安全证书。这也意味着您可以将您的 Pi 重新定位到任何可以访问互联网的地方,并且可以通过相同的 URL 访问它。
使用 balena 的应用程序下载功能,我们可以创建无头安装,如果需要,可以在这些设备上轻松复制。最后,我们将使用设备配置功能,以便使用 balenaCloud 仪表板轻松更改 OpenWebRX 环境变量。
您将需要以下硬件:
我们已经建立了一个GitHub 存储库,它将下载并安装 OpenWebRX 及其依赖项,因此唯一的要求是: * 一个刷写 SD 卡的工具,例如balenaEtcher * 一个免费的balenaCloud帐户 *从 GitHub克隆或下载该项目
首先让我们设置 Raspberry Pi。将 SDR USB 加密狗插入 Pi 上的任一 USB 端口,然后连接天线。
现在是时候使用 balenaCloud 安装软件了。基本步骤如下,但如果您需要更详细的说明,可以使用我们的入门教程。如果您正在使用这些文档,而不是使用说明来推送“FirstApp”示例,请按照下面的示例进一步下载和推送sdr-spectrum-monitor
项目。
一旦设备连接并显示在仪表板上,您就可以部署项目代码。
如果一切顺利,您很快就会看到 balena 独角兽,您刚刚推送的代码将自动分发到您应用程序中的设备。
要在您的本地网络上访问您的频谱监视器,请输入 IP 地址(在您的设备仪表板上找到),然后输入:8073
(默认端口号)。例如,在上面的示例中,您将浏览http://192.168.1.147:8073
以访问您的监视器。如果一切运行正常,您应该会看到瀑布显示和播放按钮。单击播放按钮开始监控以 144.25 MHz 为中心的默认频谱。(您可以使用 balenaCloud 仪表板中的环境变量更改端口和中心频率,如下所述。)
瀑布显示以突出显示的颜色显示任何检测到的信号。单击信号以收听音频(如果可用)。您可能需要尝试使用显示屏右下角的按钮切换解调类型(例如 AM、FM 等),以听到正确的音频。
请记住,许多信号仅仅是数据传输,当表示为音频时听起来会乱码。如果您只是想查看正在使用的频率以及它们的波形是什么样子,单独的瀑布显示就非常有用。有关使用 OpenWebRX 的更多详细信息,请参阅其项目页面或本文档。
如果你想从网络外部访问你的频谱监视器,你需要将端口更改为 80 并启用 balenaCloud 中的公共 URL 功能。在仪表板中选择您的设备,然后单击左侧的“D(x) 设备变量”按钮,然后单击顶部附近的“+ 添加变量”按钮。在“添加变量”弹出窗口中,为“名称”输入ORX_WEB_PORT
,然后为“值”输入数字端口值,然后单击“添加”以保存新设置。应用程序将重新启动,然后新端口将处于活动状态。通过单击开关启用“公共设备 URL”功能后,将出现一个带箭头的链接,打开一个新的浏览器选项卡。这是任何人都可以用来访问您的显示器的 URL!(只与您允许访问您的显示器的人共享)。
RTL-SDR 的带宽为 2.4 MHz,这是您一次可以查看的最大频谱量。您可以设置一个“中心频率”,它将是显示屏的中点,两侧都可以看到 1.2 MHz 的频谱。要更改中心频率,请添加或修改以ORX_CENTER_FREQ
Hz 为单位的不包含逗号或小数的数值命名的设备变量。例如,如果您想要一个中心频率,121.45 MHz
您可以输入121450000
该值。
以下是您可以在此项目上设置的更多设备变量:
ORX_SAMP_RATE - sampling rate (default is 2400000 which is the max for the RTL-SDR)
ORX_MAX_CLIENTS - Maximum number of clients that can connect at once (default is 20)
ORX_NAME - Name to display on your spectrum page
ORX_LOCATION - Location to display on your spectrum page
请注意,无论何时您添加或更改环境变量,它都会重新启动应用程序并断开当前页面上的所有用户。如果您正在寻找可以听的东西,请尝试在网络上搜索“位置扫描仪频率”(将“位置”替换为设备的物理位置)。由于该软件不解调“宽带 FM”,您将无法流式传输/收听广播频段 FM 广播(尽管您可以查看它们的波形)。
然而,使用合适的天线,您应该能够接收短波、业余无线电、公共服务、飞机无线电通信等等。注意:根据您所在的位置,收听某些无线电信号可能不合法。您有责任在收听之前进行检查。
该项目使用 RTL-SDR 库从 SDR 加密狗读取原始数据。作者用 Python (openwebrx.py) 编写了一个 Web 服务器,在解调来自 SDR 的原始数据后,使用 websockets 将音频和瀑布数据发送到客户端。客户端使用 Javascript 实现所有交互功能。本文档提供了更多详细信息。
我们这个项目的版本使用 Dockerfile 构建运行 OpenWebRX 所需的环境,然后从 GitHub 下载项目并将其安装在容器中,然后在 balenaOS 上运行。
您会注意到我们已经用我们自己命名的配置文件替换了 OpenWebRX 配置文件,config_alt.py
如果您想进一步自定义程序,这是最好的起点。这是一个注释非常好的 Python 文件。查看它,进行一些更改,然后将代码重新推送到您的应用程序。一个简单的开始方法是添加更多环境变量来控制配置。
不幸的是,OpenWebRX 的作者最近停止了对该项目的任何进一步开发。然而,许多人已经分叉它并正在添加新功能和改进。您可以尝试使用这些版本之一作为该项目的基础,或者自己分叉并开始试验。
如果您已经构建了我们的项目之一并且也想尝试这个项目,那么好消息!使用 balena 构建的一大好处是您可以轻松地向同一设备添加更多项目,而无需购买更多硬件。这篇博文解释了如何做到这一点:学习如何设置这个项目以及您已经构建的项目。快乐黑客!
是时候构建您自己的远程无线电监视器了!试试这个项目——我们很想听听它的进展情况。如果您遇到困难或有任何疑问,请在我们的论坛中告诉我们。您还可以在我们的Twitter 、Instagram或Facebook上就项目胜利、问题或反馈发表意见。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !