您的购物车目前是空的!
作者: zhao xudong
-
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 示例
-
X波段相控阵雷达开发平台-设备高阶指南
欢迎
欢迎阅读本指南,本指南旨在让想从头开始配置设备的用户阅读,本指南作为一份指导,会帮你解决安装过程中的大部分问题,但是您仍然会遇到各种奇奇怪怪的问题,希望您可以在Google无果后与我们咨询问题。
本指南默认认为您具备Linux使用能力,具备Git等能力。
请自购一张SD卡,请勿使用套件中的SD卡,套件中的SD卡作为保底使用,当您无法完成本指南得时候,还是可以使用随货发出的保底SD卡正常使用。
制作SD卡
SD卡烧录工具:Raspberry Pi Imager

镜像下载地址:image_2023-04-02-ADI-Kuiper-full.zip
在使用的时候,选择设备中,选择树莓派4。

系统镜像请勿选择官方的,而是选择custom

然后选择我们下载的镜像即可。接下来完成烧写之后,即可插入树莓派中,进行开机了。
用户名和密码
用户名和密码,可以用于后续的SSH远程连接。
用户名 密码 root analog analog analog 启用树莓派 VNC 服务
在终端输入以下命令进入配置界面。
sudo raspi-config
依次操作:Interfacing Options -> VNC -> Yes。之后系统会提示你是否要安装 VNC 服务,输入 y 之后回车,等待系统自动下载安装完成,一切顺利的话 VNC 服务就启动了!



安装NTP 模块
sudo apt-get install ntp使用命令重启ntp服务:
sudo service ntp restart检查当前的时间同步状态:
timedatectl status这个是为了后续的安装软件使用。
配置代理
注意打开局域网连接

注意记住端口号

查看自己电脑的IP是多少,可以用CMD查看

IP地址因机器而不同。
在设备的命令行中输入:
sudo nano /etc/environmentenvirinment内输入(注意下文是模板,你需要根据实际情况进行修改):
export http_proxy="http://username:password@proxyipaddress:proxyport" export https_proxy="http://username:password@proxyipaddress:proxyport" export no_proxy="localhost, 127.0.0.1"用代理的IP地址和端口替换proxyipaddress和proxyport。
export http_proxy="http://192.168.0.108:7899" export https_proxy="http://192.168.0.108:7899" export no_proxy="localhost, 127.0.0.1"保存的话,按下:Ctrl + X
然后在设备的命令行中输入:
sudo visudo将下面的行添加到文件中,这样sudo将使用您刚刚创建的环境变量(注意查看位置):
Defaults env_keep+="http_proxy https_proxy no_proxy"注意拷贝的位置

重启
sudo reboot安装相控阵相关软件
wget https://github.com/thorenscientific/rpi_setup_stuff/raw/main/phaser/phaser_sdcard_setup.sh sudo chmod +x phaser_sdcard_setup.sh ./phaser_sdcard_setup.sh sudo reboot重启之后运行
sudo pip install --force-reinstall numpy==1.22你可以参考其他的文档进行下一步的实验之旅了!