ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

nRF24_jammer 修改版 RF24 库深度剖析:startConstCarrier 恒载波干扰是如何实现的

nRF24_jammer 修改版 RF24 库深度剖析:startConstCarrier 恒载波干扰是如何实现的

【免费下载链接】nRF24_jammer

The nRF24 jammer is a powerful tool that requires an ESP32 and configurable numbers of NRF24 modules to assemble. It is designed to create interference, disrupting the normal operation of Bluetooth devices 🔊, BLE technology 📱, drones 🚁, Wi-Fi networks 📶 and Zigbee 📡. Additionally, it features a user-friendly web interface 🌐.

项目地址:https://gitcode.com/gh_mirrors/nr/nRF24_jammer
点击查看免费下载

nRF24_jammer 是一款基于 ESP32 与多路 nRF24L01 模块的射频干扰器,可对蓝牙、BLE、Wi-Fi、无人机图传和 Zigbee 信号进行干扰,并配有 Web 与串口控制界面。本文带你深度剖析该项目修改版 RF24 库中 startConstCarrier 恒载波干扰函数的实现原理:它如何用 4 行核心代码开启连续载波,又如何与快速跳频配合实现全频段压制。

nRF24_jammer 硬件构成:ESP32 与 nRF24 模块怎么接

整个项目的核心非常简洁:一块ESP-WROOM-32主控 +1~5 块 nRF24L01+PA+LNA 模块(PA/LNA 用于增强发射功率),外加可选的 128x32 或 128x64 OLED 屏幕和按钮。

一个值得新手注意的设计:所有 nRF24 模块共享同一组 SCK、MOSI、MISO 三线,只靠各自的 CSN(片选)和 CE(发射使能)区分。这保证了 ESP32 只需占用 3 根 SPI 引脚就能驱动多块射频模块,是"多模块并行干扰"的硬件基础,完整接线表见 README.md。

恒载波干扰原理:4 步输出不间断射频信号

所谓"恒载波"(Constant Carrier),就是不发送任何数据包,而是让 nRF24L01 持续发射一个单一频率的射频载波。这个频率由寄存器RF_CH决定:

载波频率 = 2400 MHz + 通道号,例如通道 45 即 2445 MHz

开启恒载波的"开关"藏在RF_SETUP寄存器(地址 0x06)的两个位里:

位名称作用
Bit 7CONT_WAVE使能连续载波模式
Bit 4PLL_LOCK锁定 PLL,保证频率稳定

这两个位定义在 lib/RF24/nRF24L01.h#L77-L78。只要置位后把CE 引脚拉高,芯片就会持续发射载波——这就是整个干扰器最底层的"武器"。

startConstCarrier 新实现剖析:4 行代码替代 30 行

官方 RF24 库的startConstCarrier原本要处理大量分支(见下方对比),nRF24_jammer 作者把它重写成了极简版本,并保留旧代码为注释以便对照。

新实现(修改版)

新版函数位于 lib/RF24/RF24.cpp#L1997-L2003,核心逻辑只有 4 步:

  1. write_register(RF_SETUP, … | CONT_WAVE | PLL_LOCK)—— 一次性打开恒载波位
  2. setPALevel(level)—— 设置发射功率(如RF24_PA_MAX)
  3. setChannel(channel)—— 设定载波频率
  4. ce(HIGH)—— 拉高 CE,载波立即开始输出

配套的停止函数 stopConstCarrier() 同样被简化:拉低 CE 并清除这两个寄存器位,不再执行 powerDown(),避免了重新上电带来的发射延迟。

旧实现为什么被替换

被注释掉的旧代码(lib/RF24/RF24.cpp#L2004-L2034)做了很多对干扰器无用甚至有害的事:

  • 先调用stopListening()
  • 针对 P 版芯片关闭自动应答、清空重试、向 TX FIFO 塞 32 字节0xFF假负载、关闭 CRC
  • 发射后还要delay(1)+reUseTX()切换 CE 触发

这些"发数据包"的逻辑会让载波出现间歇性断流(reUseTX 会短暂拉低 CE),降低干扰连续性;而且对新版硬件路径并不必要。删掉之后,恒载波真正做到"一次开启、持续输出、随时换频"。

setChannel 修改版:快速跳频的关键一环

开完恒载波后,干扰器要在毫秒级时间内不断切换频道,因此setChannel也必须提速。修改版位于 lib/RF24/RF24.cpp#L644-L650:

  • 通过beginTransaction()/endTransaction()保护 SPI 事务(ESP32 双 SPI 总线下防止寄存器写入被打断)
  • 直接写RF_CH寄存器,去掉了旧版的 125 通道上限钳位——干扰模式需要访问完整通道空间
  • 同类简化的还有read_register/write_register(lib/RF24/RF24.cpp#L233-L240、#L326-L332),删除了各平台的冗长分支,只保留一次 2 字节 SPI 传输

⚠️ 这些函数名(startConstCarrier、stopConstCarrier)已被登记为库关键字,见 lib/RF24/keywords.txt#L55-L56;函数文档注释见 lib/RF24/RF24.h#L1755-L1786。

干扰循环:从恒载波到全频段跳频的完整流程

固件中所有干扰模式共享同一套套路,以蓝牙模式为例(src/128x32_Flexible/jam.cpp#L64-L71):

  1. InitRadios()创建每块模块的RF24对象
  2. HSPI_init()初始化独立的 HSPI 总线(16 MHz,src/128x32_Flexible/jam.cpp#L23-L53)
  3. 对每块模块调用radios[j]->startConstCarrier(RF24_PA_MAX, 45)——满功率、2445 MHz 起步
  4. 进入 while 循环,根据用户选择的策略反复调用setChannel():
    • 方法 0:锁定 21 个经典蓝牙跳频信道
    • 方法 1:每次随机 0~79 信道(BLE 全频带扫荡)
    • 方法 2:多模块分工,模块数 N 均分 80 个信道,各扫一段
    • 若Separate_or_together == 1,则所有模块同步扫同一信道,火力集中

其他模式同理:无人机模式扫 0~124 全信道(src/128x32_Flexible/jam.cpp#L150-L246),Misc 模式还支持writeFast()批量灌包式的"数据包轰炸"(src/128x32_Flexible/jam.cpp#L520-L577)。退出干扰时DeinitRadios(true)才会调用stopConstCarrier()关闭载波并释放对象。128x64 屏幕版本的逻辑完全一致,见 src/128x64_Flexible/jam.cpp。

效果验证:频谱仪下的干扰前后对比

正常情况下,2.4 GHz 频段的频谱相对"干净":

开启无人机图传干扰模式后,整个频段被密集噪声填满:

Misc 全频段模式则呈现扫频式的噪声瀑布效果:

编译与固件烧录提示

自v2.5.0起,本项目使用修改后的 RF24 库(即本文剖析的这份),因此不能沿用其他项目的成品固件,建议从源码编译(VS Code + PlatformIO),编译动画如下:

配置入口为 platformio.ini,固件烧录与 OTA 更新步骤详见 README.md。

总结:一张表看懂关键文件

文件作用
lib/RF24/RF24.cpp#L1997-L2003startConstCarrier新实现(4 步开启恒载波)
lib/RF24/RF24.cpp#L2004-L2034被替换的旧实现(保留为注释)
lib/RF24/RF24.cpp#L644-L650提速版setChannel,跳频核心
lib/RF24/nRF24L01.h#L77-L78CONT_WAVE/PLL_LOCK寄存器位定义
src/128x32_Flexible/jam.cpp各干扰模式的调用与跳频策略
README.md硬件接线、编译与固件烧录指南

一句话总结:startConstCarrier 把"开载波"压缩成置位 + 调功率 + 调频道 + 拉高 CE 四步,修改版 setChannel 让换频快到可以全频段扫荡——两者叠加,才构成了 nRF24_jammer 的干扰能力。

📌 温馨提示:射频干扰设备在多数国家和地区受法律严格管制,请仅在自己的授权频段与合法场景(如实验室测试、教学)中使用。

【免费下载链接】nRF24_jammer

The nRF24 jammer is a powerful tool that requires an ESP32 and configurable numbers of NRF24 modules to assemble. It is designed to create interference, disrupting the normal operation of Bluetooth devices 🔊, BLE technology 📱, drones 🚁, Wi-Fi networks 📶 and Zigbee 📡. Additionally, it features a user-friendly web interface 🌐.

项目地址:https://gitcode.com/gh_mirrors/nr/nRF24_jammer
点击查看免费下载

相关推荐

上一篇:Fish Redux自动释放机制:优化资源管理的高级特性
下一篇:如何快速上手NeoForge:3天从零开始创建你的第一个Minecraft模组

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表