Giới thiệu dự án

Tại Việt Nam, xe máy là phương tiện giao thông huyết mạch với hơn 49,5 triệu xe đã đăng ký lưu hành (theo thống kê của Tổng cục Đường bộ Việt Nam). Tại các khu đô thị lớn và chung cư cao tầng, mật độ phương tiện gia tăng nhanh chóng đã tạo áp lực nặng nề lên hạ tầng bãi đỗ xe. Thực trạng quản lý bãi đỗ xe hiện nay đang đối mặt với nhiều rủi ro nghiêm trọng: tình trạng thất thoát tài sản, quy trình gửi xe thủ công gây ùn tắc giờ cao điểm, và đặc biệt là nguy cơ cháy nổ từ sự cố chập điện do trạm sạc xe điện tự phát hoặc rò rỉ nhiên liệu từ động cơ đốt trong.

Đồ án tốt nghiệp chuyên ngành Công nghệ Kỹ thuật Điện tử - Viễn thông (Trường Đại học Sư phạm Kỹ thuật TP.HCM) với đề tài "Thiết kế và thi công giám sát bãi giữ xe máy chung cư" (thực hiện bởi sinh viên Nguyễn Đăng Bảo Long, Lê Nhật Quang dưới sự hướng dẫn của ThS. Nguyễn Ngô Lâm) đã giải quyết triệt để các bài toán thực tiễn này bằng cách ứng dụng công nghệ thị giác máy tính kết hợp hệ thống nhúng IoT.

+-------------------------------------------------------------------------+
|                  KIẾN TRÚC TỔNG THỂ HỆ THỐNG GIÁM SÁT                   |
+-------------------------------------------------------------------------+
|                                                                         |
|  [ Camera XW180 ] ---> (Xử lý ảnh: YOLOv8 + OCR) ---> [ Giao tiếp UART ]|
|                                                              |          |
|                                                              v          |
|  [ Mobile App ] <---> [ Firebase Realtime DB ] <---> [ ESP32 Master ]   |
|  (Kodular/Auth)        (Lưu trữ Cloud NoSQL)         (Core Controller)  |
|                                                              |          |
|         +--------------------+-------------------------------+          |
|         |                    |                               |          |
|         v                    v                               v          |
|  [ Cảm biến an toàn ]  [ Cảm biến đỗ xe ]            [ Cơ cấu chấp hành]|
|  - Flame IR (YG1006)   - 4x IR Obstacle (LM358)      - Servo SG90       |
|  - ACS712 20A (Hall)                                 - Buzzer & LED     |
|                                                      - Relay 5V cắt tải |
+-------------------------------------------------------------------------+

Mục tiêu dự án

  1. Tự động hóa kiểm soát ra/vào: Tự động nhận diện biển số xe máy bằng mô hình học sâu YOLOv8 kết hợp nhận dạng ký tự quang học OCR (Optical Character Recognition), điều khiển rào chắn tự động không cần sử dụng thẻ từ RFID vật lý.
  2. Giám sát an toàn cháy nổ và quá dòng: Tích hợp cụm cảm biến hồng ngoại phát hiện lửa đa điểm và cảm biến hiệu ứng Hall giám sát dòng điện tải sạc xe máy điện, tự động ngắt nguồn khi có sự cố quá tải.
  3. Quản lý vị trí đỗ thông minh: Ứng dụng cảm biến vật cản hồng ngoại giám sát trạng thái từng ô đỗ xe, cảnh báo phân làn và điều hướng phương tiện theo loại xe đăng ký.
  4. Đồng bộ hóa dữ liệu thời gian thực: Lưu trữ và đồng bộ trạng thái phương tiện, lịch sử ra/vào, thông tin người dùng qua đám mây Firebase Realtime Database và ứng dụng di động.

Phạm vi và giới hạn

  • Phạm vi triển khai: Bãi giữ xe máy quy mô chung cư với 2 làn xe (1 làn vào, 1 làn ra), giám sát trạm sạc điện tập trung và 4 vị trí đỗ định danh.
  • Giới hạn kỹ thuật: Hệ thống camera thị giác máy tính hoạt động tối ưu trong điều kiện độ rọi từ 150 lux trở lên; góc nghiêng biển số so với trục camera không vượt quá 25 độ.

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

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

Hiện nay, phần lớn bãi giữ xe chung cư đang áp dụng hai mô hình chính: vé giấy truyền thống hoặc thẻ từ RFID (Radio Frequency Identification). Cả hai phương pháp đều bộc lộ những nhược điểm cố hữu về chi phí vận hành, tính bảo mật và khả năng kiểm soát rủi ro an toàn điện.

Tiêu chí so sánh Vé giấy thủ công Thẻ từ RFID tiêu chuẩn Hệ thống IoT & AI (Đồ án)
Thời gian xử lý 10 - 15 giây/xe 3 - 5 giây/xe 1.2 - 1.8 giây/xe
Chi phí vật tư tiêu hao Cao (in ấn vé giấy) Trung bình (mua/cấp lại thẻ) 0 VNĐ (Không dùng thẻ vật lý)
Rủi ro mất cắp/Tráo xe Rất cao Trung bình (có thể tráo thẻ) Triệt tiêu (Đối soát CCCD & Biển số)
Giám sát quá dòng/Trạm sạc Không hỗ trợ Không hỗ trợ Tự động ngắt relay trong 100ms
Cảnh báo cháy nổ sớm Phụ thuộc bảo vệ Chuông báo cháy chung cư Cảm biến cục bộ báo động < 200ms
Theo dõi lịch sử từ xa Không có Chỉ trên máy trạm nội bộ Ứng dụng Mobile Realtime qua Cloud

Yêu cầu người dùng theo mô hình MoSCoW

  • Must have (Bắt buộc): Nhận diện biển số tự động; đóng/mở barrier Servo SG90; cảnh báo cháy bằng Module IR Flame Sensor; ngắt nguồn relay khi ACS712 vượt ngưỡng dòng; đồng bộ Firebase.
  • Should have (Nên có): App di động tra cứu lịch sử vào/ra; phân loại xe bằng hệ thống LED chỉ dẫn ô đỗ.
  • Could have (Có thể có): Nút nhấn cơ học khẩn cấp tại cổng; lưu trữ ảnh biển số trực tiếp lên cloud storage.
  • Won't have (Chưa thực hiện): Tích hợp cổng thanh toán trực tuyến tự động; camera nhận diện khuôn mặt người lái.

Thiết kế hệ thống

Danh mục công nghệ và phiên bản phần mềm

  • Vi xử lý trung tâm: ESP32 NodeMCU-32S (Tensilica Xtensa Dual-Core 32-bit LX6, 240MHz, 520KB SRAM, 448KB ROM, WiFi 802.11 b/g/n, Bluetooth 4.2 BR/EDR & BLE).
  • Môi trường lập trình nhúng: Arduino IDE 2.3.2 (Ngôn ngữ C/C++ với FreeRTOS support).
  • Thị giác máy tính & AI: Python 3.10.12, Ultralytics YOLOv8.1.0, OpenCV 4.8.1, Tesseract OCR Engine 5.3.0.
  • Nền tảng Cloud & IoT: Google Firebase Realtime Database (REST API / WebSockets), Firebase Authentication.
  • Nền tảng Mobile App: Kodular Creator (Block-based visual programming).
{
  "ParkingSystem": {
    "Users": {
      "UID_20161009": {
        "FullName": "Nguyen Dang Bao Long",
        "IdentityCard": "079202000000",
        "LicensePlate": "59P1-12345",
        "VehicleType": "XeDien",
        "SlotAssigned": 2
      }
    },
    "LiveLogs": {
      "59P1-12345": {
        "Status": "IN_PARKING",
        "TimeIn": "2024-07-16 08:30:15",
        "TimeOut": "",
        "OverCurrentAlert": false,
        "FireAlert": false
      }
    },
    "HardwareStatus": {
      "Barrier_Gate_In": "CLOSED",
      "Barrier_Gate_Out": "CLOSED",
      "CurrentLoad_AC": 2.45,
      "FlameSensor_1": 1,
      "FlameSensor_2": 1,
      "Slots": {
        "Slot_1": 1, "Slot_2": 0, "Slot_3": 0, "Slot_4": 1
      }
    }
  }
}

Thiết kế giao tiếp phần cứng và chuẩn truyền thông

ESP32 giao tiếp với máy tính xử lý trung tâm thông qua chuẩn UART (Universal Asynchronous Receiver-Transmitter) với cấu hình khung truyền: Baudrate 115200 bps, 8 Data bits, 1 Stop bit, No Parity (8-N-1).

  • Chân kết nối ESP32 Bãi Vào: ADC Pin G33 (Đọc cảm biến dòng ACS712 20A), GPIO G26/G27/G14/G12 (Đọc 4 cảm biến vật cản hồng ngoại LM358), GPIO G13 (PWM điều khiển Servo SG90), GPIO G23 (Điều khiển Relay 5V), UART RX/TX (G16/G17 kết nối PC).
  • Chân kết nối ESP32 Bãi Ra: GPIO G2 & G15 (Đọc ngõ ra DO từ 2 Module IR Flame YG1006), GPIO G4 (Kích hoạt Chuông Buzzer cảnh báo), GPIO G18 (PWM Servo SG90 cổng ra).

Implementation và kết quả

Quy trình phát triển phần mềm

Quy trình nhận diện và xử lý biển số xe được chia thành 2 module lõi: Phát hiện vùng chứa biển số thông qua YOLOv8 và trích xuất chuỗi ký tự bằng OCR.

import cv2
import serial
import time
from ultralytics import YOLO
import pytesseract

# Khởi tạo giao tiếp UART với ESP32
ser = serial.Serial('COM3', 115200, timeout=1)
time.sleep(2)

# Khởi tạo mô hình YOLOv8 phát hiện biển số đã huấn luyện
model = YOLO("runs/detect/train/weights/best.pt")

def preprocess_plate(cropped_img):
    # Chuyển đổi sang ảnh xám và cân bằng độ tương phản
    gray = cv2.cvtColor(cropped_img, cv2.COLOR_BGR2GRAY)
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
    thresh = cv2.adaptiveThreshold(blurred, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 
                                  cv2.THRESH_BINARY, 11, 2)
    return thresh

def recognize_plate_from_stream(frame):
    results = model.predict(source=frame, conf=0.6, verbose=False)
    for r in results:
        boxes = r.boxes.xyxy.cpu().numpy()
        for box in boxes:
            x1, y1, x2, y2 = map(int, box[:4])
            plate_roi = frame[y1:y2, x1:x2]
            
            # Xử lý OCR trích xuất chuỗi
            processed_roi = preprocess_plate(plate_roi)
            custom_config = r'--oem 3 --psm 8 -c tessedit_char_whitelist=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
            text = pytesseract.image_to_string(processed_roi, config=custom_config)
            clean_text = "".join(text.split()).strip()
            
            if len(clean_text) >= 7:
                print(f"[DETECTED] Biển số: {clean_text}")
                ser.write((clean_text + "\n").encode('utf-8'))
                return clean_text
    return None

Tại tầng nhúng, vi điều khiển ESP32 triển khai việc lấy mẫu liên tục tín hiệu dòng điện và giám sát cảm biến an toàn.

#include <WiFi.h>
#include <ESP32Servo.h>

#define ACS712_PIN 33
#define FLAME_PIN_1 2
#define FLAME_PIN_2 15
#define BUZZER_PIN 4
#define RELAY_PIN 23
#define SERVO_PIN 13

Servo barrierServo;
const float SENSITIVITY = 100.0; // 100mV/A đối với cảm biến ACS712-20A
const float OVERCURRENT_THRESHOLD = 5.0; // Ngưỡng ngắt dòng: 5.0 Amperes

void setup() {
  Serial.begin(115200);
  barrierServo.attach(SERVO_PIN);
  barrierServo.write(0); // Đóng rào chắn mặc định
  
  pinMode(FLAME_PIN_1, INPUT);
  pinMode(FLAME_PIN_2, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, HIGH); // Kích hoạt Relay cấp nguồn tải sạc
}

float readCurrentRMS() {
  float voltage = 0.0;
  float current = 0.0;
  float sum = 0.0;
  long startTime = millis();
  int counter = 0;
  
  while (millis() - startTime < 1000) { // Lấy mẫu liên tục trong 1 chu kỳ 1s
    voltage = (analogRead(ACS712_PIN) * 3.3) / 4095.0;
    current = (voltage - 1.65) / (SENSITIVITY / 1000.0); // 1.65V là điện áp VCC/2 offset
    sum += current * current;
    counter++;
  }
  return sqrt(sum / counter);
}

void loop() {
  // Giám sát cảm biến lửa hồng ngoại
  if (digitalRead(FLAME_PIN_1) == LOW || digitalRead(FLAME_PIN_2) == LOW) {
    digitalWrite(BUZZER_PIN, HIGH);
    digitalWrite(RELAY_PIN, LOW); // Ngắt trạm sạc lập tức
  } else {
    digitalWrite(BUZZER_PIN, LOW);
  }

  // Giám sát quá dòng bảo vệ trạm sạc xe điện
  float rmsCurrent = readCurrentRMS();
  if (rmsCurrent > OVERCURRENT_THRESHOLD) {
    digitalWrite(RELAY_PIN, LOW); // Ngắt relay bảo vệ quá dòng
  }

  // Xử lý dữ liệu biển số nhận từ UART
  if (Serial.available() > 0) {
    String plate = Serial.readStringUntil('\n');
    plate.trim();
    if (plate.length() > 0) {
      barrierServo.write(90); // Mở rào chắn
      delay(5000);
      barrierServo.write(0);  // Đóng rào chắn
    }
  }
}

Kết quả đo kiểm và đánh giá thực nghiệm

Hệ thống được đưa vào vận hành thử nghiệm trên mô hình bãi giữ xe quy mô thực tế với tập dữ liệu kiểm thử gồm 150 lượt xe máy khác nhau (bao gồm xe số, xe tay ga và xe máy điện).

===========================================================================
               KẾT QUẢ ĐO KIỂM HIỆU NĂNG TOÀN DIỆN HỆ THỐNG
===========================================================================
Tác vụ / Thành phần kiểm thử       Thông số đo đạc thực tế      Độ tin cậy
---------------------------------------------------------------------------
1. Phát hiện biển số (YOLOv8)      Thời gian: 42ms/frame        96.5%
2. Nhận dạng ký tự (OCR Engine)    Thời gian: 110ms/plate       93.8%
3. Truyền nhận & Khớp dữ liệu Cloud Trễ phản hồi: 320ms         99.2%
4. Đóng mở cơ cấu rào chắn Servo   Góc quay: 0 - 90 deg         100% (0.12s/60°)
5. Cảm biến lửa (IR Flame Sensor)  Khoảng cách: 80cm            100% (<150ms)
6. Cảm biến dòng (ACS712 20A)      Độ nhạy: 100mV/A (Sai số: 2%) 98.0%
===========================================================================

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

  1. Khử bỏ hoàn toàn phụ thuộc vào thẻ RFID (Cardless Architecture): Bằng việc sử dụng biển số xe làm định danh khóa chính (Primary Key) đồng bộ trực tiếp với CCCD người dùng trên Firebase, hệ thống giúp ban quản lý chung cư tiết kiệm 100% chi phí mua sắm, phát hành và bảo trì phôi thẻ từ, đồng thời loại bỏ nguy cơ gian lận tráo thẻ.
  2. Hệ thống an toàn kép chống cháy nổ (Dual Safety Interlock): Không chỉ giám sát hình ảnh, đề tài tiên phong tích hợp mạch đo dòng điện thời gian thực (ACS712) để phát hiện sớm các vụ chập pin xe điện trước khi bốc hỏa, kết hợp cùng cụm cảm biến lửa quang phổ 760nm - 1100nm để kích hoạt cắt nguồn điện tự động qua Relay 5V và hú còi Buzzer trong vòng dưới 200 mili-giây.
  3. Phân làn thông minh kết hợp cảm biến đỗ xe cục bộ: Tối ưu hóa luồng giao thông tầng hầm bằng cách chỉ định vị trí đỗ chuyên biệt (xe điện và xe xăng) thông qua 4 cảm biến LM358 và hệ thống đèn LED định hướng.

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

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

  • Quy trình xe vào: Người lái xe dừng trước vạch nhận diện. Camera Rapoo XW180 bắt hình ảnh $\rightarrow$ YOLOv8 trích xuất bounding box $\rightarrow$ OCR đọc ký tự $\rightarrow$ ESP32 nhận chuỗi qua UART và kiểm tra cơ sở dữ liệu Firebase. Nếu biển số hợp lệ, Barrier tự động mở 90 độ, đèn LED tại ô đỗ tương ứng bật sáng hướng dẫn xe vào đúng vị trí.
  • Quy trình sạc xe điện an toàn: Khi xe điện cắm sạc tại bãi đỗ, cảm biến ACS712 liên tục theo dõi dòng điện tiêu thụ. Nếu dòng sạc vượt ngưỡng 5.0A định mức (dấu hiệu ngắn mạch hoặc quá nhiệt cell pin), ESP32 ngắt ngay Relay cấp nguồn và gửi cảnh báo đỏ lên ứng dụng di động của ban quản lý.
+-------------------------------------------------------------------------+
|                  BẢNG DỰ TOÁN CHI PHÍ PHẦN CỨNG (BOM)                   |
+-------------------------------------------------------------------------+
| STT | Tên linh kiện / Thiết bị           | Số lượng | Đơn giá (VNĐ)     |
+-----+------------------------------------+----------+-------------------+
| 01  | Vi điều khiển ESP32 NodeMCU-32S    | 02 cái   | 180.000           |
| 02  | Camera Full HD Rapoo XW180         | 02 cái   | 650.000           |
| 03  | Động cơ Servo TowerPro SG90        | 02 cái   | 60.000            |
| 04  | Module Cảm biến dòng ACS712 20A    | 01 cái   | 45.000            |
| 05  | Module IR Flame Sensor (LM393)     | 02 cái   | 30.000            |
| 06  | Cảm biến vật cản hồng ngoại (LM358)| 04 cái   | 60.000            |
| 07  | Module Relay 5V 10A cách ly quang  | 01 cái   | 25.000            |
| 08  | Chuông Buzzer + Cụm LED hiển thị   | 01 bộ    | 30.000            |
| 09  | Nguồn xung Meanwell 5V/3A DC       | 01 cái   | 120.000           |
+-----+------------------------------------+----------+-------------------+
|     | TỔNG CHI PHÍ PHẦN CỨNG             |          | 1.200.000 VNĐ     |
+-------------------------------------------------------------------------+

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

Hạn chế kỹ thuật

  • Tỷ lệ nhận diện OCR bị suy giảm đối với các biển số xe quá cũ, trầy xước, dính bùn đất hoặc trong điều kiện ánh sáng môi trường yếu (< 50 lux).
  • Hệ thống máy tính xử lý trung tâm hiện sử dụng máy tính trạm cá nhân, phụ thuộc vào kết nối máy chủ ngoại vi thay vì xử lý AI hoàn toàn tại biên (Edge AI).

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

  • Nâng cấp phần cứng máy tính nhúng sang board chuyên dụng như NVIDIA Jetson Orin Nano hoặc Raspberry Pi 5 để triển khai suy luận trực tiếp tại cổng.
  • Tích hợp thêm camera hồng ngoại và module đèn chiếu sáng LED tự động bù sáng ban đêm.
  • Mở rộng thuật toán nhận dạng khuôn mặt người điều khiển xe (Face Recognition) để so khớp bảo mật 2 lớp: Khuôn mặt chủ xe + Biển số xe.

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

  • Sinh viên & Nghiên cứu sinh: Cung cấp tài liệu tham khảo thực nghiệm chi tiết về việc kết hợp giữa thị giác máy tính hiện đại (YOLOv8) với vi điều khiển nhúng công nghiệp (ESP32) và đám mây (Firebase).
  • Lập trình viên nhúng & Kỹ sư IoT: Bộ khung mã nguồn mở tích hợp xử lý đa tác vụ với FreeRTOS, giao tiếp dữ liệu chuỗi UART bảo toàn dữ liệu và tối ưu hóa giải thuật đọc dòng điện AC RMS.
  • Ban quản lý tòa nhà & Doanh nghiệp: Một giải pháp quản lý bãi xe tiết kiệm chi phí đầu tư ban đầu (CAPEX dưới 2 triệu VNĐ cho mô hình đơn làn), giảm thiểu 40% chi phí nhân sự vận hành và phòng ngừa triệt để các thảm họa cháy nổ trạm sạc điện.

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

1. Yêu cầu cấu hình tối thiểu của máy chủ xử lý ảnh là gì?

Hệ thống xử lý ảnh YOLOv8n (Nano) có thể chạy mượt mà trên máy tính sử dụng CPU Intel Core i3 thế hệ 8 trở lên với 8GB RAM, hoặc các dòng máy tính nhúng có GPU hỗ trợ CUDA (như Jetson Nano 4GB) để duy trì tốc độ xử lý 25 - 30 FPS.

2. Hệ thống xử lý thế nào khi xảy ra sự cố mất kết nối mạng Internet?

Nhờ kiến trúc kết nối trực tiếp UART giữa PC và ESP32, hệ thống duy trì một bộ nhớ đệm (Local Cache) các biển số đã đăng ký ngay tại máy tính trạm. Rào chắn vẫn mở/đóng bình thường trong tình trạng offline; toàn bộ dữ liệu ra/vào sẽ tự động đồng bộ lên Firebase khi có mạng trở lại.

3. Cảm biến lửa hồng ngoại có bị báo động giả bởi ánh sáng mặt trời không?

Cảm biến sử dụng đầu thu quang phổ YG1006 với dải bước sóng 760nm - 1100nm và tích hợp biến trở vi chỉnh độ nhạy trên IC so sánh LM393. Bằng cách hiệu chỉnh ngưỡng điện áp so sánh (Vref) phù hợp với môi trường tầng hầm chung cư, hệ thống hoàn toàn loại trừ các nguồn sáng nhân tạo thông thường.

4. Hệ thống phân biệt biển số xe 1 dòng và 2 dòng như thế nào?

Module tiền xử lý ảnh sử dụng thuật toán chiếu ngang và chiếu dọc (Projection Profile Analysis) để phân tách các vùng ký tự. Ký tự hàng trên (mã tỉnh thành và series đăng ký) sẽ được ghép chuỗi tuần tự với ký tự hàng dưới (dãy số thứ tự) trước khi gửi qua cổng UART.

5. Chi phí bảo trì và mở rộng hệ thống có phức tạp không?

Hệ thống sử dụng các linh kiện phần cứng tiêu chuẩn và kiến trúc NoSQL trên Firebase có khả năng mở rộng linh hoạt (Scale-out). Khi muốn mở rộng thêm làn xe, ban quản lý chỉ cần trang bị thêm một bộ Node ESP32 và camera tương ứng mà không cần thay đổi kiến trúc phần mềm cốt lõi.


Kết luận

Đồ án "Thiết kế và thi công giám sát bãi giữ xe máy chung cư" của nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM đã giải quyết xuất sắc bài toán tối ưu hóa an ninh và an toàn cháy nổ trong các đô thị thông minh. Bằng cách kết hợp linh hoạt giữa mô hình học sâu YOLOv8, công nghệ nhận dạng ký tự OCR và vi điều khiển ESP32 kết nối Firebase Realtime Database, dự án đã chứng minh tính khả thi vượt trội với độ chính xác nhận diện trên 95%, phản ứng cảnh báo an toàn tức thời dưới 200ms và chi phí phần cứng tối ưu. Đây là tiền đề vững chắc cho việc phát triển các hệ thống quản lý hạ tầng giao thông tĩnh thông minh trong tương lai.