Roborear

Build Your Own 4WD Bluetooth Arduino Car with PWM Speed Control (Full Guide)

IMG 20260601 113928365 HDR

The “I Built It From Scratch” Moment – Arduino Bluetooth RC Car

Remember those remote control cars you played with as a kid?

You opened the box. Put in batteries. Pushed the throttle. And it moved.

Magic.

But you never knew how it worked.

Now imagine this: You build the car yourself. You solder nothing (yet). You write the code. You pair your phone via Bluetooth. You push a button on your screen. And YOUR car moves.

That’s not magic. That’s engineering.

And it’s easier than you think.

This tutorial will guide you through building a complete 4WD Bluetooth-controlled Arduino car. You’ll learn about motor drivers, PWM speed control, power distribution, and wireless communication.

And by the end, you’ll have a car that you can control from your phone. No expensive RC transmitter needed.

What You’ll Build – Arduino Bluetooth RC Car

 
 
ComponentWhat It Does
Arduino NanoThe brain – processes commands and controls motors
L298N Motor DriverPowers the motors – handles high current from batteries
HC-06 Bluetooth ModuleReceives wireless commands from your phone
4WD Chassis + 4 MotorsThe body and wheels – moves the car
3x 18650 BatteriesPower source – 11.1V total
L7805 Voltage RegulatorSteps down 11.1V to 5V for Arduino and Bluetooth
SwitchTurns the whole system on/off

What you’ll learn:

  • ✅ How H-bridge motor drivers work (IN pins control OUT pins)

  • ✅ PWM speed control (analogWrite on digital pins!)

  • ✅ Power distribution for robotics projects

  • ✅ Bluetooth communication (HC-06 paired with phone)

  • ✅ Differential steering for 4WD vehicles

How the L298N Motor Driver Works (The IN/OUT Relationship) – Arduino Bluetooth RC Car

Before we wire anything, you need to understand how the L298N translates Arduino signals into motor movement.

The Basic Rule: IN pins control OUT pins. The L298N amplifies Arduino’s 5V signals to deliver battery voltage (11.1V) to your motors.

For One Motor:

 
 
IN1IN2OUT1OUT2Motor Behavior
LOWLOWLOWLOWStop (coast)
HIGHLOWHIGHLOWForward
LOWHIGHLOWHIGHBackward
HIGHHIGHHIGHHIGHBrake

For 4WD Differential Steering:

To turn left, you need:

  • Left wheels backward (or slower)

  • Right wheels forward

To turn right, you need:

  • Left wheels forward

  • Right wheels backward (or slower)

Your code handles this logic automatically based on which button you press.

Power Distribution (Critical for Stability!) – Arduino Bluetooth RC Car

With 3×18650 batteries in series, you get 11.1V (3.7V × 3). Here’s how to distribute it:

 
 
ComponentVoltagePower Source
L298N (Motors)11.1V directBattery (via switch)
L7805 → Arduino 5V5V regulatedFrom 11.1V battery
L7805 → HC-06 VCC5V regulatedFrom 11.1V battery
HC-06 TX/RX5V logicDirect to Arduino pins

Important: Common ground is essential! Connect L298N GND, Arduino GND, L7805 GND, and battery negative together.

Complete Wiring Table – Arduino Bluetooth RC Car

Power Connections

 
 
FromToWire Color (suggested)
Battery Positive (+)SwitchRed
SwitchL298N 12VRed
SwitchL7805 Input (Pin 1)Red
Battery Negative (-)L298N GNDBlack
Battery Negative (-)L7805 Ground (Pin 2)Black
L7805 Output (Pin 3)Arduino 5VOrange
L7805 Output (Pin 3)HC-06 VCCOrange
Arduino GNDL298N GNDBlack
Arduino GNDL7805 GNDBlack

L298N to Arduino (Control Signals)

 
 
L298N PinArduino PinFunction
ENAD10PWM speed – Right motors
IN1D9Right motors direction A
IN2D8Right motors direction B
IN3D7Left motors direction A
IN4D6Left motors direction B
ENBD5PWM speed – Left motors

L298N to Motors (4WD)

 
 
L298N TerminalConnected To
OUT1Right Front Motor (+)
OUT2Right Front Motor (-)
OUT3Left Front Motor (+)
OUT4Left Front Motor (-)

For 4WD, wire rear motors in parallel with front motors:

  • Right Rear Motor (+) → same as Right Front Motor (+)

  • Right Rear Motor (-) → same as Right Front Motor (-)

  • Left Rear Motor (+) → same as Left Front Motor (+)

  • Left Rear Motor (-) → same as Left Front Motor (-)

HC-06 Bluetooth to Arduino

 
 
HC-06 PinArduino Pin
VCC5V (from L7805)
GNDGND
TXD0 (RX)
RXD1 (TX)

⚠️ Important: Remove HC-06 RX/TX wires when uploading code! D0/D1 are used for USB programming.

L7805 Voltage Regulator Wiring – Arduino Bluetooth RC Car

The L7805 steps down 11.1V to stable 5V for Arduino and Bluetooth.

Pinout (flat side facing you, pins down):

 
 
PinFunctionConnect To
Pin 1 (left)Input (7-25V)Battery Positive (after switch)
Pin 2 (center)GroundBattery Negative
Pin 3 (right)Output (5V)Arduino 5V, HC-06 VCC

Add capacitors for stability:

  • 0.33µF between Pin 1 and Pin 2

  • 0.1µF between Pin 3 and Pin 2

The Complete Code – Arduino Bluetooth RC Car

Full code available on GitHub: [Link to your GitHub repository]

Troubleshooting

 
 
ProblemLikely CauseFix
Car doesn’t moveENA/ENB jumpers still onRemove the jumper caps
Car moves opposite directionMotor polarity reversedSwap motor wires or swap HIGH/LOW in code
One side doesn’t moveLoose connection on that channelCheck IN pins and OUT terminals
Bluetooth not connectingHC-06 not pairedPIN is 1234, ensure VCC is 5V
Upload failsHC-06 connected to D0/D1Disconnect HC-06 before uploading
Car moves erraticallyMissing common groundConnect all GNDs together
Motors twitch but don’t spinLow battery voltageRecharge 18650 batteries
Speed control not workingENA/ENB jumper still onRemove the jumper caps

Make It Your Own (Upgrades)

 
 
UpgradeDifficultyWhat You’ll Need
LED Headlights⭐ EasyWhite LEDs + resistors
Obstacle Avoidance⭐⭐ MediumHC-SR04 ultrasonic sensor
Speed Display⭐⭐ MediumOLED display
Battery Voltage Monitor⭐⭐ MediumVoltage divider circuit
Follow Mode⭐⭐⭐ HardUltrasonic sensor + logic
Line Following⭐⭐⭐ HardIR sensors

What You Learned

 
 
ConceptWhy It Matters
H-bridge motor controlIN pins control OUT pins – amplifies Arduino signals
PWM speed controlanalogWrite() on PWM-enabled digital pins
Power distributionSeparate high-current (motors) from low-current (logic)
Voltage regulationL7805 steps down 11.1V to stable 5V
Bluetooth communicationHC-06 sends/receives serial data
Differential steeringOpposite wheel directions for turning

🎥 Watch the Complete Video Tutorial

See the full build process – assembly, wiring, code explanation, and live demo – on YouTube:

📺 Build a 4WD Bluetooth Arduino Car with PWM Speed Control

👉 Don’t forget to Subscribe to Roborear on YouTube for more robotics projects every week!


Your Turn

This project taught me that you don’t need expensive RC equipment to build a fast, responsive car. A $5 Bluetooth module and your phone are all you need.

Now go build yours. Drive it around. Chase your cat. Scare your roommate.

Then add sensors. Add lights. Make it follow lines.

That’s how you learn.

Frequently Asked Questions (FAQ)

1. Why isn't my speed control working? My car only moves at full speed.

This is the most common mistake. The L298N module has small jumper caps on the ENA and ENB pins. When these jumpers are in place, the enable pins are permanently connected to 5V, making the motors run at full speed regardless of your PWM code.

The fix: Remove the jumper caps from ENA and ENB. Then connect these pins to Arduino PWM-capable pins (D5 and D10) using jumper wires. Now analogWrite() will control the speed properly.

The code maps speed levels 1-9 to PWM values 50-255. Level 0 stops the car completely. If you want even slower minimum speed, change the map() function to start at a lower value like 30 instead of 50.

This is a wiring or code mapping issue. You have three options to fix it:

Option 1 (Easiest): Swap the motor wires connected to OUT1/OUT2 and OUT3/OUT4 on your L298N.

Option 2 (Software): In the code, swap the turnLeft() and turnRight() functions:

cpp
// Swap the code in these functions
// turnLeft() should have code from turnRight()
// turnRight() should have code from turnLeft()

Option 3 (Hardware): Swap the IN1/IN2 and IN3/IN4 pins on the Arduino side.

Your code’s labeling is just a naming convention – what matters is that pressing ‘L’ makes the car physically turn left. Adjust until it works.

Single 18650 (3.7V): No, this won’t work. The L298N needs at least 7V to operate properly. The Arduino can run on 5V, but the motors won’t have enough power to move the car.

Power bank (5V): No, 5V is insufficient for the L298N. The motors will stall even with no load.

Recommended setup: Use 2x 18650 in series (7.4V) or 3x 18650 in series (11.1V) for the motors. Use the L7805 to step down the voltage to 5V for Arduino and Bluetooth.

Alternative: Use a 2S LiPo battery (7.4V) instead of 18650s. It’s lighter and provides higher discharge current. If you use 2S, you can skip the L7805 if your L298N has a 5V output (some modules do). Check your L298N module – some have a built-in 5V regulator that can power the Arduino when the input is above 7V.

Leave a Comment

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

Scroll to Top
Roborear Logo
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.