运行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. jni 文件切割合并

    最近学习c++,看到很多常用的例子,比如文件切割,切割后后缀可以自定义,别人就无法从表面的一个文件看出是什么,也无法查看到原文件信息,只有合并后才能识别这庐山真面目 实现也比较粗暴,首先在应用层定义好 ...

  2. Bash脚本编程学习笔记06:条件结构体

    简介 在bash脚本编程中,条件结构体使用if语句和case语句两种句式. if语句 单分支if语句 if TEST; then CMD fi TEST:条件判断,多数情况下可使用test命令来实现, ...

  3. 硬盘500M,为什么没有500M。10M宽带,为什么网速没有10M?

    在天朝, 硬件厂商用1000代替1024, 通信公司,用 byte来代替bit. 比如 500G的硬盘,应该有 500 * 1024 *1024 *8 = 4.194304*10^9 位 但是按照厂商 ...

  4. XSS跨站测试代码

    '><script>alert(document.cookie)</script>='><script>alert(document.cookie)&l ...

  5. Linux 文件(持续更新)

    一.文件类型 Linux操作系统把所有内容(文件.图片.视频.设备)都当作文件看待.处理,即一切皆文件. Linux系统把所有文件分为七种类型: 文件类型 文件类型标识 说明 使用ls -l命令查看文 ...

  6. 剑指offer-面试题38-字符串的排列-全排列

    /* 题目: 输入字符串,打印字符串的所有排列. 输入acc,输出[acc, cac, cca]. */ /* 思路: 将字符串看作两部分,第一个字符串和后面的部分. 将第一个字符串与后面字符串依次交 ...

  7. 剑指offer-面试题32-分行从上到下打印二叉树-二叉树遍历

    /* 题目: 分行按层自上向下打印二叉树. */ /* 思路: 使用队列,将节点压入队列中,再弹出来,压入其左右子节点,循环,直到栈为空. 添加两个计数器,current记录当前行的节点数,next记 ...

  8. [大数据技术]datax的安装以及使用

    1.datax简述 DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL.Oracle.SqlServer.Postgre.HDFS.Hive.ADS.HBase.Ta ...

  9. P2055 [ZJOI2009]假期的宿舍【二分图/最大流】

    题目描述 学校放假了 · · · · · · 有些同学回家了,而有些同学则有以前的好朋友来探访,那么住宿就是一个问题. 比如 A 和 B 都是学校的学生,A 要回家,而 C 来看B,C 与 A 不认识 ...

  10. ES读写数据过程及原理

    ES读写数据过程及原理 倒排索引 首先来了解一下什么是倒排索引 倒排索引,就是建立词语与文档的对应关系(词语在什么文档出现,出现了多少次,在什么位置出现) 搜索的时候,根据搜索关键词,直接在索引中找到 ...