[RadioWar WIKI]GnuRadio系列之新手试玩

2013-10-08 612097人围观 ,发现 17 个不明物体 无线安全极客

首先感谢一直以来为RadioWar WIKI开枝散叶的每位朋友,没有你们就没有RadioWar WIKI的内容,也无法帮助更加多的人去了解更多未知的领域。

该篇WIKI内容由@熊猫啊Bo 撰写并提交,在此感谢他回国后一直以来为RadioWar WIKI付出的努力。

此文版权归属于原文作者@熊猫啊Bo以及RadioWar WIKI和Freebuf共同所有!任何人都可以无限复制以及传播,仅需保留以上文字即可!

淫荡的分割线————————————————————————————————

本文旨为刚刚开始接触GnuRadio的朋友提供一个试玩教程,希望能帮大家能从零开始了解并享受这个开源神器。

GnuRadio官方做了一个以Ubuntu为基础的LiveCD,免去编译、安装的烦恼,假如您刚刚开始接触GnuRadio,不妨从它开始。整个ISO只有1.8G,引导机器后可以直接使用Shell启动GRC(GR小伙伴),简单、方便、快捷。虽然不同的接收机源用起来都差不多,本文以RTL-SDR硬件作为接收机源。

运行GnuRadio

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

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

sudo gnuradio-companion

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

第一个项目

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

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

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


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

简单做法

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

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

接下来双击Options模块,将top_block改一个名字,GnuRadio的项目管理很有意思,每一个项目的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硬件以及整个GnuRadio一切正常的话,您将会看到您正在收听的电台以及临近电台的信号的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也同样无限精彩~

这些评论亮了

  • vleboy (1级) 回复
    @zegu 5K卖你一套,带天线,有意可以联系。这东西哪里要的到20K。
    )17( 亮了
发表评论

已有 17 条评论

取消
Loading...
css.php