当前位置: 首页 > news >正文

软件无线电3-微相E316和HackRF实现FM调制解调

        前面介绍了基于Matlab、矢量信号器和HackRF One实现射频下的FM调制解调,今天分享的内容是用微相E316替代矢量信号器完成发射工作。注意本文仅用于科研和学习,私自搭建电台属于违法行为。

1.概述

微相E316和HackRF One实现FM调制解调测试框图如1所示:

图1 微相E316和HackRF One实现FM调制解调框图

        Matlab将FM调制基带IQ数据存为IQ文件,上位机通过网口将IQ文件发给微相E316,微相E316将基带IQ数据转换为射频信号发射,用HackRF One作为接收机接收FM信号,最后使用计算机开源软件SDRSharp监听FM解调后的语音。

        微相E316的网口和USB口连接计算机,如图2所示:

图2 微相E316和计算机间接线图

        微相E316的射频输出用SMA射频线连接到HackRF One的天线接口(或者微相E316的射频输出和HackRF One的天线接口分别接一根天线),HackRF One 的USB接口连接至计算机,如图3所示。

图3 HackRF One接线图

2.Matlab生成FM调制基带IQ信号

2.1Matlab读取语音文件

        准备一段wav的语音文件,我用笔记本自带的录音机录制了一段自己的语音“软件无线电小方圆.wav“,MATLAB读取语音文件,并获取采样频率信息。

clc;
clear all;
%% ***************read file*************************************
filename ='./data_source/软件无线电小方圆.wav';
[m,fm]= audioread(filename);% fm = 48e3; %音频的采样率
sound(m,fm);
figure(1);
plot(m);title('原始的语音信号');

我的这段语音数据源采样率48kHz。时域波形如图4所示,

图4 原始语音信号时域波形

2.2相关参数设置和语音数据源初处理

        我用的载波频率192kHz,载波采样率1.92MHz,代码里类似这些参数大家可以根据自己的需求修改。FM宽带调制最大频偏75kHz。因为FM调制是用基带信号控制载波的频率,即与载波信号数据相乘,所以在这之前,我们需要将基带信号的采样率和长度进行处理,使其与载波信号采样率和长度保持一致,处理代码如下:

fs = 1.92e6; %采样率 载波的采样率
fc = 192e3; %载波中心频率
df = 75e3; %最大频偏  宽带75khz  窄带5khz
kf = (df*2^32/fs)/32767;
AC= 1024;%幅度
dt=1/fs;
m_len=length(m)*fs/fm;%按照载波采样率的长度计算
m_t=zeros(1,m_len);
for i=1:length(m)for j=1:fix(fs/fm)m_t((i-1)*fix(fs/fm)+j)=m(i); end
end

2.3 FM调制生成基带IQ信号

查表法实现信号发生器,MATLAB产生DDS,生成FM调制基带IQ数据,代码如下:

%************************* FM调制 ********************
n=0:1/1024:1023/1024;
s_rom=sin(2*pi*n);
c_rom=cos(2*pi*n);
w_r=0;%相位累加器
rrom_addr=0;%
dac_i=zeros(1,m_len);%I路信号 
dac_q=zeros(1,m_len);%Q路信号
for i=1:m_lenw_r = w_r + kf*m_t(i);if(w_r > 2^32) % 做32位累加器的溢出判断w_r= w_r - 2^32;elseif(w_r <0)w_r = w_r + 2^32; % 负的溢出时endrrom_addr=round(w_r/2^22);%读查找表的地址if rrom_addr == 0rrom_addr =1;enddac_q(i)=AC*s_rom(rrom_addr);dac_i(i)=AC*c_rom(rrom_addr);
end
data =  dac_i +1i*dac_q;

2.4 Matlab生成IQ文件

Matlab完成将2.3节里生成的FM调制基带IQ数据存为IQ文件,代码如下:

for i=1:Nsig(2*i-1)= real(data (i));sig(2*i)= imag(data (i));
end
fileID = fopen('WBFM.iq', 'wb');
% 写入数据,'short'指定数据类型为short(2字节整数)
fwrite(fileID, sig, 'short');
% 关闭文件
fclose(fileID);

3.上位机将IQ文件导入微相E316

步骤一:网线一端连接计算机,另一端连接微相E316,根据E316内部代码,设置计算机IP,我的E316 IP是192.168.1.11,计算机IP设置为192.168.1.33:

步骤二:上位机选择上一章里Matlab生成的IQ文件,点击“载入文件”,如图5所示:

图5 上位机载入IQ文件

步骤三:等待上位机打印区显示数据下发完成,如图6所示。

图6 上位机下发IQ文件

步骤四:发送次数改为0(连续发送),点击“开始发射”,停止则要点击“停止发射”,如图7和图8所示:

图7上位机设置连续发射

图8 上位机设置E316射频发射中

4.微相E316生成FM信号

        微相E316读取网口接收的IQ文件,得到FM调制基带IQ数据,根据设置的频率,我的E316代码内部设置发射频率492005270Hz,如图9所示,E316将FM调制基带IQ数据经过上变频和混频后,通过射频DA发送FM信号。

图9 开始连续发射

5.HackRF One接收FM信号

在电脑上打开软件SDRSharp,打开后具体操作步骤如下:

步骤一:打开设置,选择硬件HackRF One,如10所示:

图10 SDRSharp设置选择HackRF One

步骤二:选择Radio模式,勾选WFM,如图11所示

图11 SDRSharp选择WFM

步骤三:打开监听开关,如图12所示

图12 SDRSharp打开监听开关

步骤四:设置监听频率490MHz,如图13所示

图13 SDRSharp设置监听频率

步骤五:调节音量和增益值,如图14所示,使收听效果更好。

图14 SDRSharp设置音量和增益


http://www.mrgr.cn/news/36950.html

相关文章:

  • AI 驱动的数据库 TDSQL-C 实战与电商可视分析
  • 用于MRI重建的具有全局感受野的傅里叶卷积块|文献速递--基于多模态-半监督深度学习的病理学诊断与病灶分割
  • 62.【C语言】浮点数的存储
  • TypeError: load() missing 1 required positional argument: ‘Loader‘
  • OJ在线评测系统 后端 判题机模块预开发 架构分析 使用工厂模式搭建
  • MYSQL求月份同比数据和环比数据
  • PPP点对点协议(Point-to-Point Protocol)
  • KVM 安装 Windows11
  • 电路知识1 电阻 电容
  • python 魔法方法简记
  • 如何使用ssm实现学生考勤管理系统的设计与实现+vue
  • 重修设计模式-行为型-责任链模式
  • 求n的阶乘的相反数(c语言)
  • sizeof计算……元素个数
  • 【RabbitMQ 项目】客户端:消费者模块
  • 国产游戏出海火热另一面:AI和API快速成长引发网络安全挑战
  • C语言进程
  • 对数转换同底公式证明
  • 立志最细,你是否知道,嵌入式开发常见系统名称及其含义!!!
  • 三、人物骨骼介绍