Việc chế tạo một chiếc xe ô tô thu nhỏ có thể điều khiển bằng điện thoại thông minh là một dự án công nghệ thú vị, kết hợp giữa kỹ thuật cơ khí, điện tử và lập trình. Thay vì mua các bộ kit có sẵn, tự tay lắp ráp một mô hình từ các linh kiện cơ bản không chỉ giúp bạn hiểu rõ nguyên lý hoạt động của xe tự hành mà còn rèn luyện kỹ năng xử lý phần cứng và phần mềm. Dự án này thường sử dụng các board vi điều khiển như Arduino hoặc ESP32, kết hợp với module Bluetooth để nhận lệnh từ smartphone.
Quá trình này đòi hỏi sự chuẩn bị kỹ lưỡng về linh kiện, công cụ và kiến thức cơ bản về hàn nối điện tử. Dưới đây là hướng dẫn chi tiết từng bước để bạn có thể tự tay thực hiện một mô hình xe ô tô điện thoại điều khiển tại nhà.
Có thể bạn quan tâm: Hướng Dẫn Chi Tiết Cách Lái Xe Ô Tô Tay Ga Cho Người Mới Bắt Đầu
Tóm tắt quy trình thực hiện
Dưới đây là các bước chính để hoàn thành dự án chế tạo xe ô tô điều khiển bằng điện thoại:
- Chuẩn bị linh kiện và công cụ: Thu thập các thành phần cơ bản như vi điều khiển, động cơ, cảm biến và công cụ hàn, cắt.
- Thiết kế khung xe: Lắp ráp chassis và khung xe bằng các vật liệu như gỗ, nhựa hoặc in 3D.
- Lắp đặt hệ thống truyền động: Gắn động cơ và bánh xe, kết nối với driver để điều khiển tốc độ và hướng đi.
- Lập trình vi điều khiển: Viết code để xử lý tín hiệu Bluetooth và điều khiển động cơ.
- Thiết kế giao diện điều khiển: Tạo ứng dụng hoặc trang web trên điện thoại để gửi lệnh.
- Lắp ráp và kiểm tra: Hoàn thiện hệ thống dây điện, kiểm tra chức năng và khắc phục sự cố.
Chuẩn bị linh kiện và công cụ
Để bắt đầu dự án, bạn cần chuẩn bị đầy đủ các linh kiện điện tử và dụng cụ hỗ trợ. Việc chọn đúng linh kiện sẽ giúp xe hoạt động ổn định và dễ lập trình hơn.
Các linh kiện điện tử cần thiết
Một bộ khung cơ bản cho xe ô tô điện thoại bao gồm:
- Vi điều khiển (MCU): Arduino Uno, Arduino Nano hoặc ESP32 là lựa chọn phổ biến. ESP32 được ưu tiên vì có tích hợp sẵn Bluetooth và Wi-Fi, giúp kết nối dễ dàng hơn.
- Driver động cơ: L298N hoặc L293D là hai module driver thông dụng dùng để điều khiển động cơ DC. Chúng cho phép điều chỉnh tốc độ và đảo chiều quay của động cơ.
- Động cơ DC: Tùy thuộc vào kích thước xe, bạn có thể dùng motor 6V hoặc 12V. Nên chọn loại có hộp số (gearbox) để tăng lực kéo.
- Bánh xe: Bánh xe silicone hoặc cao su có đường kính phù hợp với trục motor.
- Pin và nguồn: Pin Li-ion 18650 (3.7V) hoặc pin sạc dự phòng (Power bank) để cấp nguồn cho hệ thống. Cần bộ điều chỉnh nguồn (Voltage Regulator) nếu dùng pin có điện áp cao hơn 5V.
- Module Bluetooth: HC-05 hoặc HC-06 (chỉ dùng nếu vi điều khiển không có sẵn Bluetooth như Arduino Uno).
- Cảm biến tránh chướng ngại vật (Tùy chọn): Cảm biến siêu âm HC-SR04 giúp xe tự động dừng lại khi gặp vật cản.
- Dây kết nối và Breadboard: Dùng để lắp ráp thử nghiệm trước khi hàn cố định.
Công cụ hỗ trợ
- Súng hàn thiếc và bơm hàn: Để kết nối các linh kiện điện tử.
- Kìm điện và dao dọc giấy: Cắt dây và nhựa.
- Máy khoan mini (nếu có): Để bắt vít cố định motor và board điều khiển.
- Tua vít các loại.
- Máy tính cài đặt Arduino IDE: Để viết và upload code.
Thiết kế và lắp ráp khung xe
Khung xe là bộ phận nâng đỡ toàn bộ hệ thống điện tử và cơ khí. Bạn có thể tận dụng các vật liệu sẵn có hoặc mua khung xe đồ chơi cũ.
Chọn vật liệu khung

Có thể bạn quan tâm: Các Cách Làm Xịt Lốp Xe Ô Tô An Toàn Và Hiệu Quả Ngay Tại Nhà
- Khung gỗ: Dễ gia công, chắc chắn nhưng thường nặng. Phù hợp cho xe có kích thước lớn.
- Khung nhựa (Acrylic): Nhẹ, bền, dễ trang trí. Bạn có thể cắt bằng laser hoặc mua các tấm có sẵn.
- Khung in 3D: Linh hoạt nhất về hình dáng, nhưng cần máy in 3D hoặc dịch vụ in.
Quy trình lắp ráp cơ khí
- Gắn động cơ: Cố định hai động cơ vào hai bên trục sau của khung xe. Đảm bảo động cơ nằm song song và bánh xe quay trơn tru.
- Lắp bánh xe: Gắn bánh xe vào trục motor. Nếu trục motor quá trơn, hãy dùng keo nến hoặc keo 502 để cố định.
- Bánh xe lái: Đối với xe 4 bánh, hai bánh trước thường là bánh lái. Bạn có thể dùng cơ cấu lái đơn giản bằng tay hoặc gắn servo để điều khiển tự động (nâng cao).
- Cố định board điều khiển và driver: Dùng keo dán hoặc ốc vít để gắn Arduino/ESP32 và module L298N lên khung xe. Nên đặt ở vị trí cân bằng trọng lượng.
Lắp đặt hệ thống điện
Hệ thống điện là “mạch máu” của xe. Việc đi dây gọn gàng giúp tránh chập cháy và tăng tính thẩm mỹ.
Kết nối động cơ với driver
Module L298N có các cổng đầu ra (Output) để kết nối với motor. Mỗi kênh (Channel) điều khiển một motor.
- Motor bên trái: Kết nối vào OUT1 và OUT2.
- Motor bên phải: Kết nối vào OUT3 và OUT4.
Cấp nguồn cho hệ thống
- Nguồn cho động cơ: Nguồn chính (pin) được đấu vào cổng +12V và GND của L298N.
- Nguồn cho vi điều khiển: Nếu dùng pin 12V, bạn cần dùng bộ điều chỉnh nguồn (LM7805) để hạ áp xuống 5V cấp cho Arduino. Nếu dùng ESP32, cần cấp nguồn 5V hoặc 3.3V tùy phiên bản. Nếu dùng Power bank 5V, bạn có thể cấp trực tiếp vào cổng 5V của Arduino hoặc ESP32.
Kết nối vi điều khiển với driver
Sử dụng dây jumper để kết nối các chân digital của vi điều khiển với các chân Input (IN1, IN2, IN3, IN4) của driver L298N.
- Ví dụ với Arduino Uno:
- IN1 -> Chân 5
- IN2 -> Chân 6
- IN3 -> Chân 10
- IN4 -> Chân 11
- EnA (Enable A) -> Chân 9 (PWM)
- EnB (Enable B) -> Chân 3 (PWM)
Kết nối Bluetooth (HC-05)
Nếu dùng Arduino Uno, kết nối HC-05 như sau:
- VCC -> 5V
- GND -> GND
- TX -> Chân RX của Arduino (Chân 0)
- RX -> Chân TX của Arduino (Chân 1)
Lưu ý: Khi upload code, bạn cần tháo dây TX-RX ra vì chúng gây xung đột với cổng USB.
Lập trình vi điều khiển

Có thể bạn quan tâm: Cách Làm Ô Tô Siêu Xe Mô Hình Bằng Giấy: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
Đây là bước quan trọng giúp xe nhận biết và thực hiện lệnh từ điện thoại. Chúng ta sẽ sử dụng Arduino IDE để viết code.
Cài đặt thư viện
Trong Arduino IDE, bạn cần cài đặt thư viện “SoftwareSerial” (nếu dùng các chân digital khác cho Bluetooth) hoặc thư viện “BluetoothSerial” (nếu dùng ESP32).
Code mẫu cho Arduino Uno (Dùng module HC-05)
Code này cho phép nhận ký tự ‘F’, ‘B’, ‘L’, ‘R’, ‘S’ từ ứng dụng Bluetooth để điều khiển xe tiến, lùi, trái, phải và dừng.
// Khai báo các chân kết nối motor
const int enA = 9;
const int in1 = 5;
const int in2 = 6;
const int enB = 3;
const int in3 = 10;
const int in4 = 11;
char command;
void setup() {
// Cài đặt chân output
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
// Bắt đầu kết nối Serial với Bluetooth (9600 là tốc độ mặc định của HC-05)
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
command = Serial.read(); // Đọc lệnh gửi đến
Stop(); // Dừng xe tạm thời để xử lý lệnh mới
switch (command) {
case 'F': // Tiến
moveForward();
break;
case 'B': // Lùi
moveBackward();
break;
case 'L': // Rẽ trái
turnLeft();
break;
case 'R': // Rẽ phải
turnRight();
break;
case 'S': // Dừng
Stop();
break;
}
}
}
void moveForward() {
// Motor trái tiến
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 200); // Tốc độ 200/255
// Motor phải tiến
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 200);
}
void moveBackward() {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 200);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB, 200);
}
void turnRight() {
// Motor trái tiến, motor phải lùi
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 200);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB, 200);
}
void turnLeft() {
// Motor trái lùi, motor phải tiến
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 200);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 200);
}
void Stop() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
Code mẫu cho ESP32 (Bluetooth tích hợp)
ESP32 mạnh mẽ hơn và không cần module HC-05 rời. Bạn cần cài thư viện “BluetoothSerial”.
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
// Khai báo chân motor (Thay đổi chân cho phù hợp với sơ đồ wiring)
const int enA = 14;
const int in1 = 15;
const int in2 = 16;
const int enB = 17;
const int in3 = 18;
const int in4 = 19;
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32_Car"); // Tên Bluetooth hiển thị trên điện thoại
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
if (SerialBT.available()) {
char command = SerialBT.read();
Serial.println(command);
if (command == 'F') moveForward();
else if (command == 'B') moveBackward();
else if (command == 'L') turnLeft();
else if (command == 'R') turnRight();
else if (command == 'S') Stop();
}
delay(20);
}
// Các hàm điều khiển động cơ (Tương tự Arduino Uno)
void moveForward() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 200);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 200);
}
void moveBackward() {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 200);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB, 200);
}
void turnRight() {
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
analogWrite(enA, 200);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enB, 200);
}
void turnLeft() {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
analogWrite(enA, 200);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enB, 200);
}
void Stop() {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
Thiết kế giao diện điều khiển trên điện thoại
Để gửi lệnh đến xe, bạn cần một ứng dụng trên smartphone. Có hai cách phổ biến: dùng app có sẵn hoặc tự code app đơn giản.
Cách 1: Sử dụng app Bluetooth Controller
Đây là cách nhanh nhất. Bạn có thể tải các ứng dụng như “Arduino Bluetooth Controller” (Android) hoặc “LightBlue” (iOS) từ cửa hàng ứng dụng.

Có thể bạn quan tâm: Cách Lái Xe Ô Tô 1 Tay: Những Điều Kiện Bắt Buộc Và Kỹ Thuật An Toàn
- Cài đặt app, bật Bluetooth trên điện thoại.
- Kết nối với module Bluetooth (ví dụ: HC-05 hoặc ESP32_Car).
- Vào mục “Control Mode” hoặc “Custom Layout” trong app.
- Gán các nút bấm với ký tự điều khiển: Nút tiến -> Gửi ‘F’, Nút lùi -> Gửi ‘B’, Nút trái -> ‘L’, Nút phải -> ‘R’, Nút dừng -> ‘S’.
- Chọn chế độ “Terminal” hoặc “Text” để gửi ký tự thay vì gửi mã hex.
Cách 2: Tạo ứng dụng đơn giản (Dành cho người nâng cao)
Nếu bạn muốn giao diện đẹp mắt hơn, có thể dùng các phần mềm lập trình app không code (No-code) như MIT App Inventor.
- Truy cập mit.edu/appinventor.
- Tạo giao diện với các nút bấm (Button).
- Sử dụng thành phần BluetoothClient.
- Viết бл lệnh (Blocks) để khi bấm nút, app sẽ gửi ký tự tương ứng đến thiết bị Bluetooth đã kết nối.
Lắp ráp hoàn thiện và kiểm tra
Sau khi đã lập trình và kiểm tra các linh kiện rời, bạn cần lắp ráp cố định và kiểm tra tổng thể.
Hoàn thiện hệ thống dây
- Tháo các linh kiện ra khỏi breadboard.
- Hàn cố định các mối nối dây trực tiếp lên board vi điều khiển hoặc dùng cầu đấu (terminal block).
- Dùng ống co nhiệt hoặc băng dính điện để bọc các mối nối, tránh chạm chập.
- Gắn cố định pin vào vị trí cân bằng nhất (thường ở giữa hoặc dưới chassis).
Kiểm tra và hiệu chỉnh
- Kiểm tra kết nối Bluetooth: Bật nguồn xe, mở app trên điện thoại. Đảm bảo kết nối thành công và đèn báo trên module nhấp nháy.
- Thử các phím chức năng: Bấm các nút điều khiển và quan sát hướng quay của bánh xe.
- Nếu bánh xe quay ngược chiều với lệnh (ví dụ: bấm tiến nhưng xe lùi), hãy đảo chiều hai dây motor tại cổng OUT của driver L298N hoặc thay đổi logic trong code (đảo giá trị HIGH/LOW).
- Nếu xe quay trái thay vì đi thẳng, kiểm tra lại dây kết nối motor phải.
- Điều chỉnh tốc độ: Trong code, giá trị analogWrite nằm trong khoảng 0-255. Nếu xe chạy quá nhanh hoặc quá chậm, hãy điều chỉnh giá trị này (ví dụ: thay 200 bằng 150 hoặc 255).
- Cảm biến tránh vật cản (Nếu có): Nếu lắp HC-SR04, bạn cần viết thêm code để xe tự động dừng khi khoảng cách < 20cm. Cảm biến này giúp xe an toàn hơn khi di chuyển trong không gian hẹp.
Lỗi thường gặp và cách khắc phục
Trong quá trình làm xe ô tô điện thoại, bạn có thể gặp một số lỗi cơ bản sau:
- Xe không chạy khi bấm nút:
- Kiểm tra nguồn: Pin có đủ điện không? Cổng kết nối có lỏng lẻo?
- Kiểm tra driver: Đèn báo trên module L298N có sáng không? Nếu không, nguồn chưa vào.
- Kiểm tra kết nối dây giữa vi điều khiển và driver.
- Bluetooth không kết nối được:
- Module HC-05 chưa ở chế độ ghép đôi (cần bấm nút hoặc dùng AT Command).
- Điện thoại chưa tắt kết nối cũ với thiết bị khác.
- Tốc độ baud (Baud rate) trong code và module không khớp (thường là 9600).
- Xe chạy lắc hoặc yếu:
- Pin yếu: Cấp nguồn không đủ cho motor gây ra tình trạng sụt áp.
- Motor bị kẹt: Kiểm tra cơ cấu truyền động có bị vướng vật lạ không.
- Một bên motor hỏng hoặc接 xúc kém.
Kết luận
Việc tự tay làm một chiếc xe ô tô điều khiển bằng điện thoại không chỉ là một hobby thú vị mà còn là bước đệm tuyệt vời để bạn tiếp cận với lĩnh vực IoT (Internet of Things) và robotics. Qua dự án này, bạn đã nắm vững được quy trình từ thiết kế cơ khí, lắp ráp mạch điện đến lập trình vi điều khiển và giao tiếp không dây. Bạn có thể tiếp tục nâng cấp xe của mình bằng cách thêm các tính năng như điều khiển qua Wi-Fi, nhận diện giọng nói, hoặc tích hợp camera để quan sát từ xa. Chúc bạn thành công với dự án cách làm xe ô tô điện thoại này!
