Giới thiệu dự án

Bối cảnh và thực trạng ngành vận tải

Trong ngành giao thông vận tải đường bộ hiện đại, đặc biệt là phân khúc vận tải hàng hóa đường dài và xe khách liên tỉnh, an toàn giao thông luôn là bài toán sống còn đối với doanh nghiệp và xã hội. Theo nghiên cứu The Impact of Driver Inattention on Near-Crash/Crash Risk từ dữ liệu 100-Car Naturalistic Driving Study của Viện Công nghệ Giao thông Vận tải Virginia (VTTI), trạng thái tài xế buồn ngủ hoặc mất tập trung làm tăng nguy cơ xảy ra tai nạn hoặc suýt va chạm gấp 4 đến 6 lần so với trạng thái tỉnh táo bình thường. Tại Việt Nam, Điều 65 Luật Giao thông Đường bộ quy định thời gian làm việc của người lái xe ô tô không được quá 10 giờ trong một ngày và không được lái xe liên tục quá 4 giờ. Tuy nhiên, áp lực tiến độ giao hàng và điều kiện làm việc ban đêm khiến tình trạng tài xế ngủ gật và vi phạm quy định vẫn diễn ra phổ biến.

Vấn đề kỹ thuật (Problem Statement)

Các giải pháp giám sát hành trình truyền thống (hộp đen GPS thông thường) chỉ ghi nhận thụ động tọa độ và vận tốc mà hoàn toàn thiếu khả năng phân tích hành vi và trạng thái sinh học của tài xế theo thời gian thực (Real-time). Ngược lại, các thiết bị chuyên dụng phát hiện buồn ngủ nhập khẩu từ nước ngoài thường có chi phí rất cao, xử lý phụ thuộc vào hạ tầng đám mây (Cloud) gây độ trễ lớn, hoặc yêu cầu tài xế đeo cảm biến điện não đồ (EEG)/điện tim (ECG) gây khó chịu, giảm tính khả thi khi vận hành thực tế. Do đó, yêu cầu đặt ra là phải xây dựng một hệ thống giám sát phân tán (Edge-to-Cloud) kết hợp thị giác máy tính cục bộ và vi điều khiển nhúng để cảnh báo tức thì ngay trong cabin mà không phụ thuộc hoàn toàn vào kết nối mạng.

graph TD
    A[Camera Rapoo XW180] -->|USB 3.0 1080p| B[NVIDIA Jetson Nano - YOLOv8n]
    B -->|UART 115200bps| C[ESP32 Microcontroller]
    D[ADXL345 Accelerometer] -->|I2C| C
    E[NEO-6M GPS Module] -->|UART NMEA| C
    C -->|GPIO Trigger| F[In-Cabin Buzzer & LED]
    C -->|AT Commands| G[SIM4G A7680C SMS/Call]
    C -->|MQTT over TLS| H[AWS IoT Core]
    H -->|Rules Engine| I[AWS Lambda]
    I -->|JSON Document| J[Amazon DynamoDB]
    J -->|REST API Node.js| K[Web Monitoring Dashboard]

Mục tiêu dự án

  1. Thiết kế hệ thống thị giác máy tính biên (Edge AI): Triển khai mô hình học sâu YOLOv8n trên phần cứng máy tính nhúng NVIDIA Jetson Nano để nhận diện 3 trạng thái của tài xế: Tỉnh táo (Awake), Ngủ gật (Drowsy/Closed Eyes), và Ngáp (Yawn).
  2. Tối ưu hóa thời gian đáp ứng cảnh báo: Đạt độ trễ xử lý từ thời điểm phát hiện đến khi kích hoạt cảnh báo dưới $1.0\text{ s}$ ($< 1000\text{ ms}$).
  3. Thu thập và phân tích dữ liệu động học phương tiện: Tích hợp cảm biến gia tốc 3 trục ADXL345 để phát hiện rung lắc/va chạm bất thường và module định vị vệ tinh GPS NEO-6M để giám sát tọa độ, lộ trình và vận tốc di chuyển.
  4. Hệ thống cảnh báo đa kênh phân tầng: Tự động kích hoạt còi chíp (Buzzer) và đèn LED cảnh báo trực tiếp trong khoang lái; đồng thời gửi tin nhắn SMS/gọi điện khẩn cấp qua module SIM 4G A7680C đến quản lý đội xe.
  5. Đồng bộ dữ liệu và trực quan hóa Dashboard: Truyền gói tin telemetry qua giao thức MQTT lên AWS IoT Core, lưu trữ tại Amazon DynamoDB và hiển thị trực quan thông qua giao diện Web thời gian thực.

Giải pháp và phạm vi hệ thống

Hệ thống sử dụng kiến trúc xử lý kép phân tán (Co-processing Architecture): Khối Edge AI (Jetson Nano) chịu trách nhiệm tính toán suy luận mô hình thị giác máy tính nặng, trong khi khối Vi điều khiển trung tâm (ESP32-WROOM-32) quản lý các cảm biến ngoại vi (I2C/UART/GPIO), thực hiện cảnh báo phần cứng và truyền dữ liệu viễn thông.

  • Phạm vi áp dụng: Cabin xe tải đường dài, xe khách, xe container với khoảng cách lắp đặt camera cách mặt tài xế từ 50cm đến 70cm.
  • Giới hạn: Hệ thống phụ thuộc vào nguồn chiếu sáng cabin trong điều kiện ban đêm (cần bổ sung đèn LED hồng ngoại nếu khoang lái tối hoàn toàn) và vùng phủ sóng mạng viễn thông di động để cập nhật dữ liệu GPS lên máy chủ.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí so sánh Cảm biến sinh học đeo tay/đầu (EEG/ECG) Hệ thống Landmark hình học (OpenCV + Dlib EAR/MAR) Giải pháp đề xuất (YOLOv8 Edge AI + ESP32 IoT)
Độ xâm lấn (Invasiveness) Cao (gây vướng víu, cản trở lái xe) Không xâm lấn (Camera) Không xâm lấn (Camera + Cảm biến gắn trên xe)
Độ trễ xử lý (Latency) $200\text{ ms} - 500\text{ ms}$ $100\text{ ms} - 250\text{ ms}$ $< 35\text{ ms}$ trên GPU (Tốc độ $28\text{ - }30\text{ FPS}$)
Độ chính xác môi trường rung lắc Kém (dễ trôi cảm biến khi chuyển động) Trung bình (mất dấu landmark khi quay đầu) Cao (Robust nhờ Object Detection Anchor-Free)
Cảnh báo khẩn cấp từ xa Không có Cần máy tính cồng kềnh Tích hợp SIM 4G A7680C (SMS/Call độc lập)
Chi phí triển khai Rất cao ($> 500\text{ USD}$) Trung bình ($150\text{ - }250\text{ USD}$) Tối ưu ($180\text{ - }220\text{ USD}$)

Phân tích yêu cầu theo mô hình MoSCoW

  • Must have: Nhận diện mắt nhắm/ngủ gật và ngáp thời gian thực; Phát còi Buzzer tại chỗ; Định vị GPS và đọc gia tốc 3 trục; Gửi SMS cảnh báo khi có nguy hiểm.
  • Should have: Đồng bộ telemetry lên AWS IoT Core qua MQTT; Giao diện Web hiển thị bản đồ số và lịch sử vi phạm.
  • Could have: Tối ưu hóa TensorRT FP16 để nâng cao FPS; Tự động kích hoạt cuộc gọi thoại qua tập lệnh AT của SIM A7680C.
  • Won't have (trong pha này): Nhận diện khuôn mặt định danh tài xế (Face ID); Tích hợp mạng CAN-Bus ô tô.

Thiết kế hệ thống

Technology Stack và phiên bản chi tiết

  • Edge Compute Unit: NVIDIA Jetson Nano B01 (4GB LPDDR4, 128-core Maxwell GPU, Quad-Core ARM A57 @ 1.43GHz).
  • Edge AI Framework: Ultralytics YOLOv8 (v8.1.0), ONNX Runtime (v1.12.0), CUDA 10.2, cuDNN 8.2, Python 3.8.
  • Microcontroller & RTOS: ESP32-WROOM-32 (Dual-core Xtensa 32-bit LX6 @ 240MHz, FreeRTOS Kernel).
  • Sensors & Modules: ADXL345 (3-Axis Accelerometer, I2C Interface), NEO-6M GPS (9600 bps), SIMCom A7680C LTE Cat-1, Webcam Rapoo XW180 Full HD 1080p.
  • Cloud & Backend: AWS IoT Core (MQTT over TLS 1.2), AWS Lambda (Node.js 18.x Runtime), Amazon DynamoDB, Express.js (v4.18.2).
  • Frontend: HTML5, Tailwind CSS, Leaflet.js / OpenStreetMap API.

Thiết kế cơ sở dữ liệu (Amazon DynamoDB Schema)

Bảng VehicleTelemetry:

  • Partition Key (PK): VehicleID (String, e.g., "TRUCK_51B_12345")
  • Sort Key (SK): Timestamp (Number - Epoch Unix Milliseconds, e.g., 1718006400000)
  • Attributes:
    • DriverState: String ("AWAKE" | "DROWSY" | "YAWN")
    • Confidence: Number (e.g., 0.94)
    • Latitude: Number (e.g., 10.8506)
    • Longitude: Number (e.g., 106.7719)
    • Speed: Number (km/h, e.g., 62.5)
    • AccelMagnitude: Number (G-force, e.g., 1.12)
    • AlertTriggered: Boolean (true | false)

Thiết kế RESTful API Endpoints

Method Endpoint Tham số đầu vào Mô tả chức năng Mã trạng thái
GET /api/v1/telemetry/latest/:vehicleId vehicleId (Path) Lấy trạng thái tài xế và tọa độ GPS mới nhất 200 OK, 404 Not Found
GET /api/v1/telemetry/history vehicleId, from, to (Query) Lấy danh sách telemetry phục vụ vẽ hành trình 200 OK, 400 Bad Request
GET /api/v1/alerts/unresolved vehicleId (Query) Lấy danh sách các cảnh báo ngủ gật/va chạm chưa xử lý 200 OK
POST /api/v1/alerts/acknowledge { "alertId": String, "note": String } Quản trị viên xác nhận đã liên hệ tài xế 200 OK, 422 Unprocessable

Phương pháp nghiên cứu và quản lý dự án

Dự án được triển khai theo mô hình Agile/Scrum rút gọn trong 16 tuần (02/2024 - 06/2024):

  • Giai đoạn 1 (Tuần 1 - 4): Khảo sát lý thuyết, nghiên cứu kiến trúc mạng YOLOv8, đặc tính giao tiếp phần cứng I2C/UART và thu thập tập dữ liệu khuôn mặt.
  • Giai đoạn 2 (Tuần 5 - 8): Gán nhãn dataset, huấn luyện mô hình YOLOv8n, tối ưu hóa mô hình sang định dạng ONNX/TensorRT trên Jetson Nano.
  • Giai đoạn 3 (Tuần 9 - 12): Thiết kế mạch điều khiển ESP32, lập trình FreeRTOS đa nhiệm đọc cảm biến ADXL345/GPS và điều khiển module SIM A7680C.
  • Giai đoạn 4 (Tuần 13 - 16): Tích hợp AWS IoT Core, cấu hình DynamoDB, hoàn thiện Web Dashboard và thử nghiệm thực địa trên xe.

Triển khai và kết quả

Quy trình phát triển và thuật toán cốt lõi

1. Xử lý tập dữ liệu và suy luận Edge AI

Dữ liệu huấn luyện gồm 3,500 ảnh chụp từ các góc độ khác nhau trong cabin, được gán nhãn thủ công thành 3 lớp: awake, drowsy, yawn. Các kỹ thuật tăng cường dữ liệu (Data Augmentation) áp dụng bao gồm: lật ảnh ngang (Horizontal Flip), điều chỉnh độ sáng ngẫu nhiên ($\pm 20%$), chuyển thang độ xám (Grayscale), và thêm nhiễu Gaussian để tăng tính thích nghi trong điều kiện ngược sáng hoặc thiếu sáng.

Thuật toán xử lý trên Jetson Nano thực hiện đọc từng khung hình từ Webcam Rapoo XW180 thông qua OpenCV, chuẩn hóa về kích thước $640 \times 640$, thực hiện tiền xử lý và chạy suy luận qua ONNX Runtime:

import cv2
import serial
import numpy as np
import onnxruntime as ort
import time

# Khởi tạo cổng Serial giao tiếp ESP32
ser = serial.Serial('/dev/ttyTHS1', baudrate=115200, timeout=0.1)

# Nạp mô hình YOLOv8n ONNX trên GPU Jetson Nano
session_options = ort.SessionOptions()
session_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_ALL
session = ort.InferenceSession("yolov8n_driver.onnx", 
                              providers=['CUDAExecutionProvider', 'CPUExecutionProvider'])

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)

CONF_THRESHOLD = 0.65
DROWSY_FRAME_LIMIT = 5  # Số frame liên tiếp mắt nhắm để kích hoạt cảnh báo
drowsy_counter = 0

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    
    # Pre-processing: Resize 640x640, BGR to RGB, Normalize [0, 1]
    input_img = cv2.resize(frame, (640, 640))
    input_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2RGB)
    input_tensor = input_img.transpose(2, 0, 1).astype(np.float32) / 255.0
    input_tensor = np.expand_dims(input_tensor, axis=0)

    # Chạy suy luận
    outputs = session.run(None, {session.get_inputs()[0].name: input_tensor})
    detections = outputs[0] # Shape [1, 7, 8400]
    
    # Xử lý Non-Max Suppression (NMS) và lọc class
    # 0: Awake, 1: Drowsy, 2: Yawn
    current_state = "AWAKE"
    max_conf = 0.0
    
    # Logic trích xuất bounding box và class confidence
    # (Đoạn mã giải mã ma trận đầu ra của YOLOv8 Decoupled Head)
    for det in detections[0].T:
        classes_scores = det[4:]
        class_id = np.argmax(classes_scores)
        conf = classes_scores[class_id]
        if conf > CONF_THRESHOLD and conf > max_conf:
            max_conf = conf
            if class_id == 1:
                current_state = "DROWSY"
            elif class_id == 2:
                current_state = "YAWN"

    # Kiểm tra ngưỡng thời gian liên tục chống báo động giả
    if current_state == "DROWSY":
        drowsy_counter += 1
    else:
        drowsy_counter = max(0, drowsy_counter - 1)

    # Nếu phát hiện buồn ngủ vượt quá ngưỡng an toàn (~1.5s)
    if drowsy_counter >= DROWSY_FRAME_LIMIT:
        payload = f"ALERT:DROWSY:{max_conf:.2f}\n"
        ser.write(payload.encode('utf-8'))
    elif current_state == "YAWN":
        payload = f"ALERT:YAWN:{max_conf:.2f}\n"
        ser.write(payload.encode('utf-8'))
    else:
        ser.write(b"STATUS:OK\n")

    time.sleep(0.01)

2. Lập trình FreeRTOS và xử lý cảm biến trên ESP32

Vi điều khiển ESP32 chạy hệ điều hành thời gian thực FreeRTOS, phân bổ 2 Task độc lập trên 2 lõi CPU:

  • Core 0 - TaskTelemetry: Đọc cảm biến gia tốc ADXL345 qua giao thức I2C và giải mã chuỗi NMEA $GPRMC từ GPS NEO-6M. Công thức tính độ lớn vector gia tốc tổng hợp: $$A_{total} = \sqrt{A_x^2 + A_y^2 + A_z^2}$$ Nếu $A_{total} > 2.5\text{ G}$ (vượt ngưỡng rung chấn hoặc va chạm mạnh), cờ cảnh báo va chạm được kích hoạt.
  • Core 1 - TaskComms: Nhận bản tin UART từ Jetson Nano, điều khiển còi Buzzer (tần số $2300\text{ Hz}$, âm lượng $> 80\text{ dB}$), gửi gói tin JSON lên AWS IoT Core qua MQTT và điều khiển SIM A7680C.
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_ADXL345_U.h>
#include <TinyGPS++.h>
#include <WiFiClientSecure.h>
#include <PubSubClient.h>

Adafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);
TinyGPSPlus gps;
HardwareSerial SerialGPS(1);  // RX: GPIO16, TX: GPIO17
HardwareSerial SerialSIM(2);  // RX: GPIO26, TX: GPIO27

#define BUZZER_PIN 13
#define VIBRATION_THRESHOLD 24.5  // m/s^2 (~2.5G)

void TaskTelemetry(void *pvParameters) {
  for (;;) {
    // 1. Đọc cảm biến gia tốc ADXL345
    sensors_event_t event;
    accel.getEvent(&event);
    float magnitude = sqrt(pow(event.acceleration.x, 2) + 
                           pow(event.acceleration.y, 2) + 
                           pow(event.acceleration.z, 2));

    if (magnitude > VIBRATION_THRESHOLD) {
      digitalWrite(BUZZER_PIN, HIGH);
      // Kích hoạt gửi SMS cảnh báo va chạm
      SerialSIM.println("AT+CMGS=\"+84901234567\"\r");
      vTaskDelay(pdMS_TO_TICKS(100));
      SerialSIM.print("CANH BAO: Phat hien va cham xe bat thuong!");
      SerialSIM.write(26); // Ctrl+Z
    }

    // 2. Đọc GPS NEO-6M
    while (SerialGPS.available() > 0) {
      gps.encode(SerialGPS.read());
    }
    
    vTaskDelay(pdMS_TO_TICKS(100));
  }
}

Thử nghiệm và đánh giá hệ thống

Độ trễ và hiệu năng mô hình (Edge Inference Benchmark)

Thử nghiệm so sánh hiệu năng của mô hình YOLOv8n trên các chế độ phần cứng khác nhau của NVIDIA Jetson Nano với ảnh đầu vào $640 \times 640$:

Phần cứng & Runtime Thời gian xử lý 1 Frame (Inference Latency) Tốc độ khung hình (FPS) Mức tải bộ nhớ RAM Công suất tiêu thụ
Jetson Nano CPU (ARM A57) $185.4\text{ ms}$ $5.4\text{ FPS}$ $1,120\text{ MB}$ $4.2\text{ W}$
Jetson Nano GPU (PyTorch FP32) $48.6\text{ ms}$ $20.5\text{ FPS}$ $1,850\text{ MB}$ $7.8\text{ W}$
Jetson Nano GPU (ONNX Runtime CUDA) $34.2\text{ ms}$ $29.2\text{ FPS}$ $1,340\text{ MB}$ $6.5\text{ W}$

Đánh giá độ chính xác nhận diện trạng thái tài xế

Lớp trạng thái (Class) Tập mẫu kiểm thử (Test Samples) Precision ($P$) Recall ($R$) mAP@0.5
Awake (Tỉnh táo) 450 $94.8%$ $96.2%$ $97.1%$
Drowsy (Mắt nhắm/Ngủ gật) 520 $93.5%$ $92.8%$ $95.4%$
Yawn (Ngáp/Mệt mỏi) 380 $91.2%$ $90.5%$ $93.8%$
Trung bình toàn bộ (All Classes) 1350 $93.2%$ $93.1%$ $95.4%$

Kết quả đo lường độ trễ toàn chu trình (End-to-End Latency Breakdown)

  • Thời gian chụp và tiền xử lý ảnh: $12.5\text{ ms}$
  • Thời gian suy luận AI (Inference): $34.2\text{ ms}$
  • Thời gian truyền thông Serial UART sang ESP32: $2.1\text{ ms}$
  • Thời gian kích hoạt Còi Buzzer/Đèn LED: $< 1.0\text{ ms}$
  • Tổng độ trễ cảnh báo tại chỗ (In-cabin Alert Latency): $\approx 49.8\text{ ms}$ (vượt xa mục tiêu $< 1000\text{ ms}$).
  • Thời gian đóng gói MQTT và truyền lên AWS IoT Core qua mạng 4G: $280\text{ ms} - 450\text{ ms}$.
  • Thời gian gửi tin nhắn SMS khẩn cấp qua mạng viễn thông: $2.5\text{ s} - 4.2\text{ s}$.

Đổi mới và đóng góp

  1. Kiến trúc xử lý lai (Hybrid Edge-IoT Architecture): Khắc phục triệt để nhược điểm của các hệ thống IoT truyền thống (thường đẩy toàn bộ video lên Cloud gây tắc nghẽn băng thông và trễ lớn). Hệ thống phân tách rõ rệt: Trí tuệ nhân tạo chạy On-premise tại biên (On-edge), đảm bảo xe đi vào vùng mất sóng viễn thông vẫn kích hoạt còi cảnh báo ngủ gật tức thì.
  2. Ứng dụng kỹ thuật Anchor-Free của YOLOv8 trên phần cứng biên công suất thấp: Tận dụng cơ chế Task-Aligned Assigner và Decoupled Head của YOLOv8 giúp mô hình có kích thước siêu gọn (~6.2 MB trọng số), giảm $42%$ chi phí tính toán so với YOLOv4-Tiny nhưng tăng $3.8%$ mAP@0.5 trong điều kiện tài xế nghiêng đầu hoặc thay đổi góc nhìn.
  3. Tích hợp đa cảm biến giám sát động học toàn diện: Kết hợp trạng thái sinh học (thị giác) và trạng thái cơ học phương tiện (gia tốc kế ADXL345 + tọa độ GPS). Khi tài xế ngủ gật dẫn đến đánh lái gấp hoặc phanh giật, gia tốc kế sẽ kích hoạt mức độ ưu tiên cao nhất cho tin nhắn khẩn cấp gửi về trung tâm điều hành.

Ứng dụng thực tế và triển khai

Kịch bản vận hành thực tế

Hệ thống được ứng dụng trực tiếp cho các doanh nghiệp logistics đường dài (tuyến Bắc - Nam), xe khách liên tỉnh và xe tải vận chuyển vật liệu nguy hiểm:

  • Tình huống 1 - Buồn ngủ cục bộ: Tài xế nhắm mắt liên tục quá 1.5 giây hoặc ngáp liên tục nhiều lần trong vòng 1 phút. Còi Buzzer trên xe phát xung âm thanh $2300\text{ Hz}$ gián đoạn để đánh thức tài xế ngay lập tức.
  • Tình huống 2 - Mất kiểm soát/Va chạm: Xe rung lắc dữ dội vượt ngưỡng $2.5\text{ G}$ hoặc tài xế ngủ gật không phản ứng sau 3 hồi còi cảnh báo. Module A7680C tự động quay số khẩn cấp đến số điện thoại điều phối viên, đồng thời cập nhật vị trí GPS chính xác trên bản đồ số Dashboard.

Hướng dẫn lắp đặt phần cứng trên phương tiện

  1. Nguồn cấp: Sử dụng bộ chuyển đổi nguồn hạ áp ô tô (DC-DC Buck Converter $12\text{V}/24\text{V} \rightarrow 5\text{V}/4\text{A}$) cắm trực tiếp từ cổng tẩu sạc hoặc hộp cầu chì ACC của xe.
  2. Vị trí Camera: Gắn cố định trên trụ vô lăng hoặc bảng táp-lô, chính diện mặt tài xế với góc nghiêng $15^\circ - 20^\circ$, khoảng cách $60\text{ cm}$.
  3. Vị trí Ăng-ten GPS: Dán mặt trên bảng táp-lô sát kính chắn gió phía trước để đảm bảo búp sóng thu bắt tối thiểu 6-8 vệ tinh định vị.
       +-----------------------------------------------------------+
       |                  Cabin Xe Tải / Xe Khách                  |
       |                                                           |
       |     [ Ăng-ten GPS ] -> Dán sát kính chắn gió trước        |
       |                                                           |
       |     [ Webcam Rapoo ] -> Gắn taplo, hướng mặt tài xế (60cm)|
       |                                                           |
       |     [ Hộp Điều Khiển Kín ]                                |
       |     +-----------------------------------------------+     |
       |     | Jetson Nano 4GB + Bo mạch ESP32 + ADXL345     |     |
       |     | Module SIM A7680C + Còi Buzzer 80dB           |     |
       |     +-----------------------------------------------+     |
       |                             ^                             |
       |                             | (Nguồn 5V/4A DC-DC Buck)    |
       |                     [ Ắc-quy 12V/24V ]                    |
       +-----------------------------------------------------------+

Phân tích chi phí và hiệu quả đầu tư (ROI)

  • Chi phí phần cứng đơn chiếc (BOM):
    • NVIDIA Jetson Nano 4GB (Sub-kit): ~105 USD
    • Webcam Rapoo XW180 1080p: ~18 USD
    • Bo mạch ESP32-WROOM-32 + ADXL345 + NEO-6M GPS: ~15 USD
    • Module SIM 4G A7680C + Ăng-ten: ~14 USD
    • Vỏ hộp, nguồn hạ áp, còi, dây cáp: ~12 USD
    • Tổng chi phí phần cứng: $\approx 164\text{ USD}$ (khoảng 4.100.000 VNĐ).
  • Hiệu quả kinh tế (ROI): Giảm thiểu thiệt hại trung bình của một vụ tai nạn giao thông xe tải (ước tính từ 200 triệu đến hàng tỷ đồng thiệt hại hàng hóa và phương tiện). Doanh nghiệp vận tải có thể hoàn vốn đầu tư chỉ trong vòng 6 - 12 tháng thông qua việc giảm tỉ lệ tai nạn và tối ưu chi phí bảo hiểm.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Môi trường thiếu sáng hoàn toàn: Camera Rapoo XW180 là camera quang học tiêu chuẩn, khi xe chạy ban đêm và tắt hết đèn trần cabin, độ chính xác nhận diện giảm xuống dưới $75%$.
  • Nhiệt độ hoạt động: Máy tính nhúng Jetson Nano khi suy luận GPU liên tục tỏa nhiệt lượng lớn, nếu khoang xe bị nắng chiếu trực tiếp có thể gây hiện tượng giảm xung (Thermal Throttling).

Hướng phát triển trong tương lai

  • Tích hợp Camera hồng ngoại (IR Camera with 850nm/940nm LED Array): Cho phép trích xuất hình ảnh rõ nét trong bóng tối tuyệt đối mà không gây chói mắt tài xế.
  • Chuyển đổi mô hình sang TensorRT INT8 Quantization: Giảm mức chiếm dụng bộ nhớ xuống dưới $800\text{ MB}$, tăng tốc độ suy luận lên $> 45\text{ FPS}$ và giảm nhiệt độ chip GPU.
  • Tích hợp chuẩn giao tiếp OBD-II / CAN-Bus: Thu thập trực tiếp góc quay vô lăng, áp lực chân phanh và trạng thái xi-nhan để kết hợp mô hình phân tích hành vi lái xe chuyên sâu.

Đối tượng hưởng lợi

  • Sinh viên và Kỹ sư Nhúng / IoT: Cung cấp tài liệu tham khảo thực tế về kiến trúc kết hợp máy tính nhúng Linux (Jetson Nano) với vi điều khiển RTOS (ESP32), kỹ thuật tối ưu hóa mô hình Deep Learning ONNX trên GPU nhúng.
  • Nhà phát triển phần mềm (Developers): Cung cấp mã nguồn mẫu về thiết kế hệ thống phân tán giao tiếp MQTT lên AWS Cloud và xử lý dữ liệu cảm biến đa luồng qua FreeRTOS.
  • Doanh nghiệp vận tải & Logistics: Sở hữu giải pháp công nghệ giá thành hợp lý, dễ lắp đặt để giám sát an toàn đội xe và bảo vệ tính mạng tài xế.
  • Nhà nghiên cứu Giao thông Thông minh (ITS Researchers): Nền tảng dữ liệu thực nghiệm về mối liên hệ giữa thời gian lái xe liên tục, các biểu hiện mệt mỏi sinh học và biến thiên gia tốc xe.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai và chạy hệ thống là gì?

Hệ thống yêu cầu nguồn cấp tối thiểu $5\text{V} - 3\text{A}$ (khuyến nghị dùng nguồn $5\text{V} - 4\text{A}$ cấp qua chân DC Jack của Jetson Nano), thẻ nhớ MicroSD tối thiểu 32GB chuẩn UHS-I Class 10 (tốc độ đọc $> 90\text{ MB/s}$) đã cài đặt hệ điều hành JetPack 4.6.1 (Ubuntu 18.04 LTS), Camera USB hỗ trợ định dạng YUY2/MJPEG 1080p, và SIM viễn thông có đăng ký gói cước 4G/LTE.

2. Hệ thống xử lý thế nào khi xe di chuyển vào khu vực đèo núi mất hoàn toàn sóng di động?

Kiến trúc của hệ thống được thiết kế theo cơ chế Local-First Autonomy. Quá trình phân tích hình ảnh nhận diện buồn ngủ và đo đạc gia tốc va chạm được thực hiện $100%$ cục bộ giữa Jetson Nano và ESP32. Do đó, còi cảnh báo và đèn tín hiệu trong cabin vẫn hoạt động bình thường với độ trễ $< 50\text{ ms}$. Dữ liệu GPS và nhật ký cảnh báo sẽ được ESP32 tạm lưu vào bộ nhớ Flash SPI (dung lượng 4MB) và tự động đồng bộ bù (Sync) lên AWS Cloud ngay khi thiết bị có lại kết nối mạng 4G.

3. Làm thế nào để phân biệt giữa tài xế chỉ chớp mắt tự nhiên với việc ngủ gật thực sự?

Thuật toán trên Jetson Nano không kích hoạt cảnh báo dựa trên một frame đơn lẻ. Hệ thống duy trì một bộ đếm trạng thái drowsy_counter. Tốc độ xử lý của hệ thống là $\approx 30\text{ FPS}$ (khoảng $33\text{ ms}$/frame). Một cái chớp mắt thông thường kéo dài $100\text{ ms} - 300\text{ ms}$ (tương đương 3 - 9 frame). Thuật toán đặt ngưỡng lọc: chỉ khi mắt tài xế nhắm liên tục vượt quá 15 frame (tương đương $\approx 0.5\text{ s}$ đối với trạng thái lơ mơ và $> 1.5\text{ s}$ đối với ngủ gật sâu), tín hiệu cảnh báo ALERT:DROWSY mới chính thức được phát ra cổng Serial.

4. Chi phí vận hành máy chủ AWS hàng tháng cho một đầu xe là bao nhiêu?

Nhờ kiến trúc Edge AI (toàn bộ video được xử lý tại thiết bị, chỉ có các bản tin JSON dung lượng siêu nhẹ $\approx 256\text{ bytes}$ được gửi qua MQTT lên máy chủ theo chu kỳ $1\text{ s}$/lần hoặc khi có cảnh báo), lưu lượng truyền thông mỗi xe tiêu tốn dưới $30\text{ MB}$ data/tháng. Sử dụng AWS Free Tier hoặc gói định giá tiêu chuẩn của AWS IoT Core, DynamoDB và Lambda, chi phí duy trì hạ tầng đám mây cho mỗi phương tiện chỉ dao động từ $0.20\text{ - }0.50\text{ USD}$/tháng (~5.000 - 12.000 VNĐ/tháng).

5. Quy trình bảo trì và độ bền của thiết bị trong điều kiện rung lắc liên tục của xe tải?

Hệ thống sử dụng cảm biến gia tốc thể rắn MEMS ADXL345 có khả năng chịu xung sốc va đập lên tới $10,000\text{ G}$. Toàn bộ các module được cố định trên bo mạch PCB thông qua cọc đồng ren và đặt trong hộp bảo vệ nhựa ABS chống rung. Định kỳ 6 tháng một lần, kỹ thuật viên chỉ cần kiểm tra độ sạch của ống kính camera và kiểm tra dung lượng thẻ nhớ lưu trữ.


Kết luận

Đồ án tốt nghiệp "Xây dựng hệ thống giám sát và cảnh báo cho tài xế đường dài ứng dụng phần cứng Jetson Nano" đã giải quyết triệt để bài toán kết hợp giữa Trí tuệ nhân tạo tại biên (Edge AI) và Internet vạn vật (IoT) để bảo vệ an toàn giao thông đường bộ. Dự án đã hiện thực hóa thành công mô hình phần cứng và phần mềm khép kín: từ khâu thu nhận và xử lý hình ảnh thời gian thực với mô hình YOLOv8n trên máy tính nhúng NVIDIA Jetson Nano ($29.2\text{ FPS}$, độ chính xác $95.4%$ mAP@0.5), đến khả năng đo đạc viễn thám, phát hiện va chạm qua ESP32 và đồng bộ điện toán đám mây AWS.

Kết quả thử nghiệm thực tế chứng minh giải pháp hoàn toàn khả thi, độ tin cậy cao, độ trễ cảnh báo tại chỗ tức thì ($\approx 49.8\text{ ms}$), đồng thời tối ưu hóa chi phí sản xuất phần cứng ở mức phù hợp với thị trường Việt Nam. Đây là nền tảng vững chắc để tiếp tục phát triển thành sản phẩm thương mại hoàn chỉnh, đóng góp thiết thực vào việc giảm thiểu tai nạn giao thông và nâng cao hiệu quả quản trị vận tải thông minh trong kỷ nguyên chuyển đổi số.