

The NRF24L01, manufactured by Nordic Semiconductor ASA (Part ID: NRF24L01-ND), is a low-power, 2.4 GHz wireless transceiver module designed for short-range communication. It is widely used in applications such as remote controls, wireless sensors, and IoT devices. The module supports multiple data rates (250 kbps, 1 Mbps, and 2 Mbps) and features a built-in packet handling system, making it a versatile and efficient solution for wireless communication.








The NRF24L01 module is designed to operate efficiently in the 2.4 GHz ISM band. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 1.9V to 3.6V |
| Communication Protocol | SPI (Serial Peripheral Interface) |
| Frequency Range | 2.4 GHz ISM band |
| Data Rates | 250 kbps, 1 Mbps, 2 Mbps |
| Maximum Output Power | 0 dBm |
| Sensitivity | -94 dBm at 250 kbps |
| Operating Current | 11.3 mA (transmit at 0 dBm) |
| Standby Current | 22 µA |
| Sleep Mode Current | 900 nA |
| Maximum Payload Size | 32 bytes |
| Number of Data Pipes | 6 (multi-receiver capability) |
| Range (Line of Sight) | Up to 100 meters |
The NRF24L01 module has 8 pins, as described in the table below:
| Pin | Name | Description |
|---|---|---|
| 1 | GND | Ground connection |
| 2 | VCC | Power supply (1.9V to 3.6V) |
| 3 | CE | Chip Enable: Activates RX or TX mode |
| 4 | CSN | Chip Select Not: SPI chip select (active low) |
| 5 | SCK | Serial Clock: SPI clock input |
| 6 | MOSI | Master Out Slave In: SPI data input |
| 7 | MISO | Master In Slave Out: SPI data output |
| 8 | IRQ | Interrupt Request: Active low, indicates data received or transmission complete |
To use the NRF24L01 module with an Arduino UNO, connect the pins as follows:
| NRF24L01 Pin | Arduino UNO Pin |
|---|---|
| GND | GND |
| VCC | 3.3V |
| CE | Digital Pin 9 |
| CSN | Digital Pin 10 |
| SCK | Digital Pin 13 |
| MOSI | Digital Pin 11 |
| MISO | Digital Pin 12 |
| IRQ | Not connected (optional) |
Important: The NRF24L01 module operates at 3.3V. Connecting it directly to a 5V power source may damage the module. Use the 3.3V pin on the Arduino UNO or a voltage regulator.
Below is an example of how to use the NRF24L01 module to send and receive data using the popular RF24 library:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
// Define CE and CSN pins
#define CE_PIN 9
#define CSN_PIN 10
// Create an RF24 object
RF24 radio(CE_PIN, CSN_PIN);
// Define the address for communication
const byte address[6] = "00001";
void setup() {
Serial.begin(9600); // Initialize serial communication
radio.begin(); // Initialize the NRF24L01 module
radio.openWritingPipe(address); // Set the address for transmission
radio.setPALevel(RF24_PA_LOW); // Set power level to low
radio.stopListening(); // Set module to transmit mode
}
void loop() {
const char text[] = "Hello, World!"; // Data to send
bool success = radio.write(&text, sizeof(text)); // Send data
if (success) {
Serial.println("Data sent successfully!");
} else {
Serial.println("Data transmission failed.");
}
delay(1000); // Wait 1 second before sending again
}
No communication between modules:
Data transmission fails intermittently:
Module not responding:
Can the NRF24L01 module communicate with Bluetooth devices?
What is the maximum range of the NRF24L01?
Can I use multiple NRF24L01 modules in the same network?
Why is the module not working with a 5V power supply?
By following this documentation, you can effectively integrate the NRF24L01 module into your projects for reliable wireless communication.