使用RTL-SDR和Matlab Simulink玩转软件无线电(十)

2023-12-12 06:58

本文主要是介绍使用RTL-SDR和Matlab Simulink玩转软件无线电(十),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2.4 运行第一个RTL-SDR接收机程序

现在你已经安装好硬件支持包、驱动,并且把我们的自定义库加入了Matlab路径,你就可以开始尝试第一个程序了!这一节包含两个练习,第一个练习你可以运行Simulink实现的频谱分析仪,另一个是功能一样但是使用Matlab代码实现。在两个例子中,RF信号都由RTL-SDR接收,下变频,数字化,最后显示到MathWorks提供的频谱分析仪中(频域示波器)。我们对于这两个练习都录制了视频。


如果你之前没有使用MatlabSimulink的经验,没有信心直接使用RTL-SDR,你可能要先看一下第四章,然后再回来看练习2.52.6


练习2.5 初次使用RTL-SDRSimulink

这个练习帮助你尝试在Simulink里使用RTL-SDR。系统会获取并显示一些你身边的真实RF信号(实际的结果跟你的地理位置有关)。我们会展示在SimulinkRTL-SDR的中心频率的调谐方法,并且教你如何设置前端增益。做这个练习的过程也能检验你的硬件支持包对于Simulink已经正确配置,并且你的RTL-SDR的硬件工作正常。


(a)打开Matlab。如果你没打开Matlab,回到练习2.1(a),打开后,把当前文件夹设置为/intro

(b)你需要的文件是rtlsdr_rx_startup_simlink.slx,它会显示在Matlab窗口的当前文件夹下。你可以在那里双击这个模型,或者如果你是以PDF的方式在读本书,你也可以直接单击下方的这个链接,然后直接打开。

(c)浏览模型。模型加载完毕后,你应该看到下方这个Simulink窗口,你可以运行它来接收信号。


RTL-SDR接收机模块(装好硬件支持包后,Simulink就支持了)是你的RTL-SDR的接口,使用中心频率模块来设置RTL-SDR的频率,调谐器增益也是这样设置的。图1.11展示了RTL-SDR中具体哪个硬件跟这些参数对应。在1.6节里说过,RTL-SDR接收的信号以8位采样值从设备中流出来。这些IQ采样值从RTL-SDR接收机模块的Data口出来,是复数信号。想了解复数的细节,请看第五章。


信号输入给两个频谱分析仪,第一个是快速傅立叶(FFT)表示的,它的带宽是fs,正好是RTL-SDR接收机的采样率。第二个频谱分析仪是瀑布图,带宽跟第一个一样。


(d)打开接收机文档。这些模块上方的长方形包含了文件信息,对应的联系,也提供了本书的pdf文件,双击它看看。


(e)检查RTL-SDR接收机模块的参数。双击RTL-SDR接收机模块,查看它的参数窗口。你可以看到中心频率和增益参数是由输入口指定的。把这些参数这样传入可以在模型运行时更改。其他参数可以在对话框里设置。


RTL-SDR的地址

RTL-SDR的采样率

RTL-SDR调谐器频率准确度

模块输出数据类型

输出帧里的采样量

是否允许测试输出


你可以在对话框里看到这些

回到1.7节,确认一下你知道这些参数与RTL-SDR硬件的关系。完成后点击取消按钮,回到Simulink


(f)准备运行。熟悉模型后,可以试试了,看一下信号吧!RTL-SDR要插在电脑上,并且要有天线,请参考练习2.3。参照练习2.3(c)Matlab命令行里输入sdrinfo,检查Matlab能够与RTL-SDR通信。


看看Simulink上方的工具栏,注意结束时间框里设置了inf。表示程序会不停运行(结束时间是无限),从你开始运行一直到你手动点击停止,这样你想看多久就看多久。看一下运行和停止按钮。


(g)运行程序。点一下运行按钮。左下角的初始化出现几秒后,程序会开始运行,你会看到两个频谱仪。如果必要你可以拖动它们的位置。你会看到一些熟悉的信号,只要它们正好在你周围。我们的例子默认设置为观察100MHz的频率,这是FM频段,所以你看到的应该是你周围的FM信号。如果你没有看到明显的信号,也不要担心。


(h)如果你在频谱图里可以看到任何信号,你都成功了。你所有的设置都正常。如果不行,请点击停止按钮,再检查一下天线正确连接在RTL-SDR上,Matlab可以通过sdrinfo命令来检查与RTL-SDR的连接。如果频谱观察仍然没有信号,请上desktopSDR.com的疑难解决页面,或者访问MathWorksRTL-SDR硬件支持包的文档。


如果你对频谱图展示的信号不熟悉也不要紧,你可以在后面的章节学到更多有关信息,我们会详细讲频谱观察的知识。如果你觉得看够了,请点击停止按钮。


练习2.6 初次使用RTL-SDR: Matlab

SDR接收机在本练习中和练习2.5Simulink里的功能一样,它都用RTL-SDR获取RF信号并显示出来,只不过这次是使用Matlabm代码实现的。本例子中,我们会告诉你如何在Matlab中调谐RTL-SDR,以及如何控制硬件参数,比如前端增益,中心频率等。完成练习后,你也能验证Matlab里调用的硬件支持包是否配置正确,并且RTL-SDR正常运行。如果你想要学习Matlabm代码基础,你可以先看看第四章。

(a)打开Matlab。如果你没有打开Matlab,回到练习2.1(a)。等到Matlab初始化完毕,把当前文件夹改为/intro/

(b)你要打开的文件是rtlsdr_rx_startup_matlab.m,你会在当前文件夹的面板里找到。你可以双击文件,或者直接在pdf文件里点击如下链接。

(c)阅读代码。你会看到如何用这个函数的简介,分了好几段,它们的标题是:

参数

系统对象

计算

仿真

(d)观察参数。参数部分有许多变量,它们与练习2.5中的SimulinkRTL-SDR接收机模块对应。中心频率设置成100MHz(100e6),采样率是2.4MHz(2.4e6),这些值都跟前面一样。其他参数包括输出数据的帧大小、类型和程序运行时间。注意这个脚本只会运行60秒。如果需要,你也可以把这个参数改大一些。

(e)观察系统对象。这个模型只是一个上手教程,没有用到多少对象,我们只用了3个系统对象。第一个是RTL-SDR对象,它读取了之前设定好的参数值并送入模块。第二个模块是频谱分析仪,类型与Simulink里的一样。它设置成了FFT类型。最后还有一个频谱分析仪模块,它设成了瀑布图类型。这两个都与练习2.5一样。如果你觉得你没有完全了解系统对象的原理,我们推荐你看4.5节。

(f)观察计算部分。rtlsdr_frmtime值是通过计算一帧的数据量除以采样率得到的,它用来控制仿真运行的时间。

(g)观察仿真部分。最后部分是仿真运行的地方,接收功能也在这里实现。确认Matlab可以与RTL-SDR通信后,进入while循环,这个循环只要不超过sim_time就不停止。使用step函数,从RTL-SDR里获取一帧数据,存储到rtlsdr_data变量中。这个帧是一个矩阵,长度时rtlsdr_frmlen,默认时4096个采样值。再使用一次step函数把它送入频谱分析仪,这样就能用FFT函数来对这些数据进行运算并显示出结果。最后run_time计数器在每次运行的最后增加了每一帧需要消耗的时间。


(h)打开接收机文档。这个接收机在Matlab里实现,我们无法在这里加入一个包含文档的长方形模块,我们做了一个函数来代替这个操作。输入如下命令到Matlab的命令行,就能看到文件信息,对应练习,以及本书pdf电子版。


(i)准备运行脚本。你熟悉脚本以后,你马上就能试试看信号了!保证RTL-SDR接入电脑,然后它的天线也插好了,参考练习2.3。使用sdrinfo命令,检查Matlab能够与RTL-SDR通信,参照练习2.3©


(j)运行脚本。如果你看到Matlab界面上方的Editor选项卡,你会找到一个运行按钮。

单击运行按钮,等待几秒钟,Matlab就会与RTL-SDR建立连接并开始运行,你会在频谱分析仪里看到频域信息。函数在sim_time规定的时间里,会不停之行while循环,不停地从RTL-SDR里把数据帧给Matlab,并且更新到频谱分析仪里。


如果你想要在sim_time时间到达前就停止程序,可以回到命令窗口并按下Ctrl-C,这样会终止循环。注意:这会使程序输出一个红色的错误信息!你没有做错,只是一个异常提示。


(k)FFT和瀑布型频谱分析仪在运行的过程中会同时出现。你应该能看到和下图类似的信号,比较明显的一个波峰。与练习2.5一样,RTL-SDR调谐到100MHz,这是FM频段,你看到的很有可能就是FM信号。如果你没有看到明显的信号不要担心。


(I)如果你什么都看不到,或者有报错,按Ctrl-C停止程序,然后检查天线是否正确插入RTL-SDR,并且Matlab能与RTL-SDR通信。如果还是不行,请查看本书网站上的疑难解答,或者访问MathWorksRTL-SDR硬件支持包文档。


总结

本章讲述了一些基础知识,你能掌握使用MatlabSimulink来运行RTL-SDR的应用。需要做一些工作来保证MathWorks的工具盒安装正常,路径设置,安装本书的练习文件,并且你也学会了本书后文的一些标准。这一章的目的是帮助你完成一些例子,你可以确认设备正常运行,并且实时观察空中的无线信号。下一章我们会进一步讲频谱观察,我们还会讲其他信号的例子,包括FM广播,GSM信号,LTE信号,还有你身边的其他种类的信号。

这篇关于使用RTL-SDR和Matlab Simulink玩转软件无线电(十)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/483657

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti