• Skip to main content
  • Skip to primary sidebar

Homemade Circuit Projects

Need circuit help? Post them in the comments! I've answered over 50,000!

Blog | Categories | About | Hire Me | Contact | Calculators-online
You are here: Home / Arduino Projects / Joystick Controlled 2.4 GHz RC Car Using Arduino

Joystick Controlled 2.4 GHz RC Car Using Arduino

Last Updated on May 14, 2026 by Swagatam 2 Comments

In this post I will show how to construct a car robot which can be controlled using a joystick on 2.4 GHz wireless communication link. The proposed project is not only made as a RC car, but you can add your projects such as surveillance camera etc. on the car.

Table of Contents
  • Overview
    • Illustration of NRF24L01 module:
    • Schematic diagram for remote:
    • Program for the Remote:
    • Schematic diagram for receiver:
    • Program for the Receiver

Overview

The project is divided in to two parts; the remote and the receiver.

The car or the base, where we place all our receiver components can be three wheel drive or four wheel drive.

If you want more stability for the base car or if you want to drive the car in uneven surface such as outdoors then, car base with 4 wheels are recommended.

You can also use 3 wheel drive base car which give you greater mobility while turning but, it may provide less stability than 4 wheel drive.

A car with 4 wheels but, 2 motor drive also feasible.

The remote may be powered with 9V battery and receiver may be powered with 12V, 1.3 AH sealed lead acid battery, which has smaller footprint than 12V, 7AH battery and also ideal for such peripatetic applications.

The 2.4 GHz communication between is established using NRF24L01 module which can transmit signals over 30 to 100 meters depending on obstacles in between two NRF24L01 modules.

Illustration of NRF24L01 module:

It works on 3.3V and 5V can kill the module so, care must be taken and it works on SPI communication protocol. The pin configuration is provided in the above image.

The remote:

The remote consists of Arduino (Arduino nano/ pro-mini is recommended), NRF24L01 module, a joystick and a battery power supply. Try to pack them in a small junk box, which will be easier to handle.

Schematic diagram for remote:

The pin connections for NRF24L01 module and joystick is provided in the diagram, if you feel any muddle, please refer the given pin connection table.

By moving the joystick forward (UP), reverse (Down), right and left, the car moves accordingly.

remote car joystick

Please note that all the wire connections are at left side, this is the reference point and now you can move the joystick to move the car.

By pressing the joystick in Z axis you can control the LED light on the car.

Program for the Remote:

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(9, 10);
const byte address[6] = "00001";

int X_axis = A0;
int Y_axis = A1;
int Z_axis = 2;

int x = 0;
int y = 0;
bool button = false;
bool lightState = false;

unsigned long lastToggle = 0;

int deadzone = 40;  // joystick stability zone

struct Payload {
  int xVal;
  int yVal;
  bool light;
};

Payload data;

void setup() {
  Serial.begin(9600);
  pinMode(X_axis, INPUT);
  pinMode(Y_axis, INPUT);
  pinMode(Z_axis, INPUT_PULLUP);

  radio.begin();
  radio.openWritingPipe(address);
  radio.setChannel(100);
  radio.setDataRate(RF24_250KBPS);
  radio.setPALevel(RF24_PA_LOW);
  radio.stopListening();
}

void loop() {

  x = analogRead(X_axis);
  y = analogRead(Y_axis);
  button = digitalRead(Z_axis) == LOW;

  // joystick deadzone
  int xMid = 512;
  int yMid = 512;

  if (abs(x - xMid) < deadzone) x = xMid;
  if (abs(y - yMid) < deadzone) y = yMid;

  // toggle light using non-blocking method
  if (button && millis() - lastToggle > 250) {
    lightState = !lightState;
    lastToggle = millis();
  }

  // pack data
  data.xVal = x;
  data.yVal = y;
  data.light = lightState;

  // transmit struct
  radio.write(&data, sizeof(data));
}

That concludes the Remote.

Now let’s take a look at the receiver.

The receiver circuit will be placed on the base car. If you have any idea to add your project on this moving base, plan the geometry properly for placing the receiver and your project so, that you don’t run out of room.

The receiver consists of Arduino, L298N dual H-bridge DC motor driver module, white LED which will be placed at front of the car, NRF24L01 module, and 12V, 1.3AH battery. The motors might come with base car.

Schematic diagram for receiver:

 

Please note that connection between Arduino board and NRF24L01 are NOT shown in the above diagram for avoiding wiring confusion. Please refer the remote’s schematic.

The Arduino board will be powered by L298N module; it has built in 5V regulator.

The white LED may be placed as head light or you can customize this pin to your needs, by pressing the joystick, the pin #7 turns high and pressing the joystick again will turns the pin low.

 

Please pay attention to the left and right side motors specified in the receiver schematic diagram.

Program for the Receiver

#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>

RF24 radio(9, 10);
const byte address[6] = "00001";

unsigned long lastPacket = 0;
unsigned long timeout = 500; // ms

// motor pins
const int M1A = 2;
const int M1B = 3;
const int M2A = 4;
const int M2B = 5;
const int lightPin = 7;

struct Payload {
  int xVal;
  int yVal;
  bool light;
};

Payload data;

// helper functions
void stopMotors() {
  digitalWrite(M1A, LOW);
  digitalWrite(M1B, LOW);
  digitalWrite(M2A, LOW);
  digitalWrite(M2B, LOW);
}

void forward() {
  digitalWrite(M1A, HIGH);
  digitalWrite(M1B, LOW);
  digitalWrite(M2A, HIGH);
  digitalWrite(M2B, LOW);
}

void reverse() {
  digitalWrite(M1A, LOW);
  digitalWrite(M1B, HIGH);
  digitalWrite(M2A, LOW);
  digitalWrite(M2B, HIGH);
}

void leftTurn() {
  digitalWrite(M1A, LOW);
  digitalWrite(M1B, LOW);
  digitalWrite(M2A, HIGH);
  digitalWrite(M2B, LOW);
}

void rightTurn() {
  digitalWrite(M1A, HIGH);
  digitalWrite(M1B, LOW);
  digitalWrite(M2A, LOW);
  digitalWrite(M2B, LOW);
}

void setup() {
  Serial.begin(9600);

  pinMode(M1A, OUTPUT);
  pinMode(M1B, OUTPUT);
  pinMode(M2A, OUTPUT);
  pinMode(M2B, OUTPUT);
  pinMode(lightPin, OUTPUT);

  stopMotors();
  digitalWrite(lightPin, LOW);

  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setChannel(100);
  radio.setPALevel(RF24_PA_LOW);
  radio.setDataRate(RF24_250KBPS);
  radio.startListening();
}

void loop() {

  // receive data
  if (radio.available()) {
    radio.read(&data, sizeof(data));
    lastPacket = millis();
  }

  // failsafe
  if (millis() - lastPacket > timeout) {
    stopMotors();
    return;
  }

  // joystick interpretation
  int x = data.xVal;
  int y = data.yVal;

  int center = 512;
  int deadzone = 40;

  // Light toggle
  digitalWrite(lightPin, data.light);

  // direction logic
  if (y < center - deadzone) {
    forward();
  }
  else if (y > center + deadzone) {
    reverse();
  }
  else if (x < center - deadzone) {
    leftTurn();
  }
  else if (x > center + deadzone) {
    rightTurn();
  }
  else {
    stopMotors();
  }
}

That concludes the receiver.

After completing the project, if the car moves in the wrong direction just reverse the polarity motor.

If your base car is 4 motors wheel drive, connect the left motors in parallel with same polarity, do the same for right side motors and connect to the L298N driver.

If you have any question regarding this joystick controlled 2.4 GHz RC car using Arduino, feel free to express in the comment section, you may receive a quick reply.

You'll also like:

  • arduinoback upArduino Mains Failure Battery Backup Circuit
  • setupVehicle Speed Detector Circuit for Traffic Police
  • P 20160419 235234Digital Clock Circuit Using 16 x 2 LCD Display
  • Raspberry Pi Explained

Filed Under: Arduino Projects Tagged With: Arduino, Controlled, Joystick, RC

About Swagatam

I am an electronics engineer and doing practical hands-on work from more than 15 years now. Building real circuits, testing them and also making PCB layouts by myself. I really love doing all these things like inventing something new, designing electronics and also helping other people like hobby guys who want to make their own cool circuits at home.

And that is the main reason why I started this website homemade-circuits.com, to share different types of circuit ideas..

If you are having any kind of doubt or question related to circuits then just write down your question in the comment box below, I am like always checking, so I guarantee I will reply you for sure!



Previous Post: « L298N DC Motor Driver Module Explained
Next Post: Simple Digital Water Flow Meter Circuit using Arduino »

Reader Interactions

Questions & Answers

Total Posts: 2
Newest Oldest
joydip kar
January 31, 2018 • 9 years ago #58152

sir,how can we make a robot vehicle which will be able to track RF signal sources?..would you mind helping us in this situation..

Reply
SwagatamAdmin
January 31, 2018 • 9 years ago #58170

Joydip, do you mean to say a RF remote controlled robot? sorry i did not understand what you meant by “track RF signal source”…explain elaborately

Reply

Need Help? Please Leave a Comment! We value your input—Kindly keep it relevant to the above topic! Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar



Categories

  • Arduino Projects (95)
  • Audio and Amplifier Projects (134)
  • Automation Projects (18)
  • Automobile Electronics (104)
  • Battery Charger Circuits (90)
  • Datasheets and Components (109)
  • Electronics Theory (150)
  • Energy from Magnets and Earth (41)
  • Games and Sports Projects (11)
  • Grid and 3-Phase (20)
  • Health related Projects (27)
  • Home Electrical Circuits (13)
  • Indicator Circuits (16)
  • Inverter Circuits (98)
  • Lamps and Lights (161)
  • Meters and Testers (72)
  • Mini Projects (28)
  • Motor Controller (68)
  • Oscillator Circuits (30)
  • Pets and Pests (15)
  • Power Supply Circuits (91)
  • Remote Control Circuits (50)
  • Security and Alarm (65)
  • Sensors and Detectors (107)
  • SMPS and Converters (46)
  • Solar Controller Circuits (62)
  • Temperature Controllers (44)
  • Timer and Delay Relay (50)
  • Voltage Control and Protection (44)
  • Water Controller (37)
  • Wireless Circuits (31)



Circuit Simulator

circuit simulator image



Subscribe to get New Circuits in your Email



Other Links

  • Privacy Policy
  • Cookie Policy
  • Disclaimer
  • Copyright
  • Videos
  • Sitemap

People also Search

555 Circuits | 741 Circuits | LM324 Circuits | LM338 Circuits | 4017 Circuits | Ultrasonic Projects | SMPS Projects | Christmas Projects | MOSFETs | Radio Circuits | Laser Circuits | PIR Projects |



Recent Comments

  • Swagatam on HX710B Air Pressure Sensor Datasheet, How to Connect
  • Swagatam on Simplest One Transistor Regulated Power Supply Circuit
  • Luciano Orozco on HX710B Air Pressure Sensor Datasheet, How to Connect
  • Steve on Simplest One Transistor Regulated Power Supply Circuit
  • Swagatam on Modified Sine Wave Inverter Circuits using IC 555, 4017, 4049, 4093 and BJTs

Social Profiles

  • Twitter
  • YouTube
  • Instagram
  • Pinterest
  • My Facebook-Page
  • Stack Exchange
  • Linkedin

Calculators

  • ZVS Induction Heater + Tank Calculator Tool
  • Zener Diode Calculator
  • Wire Current and Thickness Calculator (Ampacity Calculator)
  • Voltage Divider Calculator
  • Transistor Base Resistor Calculator
  • Transistor Astable Multivibrator Calculator
  • TL431 Calculator
  • Solar Panel, Inverter, Battery Calculator
  • Ferrite Core Air Gap Calculator Tool
  • Parallel MOSFET Calculator Tool: How to Connect MOSFETs in Parallel Safely
  • LC Resonance Calculator for EV Battery Charger Circuits
  • LED String Series Resistor Calculator
  • Calculator to Design a High Power 3kW PFC (Power Factor Correction) Circuit
  • Passive Power Factor Correction (PFC) Calculator
  • LM567 IC Calculator Tool
  • SMPS Flyback Boost Converter Calculator
  • Shunt Resistor Calculator for Ammeters
  • SCR and Triac Gate Resistor Calculator
  • Battery Back up Time Calculator
  • Boost Converter Calculator (Non-Isolated)
  • Bootstrap Capacitor Calculator
  • Buck Converter Calculator
  • Buck-Boost Converter Calculator
  • Capacitance Reactance Calculator
  • DCM Flyback Transformer & Wire Gauge Wire Size Calculator Tool
  • Filter Capacitor Calculator
  • IC 4047 Calculator (Frequency and PWM)
  • IC 4060 Calculator
  • IC 555 Astable Calculator
  • IC 555 Monostable Calculator
  • IC SG3525, SG3524 Calculator
  • Inductance Calculator
  • Induction Heater Inductor and Resonant Frequency Calculator
  • Induction Heater Work Coil Calculator
  • Inverter LC Filter Calculator
  • LC Resonance Calculator
  • LED Current Calculator
  • LM317, LM338, LM396 Calculator
  • NAND/NOT Gate RC Values Calculator
  • NOT, NAND Gate Frequency Calculator
  • Notch Filter Calculator Tool
  • Ohm’s Law Calculator
  • Phase Angle Phase Shift Calculator
  • Power Factor (PF) Calculator
  • RC Filter Calculator
  • Reactance Calculator
  • Sine Table Calculator for SPWM Arduino Code
  • Small Signal Transistor(BJT) and Diode Quick Datasheet
  • SMPS Calculator for Toroidal Ferrite Transformers
  • SMPS Flyback Transformer Calculator – Design by Target Duty Cycle
  • TL431 Calculator

© 2026 · Swagatam Innovations