This website requires JavaScript.
Coupons APP Download
Ship to
Blog

How to Create a Bluetooth-Controlled Car With Arduino: A Step-by-Step Guide

Published Jan 19, 2026, updated Jan 19, 2026

11 min


This tutorial walks through the complete engineering and implementation of a two-wheel Bluetooth RC car with an Arduino Nano module on a specially designed PCBA (Printed Circuit Board Assembly) is illustrated in this tutorial.


While many hobbyists start by wiring motors and Bluetooth modules with jumper cables on a breadboard, this approach is prone to disconnection and signal noise. This guide upgrades that process by teaching you how to design a professional mainboard.


Key Design Features:


● Controller: Arduino Nano used as a plug-in module.

● Drive System: Two N20 DC Gear Motors configured for differential drive.

● Driver: Surface-mount TB6612FNG MOSFET-based driver.

● Manufacturing: Professionally assembled [PCB assembly service → JLCPCB PCBA] for reliability.



Step 1: Define the Mechanical and Electrical System of the Arduino Bluetooth Car


Choose a Differential Drive System


This robot does not rely on Ackerman steering (like in real cars), but rather employs a Differential Drive system.


Mechanism: The configuration comprises two powerful N20 DC motors that can operate independently and are located on opposite sides of the chassis.


Steering Logic:


Forward: Both motors rotate at equal speed (VL = VR).

Turn: One motor spins slower than the other (VL ≠ VR).

Left: VL > VR

Right: VL < VR

Zero-Radius Turn: Motors spin in opposite directions.


Stability: A front passive ball caster is used as a third point of contact, reducing friction and allowing omnidirectional movement.


Plan the Electrical Architecture


The central processing unit in this project is the Arduino Nano. It controls the three most important subsystems:


1. Communication: Deals with data transmission through the UART coming from the HC-05 Bluetooth module.


2. Motor Control: It produces PWM signals for the motor driver.


3. Power Distribution: Regulates battery voltage for logic and motor drive.


Crucially, the Motor Driver IC isolates the sensitive logic pins of the Arduino Nano from the high inductive voltage spikes generated by the N20 motors.


If the battery voltage is lower than the motor’s rated voltage, a boost converter (such as XL6009) is used to supply the full voltage to the motors through the motor driver, thereby increasing the battery voltage.


SubsystemComponentPurpose
ControllerArduino NanoMotor & Bluetooth control logic
MotorsN20 DC motors (x2)Differential drive actuation
Boost ModuleXL6009Voltage booster from battery
CommunicationHC-05Bluetooth UART Interface
SupportBall casterFront mechanical stability

System overview table for Arduino Nano Bluetooth RC car with N20 motors



Step 2: Select Components for the Arduino Nano RC Car PCBA


The selection of correct components is necessary to build a robot PCB Assembly.


ComponentQtyNotes
Arduino Nano1Plug-in module (Header Mount)
N20 DC Motor2Differential drive (6V-12V)
TB6612FNG1Dual H-bridge Driver (SMD)
XL60091Boost Converter Module
Rocker Switch1Kill Switch to toggle(On/OFF)
HC-051Bluetooth UART Module
Ball caster1Front passive support

BOM table for Arduino Nano Bluetooth RC car PCBA using N20 motors



Step 3: Design the Schematic for an Arduino Nano Bluetooth RC Car


Allocate Arduino Nano Pins for Motor and Bluetooth Control


Proper pin mapping is essential for PWM generation.


FunctionArduino Nano Pin
Motor A PWMD5 (PWM Capable)
Motor A directionD6, D7
Motor B PWMD10 (PWM Capable)
Motor B directionD8, D9
Bluetooth RXD0 (RX)
Bluetooth TXD1 (TX)

Arduino Nano pin allocation for peripherals


Wire the Motor Driver for Differential Drive


Inputs: AIN1/AIN2 connect to Nano D6/D7 to control direction (Clockwise/Counter-Clockwise) and BIN1/BIN2 connect to Nano D8/D9 to control direction (Clockwise/Counter-Clockwise).


Speed: PWMA/PWMB connect to Nano D5/D10.


Standby: The STBY pin on the TB6612FNG must be pulled HIGH (to VCC) or controlled by a GPIO to enable the motors.


Outputs: AO1, AO2, and BO1, BO2 connect to the Left N20 Motor terminals.


Connect the Bluetooth Module for Mobile Control


Direct Connection: HC-05 TX to Arduino RX and HC-05 RX to Arduino TX


Schematic diagram of Arduino Bluetooth-controlled two-wheel RC car with N20 motors

Schematic diagram of Arduino Bluetooth-controlled two-wheel RC car with N20 motors



Step 4: Design the PCB Layout for a Two-Wheel Robot Car PCBA


Optimize Component Placement


Centering: The battery holder should be positioned exactly in the middle so that the weight is evenly distributed.


Edge Placement: Position the HC-05 module at the edge of the board. The PCB copper planes should not extend under the Bluetooth antenna area to avoid signal shielding.


Connectors: Place JST or screw terminals for the N20 motors exactly where the motors will physically mount to keep wire runs short.


Route High-Current Motor Traces Safely on the PCB (Critical Design Tips)


Trace Width: The traces carrying power to the N20 motors must be wide. Use a calculator (IPC-2221) to size them for at least 1A continuous current (typically ≥ 20 mil).


Loop Area: Keep the Forward and Return paths for the motor current close together to minimize inductance and radiated noise.


GND Pour: A GND pour on a PCB fills open areas with ground-connected copper, establishing a solid ground plane. It works by EMI reduction, giving low-impedance signal return paths, helping to get rid of heat, and stabilizing voltages, which is very important for signal quality and production in complicated or fast-speed designs..



PCB layout for Arduino Bluetooth RC car

PCB layout for Arduino Bluetooth RC car optimized for PCBA



Step 5: Manufacture the Arduino Nano Bluetooth RC Car Using PCBA Services


Generate Gerber, BOM, and Pick-and-Place Files for PCBA


To use the JLCPCB PCBA service, you must export three specific files from your EDA software (such as EasyEDA or KiCad):


1. Gerber Files: Defines the physical copper, solder mask, and drill holes.


2. BOM (Bill of Materials): A list of components containing Manufacturer Part Numbers.


3. CPL (Component Placement List): The coordinates (X, Y, Rotation) for the SMT Pick-and-Place machine.


JLCPCB 2D Gerber viewer showing Arduino RC car board tracks

JLCPCB 2D Gerber viewer showing Arduino RC car board tracks without components.


3D preview showing assembled components

3D preview showing assembled components


Order PCB and PCBA for the Arduino Bluetooth Controlled Car on JLCPCB


After finishing your design, you can order your assembled board by performing the following steps:


1. Upload Gerbers: Go to the JLCPCB site and upload the zip file containing your Gerbers. The viewer will show your board design.


JLCPCB Order page, showing Gerber view of the bare PCB

JLCPCB Order page, showing Gerber view of the bare PCB



2. Select PCBA: Toggle the "PCB Assembly" option to ON.



PCBA Order economic top side

PCBA Order economic top side



3. Choose Settings: Choose "Assemble top side" (because our SMT components are on top) and then decide on "Economic" or "Standard" assembly according to your complexity.


4. Upload BOM & CPL: Upload the specific files generated in the previous step.


5. Part Selection: Your BOM items will be compared with the JLCPCB Parts Library through the system. Verify the parts and look at the 3D preview to confirm the correct orientation.


6. Order: Proceed to checkout. JLCPCB engineers will conduct a DFM (Design for Manufacturability) review before production commencement.


Why PCBA Makes an Arduino Bluetooth Controlled Car More Reliable


Noise Immunity: A solid PCB ground plane drastically reduces electromagnetic interference compared to jumper wires, which act as antennas.


Vibration Resistance: N20 motors create vibration. Solder joints on a PCB are far more durable than breadboard connections.


MetricBreadboardPCBA
Noise ImmunityPoorHigh
DurabilityLow (wires loose easily)High (Soldered)
RepeatabilityLowExcellent

Comparison of breadboard wiring vs PCBA for Arduino Nano robot car



Step 6: Program the Arduino Nano for Bluetooth Car Control


Structure the Arduino Firmware for RC Car Control


So the code is to receive the characters from the serial port and transform them to motor differential speeds.

#include <SoftwareSerial.h>

// Motor Pins

const int enA = 5;

const int inA1 = 6;

const int inA2 = 7;

const int enB = 10;

const int inB1 = 8;

const int inB2 = 9;

// ... define other pins

void setup() {

 Serial.begin(9600); // Bluetooth baud rate

 pinMode(enA, OUTPUT);

 pinMode(inA1, OUTPUT);

 pinMode(inA2, OUTPUT);

 pinMode(enB, OUTPUT);

 pinMode(inB1, OUTPUT);

 pinMode(inB2, OUTPUT);

}

void loop(){

 //your logic here

}


Implement Differential Drive Logic


Turning Left: The robot turns left when the Right Motor rotates forward at speed X, while the Left Motor is either halted or rotates backward.

○ Code Logic:

analogWrite(RightMotor, 200);

analogWrite(LeftMotor, 0);


Turning Right: Left motor rotates forward at speed X, and Left motor is either halted or rotates backward.

○ Code Logic:

analogWrite(RightMotor, 0);

analogWrite(LeftMotor, 200);


Pivot (Zero Radius):

○ Code Logic: Left Motor BACKWARD, Right Motor FORWARD.


Add Safety Logic to Prevent Motor and Power Failures


Failsafe: In case of a disconnection of the Bluetooth link, the robot's action should be halted, not continue to drive.


Ramping: Immediate jump from 0 to 255 PWM is to be avoided in order to save the plastic gears in the N20 motors.



Step 7: Control the Arduino Bluetooth RC Car with a Mobile Phone


Pair the Bluetooth Module with a Mobile Device

1. Power up the PCBA. The HC-05 LED should blink rapidly (Pairing Mode).

2. Open Bluetooth settings on your phone and pair with "HC-05".

3. PIN: Usually 1234 or 0000.


Control the RC Car Using a Bluetooth Mobile App

Use a standard "Bluetooth Electronics" app.

Configuration: Map the "Forward" arrow button to send the character 'F'. Map "Left" to 'L', etc.

Data Flow: Phone App → Bluetooth —> HC-05 $\rightarrow$ Arduino Nano (RX) → Firmware Logic → TB6612FNG → Motors.



Step 8: Test and Optimize the Arduino Bluetooth Controlled Car


Perform Electrical Testing on the PCBA and Motors


Before plugging in the Nano:

1. Power the board with the battery.

2. Multimeter Check: Measure the 5V pin on the headers. It must be a steady 5V. If it's 7V+, do not plug in the Nano!

3. Stall Current: Ensure the heat traces won't overheat by taking measurements of current while the wheels are held.


Validate Mechanical Performance

Balance: Ensure the battery is centered so the robot doesn't tip.

Caster Drag: In case of dragging of the front ball caster, either lubricate it or change the height of the N20 motor mounts.



Conclusion


This tutorial demonstrates how a simple two-wheel Arduino Nano Bluetooth RC car can be elevated into a reliable engineering project using PCBA.


The use of professional fabrication instead of breadboards guarantees that your robot can deliver perfect power to the N20 motors, have uninterrupted Bluetooth communication, and be mechanically strong enough to handle real-world applications.


Ready to start your build?


Export your Gerber files and start your Arduino Nano PCBA project with the JLCPCB PCBA portal to get your custom board manufactured today!



FAQs


Q1: What if the TB6612FNG driver is out of stock in the library?

JLCPCB has a large library, but the availability of stock changes. You may use the "Pre-order" option to hold parts for you, or see if the L9110S driver that is listed as compatible will meet your voltage needs as a substitute.


Q2: Do I need to order a stencil?

If you are using the PCBA service, no. JLCPCB creates its own internal stencil for applying solder paste. You only need a stencil if you plan to solder the SMT parts yourself at home.


Q3: What is the difference between "Basic" and "Extended" parts at JLCPCB?

"Basic" parts are already loaded on the feeders and have no labor fee. "Extended" parts require a small labor fee to load the reels. To save money, filter for "Basic" parts when selecting resistors, capacitors, and LEDs.


Q4: Can I power this PCBA with a standard 9V battery?

We strongly advise against it. Standard 9V (PP3) batteries cannot supply the high current needed for motors. Use a 2S Li-ion pack (7.4V) or 6xAA batteries for reliable performance.


Q5: Why does the code upload fail when the Bluetooth module is plugged in?

The HC-05 utilizes the same hardware Serial pins (D0/D1) that connect to the USB port. During the uploading of sketches to the Arduino Nano, you will have to disconnect the Bluetooth module, or alternatively, you can add a switch to the power line of the Bluetooth module.


Keep Learning