用Simulink+MATLAB App Designer制作PLUTO FM收音机

2月20日(大年初九)零点,Funpack第五期已截止,审核也接近尾声,在这里恭喜通过审核的朋友,当然大家最关心的是什么时候返款?本周我们就会陆续推送出视频制作和文档写的都不错的朋友的项目让大家参考,同时完成退款。

今天就先来看看来自中国科学技术大学电子信息专业的大三同学【氢化脱氯次氯酸】如何使用PLUTO的Simulink支持包,并利用MATLAB App Designer上位机界面实现FM播放器的。

以下,enjoy!

cut-off

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命令行中输入命令

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

2. Simulink模型:

(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。

其余参数均保持默认。

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

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

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

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

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

(1)与Simulink模型的交互

用model变量记录模型名称:

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

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

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

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

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

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

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

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

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

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

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

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

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

心得体会

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

END

cut-off

硬禾团队一直致力于给电子工程师和相关专业的同学,带来规范的核心技能课程,帮助大家在学习和工作的各个阶段,都能有效地提升自己的职业能力。

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空