RTL-SDR&Matlab软件定义无线电(一)

admin 2023年5月31日10:40:54评论22 views字数 3213阅读10分42秒阅读模式


RTL-SDR&Matlab软件定义无线电(一)

看一下这本书:《Software Defined Radio using MATLAB Simulink and the RTL-SDR》,这篇文章主要说一下环境配置与测试

下载地址:https://ww2.mathworks.cn/campaigns/offers/download-rtl-sdr-ebook.html

很明显,用的 Matlab 和 RTL-SDR,Matlab 可以淘宝30多块钱买个账号

RTL-SDR 尽量买原装进口的,我试了两家不同的国内产的 RTL-SDR,在别的软件上都可以用,但是 Matlab 识别不了,最后狠心买了个贵的原装进口的一点阻碍都没有,很轻松的就识别了

Matlab 下好之后去附加功能中搜索 RTL SDR 安装就行,然后点击管理

RTL-SDR&Matlab软件定义无线电(一)

如果没装过驱动应该会让你用 zadig 安装驱动。然后 Test Connection,能找到设备就行

RTL-SDR&Matlab软件定义无线电(一)

或者直接在命令行敲命令:sdrinfo,检查能不能识别到

RTL-SDR&Matlab软件定义无线电(一)

同时在 Simulink 中应该也有了 RTL SDR 的模块,选择 Simulink,然后随便创建一个

RTL-SDR&Matlab软件定义无线电(一)

在 Library Browser 中就可以看到了,这是一个 RTL-SDR 的接收机,它是一个参数化的接口,可以实时的把 RTL-SDR 的采样值送入 Simulink

RTL-SDR&Matlab软件定义无线电(一)

将附件中的 rtlsdr_book_library 添加到路径中

RTL-SDR&Matlab软件定义无线电(一)

然后看一下 Simulink Library Browser,是不是有 RTL-SDR Book Library 这个库,没有的话刷新一下

RTL-SDR&Matlab软件定义无线电(一)

打开附件的 intrortlsdr_rx_startup_simulink.slxc 之后,修改 Centre Frequency 的频率为 433.92MHz 就能收到 433.92MHz 的信号了

RTL-SDR&Matlab软件定义无线电(一)

点击上面的 Run,运行起来,找个 443 的射频遥控器按一下就能看到频谱图出现了变化

RTL-SDR&Matlab软件定义无线电(一)

然后来看一下 rtlsdr_rx_startup_matlab.m,这是 Matlab 的代码,里面先设置了一堆 RTL-SDR 的参数

rtlsdr_id           = '0';          % RTL-SDR ID
rtlsdr_tunerfreq = 433.92e6; % RTL-SDR tuner frequency in Hz
rtlsdr_gain = 25; % RTL-SDR tuner gain in dB
rtlsdr_fs = 2.4e6; % RTL-SDR sampling rate in Hz
rtlsdr_frmlen = 4096; % RTL-SDR output data frame size
rtlsdr_datatype = 'single'; % RTL-SDR output data type
rtlsdr_ppm = 0; % RTL-SDR tuner parts per million correction
sim_time = 60; % simulation time in seconds

然后创建了一些对象

% rtl-sdr object            使用RTL-SDR对象,设置的参数是前面写好的
obj_rtlsdr = comm.SDRRTLReceiver(...
rtlsdr_id,...
'CenterFrequency', rtlsdr_tunerfreq,...
'EnableTunerAGC', false,...
'TunerGain', rtlsdr_gain,...
'SampleRate', rtlsdr_fs, ...
'SamplesPerFrame', rtlsdr_frmlen,...
'OutputDataType', rtlsdr_datatype ,...
'FrequencyCorrection', rtlsdr_ppm );

% spectrum analyzer objects 使用了两个频谱分析对象,一个设置为FFT格式,一个设置为瀑布流格式
obj_specfft = dsp.SpectrumAnalyzer(...
'Name', 'Spectrum Analyzer FFT',...
'Title', 'Spectrum Analyzer FFT',...
'SpectrumType', 'Power density',...
'FrequencySpan', 'Full',...
'SampleRate', rtlsdr_fs);
obj_specwaterfall = dsp.SpectrumAnalyzer(...
'Name', 'Spectrum Analyzer Waterfall',...
'Title', 'Spectrum Analyzer Waterfall',...
'SpectrumType', 'Spectrogram',...
'FrequencySpan', 'Full',...
'SampleRate', rtlsdr_fs);

通过一帧的数据量除以采样率,用来控制仿真运行的时间

rtlsdr_frmtime = rtlsdr_frmlen/rtlsdr_fs;

通过仿真,监听在对应的频率,实现的效果与 Simulink 是一致的

% check if RTL-SDR is active 先检查RTL-SDR设备是不是能用
if isempty(sdrinfo(obj_rtlsdr.RadioAddress))
error(['RTL-SDR failure. Please check connection to ',...
'MATLAB using the "sdrinfo" command.']);
end

% reset run_time to 0 (secs) 初始化时间
run_time = 0;

% run while run_time is less than sim_time 当前时间只要不超过设定的时间就会一直跑
while run_time < sim_time

% fetch a frame from the rtlsdr RTL-SDR获取到的数据帧存储在rtlsdr_data中
rtlsdr_data = step(obj_rtlsdr);

% update spectrum analyzer windows with new data
% 将 rtlsdr_data 更新到 obj_specfft 和 obj_specwaterfall
step(obj_specfft, rtlsdr_data);
step(obj_specwaterfall, rtlsdr_data);

% update run_time after processing another frame 运行时间
run_time = run_time + rtlsdr_frmtime;

end

RTL-SDR 使用的 R820T 调谐器能够接收到 25MHz 到 1.75GHz,把工作目录切换到:spectrum,打开 exploring_the_spectrum.slx,通过这个例子可以观察各种信号的频谱

中心频率是可以通过 GUI 界面进行调节的,当前这个设置 RTL-SDR 的中心频率是 99MHz,同时采样率被设置为了 2.8MHz,这样 RTL-SDR 采样的范围是:99-1.4 到 99+1.4,也就是在 97.6MHz 到 100.4MHz 都会被 RTL-SDR 捕捉到

RTL-SDR&Matlab软件定义无线电(一)

调整好中心频率后点击 Start Simulation 就会开始解析射频信号,后面我们会分析这些信号,分析的前提是需要把这些信号调整到中心频率上,比如当前看到有两个比较明显的信号,都是 ±1 左右,因此把 Centre Frequency ±1 即可把其中一个信号频率设置为中心频率

RTL-SDR&Matlab软件定义无线电(一)

当然还需要微调一下

RTL-SDR&Matlab软件定义无线电(一)

另一个参数是增益(Gain),简而言之,增益就是放大倍数,需要注意提高增益可能导致噪声随着所需信号的增加而增加

书中通过这个例子介绍了一些常见信号的频谱特征(FM电台信号、2G、3G、4G蜂窝电话信号、433MHz的无线传感器信号、数字电视信号,但是因为教程是国外的,频段是有差距的,有些在国内对应的频率啥也没有

我从网上搜了搜国内的频率,观察到一些波形跟书中描述的很像的,但也不知道是不是,等后面解析信号的时候再看吧

RTL-SDR&Matlab软件定义无线电(一)

原文始发于微信公众号(陈冠男的游戏人生):RTL-SDR&Matlab软件定义无线电(一)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月31日10:40:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   RTL-SDR&Matlab软件定义无线电(一)http://cn-sec.com/archives/1776232.html

发表评论

匿名网友 填写信息