How to Make an RC Car with Arduino: Parts, Wiring, Code and Control
A basic Arduino RC car uses an Arduino Uno or Nano, a two-motor chassis, a motor driver board such as the L298N or TB6612FNG, a battery pack and a Bluetooth module (HC-05) so you can drive it from a phone app. The Arduino reads commands from the Bluetooth module and switches the motor driver to go forward, back, left (one side slower) and right. The whole project takes an afternoon, needs no soldering if you use jumper wires, and is a good introduction to electronics and code.

Parts list
| Part | Notes |
|---|---|
| Arduino Uno or Nano | Any 5 V Arduino works |
| 2WD or 4WD robot chassis kit | Includes geared DC motors and wheels |
| Motor driver: L298N or TB6612FNG | TB6612 is more efficient; L298N is common and cheap |
| HC-05 or HC-06 Bluetooth module | Android apps; iPhones need a BLE module (HM-10) |
| Battery: 2× 18650 Li-ion (7.4 V) or 6× AA | With holder and switch |
| Jumper wires, small breadboard | No soldering needed |
Wiring
- Mount motors, wheels, battery holder and boards on the chassis.
- Connect the left motor to OUT1/OUT2 and the right motor to OUT3/OUT4 of the driver.
- Battery + to the driver’s 12 V input, battery − to GND. Connect driver GND to Arduino GND (common ground).
- Power the Arduino from the driver’s 5 V output (L298N with jumper) or its VIN pin.
- Driver inputs IN1–IN4 to Arduino pins 5, 6, 9, 10; enable pins to PWM pins if not jumpered.
- HC-05: VCC to 5 V, GND to GND, TX to Arduino pin 2, RX to pin 3 through a voltage divider (the module’s RX is 3.3 V).
The code
The sketch listens for single characters from the app: F forward, B back, L left, R right, S stop. Use the SoftwareSerial library on pins 2 and 3 at 9600 baud. In loop(), read a character and call a function that sets IN1–IN4: both motors forward for F, both backward for B, one forward and one backward for a spin turn. Many free “Arduino Bluetooth RC car” apps send exactly these letters; check which letters your app uses and match them in the code. Upload the sketch with the Bluetooth module disconnected from pins 0/1 if you use hardware serial.
Control options
- Bluetooth app: simplest; 10–20 m range.
- Wi-Fi (ESP32 or ESP8266 instead of Arduino): control from a web page; see controlling an RC car with a computer.
- nRF24L01 radio + second Arduino with a joystick: a real handheld remote with longer range.
- Hobby RC receiver: read the PWM channels with
pulseIn()and use a standard transmitter.
Upgrades
- Ultrasonic sensor (HC-SR04) for obstacle avoidance.
- Line-following sensors for a track.
- Servo steering on a car chassis instead of tank-style turning.
- LED headlights and a buzzer horn.
- Speed control with PWM on the enable pins.
For a custom board instead of jumper wires see how to make an RC car circuit board.
Troubleshooting
- Motors don’t move: missing common ground or battery too weak (L298N drops about 2 V).
- Arduino resets when motors start: voltage dip; use a better battery or separate supplies.
- One motor runs backward: swap its two wires.
- App doesn’t connect: pair HC-05 in Bluetooth settings first (PIN often 1234 or 0000).
FAQ
Which Arduino is best for an RC car?
Uno for learning, Nano to save space, ESP32 for Wi-Fi/Bluetooth built in.
Can I control it with an iPhone?
Use a BLE module like the HM-10, or an ESP32.
How fast is an Arduino car?
Usually walking to jogging pace with robot-kit motors.
Do I need to solder?
No, jumper wires are enough for a first build.
More on this topic: the complete RC Cars guide covers the basics behind this article.





