运行GNU Radio

需要注意的是,如果您的项目不需要用到硬件源和硬件池的话,直接使用Shell运行GRC是没有问题的。但是需要用到硬件源和硬件池的话,请记得使用管理员权限运行GRC,否则项目在执行的时候会莫名其妙地马上就结束执行了。

因此,为了接下来的内容是本文的第一个项目:测试RTL-SDR硬件源作准备,我们需要在Shell中执行

sudo gnuradio-companion

这样我们的GR小伙伴——图形化的应用项目开发界面就会出现在您的面前。

第一个项目

许多人的GNU Radio的Hello world都不一样,选择众多。但我个人倾向于,以实际的无线电硬件——比如RTL-SDR或HackRF或USRP的测试作为开始。

每一个GNU Radio项目最基本都有一个源(source)和一个池(sink),也就是一个输入和一个输出,他们可以是任何东西。在这个项目中,我们只需要简单地将我们的收音机(源)调谐到某个频率上,然后把波形在屏幕上显示出来(池)

Osmocom制作了很多源,其中有一个可以将RTL-SDR的输出输入到GNU Radio中。在GNU Radio里,这个源的名字叫RTL-SDR Source,它能控制RTL-SDR的采样率、需要调谐的频率、增益等

在这个项目中,我们使用GNU Radio的WX图形化界面将从源获得的数据显示到屏幕上,这个池的名字叫WX GUI FFT Sink,它在Instrumentation→WX里可以找到。

简单做法

因为是第一次,所以先从简单做起,一些改进可以在成功后再作修改。那么,开始吧:

以管理员权限运行我们的GR小伙伴之后,我们可以把Variable这个模块给删除掉,因为我们做的是很简单的一个项目,不需要使用一个变量模块来统一声明一个全局变量供各个模块使用,而这个项目总的来说只有两个功能模块,非常的简单。

接下来双击Options模块,将top_block改一个名字,GNU Radio的项目管理很有意思,每一个项目的Options模块中的ID确定了整个项目保存后主文件名的名字。在这里,我们可以将Options模块的ID改为hello_world

下面找到源和池,双击添加到项目中,源非常好找,Source里就是RTL-SDR Source;池在Instrumentation里的WX里。

修改源和池的属性并将源和池连接起来:

  • 源的采样率Sample Rate为2.048e6
  • 频率为您最喜欢的调频广播电台的频率加上e6,比如105.2这个广播电台,在源的属性中频率一栏就是105.2e6
  • 池的采样率也是2.048e6

其他可以暂时不管。完成后如图1:

接着我们按快捷键F5或在界面上点击按钮“Generate the flow graph”将这个项目流程图保存到一个文件里

最后使用快捷键F6或在界面上点击按钮“Execute the flow graph”运行

假如您的RTL-SDR硬件以及整个GNU Radio一切正常的话,您将会看到您正在收听的电台以及临近电台的信号的FFT图。比如我得到的是这样:

看来旁边的电台的信号比我想听的电台的信号还要强得多。

简单做法的改进

上面的部分成功运行后,我们会发现,SDR最方便人的地方——接收频率宽窄的调节、中心频率的调谐、增益的控制,这三个部分必须要将运行中的项目按F7停下来,修改源和池的属性,再次按F6运行才能看见修改后的结果,非常的麻烦。

延续上面的成功,我们现在需要做的是:尝试使用滚动条来分别调节各项参数,以及WX GUI FFT池的界面的改进(显示频率与源的中心频率的同步等)

首先我们增加五个WX GUI Slider,分别对应频率、RF增益、IF增益、BB增益、采样率。WX GUI Slider在GUI Widgets里的WX里。

但光增加WX GUI Slider还不够,我们需要分别对他们的属性进行修改:

  • 双击第一个WX GUI Slider

    • 将ID改为freq
    • 默认值(Default Value)为上面的您喜欢听的调频广播电台的频率(比如我喜欢听的105.2,我这里的默认值就是105.2e6)
    • 最小值(Minimum)为76e6
    • 最大值(Maximum)为108e6
  • 双击第二个WX GUI Slider,将ID改为rf_gain;默认值为10;最大值为30。
  • 双击第三个WX GUI Slider,将ID改为if_gain;默认值为20;最大值为30。
  • 双击第四个WX GUI Slider,将ID改为bb_gain;默认值为20;最大值为30。
  • 双击第五个WX GUI Slider,将ID改为sample_rate;默认值为2.048e6;最小值为1.6e6;最大值为3.2e6。

需要注意的是,这里我们增加的WX GUI Slider的ID可以作为变量名使用,可以让各个功能模块直接调用,所以直接将ID写在恰当的地方就可以了,但显示出来的是变量的值而不是变量名:

  • 双击上面我们已经正在使用的RTL-SDR Source

    • 将采样率从2.048e6改为sample_rate
    • Ch0: Frequently(Hz)从105.2e6改为freq
    • Ch0: RF Gain(dB)改为rf_gain
    • Ch0: IF Gain(dB)改为if_gain
    • Ch0: BB Gain(dB)改为bb_gain
  • 双击上面我们已经正在使用的WX GUI FFT Sink

    • 将采样率从2.048e6改为sample_rate
    • Baseband Freq改为freq

好了,最后结果如图3,现在尝试运行一下试试看?

您会发现多了5个滚动条,上面显示了对应的值。分别将他们拖动修改一下试试看?

现在已经能收到信号了,那么自己动手试试看让收到的电台信号变成声音吧!其他的频段有别的调制模式的信号,这些模式的解调您也可以试试看,RF的世界无限广大,GNU Radio也同样无限精彩~

GNU Radio的hello world(转)的更多相关文章

  1. GNU Radio Radar Toolbox

    GNU Radio Radar Toolbox Install guide Change to any folder in your home directory and enter followin ...

  2. GNU Radio: Overview of the GNU Radio Scheduler

    Scetion 1: The Flowgraph The flowgraph moves data from sources into sinks. 一个流图由多个模块组成,其中一般包括信源(Sour ...

  3. GNU Radio: Synchronization and MIMO Capability with USRP Devices

    Application Note Synchronization and MIMO Capability with USRP Devices Ettus Research Introduction S ...

  4. GNU Radio: USRP2 and N2x0 Series

    Comparative features list 相对性能清单 Hardware Capabilities: 1 transceiver card slot External PPS referen ...

  5. GNU Radio: Multiple USRP configurations 配置多个USRP设备

    Introduction 引言 Some USRP devices are capable of being grouped to form a single, virtual device. A s ...

  6. GNU Radio在SDR领域的应用

    1 Software Defined Radio 软件无线电(Software Defined Radio,SDR)是一种实现无线通信的新概念和体制.其中以往只能在硬件中实现的组件(例如混频器,滤波器 ...

  7. GNU Radio: 自定义 block 实例

    综述 本文通过在GNU Radio 中编写一个block的例子,系统介绍创建一个block的过程.该 block 的功能是可以在GRC中通过滑块(WX GUI Slider)来实时改变信号源(Sign ...

  8. GNU Radio安装教程: Ubuntu14.04 + uhd3.10.0 + gnuradio3.7.10.1

    1. 更新和安装依赖项 在编译安装uhd和gnuradio之前,确保已安装所需依赖项.Ubuntu系统运行: sudo apt-get update 安装UHD和GNURadio所需依赖项: On U ...

  9. GNU Radio 入门培训

    1. GNU Radio介绍 1.1 什么是GNU Radio GNU Radio是一个完全开源的软件无线电结构平台,它可以用来设计和仿真,也可以用来连接真实的无线电系统.GNU Radio是一个高度 ...

  10. 使用Octave分析GNU Radio的数据

    Octave 是 GNU Radio 的最流行的分析工具,因此 GNU Radio 软件包也包含它自身的一组脚本用于读取和语法分析输出.本文介绍如何使用 Octave 分析 GNU Radio 产生的 ...

随机推荐

  1. djinn:1 Vulnhub Walkthrough

    靶机下载链接: https://download.vulnhub.com/djinn/djinn.ova 主机端口扫描: FTP发现一些文件提示 1337端口是一个游戏,去看下 哈哈有点难,暂时放弃, ...

  2. 2、CentOS7密码重置

    一.重启系统,在开机过程中,快速按下键盘上的方向键↑和↓.目的是告知引导程序,我们需要在引导页面选择不同的操作,以便让引导程序暂停.  以下是暂停后的界面,可以查看下方的英文可知↑和↓的作用.  二. ...

  3. #《H.264和MPEG-4视频压缩》# 一. 色彩空间

    多数的数字视频应用需要播放彩色的视频信号,所以需要捕获和重现颜色信息.一幅黑白图像的每一个采样点只需要一个像素表示明暗或亮度,而在彩色图像中至少需要3个像素来表示每个像素的色彩.表示亮度和色彩的不同方 ...

  4. sqlserver 批量修改数据库表主键名称为PK_表名

    1.我们在创建sqlserver得数据表的主键的时候,有时会出现,后面加一串随机字符串的情况,如图所示: 2.如果你有强迫症的话,可以使用以下sql脚本进行修改,将主键的名称修改为PK_表名. --将 ...

  5. <packaging>pom</packaging>是什么意思

    <packaging>pom</packaging>是什么意思? 答: 以下配置<packaging>pom</packaging>的意思是使用mave ...

  6. Galactic Collegiate Programming Contest Gym - 101572G 模拟

    #include<bits/stdc++.h> using namespace std; int n,m; struct node { int id; int slove; int pen ...

  7. luogu P3369 【模板】普通平衡树

    ————————————————版权声明:本文为CSDN博主「ModestCoder_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https:// ...

  8. 第十届蓝桥杯CB题目I-分析

    思路分析://感谢写文博主 思路:相信大多数人和我一样在比赛的时候把这题想的太简单了_(:з」∠)_ 这题和去年的最后一题很类似,就是分类讨论,去年放在了最后一题,今年在倒数第二题,说明难度不算太难, ...

  9. 数据结构(集合)学习之Queue

    集合 框架关系图: Collection接口下面有三个子接口:List.Set.Queue.此篇是关于Queue<E>的简单学习总结. 补充:HashTable父类是Dictionary, ...

  10. spring gzip 静态压缩优化

    HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览.相对 于普通的浏览过程HTML ,CSS,Java ...