Getting Started With NRF24L01 Wireless Transceiver Module

About: For more project and tutorial visit my YouTube Channel Smart Technology

In this project, we are going to learn how to use NRF24L01 Transceiver Module in order to make a wireless communication between two Arduino boards where using the PushButton at the first Arduino we will control the LED at the second Arduino.

The purpose is to discover the perfect way to communicate wirelessly between Arduino’s by using the NRF24L01 Wireless Transceiver Module.It alows us to remote things wirelessly.

Hardware components :

1. Arduino Uno × 2

2. NRF24L01 Transceiver Module × 2

3. Base module with voltage regulator × 2

4. PushButton

5. LED

6. Breadboard

7. Wires

Software apps :

1. Arduino IDE

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: NRF24L01 Features and Specifications

Features of the NRF24L01 Wireless Transceiver Module :

  • žCost (between 1$ to 3$ regarding to the type version)
  • žRange
  • žAvailability
  • žEasy to use

Types of the NRF24L01 Wireless Transceiver Module :

There is two types of NRF24LO1 :

  • žNRF24L01 with antenna (About a Kilometer in openspace)
  • žNRF24L01 without antenna (About 50 meters in openspace)

Applications of the NRF24L01 Wireless Transceiver Module :

  • žWireless home automation
  • žDrones remote control
  • žRemote sensors for temperature, pressure, alarms, much more
  • žRobot control and monitoring

The power consumption of the NRF24L01 Wireless Transceiver Module :

  • žThe power consumption of this module is just around 12mA during transmission
  • žThe operating voltage of the module is from 1.9 to 3.6V

Step 2: Watch the Video for More Details

Step 3: Problem to Be Overcome

Many users confront issues with NRF24L01 module.the source of these issues often come from the 3.3v Power.due to themodule does not have enough current capability.this is why I recommend to either use:

  • žBase module with voltage regulator and bypass capacitorsfor stability


  • ž3.3 uF to 10 uF (MicroFarad) capacitor directly on the module from +3.3V to Gnd

Step 4: Schematic

CE and CSN pins can be connected to any digital pins. Then in RF24 library, you can specify which pins you used. I chose pins 8 and 9 because I will use them in the examples.

In our case we will use the Arduino Uno this is why you should follow this instructions (or follow the picture above) :

  • MOSI is connected to the digital pin 11
  • MISO is connected to the digital pin 12
  • SCK is connected to the digital pin 13
  • SS (not used)

Note: While using the NRF24L01 you have to remember that these digital pins won’t be available.

Kindly watch the video which explained all steps clearly.

Step 5: Download RF24 Library

In this project we used RF24 library, which can be downloaded on Github: RF24 library

1. First you need to click on “Download ZIP” button

2. Extract the zip file to your Arduino home directory: Arduino/libraries on Linux or Documents/ Arduino/libraries in Windows.

Step 6: Transmitter Arduino Code

Transmitter sketch will look like:

/** Arduino Wireless Communication Tutorial
*      Transmitter Code
* by Smart Technology,  <a href="" rel="nofollow">
* Library: TMRh20/RF24,<a href="" rel="nofollow"></a>

#include <SPI.h> 
#include <nRF24L01.h>
#include <RF24.h>
#define button 7
RF24 radio(8, 9); // CE, CSN
const byte address[6] = "00001";
boolean buttonState = 0;
void setup() {
  pinMode(button, INPUT);
void loop() {
    buttonState = digitalRead(button);
    radio.write(&buttonState, sizeof(buttonState));

Step 7: Receiver Arduino Code

Receiver sketch code will look like :

/** Arduino Wireless Communication Tutorial
*      Receiver Code
* by Smart Technology,

* Library: TMRh20/RF24, */ #include <SPI.h>

#include <nrf24l01.h> #include<RF24.h> #define led 7 RF24 radio(8, 9); // CE, CSN const byte address[6] = "00001"; boolean buttonState = 0; void setup() { pinMode(7, OUTPUT); Serial.begin(9600); radio.begin(); radio.openReadingPipe(0, address); radio.setPALevel(RF24_PA_MAX); radio.startListening(); } void loop() { delay(5); radio.startListening(); while (!radio.available());, sizeof(buttonState)); if (buttonState == HIGH) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } }

Step 8: For Support

You can subscribe to the my YouTube channel for more tutorials and projects.

Subscribe for support. Thank you. Go to my YouTube Channel -link

Be the First to Share


    • Assistive Tech Contest

      Assistive Tech Contest
    • Reuse Contest

      Reuse Contest
    • Made with Math Contest

      Made with Math Contest

    7 Discussions


    5 months ago

    I guess we assume the resistors are 220 ohm. They aren't mentioned and it's too small in the pictures to read that color code.


    1 year ago

    This is a good start point .Pity about your link to utube ,it starts the video immediately and you have to get off the page to stop it downloading . I dont have the download capability.

    Question : I have two radio boards like these and I see that the amp voltage capacity etc senders being sold on ebay use the same board . No doubt they have an arduino like chip in them controlling the radio board. I would like to see whats being transmitted by them in my serial terminal . Can you guide me on altering the receiver code to show what's coming in?

    1 reply

    Question 1 year ago

    How to do this using 8 buttons and 8 leds? thank you

    1 answer
    Smart TechnologyFoxen

    Answer 1 year ago

    For this, you have to modify the code of the transmitter and receiver.