Giới thiệu dự án
Bối cảnh ngành và thực trạng công nghệ
Sự bùng nổ của cuộc cách mạng công nghiệp 4.0 với các trụ cột Trí tuệ nhân tạo (AI), Internet vạn vật (IoT) và Tự động hóa đã thúc đẩy ngành công nghiệp xe tự hành (Autonomous Vehicles - AV) phát triển với tốc độ chưa từng có. Theo phân loại tiêu chuẩn SAE J3016 của Hiệp hội Kỹ sư Ô tô Quốc tế (Society of Automotive Engineers), công nghệ tự hành được chia làm 6 cấp độ (từ Cấp độ 0 - No Automation đến Cấp độ 5 - Full Automation). Trong khi các tập đoàn công nghệ lớn trên thế giới như Waymo, Tesla, Bosch, Ford đã triển khai thương mại hóa thử nghiệm dịch vụ xe tự hành cấp độ 3 và 4, tại Việt Nam, các đơn vị tiên phong như VinFast hay Phenikaa-X (với dòng xe điện thông minh không người lái Minibus) cũng đang tích cực nghiên cứu và thử nghiệm.
Tuy nhiên, việc tiếp cận các nền tảng xe tự hành thương mại tích hợp sẵn hệ thống trợ lái nâng cao (Advanced Driver-Assistance Systems - ADAS) gặp rào cản rất lớn về mặt chi phí đối với các phòng thí nghiệm, trường đại học và nhóm nghiên cứu vừa và nhỏ. Do đó, giải pháp chuyển đổi phần cứng (hardware retrofitting) từ các phương tiện xe điện sân golf (electric golf cart) sẵn có sang nền tảng tự hành là hướng tiếp cận tối ưu về chi phí và tính khả thi kỹ thuật.
+-------------------------------------------------------------------------+
| HỆ THỐNG PHÂN CẤP TỰ HÀNH SAE J3016 |
+-------------------------------------------------------------------------+
| Cấp 0: Không hỗ trợ | Tài xế kiểm soát 100% (cảnh báo tức thời) |
| Cấp 1: Hỗ trợ lái | Hỗ trợ đánh lái HOẶC tăng tốc/phanh |
| Cấp 2: Tự hành một phần| Hỗ trợ đánh lái VÀ tăng tốc/phanh đồng thời |
| Cấp 3: Tự hành có ĐK | Xe tự vận hành trong phạm vi, cần tài xế dự phòng|
| Cấp 4: Tự động hóa cao| Xe tự xử lý toàn bộ trong khu vực giới hạn (ODD) |
| Cấp 5: Toàn phần | Tự hành trong mọi điều kiện địa hình/thời tiết |
+-------------------------------------------------------------------------+
Vấn đề kỹ thuật cụ thể (Problem Statement)
Trong các giải pháp chuyển đổi xe điện truyền thống trước đây (tiêu biểu như kiến trúc vi điều khiển đơn khối STM32F3 hoặc hệ thống máy tính nhúng kết hợp 1 Central MCU), hệ thống bộc lộ những điểm nghẽn nghiêm trọng:
- Kiến trúc tập trung đơn điểm (Single Point of Failure): Một vi điều khiển duy nhất phải đảm nhận đồng thời việc đọc cảm biến siêu âm, điều khiển động cơ DC, nhận lệnh máy tính và điều khiển góc lái, dẫn đến quá tải tài nguyên CPU và dễ treo toàn bộ hệ thống.
- Độ trễ cơ cấu chấp hành đánh lái cao: Cơ cấu điều khiển góc lái cũ chỉ đạt tốc độ phản hồi khoảng $1^\circ/\text{s}$, không đáp ứng được yêu cầu bám làn và tránh vật cản tức thời ở vận tốc trên $15\text{ km/h}$.
- Thiếu cơ chế phản hồi vòng kín (Closed-Loop Feedback): Hệ thống không có cảm biến đo vận tốc thực tế (Rotary Encoder) và định hướng tư thế xe (IMU 9 bậc tự do), dẫn đến sai số tích lũy lớn khi điều khiển hành trình.
- Không có khả năng giám sát năng lượng và chẩn đoán phân tán: Không đo lường được công suất tức thời của từng module tải, tiềm ẩn nguy cơ chập cháy khi hệ thống động lực 72V và hệ thống điều khiển 12V/24V tương tác.
Mục tiêu của đồ án
Đồ án "Thiết kế và hiện thực kiến trúc phần cứng mạng máy tính nhúng - vi điều khiển cho xe tự hành" do sinh viên Nguyễn Văn Tín (Khoa Kỹ thuật Máy tính, Trường Đại học Công nghệ Thông tin - ĐHQG-HCM) thực hiện nhằm giải quyết dứt điểm các hạn chế trên với 6 mục tiêu trọng tâm:
- Thiết kế và module hóa hệ thống phần cứng tầng thấp (Low-Level) thành 6 Node chuyên biệt trên nền tảng vi điều khiển 32-bit (STM32F103C8T6 và ESP32).
- Xây dựng mạng truyền thông thời gian thực CAN Bus 2.0B tốc độ cao, kháng nhiễu công nghiệp, chuẩn hóa giao thức 4 tầng.
- Nâng cấp hệ thống chấp hành đánh lái với động cơ và bộ điều khiển EZI Servo Plus R qua giao thức RS485, nâng tốc độ đánh lái lên $>30^\circ/\text{s}$.
- Tích hợp cảm biến quán tính IMU BNO055 (thuật toán Sensor Fusion tích hợp), cảm biến khoảng cách ToF/Laser và Rotary Encoder để xây dựng bộ điều khiển vận tốc PID vòng kín.
- Hiện thực hệ thống quản lý năng lượng thông minh (Power Management Node) đo dòng, áp và công suất qua IC INA219 cùng rơ-le bán dẫn SSR ngắt nguồn khẩn cấp.
- Xây dựng Master Gateway Node cầu nối dữ liệu tầng thấp với máy tính nhúng tầng cao (High-Level) qua giao thức MQTT, hỗ trợ ghi dữ liệu ngoại tuyến vào SD Card và đồng bộ hóa cơ sở dữ liệu đám mây MongoDB.
Phạm vi và giới hạn của đề tài
- Phạm vi nghiên cứu: Hiện thực hoàn chỉnh trên xe điện sân golf 6 chỗ ngồi thực tế; tích hợp các cảm biến tầng thấp, vi điều khiển phân tán, mạng CAN Bus, cơ cấu chấp hành ga/phanh/lái và giao tiếp IPC/MQTT tầng cao.
- Giới hạn kỹ thuật: Đề tài tập trung tối ưu tầng phần cứng điều khiển và thu thập dữ liệu (Low-Level Execution & Sensing Layer); các giải pháp xử lý thị giác máy tính tầng cao (Camera/LiDAR SLAM, Deep Learning Lane Detection) đóng vai trò là nguồn gửi điểm đặt (setpoint) xuống Master Node.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
So sánh các mô hình kiến trúc điều khiển xe tự hành
| Tiêu chí kỹ thuật |
Kiến trúc đơn khối (Monolithic MCU) |
Kiến trúc lai PC + 1 Central MCU |
Kiến trúc đề xuất (6-Node Distributed CAN) |
| Tính module hóa |
Rất thấp (Gộp chung mã nguồn) |
Thấp (Phụ thuộc MCU trung tâm) |
Rất cao (Module hóa 6 Node độc lập) |
| Khả năng mở rộng ngoại vi |
Khó khăn (Hết chân GPIO/Timer) |
Hạn chế (Quá tải ngắt UART/I2C) |
Dễ dàng (Thêm Node trực tiếp vào Bus) |
| Độ tin cậy & Kháng nhiễu |
Kém (Treo chip là dừng xe) |
Kém (Mất kết nối MCU là mất lái) |
Rất cao (Cách ly quang, CAN vi sai, SSR) |
| Tốc độ phản hồi đánh lái |
$\approx 1^\circ/\text{s}$ (DC Motor giảm tốc) |
$\approx 1^\circ - 3^\circ/\text{s}$ |
$> 30^\circ/\text{s}$ (Closed-loop EZI Servo) |
| Giám sát năng lượng |
Không có |
Đo điện áp tổng đơn giản |
Đo dòng, áp, công suất từng Node (INA219) |
| Chi phí triển khai phần cứng |
Thấp ($< 2$ triệu VNĐ) |
Trung bình ($3 - 5$ triệu VNĐ) |
Tối ưu ($6 - 9$ triệu VNĐ cho toàn xe) |
Phân tích yêu cầu hệ thống theo khung MoSCoW
- Must have (Bắt buộc phải có): Mạng CAN Bus 2.0B hoạt động tin cậy; Bộ điều khiển đánh lái EZI Servo; Điều khiển động cơ PID vòng kín; Giám sát nguồn và ngắt an toàn SSR; Node cầu nối Master (CAN-MQTT).
- Should have (Nên có): Bộ cảm biến IMU BNO055 9-DOF đo gia tốc góc; Hệ thống cảm biến khoảng cách ToF cảnh báo va chạm tự động ngắt động cơ; Hệ thống đèn/còi xi-nhan điều khiển bằng xung IC 555.
- Could have (Có thể có): Ghi nhật ký hành trình vào thẻ nhớ microSD khi mất sóng Wi-Fi/4G; Giao diện Web Dashboard hiển thị trạng thái xe thời gian thực.
- Won't have (Chưa thực hiện trong giai đoạn này): Cụm cảm biến LiDAR 3D 64 kênh gắn tầng thấp; Bộ phanh trợ lực thủy lực ABS.
+--------------------------------------------------------------------------+
| MA TRẬN ƯU TIÊN HỆ THỐNG |
+--------------------------------------------------------------------------+
| [ĐỘ KHẨN CẤP / AN TOÀN CAO] |
| - Ngắt phanh khẩn cấp (Distance Node -> Engine Node qua CAN) |
| - Bảo vệ quá áp/quá dòng tức thời (Power Management Node -> SSR) |
| - Phản hồi vị trí góc lái tức thời (Steering Node -> EZI Servo) |
+--------------------------------------------------------------------------+
| [ĐỘ ƯU TIÊN TRUNG BÌNH] |
| - Đồng bộ trạng thái xe lên Server qua MQTT / Wi-Fi |
| - Đọc dữ liệu định vị GPS NMEA 0183 chu kỳ 10Hz |
+--------------------------------------------------------------------------+
Thiết kế hệ thống
graph TD
subgraph High_Level ["TẦNG CAO (High-Level Computing)"]
PC["Embedded Computer / IPC (Ubuntu/ROS)"]
Server["Central Cloud / Edge Server (MongoDB & Web UI)"]
PC <-->|MQTT via Wi-Fi/4G| Server
end
subgraph Gateway ["TẦNG TRUNG GIAN (Master Gateway)"]
MasterNode["Master Node (ESP32 Gateway + SD Card)"]
end
subgraph Low_Level ["TẦNG THẤP (Low-Level Distributed CAN Network - ISO 11898)"]
CANBus((CAN BUS Line: CAN_H / CAN_L - 500 kbps))
PowerNode["Power Management Node\n(STM32F103 + INA219 + SSR)"]
DistNode["Distance Node\n(STM32F103 + VL53L0X / XKC-KD200)"]
LightNode["Light-Speaker-GPS Node\n(STM32F103 + IC555 + GPS)"]
EngineNode["Engine Node\n(STM32F103 + PID + Encoder + BNO055)"]
SteeringNode["Steering Node\n(STM32F103 + EZI Servo RS485)"]
end
PC <-->|MQTT Protocol| MasterNode
MasterNode <-->|CAN Transceiver MCP2551| CANBus
PowerNode <-->|MCP2551| CANBus
DistNode <-->|MCP2551| CANBus
LightNode <-->|MCP2551| CANBus
EngineNode <-->|MCP2551| CANBus
SteeringNode <-->|MCP2551| CANBus
PowerNode -.->|Power Line Cutoff| SSR[Solid State Relay 12V/24V]
EngineNode -->|Throttle/Brake Signal| Motor[Curtis Motor Controller 72V]
SteeringNode -->|RS485 Modbus| Servo[EZI Servo Drive & Motor]
Technology Stack và quy chuẩn kỹ thuật
- Vi điều khiển điều khiển biên (Edge MCUs): STMicroelectronics STM32F103C8T6 (32-bit ARM Cortex-M3 @ 72 MHz, 64 KB Flash, 20 KB SRAM).
- Vi điều khiển Gateway & Truyền thông: Espressif Systems ESP32-WROOM-32 (Dual-core Xtensa 32-bit @ 240 MHz, 520 KB SRAM, Wi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR).
- Hệ điều hành thời gian thực (RTOS): FreeRTOS Kernel v10.3.1 chuẩn hóa qua giao diện CMSIS-RTOS v2 API.
- Giao tiếp vật lý mạng CAN: IC Transceiver Microchip MCP2551 (Tuân thủ chuẩn ISO 11898-2/5, tốc độ thiết lập 500 kbps).
- Cảm biến và cơ cấu chấp hành:
- Cảm biến đo năng lượng: Texas Instruments INA219 (Giao tiếp I2C, dải đo điện áp $0 - 26\text{V}$, dòng điện $\pm 3.2\text{A}$, độ phân giải $0.8\text{mA}$).
- Cảm biến quán tính: Bosch Sensortec BNO055 (ARM Cortex-M0+ Sensor Fusion On-chip).
- Bộ điều khiển góc lái: Fastech/Elmo EZI Servo Plus R (Giao tiếp RS485 vi sai, động cơ bước hồi tiếp Closed-loop).
- Cảm biến khoảng cách: Cảm biến ToF VL53L0x quang học và cảm biến tiệm cận quang điện công nghiệp XKC-KD200.
- Giao thức mạng & Tầng phần mềm máy chủ: MQTT v3.1.1, Node.js Backend runtime, MongoDB v6.0 NoSQL Database, HTML5/Chart.js Telemetry Dashboard.
Thiết kế phân bổ định danh khung tin mạng CAN (CAN ID Allocation Table)
Khung truyền CAN Standard (11-bit Identifier) được phân tầng chặt chẽ dựa trên độ ưu tiên (ID càng thấp độ ưu tiên trên đường truyền càng cao):
| ID (Hex) |
Tên gói tin |
Nguồn (Source) |
Đích (Target) |
Chu kỳ / Kích hoạt |
Chức năng chính |
0x010 |
EMERGENCY_STOP |
Distance Node |
Engine / Master |
Event-driven (Tức thời) |
Ngắt ga và kích hoạt phanh dừng khẩn cấp |
0x020 |
STEER_CMD |
Master Node |
Steering Node |
50 Hz (20 ms) |
Điểm đặt góc đánh lái từ máy tính nhúng |
0x030 |
SPEED_CMD |
Master Node |
Engine Node |
50 Hz (20 ms) |
Điểm đặt vận tốc di chuyển xe |
0x110 |
STEER_FEEDBACK |
Steering Node |
Master Node |
50 Hz (20 ms) |
Phản hồi góc lái thực tế và dòng tải Servo |
0x120 |
SPEED_FEEDBACK |
Engine Node |
Master Node |
50 Hz (20 ms) |
Vận tốc bánh xe thực tế từ Encoder & IMU |
0x200 |
DISTANCE_DATA |
Distance Node |
Master Node |
20 Hz (50 ms) |
Khoảng cách vật cản trước/sau xe |
0x210 |
GPS_LOCATION |
Light-GPS Node |
Master Node |
10 Hz (100 ms) |
Tọa độ Latitude, Longitude, Tốc độ GPS |
0x300 |
POWER_STATUS |
Power Node |
Master Node |
10 Hz (100 ms) |
Điện áp (V), Dòng điện (mA), Công suất (mW) |
Cấu trúc Schema cơ sở dữ liệu MongoDB (BSON Telemetry Schema)
{
"_id": { "$oid": "64b0f1a2e4b0a1c2d3e4f5a1" },
"timestamp": { "$date": "2023-07-15T08:30:00.125Z" },
"vehicle_id": "AUTONOMOUS_CART_UIT_01",
"motion_state": {
"target_steering_angle": 15.5,
"actual_steering_angle": 15.42,
"target_speed_mps": 2.50,
"actual_speed_mps": 2.48,
"encoder_pulse_count": 142050,
"imu_orientation": { "yaw": 182.4, "pitch": -0.8, "roll": 0.2 }
},
"safety_and_distance": {
"front_distance_cm": 185.4,
"rear_distance_cm": 320.0,
"emergency_flag": false
},
"power_telemetry": {
"bus_voltage_v": 12.45,
"system_current_a": 1.85,
"power_consumption_w": 23.03,
"servo_current_a": 4.12
},
"gps_data": {
"latitude": 10.870024,
"longitude": 106.803058,
"fix_quality": 3
}
}
Phương pháp nghiên cứu và quy trình phát triển (Methodology)
Dự án áp dụng mô hình phát triển chữ V (V-Model Co-design) kết hợp giữa thiết kế phần cứng điện tử và phát triển phần mềm nhúng:
- Pha 1 (Phân tích & Thiết kế nguyên lý): Phân tích phụ tải điện xe 6 chỗ (nguồn động lực 72V, nguồn điều khiển 12V/24V); thiết kế mạch in PCB 2 lớp bằng Altium Designer cho từng Node; bổ sung bộ lọc thông thấp LC và cách ly quang PC817 chống sốc điện động cơ.
- Pha 2 (Hiện thực hóa Firmware RTOS): Phân rã tác vụ (Task Decomposition) theo mô hình hướng đối tượng đa luồng trên CMSIS-RTOS2; cấu hình độ ưu tiên và cơ chế đồng bộ (Mutex, Binary Semaphore, Event Flags) triệt tiêu tình trạng Deadlock và Priority Inversion.
- Pha 3 (Tích hợp & Đánh giá mạng CAN): Kiểm thử truyền thông bus CAN với thiết bị ghi logic (Logic Analyzer); đánh giá tỷ lệ mất gói và độ trễ ngắt; hiệu chỉnh hệ số vòng lặp PID cho động cơ kéo và động cơ lái.
- Pha 4 (Kiểm thử thực địa & Thu thập dữ liệu Cloud): Lắp đặt hoàn chỉnh toàn bộ 6 Node lên khoang kỹ thuật xe điện; cho xe chạy thực tế trên đường nội bộ khuôn viên ĐHQG-HCM; giám sát từ xa qua máy chủ Web MQTT.
Implementation và kết quả
Quy trình phát triển (Development Process)
Mỗi Node vi điều khiển được cấu hình hoạt động dựa trên nhân CMSIS-RTOS2 với các luồng chuyên biệt.
Bảng ma trận phân bổ các luồng (Thread Execution Matrix)
| Node |
Tên Thread |
Chức năng kỹ thuật |
Tần số hoạt động |
Độ ưu tiên RTOS |
| Power Management |
PowerMonitor |
Đọc INA219, ngắt SSR khi quá dòng |
100 Hz |
osPriorityRealtime |
|
PowerPublisher |
Đóng gói dữ liệu điện năng gửi CAN |
50 Hz |
osPriorityNormal |
|
CANReceiver |
Lắng nghe lệnh cấu hình qua Bus |
Asynchronous |
osPriorityHigh |
|
Blinker |
Đảo trạng thái LED báo hiệu lỗi/sống |
2 Hz |
osPriorityBelowNormal |
| Engine Control |
EngineController |
Tính toán PID vận tốc động cơ |
50 Hz |
osPriorityRealtime |
|
IMUReader |
Đọc gia tốc, vận tốc góc từ BNO055 |
50 Hz |
osPriorityNormal2 |
|
CANReceiver |
Nhận lệnh vận tốc, kích hoạt phanh |
Asynchronous |
osPriorityHigh |
| Steering Node |
EZIStatusMonitor |
Đọc vị trí thực, mã lỗi EZI Servo |
50 Hz |
osPriorityNormal3 |
|
EZIPowerPub |
Giám sát dòng tải tiêu thụ riêng Servo |
20 Hz |
osPriorityNormal2 |
|
CANReceiver |
Nhận điểm đặt góc lái và gửi RS485 |
Asynchronous |
osPriorityHigh |
| Distance Node |
SensorMonitor |
Đọc VL53L0x, kích ngắt khẩn cấp |
100 Hz |
osPriorityRealtime |
| Master Node |
MQTTReceiver |
Xử lý gói tin điều khiển từ tầng cao |
50 Hz |
osPriorityNormal2 |
|
CANBridge |
Chuyển tiếp 2 chiều CAN $\leftrightarrow$ MQTT |
Asynchronous |
osPriorityHigh |
Mã nguồn lõi xử lý CAN Bus và điều khiển Thread (Firmware Snippets)
Khởi tạo luồng và cơ chế bảo vệ Mutex cho luồng đọc dữ liệu cảm biến:
#include "cmsis_os2.h"
#include "can.h"
#include "ina219.h"
osMutexId_t powerMutex_id;
const osMutexAttr_t powerMutex_attr = { "PowerMutex", osMutexPrioInherit, NULL, 0U };
osThreadId_t tid_PowerMonitor;
osThreadId_t tid_PowerPublisher;
void Thread_PowerMonitor(void *argument) {
ina219_t ina219_dev;
INA219_Init(&ina219_dev, &hi2c1, INA219_ADDR);
float current_mA, voltage_V;
for (;;) {
osMutexAcquire(powerMutex_id, osWaitForever);
voltage_V = INA219_ReadBusVoltage(&ina219_dev);
current_mA = INA219_ReadCurrent(&ina219_dev);
// Failsafe ngắt relay SSR nếu dòng vượt ngưỡng an toàn 15A
if (current_mA > 15000.0f) {
HAL_GPIO_WritePin(SSR_CONTROL_GPIO_Port, SSR_CONTROL_Pin, GPIO_PIN_RESET);
}
osMutexRelease(powerMutex_id);
osDelay(10); // Chu kỳ thực thi 100 Hz
}
}
Xử lý ngắt nhận gói tin CAN và gửi phản hồi trạng thái:
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) {
CAN_RxHeaderTypeDef rx_header;
uint8_t rx_data[8];
if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &rx_header, rx_data) == HAL_OK) {
switch (rx_header.StdId) {
case 0x010: // Gói tin EMERGENCY_STOP
HAL_GPIO_WritePin(BRAKE_RELAY_GPIO_Port, BRAKE_RELAY_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(THROTTLE_ENABLE_GPIO_Port, THROTTLE_ENABLE_Pin, GPIO_PIN_RESET);
break;
case 0x020: // Nhận lệnh điều khiển góc đánh lái
{
int16_t target_angle_raw = (int16_t)((rx_data[0] << 8) | rx_data[1]);
float target_angle = target_angle_raw / 100.0f;
EZI_Servo_SetPosition(target_angle);
}
break;
default:
break;
}
}
}
Kiểm thử và đánh giá (Testing & Validation)
+--------------------------------------------------------------------------+
| KẾT QUẢ ĐO KIỂM HIỆU NĂNG TẦNG PHẦN CỨNG |
+--------------------------------------------------------------------------+
| Độ trễ truyền CAN Bus trung bình: 4.2 ms (Yêu cầu: < 10 ms) |
| Tỷ lệ mất gói (Frame Drop Rate): 0.002% (Dưới tải 500 kbps) |
| Tốc độ đáp ứng góc đánh lái Servo: 32.5 deg/s (Hệ thống cũ: 1.0 deg/s)|
| Độ chính xác góc đánh lái: +/- 0.15 deg |
| Thời gian ngắt phanh khẩn cấp: 12.8 ms |
| Độ trễ truyền nhận Gateway CAN-MQTT: 8.4 ms |
+--------------------------------------------------------------------------+
- Kiểm thử hiệu năng mạng CAN Bus: Dưới tần số giao tiếp danh định của toàn bộ 6 Node với tải truyền thông 500 kbps, tỷ lệ chiếm dụng băng thông đường truyền (Bus Load) đạt mức ổn định $31.8%$, không xảy ra hiện tượng tràn bộ đệm (Buffer Overflow) hay lỗi truyền lặp (Error Frame).
- Kiểm thử hệ thống đánh lái Closed-loop EZI Servo: Sử dụng xung phản hồi Encoder tích hợp, thời gian đáp ứng góc đánh lái từ $-20^\circ$ đến $+20^\circ$ giảm từ $40\text{ s}$ (ở hệ thống cũ) xuống còn $1.23\text{ s}$ (tốc độ đạt $\approx 32.5^\circ/\text{s}$), triệt tiêu hiện tượng vọt lố nhờ thuật toán điều khiển vị trí nội tại của driver EZI Servo Plus R.
- Kiểm thử tính năng ngắt an toàn va chạm: Khi cảm biến quang học Distance Node phát hiện vật cản trong cự ly $< 1.2\text{ m}$, khung tin CAN ID
0x010 kích hoạt ngắt phần cứng động cơ trong thời gian $12.8\text{ ms}$, dừng xe an toàn trong phạm vi quán tính cho phép.
Kết quả đạt được
Bảng so sánh chỉ số định lượng trước và sau cải tiến
| Thông số kỹ thuật |
Hệ thống cũ (Tham chiếu [10]) |
Hệ sinh thái 6 Node đề tài |
Mức độ cải thiện (%) |
| Kiến trúc phần cứng |
1 MCU trung tâm + PC |
6 Node phân tán + Gateway |
Module hóa 100% |
| Băng thông mạng truyền thông |
UART Point-to-point (115.2 kbps) |
CAN Bus Multi-master (500 kbps) |
Tăng 334% |
| Vận tốc đáp ứng góc lái |
$1.0^\circ/\text{s}$ |
$32.5^\circ/\text{s}$ |
Tăng 3150% |
| Độ chính xác điều khiển lái |
$\pm 1.5^\circ$ |
$\pm 0.15^\circ$ |
Tăng chính xác 90% |
| Phản hồi vận tốc vòng kín |
Không có (Open-loop) |
Có (Encoder + PID Engine) |
Đạt chuẩn Closed-loop |
| Giám sát năng lượng tức thời |
Không có |
Tích hợp INA219 từng Node |
Bảo vệ toàn diện |
| Khả năng ghi log mất mạng |
Mất dữ liệu khi mất kết nối |
Ghi thẻ SD Card tự động |
Khắc phục 100% |
Đổi mới và đóng góp
- Chuẩn hóa kiến trúc truyền thông 4 tầng trên CAN Bus cho xe tự hành cỡ nhỏ: Đồ án đã thiết lập quy chuẩn phân bổ định danh ID, trường dữ liệu, cơ chế đồng bộ thời gian và kiểm soát lỗi CRC tùy biến, tạo ra bộ khung giao tiếp mẫu cho các dự án nghiên cứu xe tự hành trong môi trường học thuật.
- Cơ chế quản lý năng lượng phân tán kết hợp bảo vệ chủ động: Khác với các hệ thống truyền thống chỉ dựa vào cầu chì nhiệt thụ động, hệ thống sử dụng cảm biến I2C INA219 liên tục quét dòng/áp ở tần số 100 Hz, điều khiển rơ-le bán dẫn SSR ngắt nguồn điện tử chỉ trong vài micro-giây khi xảy ra sự cố chập tải hoặc quá nhiệt.
- Tích hợp Driver Servo công nghiệp EZI Servo Plus R: Ứng dụng thành công chuẩn truyền thông RS485 tốc độ cao vào cơ cấu trợ lực lái ô tô điện, giải quyết triệt để điểm nghẽn về tốc độ và mô-men xoắn phản hồi chậm của các mô-tơ gạt nước/DC giảm tốc tự chế trước đây.
- Cơ chế Gateway Hybrid CAN-MQTT có bộ đệm ngoại tuyến (Offline Resilient Logging): Thiết kế Master Node trên chip ESP32 đóng vai trò Dual-bridge chuyển đổi dữ liệu CAN sang MQTT qua Wi-Fi/4G, đồng thời tự động kích hoạt ghi nhị phân lên thẻ nhớ microSD khi mất tín hiệu kết nối máy chủ, đảm bảo không mất mát dữ liệu phục vụ nghiên cứu giải thuật SLAM/EKF.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Xe đưa đón hành khách tự hành trong khuôn viên (Smart Campus Shuttle): Ứng dụng vận chuyển sinh viên, cán bộ trong các khu đô thị Đại học (ĐHQG-HCM), khu công nghệ cao, bệnh viện và resort nghỉ dưỡng quy mô lớn với vận tốc di chuyển $15 - 25\text{ km/h}$.
- Phương tiện vận chuyển hàng hóa nội khu (Industrial Logistics AGV): Chuyển đổi các dòng xe kéo hàng, xe chở pallet trong nhà máy thông minh, kho bãi logistics tự động bám làn đường định vị GPS và cảm biến vật cản.
Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit Analysis)
- Chi phí nâng cấp phần cứng: Toàn bộ hệ thống 6 Node phần cứng, cảm biến BNO055, INA219, bộ điều khiển EZI Servo, mạch in PCB và vật tư tiêu hao có tổng kinh phí chế tạo khoảng 12 - 15 triệu VNĐ (chưa bao gồm khung xe điện).
- So sánh với kít chuyển đổi thương mại: Các bộ Kit Drive-by-Wire nhập khẩu từ nước ngoài có giá dao động từ $8.000 - $15.000 USD (tương đương 200 - 370 triệu VNĐ). Giải pháp của đồ án giúp tiết kiệm hơn 90% chi phí đầu tư, hoàn toàn tự chủ về công nghệ và bảo trì sửa chữa.
+-------------------------------------------------------------------------+
| LỘ TRÌNH TRIỂN KHAI VÀ THƯƠNG MẠI HÓA |
+-------------------------------------------------------------------------+
| Quý 1: Hoàn thiện Layout PCB chuẩn công nghiệp 4 lớp, chống rung lắc |
| Quý 2: Tích hợp chuẩn giao tiếp CAN-FD nâng băng thông lên 2 - 5 Mbps |
| Quý 3: Thử nghiệm vận hành 1.000 km trong khuôn viên Khu đô thị ĐHQG |
| Quý 4: Đóng gói thành Kit Drive-by-Wire tiêu chuẩn thương mại hóa |
+-------------------------------------------------------------------------+
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Băng thông CAN 2.0B (tối đa 1 Mbps, thực tế cấu hình 500 kbps) bị giới hạn nếu mở rộng thêm các cảm biến Radar sóng milimet hoặc truyền dữ liệu tọa độ mây điểm (Point Cloud).
- Hệ thống phanh cơ cấu chấp hành hiện tại sử dụng ngắt rơ-le tín hiệu điện tử vào Controller trung tâm của xe, chưa tích hợp xi-lanh thủy lực tạo lực phanh biến thiên theo áp lực phanh (Steer/Brake-by-Wire cấp công nghiệp).
- Mạch phần cứng hiện tại được đóng gói dạng hộp kín gia công nhanh, cần nâng cấp lên chuẩn chống nước và bụi bẩn IP67 để đáp ứng điều kiện thời tiết mưa gió nhiệt đới.
Hướng phát triển tiếp theo
- Nâng cấp vi điều khiển Master Node và Engine Node lên dòng vi điều khiển có hỗ trợ CAN-FD (như STM32G4 hoặc STM32H7) và mạng Automotive Ethernet TSN (Time-Sensitive Networking).
- Áp dụng thuật toán lọc Kalman mở rộng (Extended Kalman Filter - EKF) kết hợp trực tiếp dữ liệu thô từ BNO055 và Encoder ngay tại tầng phần cứng Engine Node để nội suy vận tốc và góc trượt bánh xe (Side-slip angle).
- Thiết kế đạt tiêu chuẩn an toàn chức năng ô tô ISO 26262 cấp độ ASIL-B cho hệ thống mạch điều khiển lái và ngắt động cơ.
Đối tượng hưởng lợi
| Nhóm đối tượng |
Lợi ích và giá trị cốt lõi mang lại |
| Sinh viên & Học viên |
Tài liệu tham khảo thực tế về lập trình hệ điều hành thời gian thực CMSIS-RTOS2, thiết kế mạch phần cứng nhúng và giao thức ô tô CAN Bus. |
| Kỹ sư & Lập trình viên |
Bộ khung mã nguồn (Firmware Architecture) phân luồng chuẩn mực, kỹ thuật xử lý tranh chấp Mutex/Semaphore và cầu nối CAN-MQTT sẵn sàng tái sử dụng. |
| Doanh nghiệp & Startup |
Giải pháp phần cứng Drive-by-Wire chi phí thấp giúp rút ngắn chu kỳ R&D xe tự hành từ 12 tháng xuống còn dưới 3 tháng. |
| Nhà nghiên cứu học thuật |
Nền tảng xe thực tế tin cậy để triển khai thử nghiệm các thuật toán điều khiển nâng cao: MPC (Model Predictive Control), Pure Pursuit, LQR, SLAM. |
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật phần cứng tối thiểu để triển khai kiến trúc 6 Node này lên một xe điện khác là gì?
Hệ thống yêu cầu nguồn cấp ắc quy phụ $12\text{V} - 24\text{V}$ (tối thiểu $10\text{Ah}$) độc lập với nguồn động lực chính để tránh sụt áp khi khởi động động cơ; xe phải có sẵn bộ điều tốc động cơ nhận tín hiệu điện áp analog ($0 - 5\text{V}$) hoặc công tắc số, cùng trục vô lăng có không gian cơ khí để gắn dây đai/khớp nối với động cơ EZI Servo.
2. Giới hạn mở rộng của mạng CAN Bus trên xe là bao nhiêu Node và làm sao giải quyết tranh chấp?
Chuẩn CAN 2.0B hỗ trợ tối đa 110 Node trên cùng một Bus vật lý về mặt lý thuyết. Trong hệ thống này, việc tranh chấp bus được xử lý tự động bằng phần cứng thông qua bit trội (Dominant bit 0). Gói tin khẩn cấp EMERGENCY_STOP có ID thấp nhất (0x010) nên sẽ luôn chiếm quyền ưu tiên phát ngay lập tức mà không bị trễ bởi các gói tin đo năng lượng (0x300).
3. Làm thế nào để tích hợp kiến trúc phần cứng này với các máy tính nhúng chạy ROS/ROS 2?
Máy tính nhúng tầng cao (Nvidia Jetson, Raspberry Pi hoặc IPC Intel NUC) chỉ cần chạy một Node ros_mqtt_bridge (hoặc kết nối qua cổng USB-CAN/UART trực tiếp đến Master Node). Các lệnh điều khiển /cmd_vel từ ROS Navigation Stack sẽ được Master Node phân tích thành giá trị góc bẻ lái (STEER_CMD) và vận tốc mục tiêu (SPEED_CMD) để truyền xuống mạng CAN.
4. Hệ thống xử lý thế nào khi xảy ra sự cố đứt dây CAN Bus hoặc sụt áp vi điều khiển?
Mỗi Node đều có bộ định thời Watchdog Timer (WDT) phần cứng. Nếu trong $100\text{ ms}$ Engine Node và Steering Node không nhận được gói tin Heartbeat định kỳ từ Master Node, hệ thống sẽ tự động rơi vào trạng thái an toàn (Failsafe Mode): nhả rơ-le ga, kích hoạt phanh và trả góc lái về vị trí thẳng đứng $0^\circ$.
5. Chi phí chế tạo và thời gian thu hồi vốn (ROI) đối với doanh nghiệp triển khai dịch vụ xe tự hành nội khu?
Với chi phí chuyển đổi toàn bộ phần cứng chỉ khoảng $15 - 20$ triệu VNĐ/xe so với chi phí thuê nhân công lái xe nội bộ ($7 - 10$ triệu VNĐ/tháng/tài xế), doanh nghiệp vận hành xe điện sân golf tự hành có thể đạt điểm hòa vốn (Break-even Point) và hoàn vốn đầu tư chỉ sau 2 đến 3 tháng hoạt động liên tục.
Kết luận
Đồ án tốt nghiệp "Thiết kế và hiện thực kiến trúc phần cứng mạng máy tính nhúng - vi điều khiển cho xe tự hành" của tác giả Nguyễn Văn Tín đã hoàn thành xuất sắc tất cả các mục tiêu đề ra:
- Xây dựng thành công hệ sinh thái 6 Node vi điều khiển phân tán trên nền tảng STM32 và ESP32, ứng dụng hệ điều hành thời gian thực CMSIS-RTOS2/FreeRTOS đảm bảo tính tiền định và thời gian thực.
- Thiết lập mạng truyền thông CAN Bus 2.0B 4 tầng kháng nhiễu công nghiệp, chuẩn hóa gói tin và giải quyết triệt để vấn đề nghẽn bus, trễ điều khiển.
- Đột phá hiệu năng cơ cấu đánh lái với EZI Servo Plus R (đạt vận tốc phản hồi $>30^\circ/\text{s}$, sai số $<\pm 0.15^\circ$) và tích hợp điều khiển vận tốc PID vòng kín.
- Hoàn thiện cơ chế an toàn chủ động với cảm biến năng lượng INA219, rơ-le SSR ngắt mạch tức thời và hệ thống giám sát dữ liệu đám mây qua MQTT và MongoDB.
Hệ thống đã được kiểm thử thực địa thành công trên xe điện 6 chỗ tại khuôn viên Trường Đại học Công nghệ Thông tin - ĐHQG-HCM, khẳng định tính khả thi cao, mở ra giải pháp nền tảng vững chắc, chi phí thấp cho các nghiên cứu và ứng dụng xe tự hành tương lai.