How to Create a Bluetooth-Controlled Car With Arduino: A Step-by-Step Guide
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.
| Subsystem | Component | Purpose |
|---|---|---|
| Controller | Arduino Nano | Motor & Bluetooth control logic |
| Motors | N20 DC motors (x2) | Differential drive actuation |
| Boost Module | XL6009 | Voltage booster from battery |
| Communication | HC-05 | Bluetooth UART Interface |
| Support | Ball caster | Front 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.
| Component | Qty | Notes |
|---|---|---|
| Arduino Nano | 1 | Plug-in module (Header Mount) |
| N20 DC Motor | 2 | Differential drive (6V-12V) |
| TB6612FNG | 1 | Dual H-bridge Driver (SMD) |
| XL6009 | 1 | Boost Converter Module |
| Rocker Switch | 1 | Kill Switch to toggle(On/OFF) |
| HC-05 | 1 | Bluetooth UART Module |
| Ball caster | 1 | Front 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.
| Function | Arduino Nano Pin |
|---|---|
| Motor A PWM | D5 (PWM Capable) |
| Motor A direction | D6, D7 |
| Motor B PWM | D10 (PWM Capable) |
| Motor B direction | D8, D9 |
| Bluetooth RX | D0 (RX) |
| Bluetooth TX | D1 (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
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 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 without 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
2. Select PCBA: Toggle the "PCB Assembly" option to ON.
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.
| Metric | Breadboard | PCBA |
|---|---|---|
| Noise Immunity | Poor | High |
| Durability | Low (wires loose easily) | High (Soldered) |
| Repeatability | Low | Excellent |
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.
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
How to Create a Bluetooth-Controlled Car With Arduino: A Step-by-Step Guide
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: ● Control......
How to Design and Assemble a Reliable ESP32 Module PCB on a 2-Layer Board
Many engineers fail when designing their first ESP32 PCB due to antenna issues, power instability, or SMT defects. Designing a custom board with an ESP32 Module strikes the perfect balance between customizability and ease of manufacturing. Unlike a chip-down design, the module integrates the crystal oscillator, flash memory, and RF matching network, reducing the PCBA risk significantly. Nonetheless, the SMD package (for example, the ESP32-S2-WROOM modules) comes with its own challenges at JLCPCB SMT. ......
What Is the Best Flux for Soldering Electronics? Quick Selection Guide
Choosing the best flux for soldering electronics is a critical—yet often overlooked—factor in achieving reliable solder joints during electronic assembly. Industry surveys indicate that more than one-third of soldering defects, approximately 35%, can be traced back to improper flux selection or incorrect application. Whether you are performing manual soldering during PCB prototyping or operating a high-volume Surface Mount Technology (SMT) production line, a clear understanding of flux chemistry, acti......
Build Your First Custom PCBA Successfully in 5 Key Steps
Moving a design from a bare printed circuit board (PCB) to a fully populated PCBA is an important milestone in any electronics project. It is the point at which a theoretical design becomes an operating piece of hardware. In this article, you will learn the five most important steps to create and order your first custom PCBA. The entire process will be broken down - we will ensure you make it all the way to a successful outcome. By utilizing an integrated PCB assembly manufacturer like JLCPCB, you can......
The Ultimate Guide to PCBA: Process,Types and Techniques for the Electronics Enthusiast
As the demand for electronic devices continues to grow, understanding the complexities of Printed Circuit Board Assembly (PCBA) has become increasingly crucial. This comprehensive guide will provide an in-depth look at the PCBA process, the types of PCB assembly, and the various techniques and tips involved. We will also explore the meaning of PCBA in electronics, ensuring you have a thorough understanding of this vital component. What does PCBA Stand for in Electronics? PCBA stands for Printed Circui......
PCB vs PCBA: What Are the Differences and How to Choose the Right Service for Your Project
In the electronics industry, PCBs and PCBAs are frequently confused with one another, but the two represent distinct stages in the hardware production sequence. Engineers and product designers need to maintain a clear distinction between the meaning of a bare Printed Circuit Board (PCB) and a fully assembled Printed Circuit Board Assembly (PCBA). So here’s the deal: A PCB is a blank board—etched copper, no components. A PCBA is a fully assembled board—ready to test, ready to ship. The distinction is i......