AnyMath 文档
Notebook

RHYTHM SDR USRP通过RF路径发送和接收信号

本例说明[RHYTHM SDR USRP]的应用(https://engee.com/helpcenter/stable/cn/engee-hardware/ritm-sdr-usrp-hardware.html )在AnyMath环境中。 该材料是系列中的第二种。 第一个例子,它检查了与指定复合体的基本相互作用的原则,可以在链接中找到:"[节奏SDR USRP入门](https://engee.com/community/ru/catalogs/projects/nachalo-raboty-s-ritm-sdr-usrp )"。 这里有两个选项用于在射频(RF)路径上对无线电信号的接收和发送进行实验验证。

***检查1。**通过RF路径发送和接收用户无线电信号
展示了AnyMath环境和SDR USRP节奏的联合功能。 在这种情况下,AnyMath用于产生、显示和分析信号,SDR USRP节奏提供在AnyMath中产生的信号的接收和发送。 已经实现了两种类型的RF发射测试效果:谐波(正弦)和多频。
***检查2。**接收IEEE802.11(Wi-Fi)标准的无线网络信号
示出了节奏SDR USRP作为用于监测无线电电波的宽带接收设备的实际应用。 该验证包括在IEEE802.11(Wi‑Fi)网络所占用的频率范围内记录和显示信号。

这些实验检查证明了模块的使用[Targets.RITM_SDR_API](https://dev.lk.onprem.kpm-ritm.ru/helpcenter/stable/ru/engee-hardware/ritm-sdr-usrp-hardware.html )在AnyMath环境中。 要使用RHYTHM SDR USRP,您需要连接文件 ritm_sdr_utils.jl,包含辅助功能。 此文件自动下载提供SDR USRP节奏管理功能的模块。

In [ ]:
include("ritm_sdr_utils.jl")
Пакет поддержки 'Engee-Device-Manager' версии 'v1.54' успешно установлен.
✓ Библиотека вспомогательных функций RITM SDR USRP готова

使用节奏SDR USRP接收和发送无线电信号

下面的代码片段演示了SDR USRP节奏与AnyMath环境在信号生成,发送和接收方面的交互顺序,并且还说明了使用库处理用户信号的可能性[EngeeDSP](https://engee.com/helpcenter/stable/cn/engee-dsp.html)。

代码生成、发送、接收和分析谐波(正弦)信号。 与SDR USRP服务器的连接在IP地址预先建立: 192.168.2.70.

In [ ]:
RITM_SDR_API.@log_on
client = RITM_SDR_API.RITMClient("192.168.2.70")
RITM_SDR_API.connect(client) || (exit(1));
Логирование включено
✓ Подключено к 192.168.2.70:12345

下面是通过调用函数对可编程逻辑块的配置 configure_sdr,其中调整指定块的寄存器作为节奏SDR USRP的一部分。

In [ ]:
configure_sdr(client);

使用函数 agc_set_mode 自动增益控制(AGC)被激活。

In [ ]:
RITM_SDR_API.agc_set_mode(client, 1);

接下来,产生频率为10MHz的谐波信号。

In [ ]:
fs_hz = 245.76e6 
tone_freq_hz = 10e6  
n_samples = 600000
t = (0:n_samples-1) / fs_hz
signal = exp.(2π * im * tone_freq_hz * t);

之后,将生成的信号加载到SDR USRP的内部存储装置中,并从随机存取存储器(RAM)开始其循环播放。 SDR USRP节奏提供了一种模式,其中信号以循环模式连续广播。

In [ ]:
tx_data = RITM_SDR_API.prepare_tx_data(signal)
if RITM_SDR_API._put_data(client, tx_data)
    sleep(5.0)  
    RITM_SDR_API.send_to_ram(client)
    sleep(10.0)
else
    RITM_SDR_API.@logmsg "Ошибка отправки данных"
end
Отправка данных (2400000 байт)
Данные отправлены (ожидание подтверждения...)

正交分量的接收由功能进行 receive_iq().

In [ ]:
rx_iq = receive_iq(client, n_samples);
Запуск приема (600000 отсчетов)
✓ Буферы сброшены
Ожидание ОЗУ...
Получение данных
✓ Данные получены (4800000 байт)

接收信号的分析由函数进行 plot_signal(),其在时域和频域中执行绘图。 此功能使用库提供的工具。 EngeeDSP.

In [ ]:
if rx_iq !== nothing && length(rx_iq) > 0
    RITM_SDR_API.@logmsg "Принято $(length(rx_iq)) отсчетов"
    plot_signal(rx_iq[1:min(end, 5000)], fs_hz, "Аналоговая петля: $(round(tone_freq_hz/1e6, digits=2)) МГц, Fs=$(round(fs_hz/1e6, digits=2)) МГц");
end
Принято 600000 отсчетов
✓ Сохранено: signal_2026-05-20_11-49-10.png
Out[0]:

下,触发多频信号。 根据算法,该检查完全重复前一个,但不是谐波信号,而是使用函数 generate_signal(),旨在创造专门的测试效果:多频,线性频率调制(LFM)或双频信号。 在这个例子中,产生由分布在从10MHz到100MHz的频率范围内的15个谐波分量组成的多频率信号。

In [ ]:
signal = generate_signal(fs_hz, n_samples; signal_type="multitone", f_low=10e6, f_high=100e6, num_tones=15)
sleep(10.0)
tx_data = RITM_SDR_API.prepare_tx_data(signal)
if RITM_SDR_API._put_data(client, tx_data)
    sleep(5.0)  
    RITM_SDR_API.send_to_ram(client)
    sleep(10.0)
else
    RITM_SDR_API.@logmsg "Ошибка отправки данных"
end
rx_iq = receive_iq(client, n_samples)
if rx_iq !== nothing && length(rx_iq) > 0
    RITM_SDR_API.@logmsg "Принято $(length(rx_iq)) отсчетов"
    plot_signal(rx_iq[1:min(end, 5000)], fs_hz, "Аналоговая петля, многочастотный сигнал");
end
✓ Сгенерирован многочастотный сигнал: 15 тонов ±[10.0-100.0] МГц
Отправка данных (2400000 байт)
Данные отправлены (ожидание подтверждения...)
Запуск приема (600000 отсчетов)
✓ Буферы сброшены
Ожидание ОЗУ...
Получение данных
✓ Данные получены (4800000 байт)
Принято 600000 отсчетов
✓ Сохранено: signal_2026-05-20_11-50-17.png
Out[0]:

在结束时,传输停止并且SDR USRP内存清除。

In [ ]:
RITM_SDR_API.disconnect(client)
RITM_SDR_API.close_log();
✓ Соединение закрыто

Лог-файл закрыт: logs/log_2026-05-20_11-44-29.log

这些示例清楚地显示了AnyMath和SDR USRP节奏的联合功能,此外,第二个示例允许您评估处理多频信号的质量。

IEEE802.11无线网络信号接收(Wi-Fi)

以下测试演示了SDR USRP节奏用于监控无线电广播的实际应用,即用于记录和分析IEEE802.11(Wi‑Fi)网络占用范围内的信号。 验证显示了RHYTHM SDR USRP作为广播监控任务的概述宽带接收器的功能。 在验证期间,评估连接的正确性,数据接收以及对给定信道上的频谱情况进行视觉分析的可能性。 结果可以作为调试和后续开发用于解调和解码IEEE802.11网络流量的更复杂算法的基础。

IEEE802.11(Wireless Fidelity,Wi‑Fi)标准定义了一种无线数据传输技术,允许设备连接到本地网络并通过无线电波访问Internet,而无需使用有线连接。 IEEE802.11网络中使用的频率范围:

-2.4GHz(2400-2483.5MHz)是最常见的频段,通过障碍物提供良好的信号穿透,但受到其他设备(微波炉,蓝牙设备)的干扰。
-5GHz(5150-5850MHz,分为几个子带)-提供更高的数据传输速度和更低的拥塞,但穿透障碍物更差。
-6GHz(5925-7125MHz)是Wi‑Fi6E和Wi‑Fi7标准中使用的新频段;专为超高速和低延迟而设计,主要在视线范围内的短距离内运行。

让我们分阶段来看看验证的结构。 确定信道频率。 验证通过使用函数计算目标Wi‑Fi信道的中心频率开始 wifi_channel_frequency. 关于可用网络的信息可用于选择信道,例如,命令 netsh wlan show interfaces 在Windows环境中,显示无线适配器的当前信道和频率范围(2.4GHz或5GHz)。

In [ ]:
RITM_SDR_API.@log_on
wifi_freq_mhz = wifi_channel_frequency("2.4GHz", 2)
RITM_SDR_API.@logmsg "Частота Wi-Fi: $wifi_freq_mhz МГц";
Логирование включено
Частота Wi-Fi: 2417 МГц
Автоматически создан лог-файл: logs/log_2026-05-20_12-36-51.log

该算法使用该函数记录正交分量(I/Q数据)的600,000个样本 receive_iq. 该体积对应于在30.72mhz的采样频率下持续时间约为19.5ms的信号段。

In [ ]:
client = RITM_SDR_API.RITMClient("192.168.2.70")
RITM_SDR_API.connect(client) || (exit(1))
configure_sdr(client, Int(wifi_freq_mhz * 1e6))
RITM_SDR_API.agc_set_mode(client, 1)  
sleep(0.5)
iq_data = receive_iq(client, 600000)
if iq_data !== nothing
    RITM_SDR_API.@logmsg "записано $(length(iq_data)) отсчетов";
end
✓ Подключено к 192.168.2.70:12345
Отправка команды: COMMAND:SET_TX_CARR_FREQ_HZ=2417000000
✓ Частота установлена: 2417000000 Гц
Запуск приема (600000 отсчетов)
✓ Буферы сброшены
Ожидание ОЗУ...
Получение данных
✓ Данные получены (4800000 байт)
записано 600000 отсчетов

录信号的显示。 如果接收到数据,则将其传递给函数 plot_signal 与参数 signal_type="wi-fi". 该函数构建了一个双面板图:在时域和频域(以分贝为单位的频谱功率密度相对于满量程,相对于Wi-Fi信道的设定频率居中)。 图形会自动保存到数据文件中。

In [ ]:
plot_signal(iq_data, 30.72e6, "Wi-Fi: $(wifi_freq_mhz) МГц", center_freq_hz=wifi_freq_mhz * 1e6, signal_type="wi-fi")
✓ Сохранено: signal_2026-05-20_12-39-18.png
Out[0]:

断开连接。 用RHYTHM SDR USRP完成工作后,连接终止。

In [ ]:
RITM_SDR_API.disconnect(client)
RITM_SDR_API.close_log();
✓ Соединение закрыто

Лог-файл закрыт: logs/log_2026-05-20_12-36-51.log

结论

使用两个实验测试的例子—在模拟环路模式下操作和在空中接收Wi-Fi信号-在AnyMath环境中支持SDR USRP节奏。

在测量期间,在捕获的数据中自信地观察到预设频率为10MHz的正弦信号。 同样,在发射多频信号时,其主要成分被记录在频谱中,这证实了测试无线电信号的形成,发射和接收的正确性。

接收Wi-Fi信号的实验证明了使用RHYTHM SDR USRP作为宽带接收器设备用于分析真实无线电信号的可能性。 所得频谱清楚地显示了具有OFDM调制的Wi-Fi信号的频谱包络特征的形状。 这表明接收路径的正确配置,足够的接收带宽以及在AnyMath环境中使用SDR USRP捕获复杂宽带调制信号的能力。