Stufin
Home Quick Cart Profile

NRF24L01 Ultra Low Power 2.4GHz RF Wireless Transceiver ( Pack of 25)

Buy Now on Stufin

Name

NRF24L01 Ultra Low Power 2.4GHz RF Wireless Transceiver (Pack of 25)

Description

The NRF24L01 is a 2.4GHz RF wireless transceiver module designed for ultra-low power consumption, making it ideal for battery-powered devices and IoT applications. This module is a popular choice for wireless communication due to its reliability, ease of use, and cost-effectiveness.

Functionality

The NRF24L01 is a transceiver module that enables wireless communication between devices. It operates on the 2.4GHz frequency band and supports multiple wireless protocols, including IEEE 802.15.4 and proprietary protocols. The module is designed to be used in pairs, where one device acts as a transmitter and the other as a receiver.

Key Features

  • Ultra-Low Power Consumption: The NRF24L01 has an extremely low power consumption, making it suitable for battery-powered devices. It has a typical current consumption of 11.3mA in transmit mode and 26 A in standby mode.
  • 2.4GHz Operating Frequency: The module operates on the 2.4GHz frequency band, which provides a reliable and interference-resistant wireless communication channel.
  • High Data Rate: The NRF24L01 supports data transfer rates of up to 2Mbps, making it suitable for applications that require fast data exchange.
  • Multi-Channel Operation: The module supports 126 channels, allowing multiple devices to operate on the same frequency band without interference.
  • Auto Acknowledge: The NRF24L01 has an auto-acknowledge feature that ensures reliable data transfer by automatically retransmitting lost packets.
  • Low Latency: The module has a latency of less than 1.5ms, making it suitable for real-time applications.
  • High Sensitivity: The NRF24L01 has a high receiver sensitivity of -94dBm, allowing it to detect weak signals and maintain a stable connection.
  • Small Form Factor: The module has a compact size (15mm x 14mm x 2.5mm), making it ideal for use in space-constrained applications.
  • Operating Voltage: The NRF24L01 operates on a supply voltage of 1.9V to 3.6V, making it compatible with a wide range of power sources.
  • Packaging: The module is available in a pack of 25, making it a cost-effective solution for large-scale IoT projects.

Applications

The NRF24L01 is widely used in various IoT applications, including

Wireless sensor networks

Home automation systems

Industrial control systems

Wearable devices

Robotics

Drones

Smart home devices

Gaming controllers

Frequency

2.4GHz

Data Rate

Up to 2Mbps

Operating Voltage

1.9V to 3.6V

Current Consumption

+ Transmit mode11.3mA
+ Standby mode26 A

Receiver Sensitivity

-94dBm

Transmit Power

Up to 0dBm

Channel

126 channels

Operating Temperature

-40C to 125C

Storage Temperature

-40C to 150C

Pinout

The NRF24L01 has a 6-pin interface, which includes

VCC (Power Supply)

GND (Ground)

CSN (Chip Select)

CE (Chip Enable)

SCK (Serial Clock)

MOSI (Master Out Slave In)

MISO (Master In Slave Out)

Certifications

The NRF24L01 complies with the following certifications

FCC Part 15.247 (USA)

ETSI EN 300 220 (Europe)

ARIB STD-T66 (Japan)

Industry Canada RSS-210 (Canada)

Warranty and Support

The NRF24L01 is backed by a 1-year warranty and supported by a comprehensive documentation set, including datasheets, user manuals, and application notes. Additionally, the manufacturer provides technical support and engineering assistance to ensure easy integration and optimal performance.

Pin Configuration

  • NRF24L01 Ultra Low Power 2.4GHz RF Wireless Transceiver Pinout
  • The NRF24L01 is a popular wireless transceiver module widely used in IoT projects. It operates at 2.4 GHz frequency and consumes ultra-low power, making it ideal for battery-powered devices. Here is a detailed explanation of the pins, along with a suggested connection structure:
  • Pinout:
  • 1. VCC (Pin 1):
  • Function: Power Supply
  • Description: Connect to a stable 1.9V to 3.6V power source (typically 3.3V).
  • Connection: Connect to the positive terminal of the power supply or a voltage regulator output.
  • 2. GND (Pin 2):
  • Function: Ground
  • Description: Connect to the ground plane of the circuit or a common ground point.
  • Connection: Connect to the negative terminal of the power supply or a common ground point.
  • 3. CE (Pin 3):
  • Function: Chip Enable
  • Description: Active-high enable signal for the NRF24L01. When high, the module is enabled.
  • Connection: Connect to a digital output of a microcontroller or a logic level converter.
  • 4. CSN (Pin 4):
  • Function: Chip Select
  • Description: Active-low chip select signal for the NRF24L01. When low, the module is selected.
  • Connection: Connect to a digital output of a microcontroller or a logic level converter.
  • 5. SCK (Pin 5):
  • Function: Clock
  • Description: SPI clock signal for data transfer.
  • Connection: Connect to the SCK pin of a microcontroller or a SPI bus.
  • 6. MOSI (Pin 6):
  • Function: Master Out Slave In
  • Description: SPI data output from the microcontroller to the NRF24L01.
  • Connection: Connect to the MOSI pin of a microcontroller or a SPI bus.
  • 7. MISO (Pin 7):
  • Function: Master In Slave Out
  • Description: SPI data input from the NRF24L01 to the microcontroller.
  • Connection: Connect to the MISO pin of a microcontroller or a SPI bus.
  • 8. IRQ (Pin 8):
  • Function: Interrupt Request
  • Description: Active-low interrupt signal from the NRF24L01 to the microcontroller.
  • Connection: Connect to a digital input of a microcontroller or an interrupt pin.
  • Connection Structure:
  • When using the NRF24L01 with a microcontroller, follow this general connection structure:
  • VCC to the 3.3V power supply
  • GND to the ground plane or a common ground point
  • CE to a digital output of the microcontroller (e.g., D9 on Arduino boards)
  • CSN to a digital output of the microcontroller (e.g., D10 on Arduino boards)
  • SCK to the SCK pin of the microcontroller (e.g., SCK on Arduino boards)
  • MOSI to the MOSI pin of the microcontroller (e.g., MOSI on Arduino boards)
  • MISO to the MISO pin of the microcontroller (e.g., MISO on Arduino boards)
  • IRQ to a digital input of the microcontroller (e.g., D2 on Arduino boards) or an interrupt pin
  • Note:
  • When using the NRF24L01 with a 5V microcontroller, ensure to use a logic level converter to convert the 5V signals to 3.3V, which is compatible with the NRF24L01.
  • Use a stable power supply and decouple the VCC pin with a 10uF capacitor to ensure reliable operation.
  • In a multitransceiver setup, use a unique CSN pin for each NRF24L01 module to avoid bus contention.

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 for wireless communication in various applications, including IoT, robotics, and wireless sensor networks. This module operates at a frequency of 2.4GHz and is compatible with multiple protocols, including IEEE 802.15.4 and Zigbee.
Key Features
Ultra-low power consumption: 12mA in transmit mode, 13.5mA in receive mode, and 900nA in standby mode
 High-speed data transmission: up to 2Mbps
 Long-range communication: up to 100 meters (line of sight)
 125 available channels
 SPI interface for easy communication with microcontrollers
 Supports multiple protocols: IEEE 802.15.4, Zigbee, and custom protocols
Pinout
| Pin | Description |
| --- | --- |
| VCC | Power supply (1.9V to 3.6V) |
| GND | Ground |
| CSN | Chip select (active low) |
| SCK | Clock (SPI) |
| MOSI | Master out, slave in (SPI) |
| MISO | Master in, slave out (SPI) |
| IRQ | Interrupt request |
| CE | Chip enable (active high) |
Code Examples
### Example 1: Basic Communication using Arduino
In this example, we will demonstrate basic communication between two Arduino boards using the NRF24L01 module.
Transmitter Code (Arduino)
```c
#include <RF24.h>
#define CE_PIN 9
#define CSN_PIN 10
RF24 radio(CE_PIN, CSN_PIN);
const char message[] = "Hello, world!";
void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.setRetries(15, 15);
  radio.openWritingPipe((const char)0xF0F0F0F0E1LL); // Set the writing pipe
}
void loop() {
  radio.stopListening();
  radio.startTransmit();
  radio.write(message, sizeof(message));
  radio.stopTransmit();
  Serial.println("Message sent !");
  delay(1000);
}
```
Receiver Code (Arduino)
```c
#include <RF24.h>
#define CE_PIN 9
#define CSN_PIN 10
RF24 radio(CE_PIN, CSN_PIN);
void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.setRetries(15, 15);
  radio.openReadingPipe((const char)0xF0F0F0F0E1LL); // Set the reading pipe
  radio.startListening();
}
void loop() {
  if (radio.available()) {
    char message[32] = {0};
    radio.read(message, sizeof(message));
    Serial.println(message);
  }
  delay(100);
}
```
### Example 2: Wireless Sensor Network using Raspberry Pi and Python
In this example, we will demonstrate a wireless sensor network using multiple NRF24L01 modules connected to Raspberry Pi boards, communicating with each other using Python.
Transmitter Code (Python)
```python
import RPi.GPIO as GPIO
import spidev
# Set up GPIO pins
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
# Set up SPI communication
spi = spidev.SpiDev()
spi.open(0, 0)
# NRF24L01 pin connections
CSN_PIN = 17
CE_PIN = 18
# Initialize the NRF24L01 module
def init_nrf24l01():
    spi.writebytes([0x08, 0x03]) # Initialize the module
    spi.writebytes([0x00, 0x03]) # Set the transmission power
# Send data using the NRF24L01 module
def send_data(data):
    spi.writebytes([0x00, 0x01]) # Switch to transmission mode
    spi.writebytes(data)
    spi.writebytes([0x00, 0x00]) # Switch back to standby mode
init_nrf24l01()
while True:
    data = "Hello from Raspberry Pi !"
    send_data(data.encode())
    print("Data sent !")
    time.sleep(1)
```
Receiver Code (Python)
```python
import RPi.GPIO as GPIO
import spidev
# Set up GPIO pins
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
# Set up SPI communication
spi = spidev.SpiDev()
spi.open(0, 0)
# NRF24L01 pin connections
CSN_PIN = 17
CE_PIN = 18
# Initialize the NRF24L01 module
def init_nrf24l01():
    spi.writebytes([0x08, 0x03]) # Initialize the module
    spi.writebytes([0x00, 0x03]) # Set the transmission power
# Receive data using the NRF24L01 module
def receive_data():
    spi.writebytes([0x00, 0x02]) # Switch to reception mode
    data = spi.readbytes(32)
    return data.decode()
init_nrf24l01()
while True:
    data = receive_data()
    print("Received data:", data)
    time.sleep(1)
```
These examples demonstrate the basic usage of the NRF24L01 module in various contexts. You can modify and extend these examples to suit your specific application requirements.