This project demonstrates how to build an aggressive RF signal generator and frequency sweeper using an ADF4351 frequency synthesizer module controlled by an Arduino. The system rapidly sweeps frequencies across a wide range from 35 MHz to 4.4 GHz, generating continuous RF output at maximum power (+5 dBm).
The primary use case is for educational and research purposes in a controlled lab environment (such as a Faraday cage) to test the effects of RF interference, jamming, and signal robustness across different bands (e.g., Wi-Fi, GSM, LTE). The project is not intended for illegal jamming and must comply with local regulatory laws.
✅ Frequency Range: 35 MHz to 4.4 GHz (ADF4351's full range)
✅ Output Power: Adjustable power levels (up to +5 dBm)
✅ Aggressive Sweeping: Rapid frequency hopping with 1 MHz steps
✅ Customizable: Set sweep start/stop frequencies, dwell time, and step size
✅ Full SPI Control: Uses SPI communication to configure the ADF4351 registers
✅ Compact & Cost-Effective Setup: Uses affordable components like Arduino UNO and ADF4351 module
✅ Real-Time Monitoring: Debug output via Serial Monitor to track frequency updates
🚨 IMPORTANT:
- Signal jamming is illegal in most countries without government authorization.
- This project is intended for controlled lab use only (e.g., in a shielded environment like a Faraday cage).
- Unauthorized use in public areas can interfere with emergency services, disrupt communications, and result in severe legal consequences.
- Ensure you comply with local laws and regulations before using this project.
Component | Description | Approx. Cost (USD) |
---|---|---|
Arduino UNO | Microcontroller board | $10 - $20 |
ADF4351 Module | Wideband frequency synthesizer | $25 - $40 |
Antenna | Tuned for desired frequency range | $5 - $15 |
Power Supply | 5V USB adapter or battery | $5 - $10 |
Cables & Connectors | SMA cables, jumper wires | $5 - $10 |
- Connect the 5V pin on the Arduino to the VCC pin on the ADF4351 module.
- Connect GND on the Arduino to GND on the module.
- Connect D13 (SCK) on the Arduino to SCK on the ADF4351 module.
- Connect D11 (MOSI) on the Arduino to MOSI on the module.
- Optionally, connect D12 (MISO) if your setup requires bidirectional communication.
- Connect D10 (CS/LE) on the Arduino to LE on the ADF4351 module. This pin controls when data is latched into the module.
- Connect a suitable antenna to the RF output SMA connector on the ADF4351 module. The antenna should be tuned for the desired frequency range.
- Double-check all connections to ensure they are secure and correct. Incorrect wiring can damage your components.
- Arduino IDE (latest version)
- SPI Library (pre-installed in Arduino IDE)
Pin | Arduino UNO | ADF4351 |
---|---|---|
SCK | D13 | SCK |
MOSI | D11 | MOSI |
MISO | D12 | MISO (optional) |
CS/LE | D10 | LE (Latch Enable) |
VCC | 5V | VCC |
GND | GND | GND |
The code includes:
- Setup Section: Initializes the SPI communication and configures the ADF4351.
- Loop Section: Continuously sweeps frequencies from 35 MHz to 4.4 GHz in 1 MHz steps.
- Register Configuration: Manually calculates and sends the R0 to R5 registers to the ADF4351 using SPI.
- Power Control: Allows the user to set the output power level (0 to 3), where 3 is the maximum setting (~+5 dBm).
The ADF4351 has an internal VCO (Voltage-Controlled Oscillator) that operates from 2.2 GHz to 4.4 GHz. For lower frequencies, it uses output dividers to scale down the VCO frequency. The Arduino code dynamically configures these dividers and the PLL to cover the entire 35 MHz to 4.4 GHz range.
The sweeping process works as follows:
- Start at 35 MHz
- Increment by 1 MHz
- Stop at 4.4 GHz
- Loop back to 35 MHz
You can adjust the start/stop frequencies, step size, and dwell time to customize the sweep behavior.
Modify the following variables in the code to adjust the sweeping behavior:
Variable | Description | Default Value |
---|---|---|
SWEEP_START_HZ |
Start frequency of the sweep | 35000000UL (35 MHz) |
SWEEP_STOP_HZ |
Stop frequency of the sweep | 4400000000UL (4.4 GHz) |
SWEEP_STEP_HZ |
Frequency increment per step | 1000000UL (1 MHz) |
DWELL_MS |
Time to stay on each frequency (dwell time) | 2 milliseconds |
OUTPUT_POWER |
Output power level (0 to 3) | 3 (max power) |
- Download the Code from this repository.
- Open the Code in Arduino IDE.
- Connect the Arduino and ADF4351 as per the wiring diagram.
- Upload the Code to your Arduino.
- Open the Serial Monitor to see real-time frequency updates.
- Use a Spectrum Analyzer or SDR to verify the output.
✅ RF Testing: Test the robustness of wireless devices (Wi-Fi routers, IoT devices, etc.) against interference.
✅ Signal Sweeping: Generate continuous wave (CW) signals for testing RF receivers.
✅ Educational Use: Learn about PLLs, frequency synthesis, and RF interference.
❌ NOT FOR ILLEGAL JAMMING: This project is strictly educational and must not be used to disrupt public communications.
- Cooling: The ADF4351 and amplifier (if used) may get hot during continuous operation. Ensure proper cooling (e.g., heat sinks, fans).
- Shielding: Perform tests inside a Faraday cage to prevent RF leakage.
- Legal Compliance: Ensure compliance with local regulations regarding RF transmissions.
- Aditya Kumar Srivastava (Project Lead & Developer)
This project is licensed under the MIT License. Please ensure you comply with local laws before using this project in real-world scenarios.
This project is for educational and research purposes only. Unauthorized signal jamming or interference is a criminal offense in most jurisdictions. The authors are not responsible for any misuse of this project. Always perform tests in a legally authorized, shielded environment.