This is a long-range version of the popular nRF24L01 RF module, enhanced with a Power Amplifier (PA) and Low Noise Amplifier (LNA) and an external SMA antenna for much greater communication distance.
Key Features
Frequency band: 2.4 GHz ISM (2.400–2.525 GHz)
Chipset: Nordic nRF24L01+
PA + LNA:
1. PA increases transmit power 2. LNA improves receiver sensitivity- Data rates: 250 kbps, 1 Mbps, 2 Mbps
- Modulation: GFSK
- Communication: SPI interface
- Antenna: External SMA (usually 2–5 dBi or higher)
Power Requirements Operating Voltage: 3.3 V ONLY (Not 5 V tolerant) Current Consumption: TX (max power): ~115–130 mA RX: ~45 mA Use a stable 3.3 V regulator (AMS1117 alone is often not enough) and Add 10 µF + 0.1 µF capacitors near VCC & GND
Pin Configuration
| Pin | Function |
|---|---|
| GND | Ground |
| VCC | 3.3 V |
| CE | Chip Enable |
| CSN | SPI Chip Select |
| SCK | SPI Clock |
| MOSI | SPI Data In |
| MISO | SPI Data Out |
| IRQ | Interrupt (optional) |
Compatible Microcontrollers
- Arduino (UNO, Mega, Nano) needs level-safe SPI & strong 3.3 V supply
- ESP8266 / NodeMCU (recommended)
- ESP32
- STM32
- Raspberry Pi
Common Applications
Long-range IoT sensor networks
Smart agriculture (soil, weather, irrigation)
Remote monitoring systems
Wireless data logging
Robot-to-robot communication
Industrial telemetry
Important Notes
Always connect the antenna before powering ON (to avoid PA damage)
Use 250 kbps for maximum range
Keep SPI wires short
Use RF24 / RF24Network libraries
Codes
1. Transmitter
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
// CE, CSN pins
RF24 radio(9, 10);
// Address (must match receiver)
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
radio.begin();
radio.setPALevel(RF24_PA_MAX); // PA+LNA needs MAX
radio.setDataRate(RF24_250KBPS); // Long range
radio.setChannel(108); // Avoid WiFi noise
radio.openWritingPipe(address);
radio.stopListening();
Serial.println("NRF24L01 TRANSMITTER READY");
}
void loop() {
const char text[] = "Hello from Transmitter";
bool sent = radio.write(&text, sizeof(text));
if (sent) {
Serial.println("Message sent successfully");
} else {
Serial.println("Message failed");
}
delay(1000);
}
2. Receiver
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
// CE, CSN pins
RF24 radio(9, 10);
// Address (same as transmitter)
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
radio.begin();
radio.setPALevel(RF24_PA_MAX);
radio.setDataRate(RF24_250KBPS);
radio.setChannel(108);
radio.openReadingPipe(0, address);
radio.startListening();
Serial.println("NRF24L01 RECEIVER READY");
}
void loop() {
if (radio.available()) {
char text[32] = "";
radio.read(&text, sizeof(text));
Serial.print("Received: ");
Serial.println(text);
}
}






















