Funpack第五期-用Simulink+Matlab App Designer制作Pluto FM收音机
本期板卡为ADI公司的ADALM-PLUTO口袋仪器,具有独立的接收和发射通道,可在全双工模式下工作,可以在25MHz至3800MHz频率范围内以最高每秒61.44MSPS产生或捕获RF模拟信号。
标签
网络与通信
氢化脱氯次氯酸
更新2021-02-20
1861

平台简介

ADALM-PLUTO主动学习模块(PlutoSDR)易于使用,有助于向电气工程专业学生介绍软件定义无线电(SDR)、射频(RF)和无线通信的基础知识。该模块针对不同层次和背景的学生而设计,可同时用于教师辅导和自主学习,旨在帮助学生在攻读理学、技术或工程学位时为真实世界中的RF和通信技术打下基础。

PlutoSDR 与主机配合使用时,充当便携式实验室,可增强课堂学习。MATLAB®和Simulink®是由PlutoSDR支持的两个主要软件包,它提供直观的图形用户界面 (GUI),让学生可以更快学会,更巧妙地开展工作并探索更多知识。

PlutoSDR 具有独立的接收和发射通道,可在全双工模式下工作。主动学习模块可以在 325 MHz 至 3800 MHz 频率范围内以最高每秒 61.44MSPS 产生或捕获 RF 模拟信号。PlutoSDR 非常小,可装在衬衣口袋中,完全独立自足且由配有默认固件的 USB 供电。由于 PlutoSDR 通过 libiio 驱动程序启动,因此它支持 OS X®、Windows® 和 Linux®,可让学生在多台设备上学习和探索。

开发环境

本项目开发环境为MATLAB (2020b)和Simulink,使用MATLAB的PLUTO软件包来提供PLUTO的编程接口,并使用MATLAB App Designer设计用户界面,打包成MATLAB App程序,便于开发与使用。

使用的工具包:

  • Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio
  • DSP System Toolbox
  • Communications Toolbox
  • Signal Processing Toolbox

本期任务

题目描述:拓展ADALM-PLUTO的频段,替换ADALM-PLUTO天线,完成常见FM收音机的功能

题目的基本要求:

  • 实现从87~108M频段的调频广播的解调
  • 设计上位机界面,通过上位机可以实现调频功能

程序流程

App内的Pluto连接开关开启后,App自动对内部的Simulink模型开始仿真,并向模型传递中心频率、音量等信息。Simulink模型包含Pluto接收模块,FM广播解调模块和音频播放模块。解调模块对Pluto接收到的信号进行解调后传递给音频播放模块,实现FM收音机的功能。

实现思路

1.PLUTO频段扩展:

Pluto默认频段为325 – 3800 MHz,该频段不包含FM广播。在MATLAB命令行中输入命令

configurePlutoRadio('AD9364')

可以扩展Pluto的频段至70 – 6000 MHz,从而可以接收FM广播。

 

2.Simulink模型:

FgBqXbAKSwzqEH6OtKHJVS530j5s

(1)Pluto接收模块(ADALM-Pluto Radio Receiver):

模型中使用上图最左侧的Constant Value模块来传递中心频率,所以在Pluto接收模块中,中心频率来源(Source of center frequency)一项要选择Input Port。基带采样率(Baseband sample rate)一项取决于最后解调出的音频采样率。设置最后的音频采样率为48000Hz,基带采样率需要是音频采样率的整数倍,这里设置为5倍,所以基带采样率设置为240kHz。

下方的帧大小(Samples per frame),即接收缓冲区大小,每次接受缓冲区填满后才会将信号传递给解调模块。设置合理的缓冲区大小可以提高接收效率,这里设置为3840。

其余参数均保持默认。

FrCjZDG96GmX5LSGeiouzg7Kd84U

(2)FM广播解调模块(FM Broadcast Demodulator Baseband):

配置FM广播解调模块的采样率和音频采样率分别为240kHz和48000Hz,最大频偏为75kHz。

该模块自带一个去加重滤波器。在调频广播发射中,为了改善高音频调制的信噪比而采用了预加重电路,所以在调频收音机中必须采用去加重电路,以使音频信号还原。国内的广播去加重滤波器的时间常数为50μs。

解调后的音频信号经过一个增益(Gain)模块进行音量调节,通过改变波形幅度来直接调节音量,之后再通过音频播放模块(Audio Device Writer)播放。

FmPHGwEK8z03S5bRXCFLseNoZyZ2

3.MATLAB App

App的用户界面通过MATLAB App设计工具(MATLAB App Designer)设计。App 设计工具是交互式开发环境,用于设计 App 布局并对其行为进行编程。它提供 MATLAB编辑器的完整集成版本和大量交互式 UI 组件。它还提供网格布局管理器来组织您的用户界面,并提供自动调整布局选项来使您的 App 检测和响应屏幕大小的变化。它允许您通过直接从 App 设计工具工具条将 App 打包为安装程序文件中来分发 App,或通过创建独立的桌面 App 或 Web App 来分发 App。

(1)与Simulink模型的交互

用model变量记录模型名称:

model = 'funpack5_model';  % Simulink Model

load_system()用于加载Simulink模型至内存:

load_system(app.model);

加载模型后,使用set_param()函数来改变模型参数。通过改变Simulink模型中CenterFrequency模块的Value数值可以改变中心频率,改变Volume模块的Gain数值可以改变音量大小。两模块参数只接受包含数值的字符串,所以需要使用num2str()函数将浮点数转化为字符串,并保留两位小数。此外,音量需要将0~100的音量值映射为0~1的信号增益值,所以需要除以100。

set_param([app.model '/CenterFrequency'], 'Value', num2str(freq, '%.2f'));

set_param([app.model '/Volume'], 'Gain', num2str(vol/100, '%.2f'));

调用sim()函数开始仿真:

sim(app.model);

停止仿真也使用set_param()函数:

set_param(app.model, 'SimulationCommand', 'stop');

仿真过程中,调用open_system()函数,并选择Spectrum Analyzer模块打可以开频谱窗口,调用lose_system()函数可以关闭频谱窗口。

open_system([app.model '/Spectrum Analyzer']);

(2)App组件回调函数

App界面共有连接开关、中心频率调节旋钮、中心频率微调器、音量调节旋钮、音量微调器、频谱显示按钮、状态指示灯几大交互模块。其中状态指示灯没有回调函数,旋钮和微调器共用一个回调函数,开关和按钮有各自的回调函数。

下面只介绍连接开关的回调函数,其余回调函数同理。

打开连接开关,回调函数PlutoConnectionSwitchValueChanged()被调用。在回调函数中执行pluto_connecting_disconnecting()函数,该函数通过向指示灯(StatusLamp)的属性Color中写入’y’,指示灯就会变为黄色,表示Pluto正在连接。

连接成功后,广播自动播放。并向指示灯(StatusLamp)的属性Color中写入’g’,指示灯就会变为绿色。

关闭连接开关后,再次进入该回调函数,仿真停止,并向指示灯(StatusLamp)的属性Color中写入’r’,指示灯变为红色,表示连接断开。

(3)错误处理

当Pluto的连接出现错误时,会弹出错误窗口,错误窗口由App主页面调用。错误窗口在开启函数(startupFcn)中接收主页面传来的错误信息并进行显示。主页面调用

error_window(['Error connecting to Pluto!' newline newline 'Please check your Pluto connection.']);

可以调出错误窗口error_window,参数即为包含错误信息的字符串。

错误窗口弹出时自动调用开启函数

function startupFcn(app, str)

            app.ErrorMessageLabel.Text = str;

end

接收字符串,并写入页面,从而完成了错误信息的显示。

心得体会

这次的套件ADALM-PLUTO价格相比于前几期高出了很多,但其可玩性、扩展性非常强,同时作为一名电子信息专业的学生,无线电不可或缺的一部分,所以活动开始当天我就马上下单了。虽然我之前没有SDR的基础,但MATLAB提供的PLUTO软件包和App Designer使得开发难度降低了序多。希望funpack活动越办越好!

附件下载
code.zip
包含Simulink模型、Matlab App Designer文件和Matlab App安装包
说明文档.pdf
程序的使用方法、原理等
团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号