Stufin
Home Quick Cart Profile

NRF24L01 Ultra Low Power 2.4GHz RF Wireless Transceiver

Buy Now on Stufin

The device can be configured to operate in one of three main modes

  • Transmitter (TX) mode: The NRF24L01 converts digital data from a microcontroller into a radio frequency (RF) signal, which is then transmitted wirelessly.
  • Receiver (RX) mode: The NRF24L01 receives an RF signal and converts it back into digital data, which is then sent to a microcontroller.
  • Standby mode: The device enters a low-power state to conserve energy when not actively transmitting or receiving data.

Key Features

  • Ultra-Low Power Consumption: The NRF24L01 has a typical current consumption of 11.3mA during transmission and 12.6mA during reception, making it suitable for battery-powered devices.
  • High-Speed Data Transfer: The device supports data transfer rates up to 2Mbps.
  • Short Range Communication: The NRF24L01 has a typical range of around 100 meters (330 feet) in open air, making it suitable for short-range wireless communication applications.
  • Low Voltage Operation: The device can operate at a supply voltage as low as 1.9V, making it compatible with a wide range of power sources.
  • Small Package: The NRF24L01 is available in a compact QFN20 package, measuring 5mm x 5mm, making it ideal for use in space-constrained applications.
  • Multi-Channel Capability: The device supports 126 available channels, allowing for multiple devices to operate simultaneously in the same frequency band.
  • SPI Interface: The NRF24L01 uses a 3-wire SPI interface for communication with a microcontroller, making it easy to integrate into a wide range of systems.
  • Built-in RSSI: The device includes a built-in Received Signal Strength Indicator (RSSI), which provides an estimate of the signal strength.
  • Auto-ACK Feature: The NRF24L01 has an auto-acknowledge feature, which automatically sends an acknowledgement packet in response to received data packets.

Applications

  • IoT devices
  • Wireless sensor networks
  • Robotics
  • Remote control systems
  • Wireless keypads
  • Industrial automation
  • Home automation
The NRF24L01 is suitable for a wide range of applications, including

Pinout and Dimensions

The NRF24L01 is available in a QFN20 package, with the following pinout
Pin 1: VCC Pin 2: CE Pin 3: CSN Pin 4: SCK Pin 5: MOSI Pin 6: MISO Pin 7: IRQ Pin 8: GND Pin 9: ANT Pin 10: GND Pin 11: Reserved Pin 12: Reserved Pin 13: Reserved Pin 14: Reserved Pin 15: VCC Pin 16: GND Pin 17: GND Pin 18: NC Pin 19: NC Pin 20: NC

Package size

5mm x 5mm

Pin pitch

0.5mm

Conclusion

The NRF24L01 is a highly versatile and efficient wireless transceiver, making it an ideal choice for a wide range of IoT applications. Its ultra-low power consumption, high-speed data transfer, and compact size make it suitable for use in battery-powered devices and space-constrained applications.

Pin Configuration

Code Examples

NRF24L01 Ultra Low Power 2.4GHz RF Wireless Transceiver
Overview
The NRF24L01 is a popular, ultra-low power, 2.4GHz RF wireless transceiver module designed by Nordic Semiconductor. It is widely used in Internet of Things (IoT) projects, robotics, and wireless communication systems due to its low power consumption, small size, and high performance.
Features
Operating frequency: 2.4 GHz ISM band
 Data rate: up to 2 Mbps
 Transmission power: up to 0 dBm
 Reception sensitivity: -94 dBm
 Low power consumption: 11.3 mA (TX) and 12.3 mA (RX)
 Supports Manchester encoding and CRC-16 error correction
 SPI interface for communication with microcontrollers
 Small size: 15 mm x 15 mm
Code Examples
### Example 1: Basic Wireless Communication using Arduino
In this example, we will demonstrate a simple wireless communication between two Arduino boards using the NRF24L01 module.
Transmitter Code (Arduino)
```c
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
// Define the CE and CSN pins for the NRF24L01 module
#define CE_PIN 9
#define CSN_PIN 10
RF24 radio(CE_PIN, CSN_PIN); // Create an instance of the RF24 class
const char message = "Hello, world!"; // Message to be transmitted
void setup() {
  Serial.begin(9600);
  radio.begin(); // Initialize the NRF24L01 module
  radio.setRetries(15, 15); // Set the retries for transmission
}
void loop() {
  radio.stopListening(); // Stop listening for incoming data
  radio.startTransmit(); // Start transmission
  radio.write(message, strlen(message)); // Send the message
  radio.stopTransmit(); // Stop transmission
  delay(1000); // Wait for 1 second before transmitting again
}
```
Receiver Code (Arduino)
```c
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
// Define the CE and CSN pins for the NRF24L01 module
#define CE_PIN 9
#define CSN_PIN 10
RF24 radio(CE_PIN, CSN_PIN); // Create an instance of the RF24 class
char receivedMessage[32]; // Buffer to store the received message
void setup() {
  Serial.begin(9600);
  radio.begin(); // Initialize the NRF24L01 module
  radio.startListening(); // Start listening for incoming data
}
void loop() {
  if (radio.available()) {
    uint8_t len = radio.getDynamicPayloadSize();
    radio.read(receivedMessage, len); // Read the received message
    receivedMessage[len] = 0; // Null-terminate the string
    Serial.print("Received message: ");
    Serial.println(receivedMessage);
  }
  delay(1000); // Wait for 1 second before checking again
}
```
### Example 2: Wireless Sensor Node using Raspberry Pi (Python)
In this example, we will demonstrate a wireless sensor node using a Raspberry Pi and the NRF24L01 module.
Raspberry Pi Code (Python)
```python
import RPi.GPIO as GPIO
import spidev
# Define the CE and CSN pins for the NRF24L01 module
CE_PIN = 17
CSN_PIN = 23
# Initialize the GPIO pins
GPIO.setmode(GPIO.BCM)
GPIO.setup(CE_PIN, GPIO.OUT)
GPIO.setup(CSN_PIN, GPIO.OUT)
# Initialize the SPI interface
spi = spidev.SpiDev()
spi.open(0, 0)
# Define the NRF24L01 module's register addresses
REG_STATUS = 0x07
REG_CONFIG = 0x00
REG_RX_ADDR_P0 = 0x0A
REG_TX_ADDR = 0x10
REG_RF_SETUP = 0x23
# Set the NRF24L01 module's registers
spi.xfer2([REG_CONFIG, 0x0E])  # Enable CRC and 2-byte CRC
spi.xfer2([REG_RF_SETUP, 0x07])  # Set transmission power and speed
# Define the sensor data to be transmitted
temperature = 25.0
humidity = 60.0
while True:
    # Read the sensor data from the Raspberry Pi's GPIO pins
    # (implementation omitted for brevity)
# Prepare the transmission data
    data = bytearray(4)
    data[0] = int(temperature)
    data[1] = int(humidity)
    data[2] = 0x00  # Reserved byte
    data[3] = 0x00  # Reserved byte
# Set the transmitter address
    spi.xfer2([REG_TX_ADDR, 0x01, 0x02, 0x03, 0x04, 0x05])
# Set the receiver address
    spi.xfer2([REG_RX_ADDR_P0, 0x01, 0x02, 0x03, 0x04, 0x05])
# Start transmission
    GPIO.output(CE_PIN, GPIO.HIGH)
    spi.xfer2(data)
    GPIO.output(CE_PIN, GPIO.LOW)
# Wait for 1 second before transmitting again
    time.sleep(1)
```
These code examples demonstrate the basic usage of the NRF24L01 module for wireless communication between two devices. The NRF24L01 module is a versatile component that can be used in a wide range of IoT applications, from simple wireless sensors to complex wireless networks.