基于GNU radio + HackRF One 实现信号发射与FM接收

基于GNU radio + HackRF One 实现信号发射与FM接收


实验环境

硬件平台—HackRF One、天线(40-860MHz)
软件环境—Ubuntu运行HackRF环境
系统版本信息—Ubuntu-20.04 (64-bit)

一、搭建简易信号发射器

如图所示:在这里插入图片描述
由于仅采用方波信号FM调制进行发射,发射信号瀑布图如下所示:

在这里插入图片描述

二、搭建简易WBFM接收器

如图所示:
在这里插入图片描述
注意,channel_freq 是用于瀑布图的中心频率的,用在QT GUI Waterfall Sink模块;center_freq 是用于调整HackRF One接收机的中心频率的,用在Osmocom Source模块;Signal Source模块的频率为center_freq-channel_freq;volume_gain 是用于调整音量大小的,用在Multiply Const模块。

运行结果如下图所示。

在这里插入图片描述

前言: HackRF one是一款全开源的硬件+软件项目,其目的主要是为了提供廉价的SDR(软件定义无线电)方案,它类似于一个几十年前开始流行的基于软件的数字音频技术。正如声卡在计算机数字化的音频波形,软件无线电外设数字化无线电波形。这就像一个非常快的声卡音箱和麦克风由天线所取代。一个单一的软件无线电平台,可以用来实现几乎任何无线技术(蓝牙,ZigBee,蜂窝技术,FM收音机等)。 PCB图片展示: 什么是软件定义的无线电(SDR) 软件定义的无线电(Software Defined Radio,SDR) 是一种无线电广播通信技术,它基于软件定义的无线通信协议而非通过硬连线实现。频带、空中接口协议和功能可通过软件下载和更新来升级,而不用完全更换硬件。 软件无线电利用现代化软件来操纵、控制传统的"纯硬件电路"的无线通信技术。软件无线电技术的重要价值在于:传统的硬件无线电通信设备只是作为无线通信的基本平台,而许多的通信功能则是由软件来实现,打破了有史以来设备的通信功能的实现仅仅依赖于硬件发展的格局。软件无线电技术的出现是通信领域继固定通信到移动通信,模拟通信到数字通信之后第三次革命。 HackRF One特性介绍: 10 MHz to 6 GHz operating frequency Half-duplex transceiver Up to 20 million samples per second 8-bit quadrature samples (8-bit I and 8-bit Q) Compatible with GNU Radio, SDR#, and more Software-configurable RX and TX gain and baseband filter Software-controlled antenna port power (50 mA at 3.3 V) SMA female antenna connector SMA female clock input and output for synchronization Convenient buttons for programming Internal pin headers for expansion Hi-Speed USB 2.0 USB-powered 附件内容包括: 整个软件定义无线电SDR设计模块原理图和PCB源文件、元器件库文件、材料清单、gerber等; 该HackRF On设计文档介绍; 源代码; host以及固件等; 原文出处:https://www.sparkfun.com/products/13001
### 关于 HackRF OneGNU Radio 的集成使用 #### 环境准备 为了使 HackRF One 能够顺利工作并 GNU Radio 集成,在 Ubuntu 20.04 上需先完成一系列软件包的安装。这包括但不限于 GNU Radio 自身及其依赖项[^2]。 #### 安装过程 对于操作系统的具体版本,推荐使用 VMware 16 或更高版本来运行 Ubuntu 20.04,这是因为较低版本可能无法适配 Windows 10 及以上系统中的某些特性,从而影响到 HackRF One 的正常配置。 #### 实际应用案例 当涉及到实际的应用场景时,比如发射接收广播信号,可以通过 B站上的 HacKRF 官方教程视频获得直观的学习体验。该系列的第一集中包含了详细的中文解说,有助于理解如何利用 GnuRadio 进行广播信号的操作[^1]。 #### FM 接收实例 构建一个简单的 FM 广播接收器作为入门项目是非常合适的。通过 优快云 博客上分享的经验可以看到,借助 GNURadio Companion (GRC),即 GNU Radio 提供的一个图形化开发工具,能够快速搭建起基于 HackRF OneFM 接收方案。 ```python # Python脚本用于启动GNU Radio Flowgraph from gnuradio import gr, uhd import time class my_top_block(gr.top_block): def __init__(self): gr.top_block.__init__(self) self.u = uhd.usrp_source( device_addr="", stream_args=uhd.stream_args(cpu_format="fc32", channels=range(1)), ) if __name__ == '__main__': tb = my_top_block() try: tb.start() # 启动流图 time.sleep(1) # 让程序持续一段时间 except KeyboardInterrupt: pass finally: tb.stop() tb.wait() ``` 此段代码展示了如何创建并初始化 USRP 设备对象(这里以 UHD 库为例),虽然不是直接针对 HackRF One 编写,但是提供了调用 SDR 设备的基础框架思路。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值