How to Eliminate Noise From NRF24L01?

by persian_creative in Circuits > Electronics

120 Views, 3 Favorites, 0 Comments

How to Eliminate Noise From NRF24L01?

20200716_064000.jpg
رادیو کنترل 7 کانال.png

The NRF24L01 module is one of the most widely used wireless transceivers in the 2.4 GHz band, popular in electronics projects, the Internet of Things (IoT), and wireless sensor networks due to its low cost, low power consumption, and decent range.


However, many users experience issues such as noise and intermittent connection loss. These issues are often not caused by defective modules, but rather by poor hardware design improper power filtering. In this article, I’ll go over the common causes of these problems and offer practical solutions to reduce or eliminate them.


Whether you're a beginner or a professional, applying these tips can significantly improve the reliability and performance of your NRF24L01-based wireless communication.

Supplies

  1. ARDUINO
  2. NRF24L01
  3. LM7805
  4. AMS1117 (3.3V , 5V)
  5. CAP (100n , 220n , 330nF , 100u , 470u , 1000u , 2200u)
  6. DIODE (SS14)
  7. RESISTOR (470 OHM)

POWER

Screenshot 2025-05-30 113730.png

One of the reasons for the disconnection of the NRF24L01 transceiver modules is the instability of their power supply. If you are also using the 3.3V pin on the Arduino board to supply the 3.3V voltage required by the module, you should know that the voltage regulator built into most Arduino boards does not have enough power to power the NRF24L01. These regulators are usually designed for low currents and if the instantaneous consumption increases (for example, when sending data), the voltage may drop and cause the module to disconnect.


To solve this problem, it is recommended to use three regulators to independently power each module and the motors (as shown in the image).


For NRFs, capacitors with a capacity of 22 microfarads to 100 microfarads (electrolytic or tantalum) and capacitors with a capacity of 100 nanofarads (ceramic) in parallel between the VCC and GND pins can largely absorb noise and momentary fluctuations and provide a stable power supply.

CODE

myRadio.setPALevel(RF24_PA_MAX);
myRadio.setDataRate( RF24_1MBPS );


One of the reasons why the transmitter is disconnected from the receiver is the following code 👇

myRadio.setDataRate(RF24_1MBPS);

This command is used to set the data rate of the NRF24L01 module.

The NRF24L01 module supports three data rates:

RF24_250KBPS

The most stable, with the longest range

RF24_1MBPS

A balance between range and speed

RF24_2MBPS

The fastest, but with less range and more sensitive to noise

If you are using DC motors and servo motors, it is better to set the data rate to 1 Mbps. If you want to build walkie-talkies or projects without motors, then from 250 kbps.

A data rate of 1 Mbps is usually suitable for most projects, as it provides a balance between sufficient speed and acceptable range.

Important note:

Both the transmitter and receiver must be set to the same data rate. If one is set to 2 Mbps and the other to 1 Mbps, communication will not be established.

IRQ PIN

What is the IRQ pin in the NRF24L01 module?

IRQ is a digital output pin on the module.

When a specific event occurs, such as a successful send, successful receive, or an error (such as the send queue is full), the module sets the IRQ pin to LOW (0V).

You should not leave this pin free, and for the receiver part, it is better to connect it to an interrupt pin on your Arduino or microcontroller and connect a 4.7 kOhm resistor from this pin to GND.

(Of course, if you connect a 100 nanofarad capacitor in parallel with the 4.7 kOhm resistor, it will work better)

pinMode(2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), interruptHandler, FALLING); // IRQ

For the transmitter part, it is better to short this pin to ground.

SPIKE NOISE

5a.png
Screenshot 2025-05-30 133326.png
3.png

What is spike noise? 🔍

Spike noise is a rapid and sudden fluctuation in voltage or current that usually occurs at the moment the module sends data or when it receives and turns on the motors.

If this noise is related to the NRF module, it may only last a few microseconds, but if it is related to the motors, this noise affects the circuit from the time the motors are turned on until they are turned off.

Effects of spike noise:

Disconnection of the transmitter and receiver

Module resetting or hanging

Affecting the performance of other sensitive components (e.g. sensors)

Reducing the range and increasing the error in wireless communication


Solutions to reduce or eliminate spike noise:

If this noise is caused by the NRF module, you should use decoupling capacitors and separate power supplies from the Arduino.


If this noise is caused by the motor turning:

You can eliminate noise generated by DC motors by using 100 nanofarad to 1 microfarad (ceramic) capacitors as per the schematic.


NOISE ON SERVO

Screenshot 2025-05-30 135537.png
20250522_173423.jpg

🎯 Common symptoms:


🟡Servo suddenly shakes or has abnormal movements

🟠When sending data with NRF24L01, the servo reacts unexpectedly

🔴Sometimes the servo completely locks up or goes to the wrong position


🔍 Possible causes:

🔵 Common and unstable power supply

If the NRF24L01 module and servo motor use the same power supply (for example, 5V Arduino), the momentary voltage drop or noise caused by sending data by NRF24L01 will cause servo malfunction.

🟢 Arduino, especially in boards such as UNO and NANO, does not have enough power to power NRF and servo at the same time.


✅ Solutions:

1. Electromagnetic Interference (EMI) :

Wireless modules generate electromagnetic fields when transmitting, which can affect long or unshielded wires, especially if the servo wire is close to the module.

To fix this problem, you need to make a filter with the servo wire using a Ferrite Toroid to block the noise (as shown in the picture)

2. Lack of proper filtering on the signal pin :

You can fix this problem to a great extent by placing an RC filter between the Arduino pin and the servo signal. (as shown in the schematic)

Result

Screenshot 2025-05-29 233911.png
Screenshot 2025-05-29 233727.png