The NRF24L01 Base Module 1, manufactured by SRS - Sprout Robotic Solutions (Part ID: NRF24L01-ND), is a compact wireless transceiver module designed for short-range communication. Operating in the 2.4 GHz ISM band, this module is widely used in applications such as remote controls, wireless sensors, and IoT devices. Its low power consumption, high data rate, and robust communication capabilities make it an ideal choice for wireless data transmission in embedded systems.
Parameter | Value |
---|---|
Operating Frequency | 2.4 GHz ISM band |
Data Rate | 250 kbps, 1 Mbps, 2 Mbps |
Operating Voltage | 1.9V to 3.6V |
Communication Protocol | SPI (Serial Peripheral Interface) |
Maximum Range | Up to 100 meters (line of sight) |
Power Consumption | 11.3 mA (transmit mode @ 0 dBm) |
Sensitivity | -94 dBm at 250 kbps |
Modulation Technique | GFSK (Gaussian Frequency Shift Keying) |
Dimensions | 15 mm x 29 mm |
The NRF24L01 Base Module 1 has 8 pins, as described in the table below:
Pin Number | Pin Name | Description |
---|---|---|
1 | GND | Ground connection |
2 | VCC | Power supply (1.9V to 3.6V, typically 3.3V) |
3 | CE | Chip Enable: Activates the module for transmission or reception |
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: Indicates data received or transmission complete |
Below is an example of how to use the NRF24L01 Base Module 1 with an Arduino UNO to send and receive data.
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
// Define CE and CSN pins for the NRF24L01 module
#define CE_PIN 9
#define CSN_PIN 10
// Create an RF24 object
RF24 radio(CE_PIN, CSN_PIN);
// Define the address of the receiver
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
radio.begin(); // Initialize the NRF24L01 module
radio.openWritingPipe(address); // Set the receiver address
radio.setPALevel(RF24_PA_LOW); // Set power level to low
radio.stopListening(); // Set the module to transmit mode
}
void loop() {
const char text[] = "Hello, World!";
bool success = radio.write(&text, sizeof(text)); // Send data
if (success) {
Serial.println("Message sent successfully!");
} else {
Serial.println("Message failed to send.");
}
delay(1000); // Wait 1 second before sending the next message
}
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
// Define CE and CSN pins for the NRF24L01 module
#define CE_PIN 9
#define CSN_PIN 10
// Create an RF24 object
RF24 radio(CE_PIN, CSN_PIN);
// Define the address of the transmitter
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
radio.begin(); // Initialize the NRF24L01 module
radio.openReadingPipe(0, address); // Set the transmitter address
radio.setPALevel(RF24_PA_LOW); // Set power level to low
radio.startListening(); // Set the module to receive mode
}
void loop() {
if (radio.available()) {
char text[32] = ""; // Buffer to store received data
radio.read(&text, sizeof(text)); // Read the received data
Serial.print("Received message: ");
Serial.println(text);
}
}
No Communication Between Modules:
Short Range or Unstable Connection:
Module Not Responding:
Q1: Can the NRF24L01 module be powered with 5V?
A1: No, the module operates at 1.9V to 3.6V. Use a 3.3V regulator if your system provides 5V.
Q2: What is the maximum range of the module?
A2: The maximum range is up to 100 meters in line-of-sight conditions. Obstacles and interference may reduce the range.
Q3: Can multiple modules communicate simultaneously?
A3: Yes, the NRF24L01 supports up to 6 data pipes, allowing multiple modules to communicate with a single receiver.
Q4: How do I debug communication issues?
A4: Use the radio.printDetails()
function (from the RF24 library) to check the module's configuration and status.