Adding wireless communication to an Arduino project does not have to be complicated. The nRF24L01+ is a small, inexpensive 2.4 GHz transceiver that can be used to exchange data between two or more microcontrollers.
In this project, I’m using two Arduino boards with nRF24L01+ modules to demonstrate two-way communication. The basic idea is simple: one Arduino sends a message, the second Arduino receives it and sends a response back.
The same module can also be used in projects where several transmitters need to communicate with one receiver, making it useful for sensor networks, remote controls, and home automation projects.
What Is the nRF24L01+?The nRF24L01+ is a low-cost wireless transceiver operating in the 2.4–2.5 GHz ISM band. It can transmit and receive data at 250 Kbps, 1 Mbps, or 2 Mbps.
The module operates from 1.9 V to 3.6 V and typically works at 3.3 V. Its current consumption is around 11.3 mA during transmission and 13.5 mA during reception. In standby it can consume only around 26 µA.
The standard PCB-antenna version can provide roughly 50–100 m of range in open space. Modules equipped with a PA, LNA, and external antenna can achieve considerably longer ranges, with up to about 1 km possible under suitable open-space conditions. Operating at 250 Kbps can also help improve effective range.
There are several commonly available versions of the module.
PCB antenna version: This is the compact version with an onboard trace antenna. It is suitable for shorter-range projects and is commonly used with Arduino boards.
External antenna version: This version uses an SMA connector and external antenna, providing improved signal strength and stability.
PA + LNA version: This version adds a Power Amplifier and Low-Noise Amplifier along with an external antenna. The PA increases transmitted signal strength, while the LNA improves reception of weak incoming signals. Under suitable conditions, this version can provide communication distances of up to around 1000 m.
All three versions use the same basic nRF24L01+ wireless architecture, so they can communicate with each other.
Two Way Communication Between nRF24L01+ ModulesTo build the setup, you need two Arduino UNO R3 boards, two nRF24L01+ modules, a 16×2 I2C LCD, jumper wires, USB cables, and suitable power supplies. The RF modules communicate with the Arduino through the SPI interface.
For the Arduino UNO, connect GND and VCC of the nRF24L01+ to GND and 3.3 V respectively. Connect CE to pin 9, CSN to pin 10, SCK to pin 13, MOSI to pin 11, and MISO to pin 12. The IRQ pin can remain unconnected. The I2C LCD connects to the Arduino's SDA and SCL lines, which are A4 and A5 on the UNO. The LCD address used in the project is 0x27.
The nRF24L01+ should be powered at 3.3 V when using the bare module. If an adapter board with its own voltage regulation is used, follow the adapter's power requirements. For a more robust design, proper level shifting between the 5 V Arduino and 3.3 V radio interface is recommended.
Here is the wiring diagram for Responder:
On the software side, the project uses the Arduino IDE together with the LiquidCrystal_I2C library and the RF24 library by TMRh20. The initiator configures its nRF24L01+ for transmission, sends a message, and waits for the responder. The responder listens for the packet, reads the received data, and sends a response back. This creates a simple two-way wireless handshake between the two Arduino boards.
Once this basic link is working, the same nRF24L01+ modules can be used for larger wireless projects, including sensor networks, remote controls, and home automation systems.
For the complete technical explanation, wiring diagrams, library setup, and Arduino code, see the full nRF24L01+ and Arduino wireless communication tutorial.





Comments