您的购物车目前是空的!
标签: EVAL-CN0566-RPIZ
-
佐治亚州亚特兰大学是如何上雷达课的










2025 年 5 月 3 日至 4 日在佐治亚州亚特兰大举行的 IEEE 国际雷达会议期间举行的雷达训练营 – 该训练营取得了巨大成功。
我们进行了为期两天的互动讲座/实验,涵盖了一系列基本的雷达主题,包括雷达的历史、基于雷达的传感的基本原理、雷达信号处理、检测和估计、阵列处理、合成孔径雷达、空时自适应处理、跟踪和雷达中的 AI/ML。 参与者包括学生和行业,提供引人入胜的互动、分享经验和交流机会。
我强烈推荐那些工作/学习雷达的人使用 X波段相控阵雷达开发平台。
下一届 RBC 将于今年 10 月在波兰克拉考举行的 IEEE 雷达会议上举行,并将于 2026 年 5 月返回美国亚利桑那州凤凰城!
-
X波段相控阵雷达开发平台-MATLAB开发
为了我们都能看到一直的效果,建议您和本文档建议的版本保持一致,这样尽可能的减少差异,确保无需额外投入精力去解决环境的问题,建议使用MATLAB 2023B
硬件连线
如果您看过了我们的入门文档,肯定已经在GUI中看到了有趣的雷达案例,在本节中,您需要更改一下连线方式。
首先:断开PlutoSDR和树莓派之间的连线。PlutoSDR的数据链在包装箱内一共有两根,一根是50厘米的长度,一根是15厘米的长度。使用15厘米的MicroUSB线可以很方便的连接到树莓派上,但是不方便连接到电脑上,所以就需要用50厘米的MicroUSB数据线将PlutoSDR和计算机连接起来。
接下来就是使用一根网线,将树莓派的网口和电脑的网口连接到一起。
最终的连线原理图是:

软件安装
MATLAB工具箱
- Antenna Toolbox
- Communications Toolbox
- DSP System Toolbox
- Phased Array System Toolbox
- Signal Processing Toolbox
当你安装MATLAB的时候,建议工具箱全选进行安装,或者一定要把上述的工具包给安装上。
第三方工具包
- Analog Devices, Inc. RF and Microwave Toolbox
- Analog Devices, Inc. Transceiver Toolbox
- Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio
- MATLAB Support for MinGW-w64 C/C++ Compiler
找到MATLAB界面的Add-Ons

然后搜索对应工具包的名称

将工具包全部进行安装。
Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio 这个工具包是需要进行配置的。

点击配置之后,

安装驱动软件即可。请勿刷新PlutoSDR的固件,默认发货的PlutoSDR的固件是特制的,而MATLAB自带的Pluto固件是标准的,刷新固件会导致某些功能的缺失。
如果您实在不小心把PlutoSDR的固件刷了,那么您需要按照这篇文章进行补救:
LibIIO 包安装
MATLAB 可能需要 LibIIO 软件包才能与 Phaser 通信和运行。如果缺少 LibIIO 导致 MATLAB/Phaser 出现问题。
下载地址:https://github.com/analogdevicesinc/libiio
开发
验证连接是否正常
将 相控阵雷达 连接到您的本地网络或直接连接到安装了 MATLAB 的主机,使用 Raspberry Pi 的 IP 地址从命令提示符创建 adi.Phaser 类的实例。
bf = adi.Phaser; bf.uri = 'ip:phaser'; bf()这将使用默认参数连接并配置相控阵雷达 。如果您收到连接错误,请确认 Raspberry Pi 已通电并且至少可以 ping 通设备。
接下来,使用类似的方法验证与 Pluto 的连接。创建 adi.AD9361.Rx 类的实例,并运行运算符方法,如下所示:
sdr = adi.AD9361.Rx sdr.uri = 'ip:pluto'; data = sdr();与 Phaser 系统对象类似,此操作不应产生任何错误。数据向量应包含非零数据。
- 如果在尝试验证连接时出现错误,请尝试以下选项:
- 检查上面列出的所有软件包/工具箱是否已正确安装
- 重新启动 MATLAB 并再次运行代码
- 断开并重新连接相关设备的线缆
- 确保 Raspberry Pi 的 SD 卡已安装 ADI Kuiper Linux(并且能够正常工作)
运行脚本
一旦 Phaser 和 Pluto 都能够与 MATLAB 通信,请下载并解压
然后打开文件Phaser_steeringAngle_rev1.m。
此脚本的功能是扫描一系列转向角并输出阵列因子的图。
% Key Parameters signal_freq = 10.145e9; % this is the HB100 frequency signal_freq = findTxFrequency(); plutoURI = 'ip:192.168.2.1'; phaserURI = 'ip:phaser.local'; % Setup the pluto rx = setupPluto(plutoURI); % Setup the phaser bf = setupPhaser(rx,phaserURI,signal_freq); bf.RxPowerDown(:) = 0; bf.RxGain(:) = 127;这段代码用于使用之前安装的ADI工具箱(此处分别标记为“rx”和“bf”)在MATLAB中初始化Pluto和Phaser对象。它还会进行短暂扫描,以查找HB100发射器的频率。
% Create the model of the phaser c = physconst('LightSpeed'); phaserModel = phased.ULA('NumElements',8,'ElementSpacing', ... bf.ElementSpacing); steeringVec = phased.SteeringVector("SensorArray",phaserModel, ... 'NumPhaseShifterBits',7,'PropagationSpeed',c);本部分使用 MathWorks 的 Phased Array System Toolbox (phased) 在 Phaser 上创建天线阵列模型。Phaser 具有 8 个均匀分布的阵元,使用 Phased Array System Toolbox 中的均匀线性阵列对象 (phased.ULA) 进行建模。相应的转向矢量则使用 Phased Array System Toolbox 中的 SteeringVector 对象创建。
%% Set all gains to max and phases to zero bf.RxGain(:) = 127; % max gain = 127, min gain = 0 bf.RxAttn(:) = 0; % if RxAttn=1 then insert 20dB attenuator bf.RxPhase(:) = 0; bf.LatchRxSettings(); % write new settings to the ADAR1000s % Load Phase calibration values PhaseCal = [0; -8.4375; -5.625; -5.625; 67.5; 87.1875; 90; 101.25];此段仅设置增益级别和相位校准值。
%% Sweep the steering angle and capture data steeringAngle = -90 : 90; ArrayFactor = zeros(size(steeringAngle)); for ii = 1 : numel(steeringAngle) arrayWeights = steeringVec(signal_freq,steeringAngle(ii)); phases = rad2deg(angle(conj(arrayWeights(:)))); phases = phases - phases(1); phases = phases + PhaseCal; phases = wrapTo360(phases); bf.RxPhase(:) = phases.'; bf.LatchRxSettings(); receivedSig_HW = rx(); receivedSig_HW_sum = sum(receivedSig_HW,2); receivedFFT = fft(receivedSig_HW_sum); ArrayFactor(ii) = (max(abs(receivedFFT))); end代码中实际的波束控制操作如下。
代码会创建一个数组,其中包含波束控制所需的角度。然后,它会执行一个循环,其中:- 从角度数组中获取给定角度
- 使用给定的波束控制角度创建另一个数组,其中包含要应用于每个天线单元的相应相移
- 将相移应用于 Phaser
- 从 Pluto 收集数据,对数据进行 FFT 运算以获取最大幅度,并记录下来
- 重复此操作,直至获得下一个波束控制角度
%% Compare the measured array factor and model [~,ind] = max(ArrayFactor); EmitterAz = steeringAngle(ind) figure(101) arrayWeights = steeringVec(signal_freq,EmitterAz); pattern(phaserModel,signal_freq,-90:90,0,'CoordinateSystem', ... 'Rectangular','Type','powerdb','weights',arrayWeights) hold on; % Plot the measured data and the model plot(steeringAngle,mag2db(ArrayFactor./max(abs(ArrayFactor))))这里使用相控阵系统工具箱 (Phased Array System Toolbox) 模拟 Phaser 的阵列因子。然后绘制实验获得的阵列因子(根据上述数据)和模拟的阵列因子。结果图应类似于下图。请注意,模拟和实际获得的阵列因子之间的差异主要是由于尚未进行校准。

完整的 RADAR 示例