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

news2024/12/28 19:50:29

        前面介绍了基于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_len
    w_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; % 负的溢出时
    end
    
    rrom_addr=round(w_r/2^22);%读查找表的地址
    if rrom_addr == 0
        rrom_addr =1;
    end
    dac_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:N
   sig(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.coloradmin.cn/o/2168483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

离散化 ---( 求区间和)

什么是离散化&#xff1f; 离散化是将连续的数值范围映射到有限的、离散的数值集合的过程。在许多情况下&#xff0c;数据可能会存在多个重复值或范围较大的连续值。为了简化处理&#xff0c;尤其是处理区间查询和增量问题时&#xff0c;我们可以将这些值转换为一组有限的、唯一…

【重学 MySQL】四十、SQL 语句执行过程

【重学 MySQL】四十、SQL 语句执行过程 select 语句的完整结构select 语句执行顺序SQL 语句执行原理 select 语句的完整结构 SELECT 语句是 SQL&#xff08;Structured Query Language&#xff09;中用于从数据库表中检索数据的核心语句。一个完整的 SELECT 语句结构可以包括多…

Linux系统部署Mysql8.x修改密码并且设置远程连接

配置yum仓库配置yum仓库 # 更新密钥 rpm import https:repo.mysql.com/RPM-GPG-KEY- mysql-2023 # 安装Mysql8.x版本 yum库 rpm -Uvh https:dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm 由于MySQL并不在CentOS的官方仓库中&#xff0c;所以我们通过上述rp…

跟李沐学AI:自注意力和位置编码

自注意力 自注意力机制&#xff08;Self-Attention Mechanism&#xff09;&#xff0c;也被称为内部注意力&#xff08;Intra-attention&#xff09;或并行注意力&#xff08;Parallel Attention&#xff09;&#xff0c;是一种在深度学习模型中用于处理序列数据的机制。它允许…

新版pycharm如何导入自定义环境

我们新的版本的pycharm的ui更改了&#xff0c;但是我不会导入新的环境了 我们先点击右上角的add interpreter 然后点击添加本地编译器 先导入这个bat文件 再点击load 我们就可以选择我们需要的环境了

解决毕业论文难题!推荐7款AI自动生成论文工具网站

在当今学术研究和写作领域&#xff0c;AI论文写作工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿&#xff0c;还能进行内容优化、查重和排版等操作。以下是七款值得推荐的AI自动生成论文工具网站&#xff0c;特别推荐千笔-AIPassPaper。…

arthas简单应用

背景说明 项目上某个接口响应时间过长&#xff0c;需要查看方法耗时情况进行优化 安装配置 访问下载页进行下载&#xff1a;下载 | arthas 调整文件位置进行解压缩 - 查看arthas帮助命令&#xff08;非必须&#xff0c;官网文档更详细&#xff09; C:\tools\arthas\4.0.1\b…

移动技术开发:HandlerAsyncTask

1 实验名称 Handler&AsyncTask 2 实验目的 掌握使用Handler消息传递机制和AsyncTask处理后台线程周期性的改变Activity中界面控件的属性 3 实验源代码 布局文件代码&#xff1a; &#xff08;1&#xff09;HandlerTest <?xml version"1.0" encoding&quo…

《深度学习》—— ResNet 残差神经网络

文章目录 一、什么是ResNet&#xff1f;二、残差结构&#xff08;Residual Structure&#xff09;三、Batch Normalization&#xff08;BN----批归一化&#xff09; 一、什么是ResNet&#xff1f; ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出&#xff0c;斩获…

文新智能体开发:省钱有道,智慧选择,属于你的“省钱小诸葛”

开发灵感 在开发购物类智能体“省购小诸葛”时&#xff0c;我的灵感源自于对现代消费者购物行为的深刻洞察与未来科技趋势的展望。想象一个时代&#xff0c;当信息的海洋变得浩瀚无垠&#xff0c;消费者在众多商品与促销活动中遨游&#xff0c;却往往感到迷茫与疲惫。这时&…

在CANoe/CANalyzer中Replay Block“一键发送”一个诊断/命令序列

案例背景&#xff1a; 在博文《在CANoeCANalyzer中“在线回放”CAN Log.asc/blf文件_canoe怎么回放blf文件-CSDN博客https://blog.csdn.net/qfmzhu/article/details/128954931》我们介绍了Replay Block模块的一些典型应用。 下面我们介绍如何使用Replay Block代替IG(Interact…

OJ在线评测系统 后端 使用代理模式编写测试类 并 实现核心业务判题流程

编写测试类(代理模式) 实现示例的代码沙箱 package com.dduo.dduoj.judge.codesandbox.impl;import com.dduo.dduoj.judge.codesandbox.CodeSandbox; import com.dduo.dduoj.judge.codesandbox.model.ExecuteCodeRequest; import com.dduo.dduoj.judge.codesandbox.model.Exec…

Linux 冯诺依曼体系结构与操作系统概念

目录 0.前言 1. 冯诺依曼体系结构概述 1.1 输入单元 1.2 中央处理单元&#xff08;CPU&#xff09; 1.3 输出单元 2. 冯诺依曼体系结构的关键特性 2.1 所有数据流向内存 2.2 数据流动示例&#xff1a;QQ聊天过程 3. 操作系统 3.1 概念 3.2 设计操作系统的目的 3.3 操作系统的“…

华为源NAT技术与目的NAT技术

1&#xff09;源NAT对报文源地址进行转换&#xff0c;分为NAT NO-PAT&#xff0c;NAPT,EASY-IP,三元组NAT&#xff1b; &#xff08;1&#xff09;NAT NO-PAT原理&#xff1a; no-port address translation:非端口地址转换&#xff1a;只转换地址&#xff0c;不转换端口&…

【C++位图】构建灵活的空间效率工具

目录 位图位图的基本概念如何用位图表示数据位图的基本操作setresettest 封装位图的设计 总结 在计算机科学中&#xff0c;位图&#xff08;Bitmap&#xff09;是一种高效的空间管理数据结构&#xff0c;广泛应用于各种场景&#xff0c;如集合操作、图像处理和资源管理。与传统…

使用docker形式部署prometheus+alertmanager+钉钉告警

一、拉取所需要的镜像 docker pull prom/node-exporter docker pull grafana/grafana docker pull prom/prometheus docker pull prom/alertmanager 其中 prom/node-exporter&#xff1a;用于收集主机系统信息和指标的 grafana/grafana&#xff1a;是一个用于可视化和分…

word2vector理论

目录 1.理论 2.公式 3.SkipGram的优化 1.理论 2.公式 3.SkipGram的优化 CBOW的优化, CBOW是用上下文预测中心词. Hirarchical softmax帮助我们最快的找到最大的softmax, 通过建立一个霍夫曼树.

【数据结构】AVL树相关知识详细梳理

1. AVL树的概念 AVL的全称是Adelson-Velsky-Landis&#xff0c;其名称来源于其发明者Adelson、Velsky和Landis&#xff0c; 是平衡二叉树搜索树。 它的出现是由于二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找…

城市轨道交通网络客流大数据可视化分析系统----以某市交通网络客流数据为例

1 引言 1.1研究背景、目的与意义 1.1.1研究背景 城市轨道交通系统是现代城市的重要交通方式之一&#xff0c;随着城市化进程的加速和人口增长&#xff0c;轨道交通系统的客流量不断增加。因此&#xff0c;轨道交通部门和相关企业需要对客流数据进行实时监测和分析&#xff0…

云数据库RDS MySQL性能测试与对比@2024年09月

原创&#xff1a;orczhouninedata 来源&#xff1a;云数据库技术 在不同的云厂商购买相同规格的MySQL实例(如4vCPU-16GB)&#xff0c;获得的性能相同吗&#xff0c;他们的差异如何&#xff1f;本文继续尝试回答这个问题。 详细数据&#xff1a; 测试结果概述 在本次测试中&…