RF Control System for R/C Vehicle Based on Arduino and NRF24L01

Introduction: RF Control System for R/C Vehicle Based on Arduino and NRF24L01

The aim of this project is to build a transmitter and a receiver by using a cheap and easy to use component such as Arduino UNO, Arduino Nano, and nRF24L01 transceiver. This project is a simple and easy to implement and can be a good start point for beginners.

Step 1: ​What You Will Need:

Step 2: Connect the NRF24L01 Module

these connections are applied for both, The transmitter and the receiver

Step 3: Connect the Joystick and the LED to the Transmitter

And connect the LED as following:

  • LED+ --> Arduino Nano D2 pin
  • LED- --> Arduino Nano GND
  • 2k2 Resistor --> LED+

Step 4: Connect the ESC and the Servo to the Receiver Board

IMORTANT NOTE: if you have a similar ESC Never connect the ESC’s red wire to the Arduinoboard because it may damage it

Step 5: Power Source

  • I've attached this header to the battery -as shown in picture- in order to deliver a power to the Arduino on the receiver side, or you can use a separated battery for the Arduino board.
  • for the transmitter you can use any power source as you wish

Step 6: Programming the Arduinos

  1. Download the RF24 Library from here
  2. The sketch is available at github and it is full commented, or you can download it from the attachments.

Step 7: Video and Pictures

Enjoy It!

And please vote for me ?



  • Tiny Home Contest

    Tiny Home Contest
  • Water Contest

    Water Contest
  • Metalworking Contest

    Metalworking Contest

62 Discussions

Hi All,

I am sorry for not answering your questions, I am very busy nowadays. I am planning in the future to relaunch this project in version two and do it using a communication protocol to make it more stable, also I have to update the code so it works with new nrf24l01 library updates. Thanks for your understanding my situation. I'll come back soon


1 year ago

hi sir, i have to control the robot car project. Where the rear wheels in the form of a dc motor is controlled with flex sensors and front wheels in the form of a servo motor controlled by the accelerometer sensor. Robot controller with a car connected with nrf24l01. if one of the sensors to control I can. but if it combines both to control I can not. Both sensors transmit data simultaneously . dc motors and servo motors confused receive data so that its movement is chaotic. How should I fix this? can you help me.? Can I send my program to you and you see.? Please. My email: rema_adhe@yahoo.com

1 reply

Hello Mujahed, nice work!

I'm starting out with Arduino, but always passionate rc model.

I wanted to ask if you can edit your listings for running two joystick and four servants.

Thank you

Hey mujahed, nice work!

I have a little question, the code for te receiver does not compile in my case?

In the while loop on the botoom is the failure:

" done = radio.read( received_data, num_received_data );

exit status 1

void value not ignored as it ought to be"

What does the function radio.read give back? Does it get a boolean type?

Thanks for your help,


1 reply

Okay found the problem.

You have to definetly use the library linked in part 6.

The Library from the repo in ArduinoIDE will not work!

The Code for the ESC will work with Unbranded brushless ESC's

2 replies

thank you for your not
but as in my part list
the ESC that I was working with is this one
and I can not confirm that if it could work with others

What i meant was I got it working with Modification Using this brushless ESC


Hello! Nice project You have here! I think I am gonna to try it, I love to modify RC stuff and experiment. I wonder, would it be hard to add several buttons on remote? To control lights on car, and other possible uses? Thanks!

Hi.project for thanks.

What should I do rc car to go more slowly.


2 years ago

void value not ignored as it ought to be

"done = radio.read( received_data, num_received_data );"

// Fetch the payload, and see if this was the last one.
done = radio.read( received_data, num_received_data );
ESC_value=received_data[0]*10; //Multiplication by 10 because the ESC operates for vlues around 1500 and the nRF24L01 can transmit maximum of 255 per packet
// Serial.println(ESC_value);
2 replies

you maybe not installed and included the nRF24 library
you can download it from here https://codeload.github.com/maniacbug/RF24/zip/master

please confirm if you did, or paste the full code if you wrote your own and if you used my code please describe the steps you did


I have the same problem than Jodyk5 and abhilesh. I had installed the nrf24 library.

Have you a solution for this problem ?



2 years ago

What type of servo is needed, digital or analog?

Your project is awesome but I have a small doubt:Will the 2 nrf24l01 modules will connect to each other when powered using an arduino or we have to setup it using a computer every time we power it ??

1 reply