Giới thiệu dự án
Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 đã thúc đẩy mạnh mẽ quá trình tự động hóa và ứng dụng robot vào mọi lĩnh vực của đời sống. Theo báo cáo từ International Federation of Robotics (IFR), tốc độ tăng trưởng của thị trường Robot Di động Tự hành (Autonomous Mobile Robots - AMR) đạt mức bình quân trên 20%/năm giai đoạn 2020–2025. Song song với xu thế phát triển công nghiệp, các biến đổi cực đoan của khí hậu và sự cố môi trường (ô nhiễm không khí, rò rỉ nhiệt độ, khí độc trong hầm mỏ, nhà kho hóa chất) đặt ra thách thức lớn đối với an toàn lao động. Nhu cầu cấp thiết đặt ra là phải có các thiết bị tự hành kích thước nhỏ gọn, chi phí tối ưu, có khả năng xâm nhập vào các không gian nguy hiểm hoặc khó tiếp cận để thu thập dữ liệu hiện trường thay thế con người.
Đề tài "Thiết kế xe tự hành có camera quan sát môi trường" do sinh viên Nguyễn Văn Khoa (Khóa K59, chuyên ngành Cơ điện tử, Khoa Cơ khí – Trường Đại học Giao thông Vận tải) thực hiện dưới sự hướng dẫn của PGS. Đinh Thị Thanh Huyền, tập trung giải quyết bài toán cốt lõi: Thiết kế một hệ thống robot thám hiểm di động cỡ nhỏ có khả năng tự động dò đường, tránh vật cản cục bộ thời gian thực, đồng thời truyền dữ liệu hình ảnh video trực tiếp kèm thông số nhiệt độ - độ ẩm môi trường lên giao diện máy chủ Web Server thông qua kết nối không dây Wi-Fi.
+----------------------------------------------+
| Giao diện Web Server / Client |
| (Hiển thị Video Stream, Nhiệt độ, Độ ẩm) |
| (Nút điều khiển chuyển động) |
+-----------------------+----------------------+
^
| HTTP / WebSockets (Wi-Fi 2.4GHz)
v
+-----------------------+----------------------+
| Khối xử lý trung tâm chính: |
| Module ESP32-CAM |
| - Wi-Fi Station/AP - Dual-core LX6 |
| - Thu nhận OV2640 - Đọc DHT11 |
+-----------------------+----------------------+
| Giao tiếp UART / I/O
v
+-----------------------+----------------------+
| Khối điều khiển thực thi phụ: |
| Board Arduino Nano |
| (Xử lý phản xạ cảm biến, phát xung PWM) |
+-----------+----------------------+-----------+
| |
+-----------------+ +------------------+
v v
+-----------------------+ +-----------------------+
| Khối Cảm biến ngoại vi| | Khối Thực thi |
| - 3x Siêu âm HC-SR04 | | - Cầu H L298N + 4 DC |
| - 1x Cảm biến DHT11 | | - 2x Servo SG90 (Cam) |
+-----------------------+ +-----------------------+
Mục tiêu dự án
- Thiết kế kết cấu cơ khí hoàn chỉnh: Chế tạo tuyến hình thân xe cân bằng theo mô hình vi sai 4 bánh dẫn động (kích thước $302 \times 180 \times 195\text{ mm}$, chiều dài cơ sở $L_{cs} = 135\text{ mm}$, khoảng cách tâm bánh sau $T = 155\text{ mm}$), ứng dụng công nghệ in 3D FDM.
- Xây dựng cấu trúc phần cứng Master-Slave: Tích hợp bộ đôi vi điều khiển ESP32-CAM (xử lý hình ảnh, máy chủ Web) và Arduino Nano (điều khiển cơ cấu chấp hành và mảng cảm biến).
- Phát triển giải thuật tránh vật cản cục bộ: Sử dụng mảng 3 cảm biến siêu âm HC-SR04 bố trí theo góc lệch quét rộng, tự động phân tích và xử lý 6 kịch bản vật cản không gian 2D.
- Truyền dẫn dữ liệu đa phương tiện theo thời gian thực: Thiết lập Web Server nhúng trên nền tảng giao thức HTTP, cho phép stream video độ phân giải SVGA/VGA với độ trễ thấp và hiển thị đồ thị nhiệt độ - độ ẩm từ cảm biến DHT11.
- Đảm bảo khả năng vận hành thực tế: Xe hoạt động ổn định trên mặt phẳng, vượt được gờ cao từ 1–3 cm và leo dốc nghiêng tối đa $15^\circ$.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trong lĩnh vực robot di động (Mobile Robots), ba hình thức di chuyển phổ biến gồm robot chân (Legged Robot), robot bánh xích (Tracked Robot) và robot bánh xe (Wheeled Robot). Dưới đây là bảng so sánh chi tiết:
| Tiêu chí |
Robot chân (Legged) |
Robot bánh xích (Tracked) |
Robot bánh xe (Wheeled - Đề tài) |
| Độ phức tạp cơ khí |
Rất cao (Nhiều bậc tự do, khớp truyền động) |
Trung bình (Băng xích, bánh dẫn hướng, con lăn) |
Thấp (Động cơ DC nối trực tiếp qua hộp số) |
| Chi phí chế tạo |
Rất đắt |
Trung bình - Cao |
Thấp, linh kiện thương mại sẵn có |
| Tính linh hoạt & Tốc độ |
Tốc độ chậm, tính toán động học phức tạp |
Chậm, tổn hao ma sát lớn khi chuyển hướng |
Chuyển động nhanh, linh hoạt, điều khiển vi sai đơn giản |
| Địa hình mục tiêu |
Địa hình hiểm trở, hố sâu, bậc thang |
Địa hình bùn lầy, đất cát gồ ghề |
Mặt phẳng cứng, đường nội bộ, độ nghiêng $\le 15^\circ$ |
| Mức tiêu thụ năng lượng |
Rất cao |
Cao |
Rất thấp (Tối ưu cho hệ thống pin 18650) |
Ma trận ưu tiên yêu cầu hệ thống (MoSCoW)
- Must Have (Bắt buộc có):
- Hệ thống dẫn động vi sai 4 bánh điều khiển qua cầu H L298N.
- Phát hiện vật cản trong phạm vi $2\text{ cm} - 400\text{ cm}$ bằng cảm biến siêu âm HC-SR04 với góc quét $15^\circ$.
- Truyền phát video không dây qua giao thức HTTP Server bằng module ESP32-CAM.
- Khối đo nhiệt độ (dải $-20^\circ\text{C}$ đến $60^\circ\text{C}$, sai số $\pm 2^\circ\text{C}$) và độ ẩm (20% đến 80%, sai số $\pm 5%$) bằng DHT11.
- Should Have (Nên có):
- Cụm xoay camera 2 trục Pan-Tilt sử dụng 2 động cơ servo SG90 góc quay $180^\circ$.
- Giao diện Web Responsive tùy biến tích hợp bàn phím điều khiển ảo và nút bật/tắt đèn LED Flash.
- Chuyển đổi linh hoạt giữa chế độ Tự động (Auto Navigation) và Thủ công (Manual Override).
- Could Have (Có thể có):
- Lưu trữ log cảm biến vào thẻ nhớ microSD thông qua cổng giao tiếp TF Card của ESP32.
- Won't Have (Chưa thực hiện trong giai đoạn này):
- Định vị toàn cục GPS/SLAM môi trường không gian 3D.
- Vận hành trên môi trường đầm lầy hoặc ngập nước.
Thiết kế hệ thống
Ngăn xếp công nghệ (Technology Stack)
- Lập trình điều khiển nhúng: C/C++ trên nền tảng Arduino IDE (v2.3.2) với bộ lõi ESP32 Arduino Core (v2.0.11) và AVR Core (v1.8.6).
- Hệ điều hành thời gian thực & Mạng: FreeRTOS kernel nhúng trong ESP32, ngăn xếp TCP/IP LwIP (Lightweight IP v2.1.2).
- Công nghệ Giao diện (Frontend Web): HTML5, CSS3 tinh gọn, JavaScript ES6 (Fetch API, DOM manipulation) nhúng trực tiếp vào bộ nhớ Flash của ESP32 dưới dạng Raw Byte Array.
- Cơ khí: Phần mềm thiết kế CAD 3D, công nghệ in 3D chất liệu nhựa PLA mật độ infill 40% đảm bảo độ cứng vững.
+-----------------------------------------------------------------------------------+
| DANH SÁCH CHÂN KẾT NỐI HỆ THỐNG |
+----+----------------------+-----------------------+-------------------------------+
| STT| Module Gốc | Module Đích | Chân Kết Nối Chi Tiết |
+----+----------------------+-----------------------+-------------------------------+
| 1 | ESP32-CAM | Cảm biến DHT11 | GPIO2 <--> DATA |
| 2 | ESP32-CAM | Arduino Nano | GPIO14 <--> A4 (SDA/Tx logic) |
| | | | GPIO15 <--> A5 (SCL/Rx logic) |
| | | | 5V <--> 5V, GND <--> GND |
| 3 | ESP32-CAM | Đèn Flash tích hợp | GPIO4 (Nội bộ board) |
| 4 | Arduino Nano | HC-SR04 Số 1 (Trái) | D2 <--> TRIG, D3 <--> ECHO |
| | | HC-SR04 Số 2 (Giữa) | D4 <--> TRIG, D5 <--> ECHO |
| | | HC-SR04 Số 3 (Phải) | D6 <--> TRIG, D7 <--> ECHO |
| 5 | Arduino Nano | Servo 1 (Quay Ngang) | A6 <--> Signal PWM |
| | | Servo 2 (Quay Dọc) | A7 <--> Signal PWM |
| 6 | Khối Nguồn (Pin 18650)| Driver L298N | (+) Pin <--> 12V VMS |
| | (4 Cell 3.7V - 2S2P) | | (-) Pin <--> GND |
| 7 | Arduino Nano | Driver L298N | D8/A0 <--> IN1, D9/A1 <--> IN2|
| | | | D10/A2 <--> IN3, D11/A3 <--> IN4|
| 8 | Driver L298N | 4 Động cơ DC 5V | OUT1, OUT2 <--> Cụm động cơ T |
| | | | OUT3, OUT4 <--> Cụm động cơ P |
+----+----------------------+-----------------------+-------------------------------+
Thiết kế Web API và Điều khiển
Máy chủ ESP32 Web Server khởi tạo tại cổng mặc định 80. Hệ thống cung cấp các endpoint HTTP cơ bản:
GET /: Trả về tài liệu HTML/CSS/JS chính cho trình duyệt.
GET /stream: Bắt đầu luồng video chuẩn MJPEG (multipart/x-mixed-replace; boundary=frame) trực tiếp từ cảm biến camera OV2640.
GET /cmd?dir=[F|B|L|R|S|AUTO]: Gửi lệnh điều khiển chuyển động: F (Tiến), B (Lùi), L (Rẽ trái), R (Rẽ phải), S (Dừng lại), AUTO (Bật thuật toán tự hành).
GET /cam?pan=[deg]&tilt=[deg]: Điều khiển góc quay camera của 2 servo SG90.
GET /status: Trả về chuỗi JSON chứa giá trị nhiệt độ, độ ẩm và trạng thái cảm biến:
{
"temperature": 28.5,
"humidity": 65.0,
"mode": "AUTO",
"obstacle": false
}
Phương pháp nghiên cứu và phát triển
Quy trình phát triển được triển khai theo mô hình V-Model cải tiến kết hợp vòng lặp Agile ngắn:
- Thiết kế phần cứng (Giai đoạn 1): Tính toán mô-men xoắn tải động cơ, lựa chọn pin và vẽ khung xe 3D. Tiến hành in FDM thử nghiệm và cân chỉnh khớp nối trục $\varnothing 5\text{ mm}$ của bánh xe $\varnothing 66\text{ mm}$.
- Thiết kế mạch và nguồn (Giai đoạn 2): Khối nguồn sử dụng 4 pin Lithium 18650 (3.7V - 2600mAh/cell) chia nhánh cấp áp qua mạch điều áp, bảo vệ chống sụt dòng tức thời (brownout reset) khi 4 động cơ DC cùng khởi động. Mạch tích hợp diode dập xung ngược (flywheel diode) trên cầu H L298N.
- Phát triển thuật toán & Firmware (Giai đoạn 3): Lập trình vi sai chuyển động trên Arduino Nano; lập trình streaming video và phân luồng bất đồng bộ trên ESP32 Core.
- Tích hợp và kiểm thử thực địa (Giai đoạn 4): Thử nghiệm tại phòng thí nghiệm và môi trường hành lang có chướng ngại vật ngẫu nhiên.
Implementation và kết quả
Quy trình phát triển và Thuật toán cốt lõi
1. Động học Robot vi sai (Differential Drive Kinematics)
Robot sử dụng hệ dẫn động vi sai với khoảng cách giữa hai vệt bánh $T = 155\text{ mm}$ và bán kính bánh $r = 33\text{ mm}$. Khi bánh trái và bánh phải di chuyển các quãng đường vi phân tương ứng là $\Delta s_1$ và $\Delta s_2$:
- Bán kính quay vòng của trọng tâm xe ($R_D$):
$$R_D = \frac{T}{2} \cdot \left( \frac{\Delta s_2 + \Delta s_1}{\Delta s_2 - \Delta s_1} \right)$$
- Độ thay đổi góc hướng ($\Delta \psi$):
$$\Delta \psi = \frac{\Delta s_2 - \Delta s_1}{T}$$
Trường hợp đặc biệt:
- Khi $\Delta s_2 = \Delta s_1 \implies R_D = \infty, \Delta \psi = 0$: Xe chuyển động tịnh tiến thẳng.
- Khi $\Delta s_2 = -\Delta s_1 \implies R_D = 0, \Delta \psi = \frac{2\Delta s_2}{T}$: Xe quay tròn tại chỗ quanh tâm đối xứng.
Y
^
|
| +-------------------+ (Bánh phải)
| | [s2] |
| +---------+---------+
| |
| |<--- T/2 --->
| |
[Robot] +---------> X (Hướng di chuyển)
| |
| |<--- T/2 --->
| |
| +---------+---------+
| | [s1] |
| +-------------------+ (Bánh trái)
+------------------------------------------->
2. Thuật toán phân tích 6 tình huống vật cản (Obstacle Avoidance Logic)
Mảng 3 cảm biến siêu âm liên tục đọc khoảng cách $d_l$ (trái), $d_c$ (giữa), $d_r$ (phải). Ngưỡng an toàn đặt ở mức $D_{safe} = 25\text{ cm}$:
- TH1: Cả 3 hướng đều bị chặn ($d_l, d_c, d_r \le D_{safe}$): So sánh nếu $d_l > d_r$, xe lùi và quay sang phải góc lớn; ngược lại quay sang trái.
- TH2: Bị chặn Giữa và Phải ($d_c, d_r \le D_{safe}; d_l > D_{safe}$): Xe tự động bẻ lái sang trái góc $60^\circ - 90^\circ$.
- TH3: Bị chặn Giữa và Trái ($d_c, d_l \le D_{safe}; d_r > D_{safe}$): Xe bẻ lái sang phải góc $60^\circ - 90^\circ$.
- TH4: Chỉ có cảm biến Giữa phát hiện vật cản ($d_c \le D_{safe}; d_l, d_r > D_{safe}$): Xe quay phải một góc $90^\circ$ ($\theta_a = \theta_a - 90^\circ$).
- TH5: Chỉ có cảm biến Trái bị che khuất ($d_l \le D_{safe}$): Xe điều chỉnh đánh lái nhẹ sang phải góc $25^\circ$ ($\theta_a = \theta_a - 25^\circ$).
- TH6: Chỉ có cảm biến Phải bị che khuất ($d_r \le D_{safe}$): Xe điều chỉnh đánh lái nhẹ sang trái góc $25^\circ$ ($\theta_a = \theta_a + 25^\circ$).
[Vật cản] [Vật cản] [Vật cản]
\ | /
\ | /
v v v
+---------------+ +---------------+ +---------------+
| HC-SR04 (Trái)| | HC-SR04 (Giữa)| | HC-SR04 (Phải)|
+-------+-------+ +-------+-------+ +-------+-------+
| | |
+-----------------+ | +----------------+
v v v
+-------------------+
| Arduino Nano |
| Phân tích 6 TH |
+---------+---------+
|
+--------------------------+--------------------------+
v v
[Chế độ TH1/TH2/TH3] [Chế độ TH5/TH6]
Bẻ lái dứt khoát (Góc lớn 60°-90°) Hiệu chỉnh hướng mịn (Lệch 25°)
3. Cấu trúc mã nguồn điều khiển trên Arduino Nano
#include <Arduino.h>
#include <Servo.h>
// Định nghĩa chân cảm biến siêu âm
#define TRIG_LEFT 2
#define ECHO_LEFT 3
#define TRIG_MID 4
#define ECHO_MID 5
#define TRIG_RIGHT 6
#define ECHO_RIGHT 7
// Định nghĩa chân điều khiển động cơ qua L298N
#define IN1 A0
#define IN2 A1
#define IN3 A2
#define IN4 A3
const int SAFE_DISTANCE = 25; // cm
long readUltrasonicDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH, 30000); // Timeout 30ms (~5m)
if (duration == 0) return 400; // Giá trị cực đại khi không phản hồi
return duration * 0.034 / 2;
}
void moveForward() {
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
}
void turnLeft(int ms) {
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW);
delay(ms);
}
void turnRight(int ms) {
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH);
delay(ms);
}
void stopMove() {
digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW); digitalWrite(IN4, LOW);
}
void autoNavigationRoutine() {
long dL = readUltrasonicDistance(TRIG_LEFT, ECHO_LEFT);
long dM = readUltrasonicDistance(TRIG_MID, ECHO_MID);
long dR = readUltrasonicDistance(TRIG_RIGHT, ECHO_RIGHT);
// Xử lý 6 tình huống vật cản
if (dL <= SAFE_DISTANCE && dM <= SAFE_DISTANCE && dR <= SAFE_DISTANCE) {
stopMove();
if (dL > dR) turnRight(400); else turnLeft(400); // TH1
} else if (dM <= SAFE_DISTANCE && dR <= SAFE_DISTANCE) {
turnLeft(350); // TH2
} else if (dM <= SAFE_DISTANCE && dL <= SAFE_DISTANCE) {
turnRight(350); // TH3
} else if (dM <= SAFE_DISTANCE) {
turnRight(300); // TH4: Quay 90 độ
} else if (dL <= SAFE_DISTANCE) {
turnRight(150); // TH5: Lệch 25 độ
} else if (dR <= SAFE_DISTANCE) {
turnLeft(150); // TH6: Lệch 25 độ
} else {
moveForward();
}
}
Kiểm thử và Đánh giá hiệu năng
Hệ thống đã trải qua các đợt kiểm thử độc lập về phần cứng, mạng và độ chính xác của cảm biến:
+-----------------------------------------------------------------------------------+
| BẢNG KẾT QUẢ ĐO KIỂM HIỆU NĂNG THỰC TẾ |
+------------------------------+--------------------+----------------+--------------+
| Tham Số Đánh Giá | Điều Kiện Đo | Giá Trị Đo Được| Đạt Yêu Cầu? |
+------------------------------+--------------------+----------------+--------------+
| Độ phân giải Camera | MJPEG Stream | 600x480 (VGA) | Đạt (Chuẩn) |
| Tốc độ khung hình (FPS) | Wi-Fi 2.4GHz RSSI>-65dBm| 18 - 24 FPS| Mượt mà |
| Độ trễ truyền hình ảnh | Mạng nội bộ STA | 120 - 180 ms | Rất tốt |
| Tầm xa phủ sóng điều khiển | Không vật cản lớn | 100 - 180 m | Đạt |
| Sai số đo khoảng cách HC-SR04| Khoảng cách 5-100cm| < 3.2 mm | Tuyệt đối |
| Thời gian phản xạ tránh cản | Chế độ Auto | < 45 ms | Thời gian thực|
| Khả năng vượt dốc nghiêng | Mặt sàn thảm/gỗ | 15 độ | Đạt |
| Chiều cao gờ vượt qua | Gờ vuông / dốc đứng| 1.0 - 3.0 cm | Đạt |
| Thời lượng pin liên tục | Full tải (Cam+Motor)| 75 - 90 phút | Tốt |
+------------------------------+--------------------+----------------+--------------+
Đổi mới và đóng góp kỹ thuật
- Kiến trúc phân tầng xử lý Master-Slave tối ưu chi phí: Khắc phục triệt để điểm yếu thiếu hụt chân I/O và hạn chế bộ nhớ ngắt thời gian thực của chip ESP32 khi vừa phải phục vụ tác vụ nặng (xử lý Web Server, mã hóa luồng MJPEG từ Camera OV2640) vừa phải băm xung PWM điều khiển động cơ. Việc chuyển giao hoàn toàn tác vụ điều khiển động cơ và đọc xung Echo siêu âm về cho Arduino Nano giúp hệ thống không bị nghẽn CPU, giảm tỷ lệ drop frame hình ảnh xuống dưới 2%.
- Mảng cảm biến 3 hướng giải quyết vùng mù sóng âm: Thay vì chỉ sử dụng 1 cảm biến siêu âm gắn trên servo quét chậm chạp (mất 500–800ms cho 1 chu kỳ quét), việc cố định 3 cảm biến HC-SR04 giúp thời gian cập nhật bản đồ không gian giảm xuống dưới 30ms, cho phép xe di chuyển liên tục ở tốc độ cao mà không cần dừng lại để quan sát.
- Cải tiến hiệu suất kinh tế: Tổng chi phí chế tạo mô hình chỉ bằng 12–15% so với các giải pháp nền tảng nhúng cao cấp chạy Linux (như Raspberry Pi 4 + Pi Camera) nhưng vẫn đảm bảo đầy đủ tính năng truyền tải hình ảnh, giám sát telemetry và điều hướng môi trường.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Giám sát an toàn nhà kho / Hầm cáp kỹ thuật: Kiểm tra định kỳ nhiệt độ, độ ẩm tại các khu vực dễ phát sinh cháy nổ, phát hiện sớm hiện tượng quá nhiệt của thiết bị điện trong không gian chật hẹp mà công nhân khó tiếp cận.
- Trinh sát hiện trường cứu hộ cỡ nhỏ: Đi sâu vào các đống đổ nát, đường ống thông gió sau động đất hoặc hỏa hoạn để truyền hình ảnh nạn nhân và đo đạc thông số khí hậu trước khi đội cứu hộ tiến vào.
- Nông nghiệp công nghệ cao: Tự động di chuyển dọc theo các luống cây trong nhà màng để đo lường vi khí hậu (nhiệt độ, độ ẩm từng luống), giúp hệ thống tưới tự động đưa ra quyết định chính xác.
[HỆ THỐNG TRIỂN KHAI THỰC TẾ]
|
+--------------------------------+-------------------------------+
| | |
v v v
[Nhà kho & Hầm cáp] [Trinh sát cứu nạn] [Nông nghiệp nhà màng]
- Đo nhiệt độ, độ ẩm rò rỉ - Luồn qua khe nứt đổ nát - Quét vi khí hậu luống cây
- Kiểm tra góc khuất - Quan sát nạn nhân qua cam - Giám sát độ ẩm tự động
Hướng dẫn triển khai và Xử lý sự cố (Troubleshooting)
QUY TRÌNH KHỞI CHẠY HỆ THỐNG
|
1. Cấp nguồn Pack Pin 18650 (7.4V - 14.8V)
|
v
2. ESP32-CAM phát Wi-Fi AP (hoặc nối Wi-Fi Router)
|
v
3. Mở trình duyệt Web nhập IP hiển thị qua Serial
|
v
4. Giao diện Web nạp thành công -> Bắt đầu vận hành
Bảng xử lý sự cố thường gặp (Troubleshooting Guide)
- Hiện tượng 1: ESP32-CAM bị khởi động lại liên tục (Brownout Reset):
- Nguyên nhân: Sụt áp đường 5V/3.3V do dòng khởi động của 4 động cơ DC kéo tụt nguồn vi điều khiển.
- Khắc phục: Đấu nối song song một tụ điện hóa $1000\mu\text{F} - 16\text{V}$ vào chân cấp nguồn của ESP32-CAM; tách đường nguồn cấp cho L298N và vi điều khiển riêng biệt qua IC hạ áp LM2596.
- Hiện tượng 2: Luồng video MJPEG bị đứng hình (Freeze):
- Nguyên nhân: Module ESP32-CAM bị nóng quá mức hoặc cấu hình chân FPC của camera OV2640 bị lỏng.
- Khắc phục: Gắn thêm lá tản nhiệt nhôm cho chip ESP32; kiểm tra chốt cài cáp bẹ camera OV2640; giảm nhẹ kích thước khung hình từ SVGA ($800\times 600$) xuống VGA ($640\times 480$) hoặc CIF ($400\times 296$).
- Hiện tượng 3: Robot va vào vật cản ở các góc chéo:
- Nguyên nhân: Bề mặt vật cản có tính chất hấp thụ âm hoặc góc xiên quá $45^\circ$ khiến sóng siêu âm bị phản xạ phân tán không quay về đầu thu Echo.
- Khắc phục: Căn chỉnh góc mở của 2 cảm biến trái/phải từ $30^\circ$ lên $45^\circ$ so với trục dọc thân xe.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Hạn chế băng thông và tầm xa: Sóng Wi-Fi 2.4GHz bị suy hao mạnh khi đi qua các bức tường bê tông dày, cự ly thực tế giảm còn 30–50 m trong môi trường nhiều vật cản.
- Cảm biến môi trường cơ bản: Cảm biến DHT11 có tần số lấy mẫu chậm ($1\text{ Hz}$) và không đo được các loại khí độc hại ($CO, CO_2, CH_4$).
- Khả năng tự hành toàn cục: Robot chưa có cảm biến đo hành trình (Encoder bánh xe) và cảm biến quán tính (IMU), do đó chưa thể tự xây dựng bản đồ số không gian (SLAM) hay tự tính toán lộ trình điểm đến (Global Path Planning).
Hướng nâng cấp mở rộng
- Nâng cấp lên module ESP32-S3 Dual-Core Xtensa LX7 tích hợp tập lệnh AI Vector để xử lý nhận diện vật thể cục bộ bằng TinyML ngay trên xe.
- Tích hợp cảm biến chất lượng không khí chuyên sâu như MQ-135, BME680 để đo lường toàn diện các hợp chất hữu cơ dễ bay hơi (VOC) và áp suất khí quyển.
- Trang bị cảm biến LiDAR 2D 360 độ kết hợp bo mạch Raspberry Pi 5 / Jetson Nano chạy hệ điều hành ROS 2 (Robot Operating System), nâng tầm hệ thống từ né cản cục bộ thành robot định vị bản đồ tự động hoàn toàn.
- Bổ sung module truyền thông 4G/5G LTE (SIM7600) để điều khiển robot xuyên biên giới thông qua giao thức MQTT/Cloud IoT thay vì phụ thuộc vào mạng Wi-Fi cục bộ.
Đối tượng hưởng lợi
- Sinh viên & Học viên ngành Kỹ thuật (Cơ điện tử, Tự động hóa, IoT): Đồ án cung cấp một tài liệu tham khảo bài bản, xuyên suốt từ tính toán động học vi sai, thiết kế mạch tích hợp Master-Slave đến lập trình Web Server nhúng trên vi điều khiển.
- Lập trình viên & Kỹ sư nhúng (Embedded Developers): Nắm bắt các mẫu thiết kế (design patterns) trong việc phân tách luồng điều khiển thời gian thực (Real-time Motor Control) và luồng truyền thông đa phương tiện (Video Streaming) với tài nguyên phần cứng giới hạn.
- Doanh nghiệp và Nhà xưởng sản xuất vừa và nhỏ: Tiếp cận giải pháp chế tạo thiết bị tuần tra an ninh/môi trường chi phí thấp (dưới 1 triệu VNĐ), dễ dàng bảo trì và tùy biến theo từng nhu cầu kho bãi cụ thể.
- Nhà nghiên cứu (Researchers): Nền tảng khung gầm và hệ thống điều khiển sẵn có là bàn đạp thực nghiệm thuận lợi để thử nghiệm các giải pháp định hướng nâng cao, học máy biên (Edge AI) và giải thuật bầy đàn (Swarm Robotics).
Câu hỏi thường gặp
1. Yêu cầu cấu hình tối thiểu để triển khai và nạp code cho hệ thống là gì?
Người dùng chỉ cần máy tính chạy hệ điều hành Windows 10/11, Linux hoặc macOS có cài đặt Arduino IDE 2.x, cáp Micro-USB (hoặc mạch nạp FTDI FT232RL nạp cho ESP32-CAM) và các thư viện mã nguồn: WiFi.h, esp_camera.h, DHT.h.
2. Xe có bị mất kiểm soát khi vượt ra khỏi vùng phủ sóng Wi-Fi không?
Trong mã nguồn điều khiển của Arduino Nano và ESP32, cơ chế Failsafe Watchdog được thiết lập. Nếu trong vòng $1.5\text{ giây}$ ESP32 không nhận được bất kỳ gói tin điều khiển (Keep-alive packet) nào từ trình duyệt, hệ thống sẽ tự động gửi lệnh ngắt khẩn cấp (stopMove()) đến các động cơ để đảm bảo xe dừng lại an toàn.
3. Tại sao không lập trình điều khiển toàn bộ động cơ và cảm biến trên ESP32-CAM để loại bỏ Arduino Nano?
Chip ESP32-CAM bị hạn chế nghiêm trọng về số lượng chân GPIO do hầu hết các chân đã được dùng để giao tiếp song song với Camera OV2640 và PSRAM. Ngoài ra, việc đọc xung siêu âm pulseIn() chiếm dụng CPU có thể gây giật khung hình video hoặc nghẽn tác vụ xử lý mạng của FreeRTOS. Mô hình Master-Slave là thiết kế tối ưu nhất.
4. Chi phí bảo trì và thay thế linh kiện của mô hình như thế nào?
Toàn bộ linh kiện (động cơ DC 5V, IC L298N, cảm biến HC-SR04, DHT11, module ESP32-CAM) đều là linh kiện tiêu chuẩn công nghiệp phổ thông với chi phí cực thấp, dễ dàng thay thế trong vòng 5–10 phút nếu có hư hỏng cơ học hoặc chập điện.
5. Nguồn điện 4 cell pin 18650 duy trì được bao lâu và mất bao lâu để sạc đầy?
Với cấu hình pack pin $2S2P$ cho dung lượng tương đương $5200\text{ mAh}$ ở điện áp định danh $7.4\text{ V}$, hệ thống tiêu thụ dòng trung bình khoảng $1.8\text{ A}$ (khi chạy cả 4 motor, bật đèn LED Flash và stream video). Thời gian hoạt động liên tục đạt từ 75 đến 90 phút. Thời gian sạc đầy thông qua mạch sạc cân bằng $2S$ là khoảng 2.5 giờ.
Kết luận
Đồ án tốt nghiệp "Thiết kế xe tự hành có camera quan sát môi trường" của sinh viên Nguyễn Văn Khoa đã hoàn thành xuất sắc các mục tiêu đề ra cả về mặt lý thuyết lẫn thực nghiệm cơ điện tử. Hệ thống kết hợp hài hòa giữa cơ khí in 3D chính xác, mạch điện tử Master-Slave tối ưu tài nguyên và giao diện điều khiển giám sát Web Server thân thiện. Mô hình không chỉ minh chứng cho tính khả thi của việc ứng dụng các linh kiện nhúng phổ thông vào việc giải quyết các bài toán kỹ thuật phức tạp mà còn mở ra tiềm năng lớn trong việc phát triển các thiết bị quan trắc môi trường và cứu hộ tự hành chi phí thấp.