使用Matlab和Pluto SDR发送单音信号

RTL-SDR电视棒应该有不少人都玩过,几十块钱就可以接收到很宽频段的信号,不仅可以收听广播,还可以监听某些电台,甚至可以接收GPS信号进行定位,但它作为无线电设备的痛点就是只能收但不能发,不能自己发送信号,是不是有点手痒痒,如果恰巧手里有一块可以同时收发信号的Pluto SDR,那么玩法可就多了,但最基础的还是学会怎么发送信号,接下来使用Matlab编程的方法实现SDR发送信号。

声明:本文只涵盖了代码实现,没有涉及到Simulink实现,实际上使用界面化的Simulink会更加方便,但由于相关文章很多,本文概不赘述。

准备环境

想要使用Matlab对Pluto SDR开发需要先安装Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio,需要2017b及更新的版本。
plutosdr

代码实现

首先需要自己生成一个信号,这里以单音信号举例,使用DSP toolkit生成一个幅度0.5,频率100kHz的正弦信号,并规定采样率2MHz,每帧5k样本(即400帧/秒)。注意Pluto SDR处理的是复数信号,所以生成的正弦波需要是复数输出。

fs = 2e6;
sw = dsp.SineWave;
sw.Amplitude = 0.5;
sw.Frequency = 100e3;
sw.ComplexOutput = true;
sw.SampleRate = fs;
sw.SamplesPerFrame = 5000;
txWaveform = sw();

根据官方文档,想要发送信号,需要先创建一个sdrtx对象,然后对其属性进行修改,例如设备ID、中心频率(此处设定为2.415GHz)、基带采样率等,最后transmitRepeat让连接到的设备一直重复发送设定好的单音信号。

tx = sdrtx('Pluto');
tx.RadioID = 'ip:192.168.1.10';
tx.CenterFrequency = 2.415e9;
tx.BasebandSampleRate = fs;
tx.Gain = -5;
transmitRepeat(tx,txWaveform);

若想让发送停止,在命令窗口输入release(tx)即可。

结果呈现

使用另一个接收设备,将中心频率调整到2.415GHz附近,可以观察到2.4151GHz有一强度很高的信号,这就是我们的100MHz基带信号被搬移到了2.415GHz频段的结果。周围很多小尖峰是我们的单音信号的谐波分量,当发射端release(tx)后,即停止发射信号后,这些小谐波都会消失,图上的这个频段会恢复寂静。
在这里插入图片描述

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值