现在我们来继续看LimeSDR的有关知识。这是第四篇文章,尽管这是我们实际操作的第二个联系,但是它还是与前面的所有文章都有关系,如果你没有看前三篇文章,我推荐你看一下。
上一篇文章我们看了self_test.ini,把这个例子里大多数有关内容都讲了。这次我们会使用之前学到的知识来提高信号质量,并创建我们第一个应用。
开始
到这里,我们假设LimeSuite已经在你电脑上装好了,并且运行正常。
如果你没有装好,你可以去装一下Pothos,同时装好GQRX或者SDR Console(你不是一定要装这个两个程序,其它类型的接收机程序也可以)。
然后我们还需要一些额外的硬件,比如FM天线。如果没有也不要紧,你可以用一根75cm长的没有屏蔽的导线接在SMA头上就行。
还有,我们现在的工作频率还是需要许可的,因此记得发射端不要接高增益天线。值得指出的是,现在大多数欧洲国家可以合法得使用MP3发射机来发射FM频段、nW级别的信号,所以说理论上你可以用LimeSDR来发射这种信号,但是最好还是不要冒险。
GQRX/SDR Console
大多数人第一次用SDR都会使用GQRX或者SDR Console。我们不会讲太多小细节,但是还会讲几个注意事项。除此之外,我们还需要用这个程序确认我们能在哪个频点收到广播信号,这样我们后期就可以在别的程序中调谐到这个信号。你可以使用这两个程序来找VHF频段的FM广播。在我们这里,BBC 3频道的信号最强,频率是90.9MHz。
SDR Console只支持Windows,它支持LimeSDR,并且支持硬件加速功能。没有太多地方要设置,你只要设置正确的接收通道就行。在这里我们使用的是LNAL(低频率通道)RX1_L,因为我们找的信号在100MHz附近。你可以看看第一篇文章,你就知道怎么接线了。
GQRX的输入控制页面的设置方式也是类似的。通过前几篇文章你应该能过自己做设置了。
Pothos的强大之处
如果你要按着我的教程做,那你现在最好先在前面说到的程序里找到一个合适的广播频率。找到后你就可以开始写我们的第一个程序了。大多数情况下,第一步都会写一个FM接收机。如果你想直接下载一个可以运行的程序,你可以下载Josh Blum写的。
但是在开始之前,我还要介绍一下Pothos。Pothos是一个用于SDR的基于数据流的编程环境。简单来说,你可以用绘制流图的方式来编程,而不需要输入代码,这样使用就很方便。我们可以打开PothosGUI,然后把新应用另存为你喜欢的名字。
右侧是可选模块。这些模块我们会使用到,我们先要添加一个SDR Source,在SDR下面里。注意source是信源,它只有输出,sink是信宿,只有输入。
双击这个模块,打开SDR Source的属性,把它们改为如下设置。注意:
Device Args,有很多参数,你只要直接点下拉框,然后选择你的LimeSDR就可以。
在channels选项卡中里,你需要选择LNAL,并且把你要听的广播的频率以Hz的形式输入。比如,我们现在要听90.9MHz就要写作90900000Hz,你也可以写作90.9e6。
点击commit,并加入2个模块,分别是Audio sink和Freq Demod。这些都做好后,点击go按钮。记得把音量调低。
白噪声
你现在听到的应该只是噪声。这很正常,我们来看看我们目前做了什么:
一个SDR设备(LimeSDR)输出IQ信号 采样率1MSps/s
我们设置了默认的增益和滤波器
一个频率解调器。这是软件实现的FM解调器
一个播放声音的模块
首先我们要检查是否有足够的增益,我们可以先调整SDR的增益,调高点。要调到多高取决于你的信号强度。一旦达到足够增益后,信号会从白噪声,变成一个奇怪的声音,这个声音还是听不清在说什么。
再看看哪里有问题,我们可以发现我们直接给喇叭输出了1MSps/s的采样率,这是不对的,我们需要降采样。最简单的方法是使用一个滤波器(但是不做滤波)。添加FIR filter,然后找到Decimation属性,改为35,把Data Type从Complex Float32改为Float32。这是因为解调后我们的信号就不是IQ信号了,把这个模块接到解调模块和音频信宿模块中间。
到目前为止,你应该能从噪声中听到一些音频了!如果你要看一下数据,可以用spectrogram。和很多Pothos模块意义,它有widget,别忘了把它加入graph widget。
从spectrogram,我们可以清晰得看到没有设置好滤波器,这样我们可以看到一个很宽的频段,相当于我们在听1MHz带宽的信号,把噪声也收下来了。
是时候做一些滤波了
尽管手动设计FIR滤波器很有趣,但是有控件可以帮我自动完成设计。我们现在加入FIR Designer和FIR Filter。这些控件内部有变量,连起来后会有些不同,所以暂时先别连起来。
在FIR Designer属性里,把频率上限设置为16kHz(16e3或者16000),剩下的设置都用默认的。
FIR Filter模块不需要修改,直接用就可以。我们这里用的是Complex Float32,因为我们会输入IQ信号给滤波器。
把滤波器的0口(橘黄色)接好。什么都不会变化,还是会有噪声和音频一起输出到喇叭上。现在我们加入一些taps。把FIR Designer输出拖到FIR Filter上,这样就会出现Connection控制面板,在里面我可以看到FIR Designer的输出。点击左侧的tapsChanged,然后点右侧的setTaps,最后点commit。
这样我们听到的音频信号更好了。但是等一下,好像我们听到的声音像是蓝精灵的在说话。声音还是有问题。这是因为我们前面告诉你的decimation设置是错的,应该是25。如果这个设置不对,输出的音频频率会变化。你可以玩一下这个参数,听上去的声音会很有趣。
最后
我们现在有了一个非常简单的FM接收机了。你还可以加入一些调谐频率和增益的控制。在用于降采样的FIR滤波器上再加入一个filter designer,也会提高音频质量,还有采样率和带宽也可以调整。这个简单的应用可以帮助你学会使用pothos,你还可以通过这个学懂Josh写的FM程序。这些模块是大多数SDR系统的组成部分:滤波器->解调器->降采样。
我们的教程的理论知识都比较少。我们以后会通过一些实用的例子讲一些理论,这样就更能发挥出LimeSDR的潜力。