Giới thiệu dự án
Sự bùng nổ của nền kinh tế đô thị và tốc độ gia tăng phương tiện cơ giới nhanh chóng tại Việt Nam đang đặt ra thách thức nghiêm trọng về cơ sở hạ tầng giao thông tĩnh. Theo số liệu thống kê từ Hiệp hội các Nhà sản xuất Ô tô Việt Nam (VAMA), tổng lượng xe ô tô mới tiêu thụ trên thị trường liên tục tăng trưởng mạnh mẽ, đặt ra bài toán cấp bách về quy hoạch và quản lý không gian đỗ xe tại các đô thị lớn như TP. Hồ Chí Minh và Hà Nội. Điển hình, thành phố đã phải đề xuất xây dựng các bãi đỗ xe thông minh cao tầng lắp ghép tại Công trường Lam Sơn (1.048 m²), Công viên Lê Văn Tám (1.416 m²) và Công viên Tao Đàn (570 m²) với quy mô phục vụ đồng thời hơn 500 xe.
Tuy nhiên, phần lớn các bãi giữ xe hiện nay vẫn vận hành theo phương thức truyền thống (sử dụng vé giấy ghi tay, phấn đánh dấu hoặc kiểm soát vé cơ học). Phương thức này bộc lộ hàng loạt hạn chế:
- Vé giấy dùng một lần gây lãng phí, xả rác thải ra môi trường và dễ bị rách nát, nhòe mờ thông tin khi trời mưa.
- Tốc độ xử lý phương tiện ra/vào chậm trễ (trung bình 30–45 giây/xe), gây ùn ứ nghiêm trọng vào giờ cao điểm.
- Rủi ro an ninh cao do dễ bị làm giả vé, tráo đổi biển số hoặc thất thoát doanh thu do gian lận thủ công.
Nhằm giải quyết triệt để các vấn đề trên, đề tài tốt nghiệp "Thiết kế, thi công mô hình bãi giữ xe ô tô" (ngành Điện tử Công nghiệp – Trường Đại học Sư phạm Kỹ thuật TP.HCM, thực hiện bởi sinh viên Nguyễn Lưu Trọng Đông và Nguyễn Thanh Huy, dưới sự hướng dẫn của PGS. TS. Nguyễn Thanh Hải) đã tập trung nghiên cứu, thiết kế và chế tạo một hệ thống quản lý bãi đỗ xe thông minh toàn diện, tích hợp công nghệ nhận dạng qua tần số vô tuyến (RFID - Radio Frequency Identification), thị giác máy tính nhận dạng biển số tự động (ANPR - Automatic Number Plate Recognition) và nền tảng Web đặt chỗ trước theo định hướng Internet of Things (IoT).
+-----------------------------------------------------------------------------------+
| PROJECT OBJECTIVES |
+-----------------------------------------------------------------------------------+
| 1. Thiết kế & chế tạo mô hình phần cứng bãi đỗ xe ô tô 6 vị trí (A1 - A6). |
| 2. Tích hợp module RFID RC522 (13.56 MHz) và cảm biến hồng ngoại FC-51. |
| 3. Xây dựng phần mềm PC (C# WinForms) xử lý ảnh biển số bằng thư viện EmguCV. |
| 4. Triển khai Web Portal (PHP & MySQL) hỗ trợ khách hàng tra cứu và đặt chỗ trước.|
+-----------------------------------------------------------------------------------+
Phương pháp tiếp cận giải pháp
Hệ thống kết hợp chặt chẽ giữa 3 tầng công nghệ:
- Tầng nhúng & chấp hành (Hardware Layer): Vi điều khiển ATmega328P (Arduino Uno R3) thu thập tín hiệu từ thẻ RFID Tag, cảm biến vật cản hồng ngoại FC-51, điều khiển động cơ Servo mini 5V đóng/mở thanh chắn barrier và xuất thông tin lên màn hình LCD 20x4 qua chuẩn giao tiếp I2C.
- Tầng xử lý trung tâm & thị giác máy tính (Application Layer): Ứng dụng C# .NET giao tiếp qua cổng nối tiếp (UART/USB Serial) với Arduino, điều khiển camera chụp ảnh phương tiện, áp dụng thuật toán lọc Gaussian, phát hiện biên Canny và trích xuất ký tự OCR để xác thực 2 lớp:
Mã UID thẻ RFID + Chuỗi ký tự biển số.
- Tầng dịch vụ mạng & lưu trữ (IoT/Web Layer): Máy chủ Apache chạy nền tảng PHP tương tác cơ sở dữ liệu MySQL, cung cấp giao diện trực quan cho người dùng đăng ký thông tin, chọn vị trí đỗ trước khi đến bãi và tự động giải phóng vị trí nếu quá hạn 60 phút không check-in.
Kết quả kỳ vọng và chỉ số đo lường
- Thời gian xử lý thủ tục xe vào/ra: $\le 3.0\text{ s/lượt}$.
- Tỷ lệ nhận diện biển số ký tự rõ nét: $\ge 85%$.
- Độ trễ phản hồi cảm biến và hiển thị LCD: $\le 200\text{ ms}$.
- Hoạt động ổn định với nguồn điện DC 5V, tổng dòng tiêu thụ toàn hệ thống $\approx 1.6\text{ A}$.
Phạm vi và giới hạn
Hệ thống được thiết kế và thực nghiệm dưới dạng mô hình bãi xe thông minh 6 vị trí đỗ trong điều kiện ánh sáng tiêu chuẩn phòng thí nghiệm; chưa tích hợp cơ chế xoay vòng cơ khí đa tầng và camera hồng ngoại ban đêm chuyên dụng.
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 |
Bãi giữ xe truyền thống (Vé giấy/Thủ công) |
Bãi giữ xe thẻ từ đơn thuần |
Hệ thống kết hợp RFID + ANPR + Web IoT (Đồ án) |
| Phương thức xác thực |
Vé giấy bấm lỗ / Ghi phấn |
Thẻ từ RFID / Mã vạch |
Xác thực kép: Thẻ RFID (13.56 MHz) + Thị giác máy tính (EmguCV OCR) |
| Thời gian xử lý |
30 – 45 giây/xe |
5 – 10 giây/xe |
1.5 – 3.0 giây/xe |
| Mức độ an toàn/Bảo mật |
Rất thấp (dễ tráo xe, giả vé) |
Trung bình (nguy cơ tráo biển) |
Rất cao (khóa 2 lớp logic: UID thẻ + Biển số) |
| Đặt chỗ trước (Booking) |
Không hỗ trợ |
Không hỗ trợ |
Hỗ trợ qua Web Portal thời gian thực |
| Giám sát vị trí đỗ trống |
Nhân viên đi kiểm tra trực tiếp |
Không có hoặc đếm tổng số |
Cảm biến hồng ngoại FC-51 báo trạng thái từng vị trí |
| Tác động môi trường |
Thải bỏ lượng lớn giấy vụn |
Tái sử dụng thẻ từ (vòng đời ~10 năm) |
Tái sử dụng thẻ từ + Tối ưu hóa lộ trình tìm chỗ đỗ |
Yêu cầu hệ thống theo mô hình MoSCoW
- Must have (Bắt buộc phải có): Quẹt thẻ RFID đóng/mở barrier tự động; Chụp ảnh và nhận dạng biển số xe; Cảm biến phát hiện xe tại vị trí đỗ; Hiển thị số lượng chỗ trống lên màn hình LCD; Lưu trữ log vào/ra trên CSDL.
- Should have (Nên có): Giao diện Web cho phép người dùng đăng ký thông tin cá nhân và giữ chỗ trước trong khung thời gian 1 giờ.
- Could have (Có thể có): Cảnh báo âm thanh qua còi Buzzer khi quét thẻ không hợp lệ hoặc xe vào sai biển số.
- Won't have (Chưa thực hiện trong phiên bản này): Thanh toán tự động qua cổng thanh toán trực tuyến hoặc nhận diện khuôn mặt tài xế.
Ràng buộc và thách thức kỹ thuật
- Dung lượng băng thông hình ảnh: Luồng ảnh màu RGB độ phân giải HD ($1280 \times 720\text{ px}$) 24-bit biểu diễn $16.7$ triệu màu đòi hỏi chuyển đổi nhanh sang không gian mức xám (Grayscale 8-bit) để giảm tải tính toán CPU:
$$\text{Gray} = 0.299 \times R + 0.587 \times G + 0.114 \times B$$
- Giao tiếp liên phần cứng: Vi điều khiển ATmega328P bị giới hạn bộ nhớ SRAM ($2\text{ KB}$), đòi hỏi phân chia nhiệm vụ giao tiếp ngoại vi tối ưu: module RC522 qua bus SPI, màn hình LCD 20x4 qua bus I2C và truyền nhận dữ liệu chuỗi lên PC qua cổng UART TTL.
Thiết kế hệ thống
+-----------------------------------------------------------------------------------+
| SYSTEM ARCHITECTURE |
+-----------------------------------------------------------------------------------+
| [WEB CLIENT] <--(HTTP/POST)--> [APACHE / PHP] <--(SQL)--> [MYSQL DATABASE] |
| |
| [IP / USB CAMERA] -------------------+ |
| v |
| [PC MANAGEMENT C#] <---(UART/COM)---> [ARDUINO UNO R3 (MASTER)] |
| - WinForms GUI |-- (SPI Bus) ----> [RFID RC522 (IN/OUT)]|
| - EmguCV / Canny / OCR |-- (I2C Bus) ----> [LCD 20x4 I2C] |
| - SQL Server Database |-- (Digital I/O)-> [6x FC-51 IR SENSOR] |
| |-- (PWM Signals)-> [2x SERVO BARRIERS] |
| +-- (GPIO) -------> [BUZZER & BUTTONS] |
+-----------------------------------------------------------------------------------+
Ngăn xếp công nghệ (Technology Stack)
- Nền tảng nhúng: Vi điều khiển ATmega328P (Arduino Uno R3), ngôn ngữ C/C++ nhúng, Arduino IDE v1.8.x.
- Phần mềm quản trị: C# WinForms trên .NET Framework v4.5, IDE Visual Studio.
- Xử lý ảnh: Thư viện EmguCV v3.4 (C# wrapper cho OpenCV) kết hợp Tesseract OCR Engine.
- Nền tảng Web & Dịch vụ: PHP v7.2, Web Server Apache v2.4, CSDL MySQL v5.7 (gói XAMPP Stack), HTML5/CSS3.
- Cơ sở dữ liệu máy trạm: Microsoft SQL Server / LocalDB.
Thiết kế cơ sở dữ liệu (Database Schema)
Bảng ghi nhận lưu lượng xe tại máy trạm (tbl_ParkingLogs - SQL Server)
CREATE TABLE tbl_ParkingLogs (
LogID INT IDENTITY(1,1) PRIMARY KEY,
CardUID VARCHAR(20) NOT NULL,
PlateNumberIn VARCHAR(15) NOT NULL,
PlateNumberOut VARCHAR(15) NULL,
TimeIn DATETIME NOT NULL DEFAULT GETDATE(),
TimeOut DATETIME NULL,
ImagePathIn VARCHAR(255),
ImagePathOut VARCHAR(255),
SlotAssigned VARCHAR(5),
Status BIT NOT NULL DEFAULT 1 -- 1: Đang trong bãi, 0: Đã ra
);
Bảng quản lý đặt chỗ trực tuyến (tbl_Booking - MySQL)
CREATE TABLE tbl_Booking (
BookingID INT AUTO_INCREMENT PRIMARY KEY,
CustomerName VARCHAR(100) NOT NULL,
PhoneNumber VARCHAR(15) NOT NULL,
PlateNumber VARCHAR(15) NOT NULL,
SlotID VARCHAR(5) NOT NULL,
BookingTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ExpireTime DATETIME NOT NULL,
IsActive TINYINT(1) DEFAULT 1
);
Thiết kế giao thức truyền thông
- Chuẩn giao tiếp SPI (Serial Peripheral Interface): Kết nối giữa Arduino Uno và module RFID RC522 hoạt động theo cơ chế Master-Slave tốc độ cao toàn phần (Full-duplex), sử dụng 4 đường:
SCK (Pin 13), MISO (Pin 12), MOSI (Pin 11), SDA/SS (Pin 10), đường RST (Pin 9).
- Chuẩn giao tiếp I2C (Inter-Integrated Circuit): Kết nối màn hình LCD 20x4 qua mạch chuyển đổi PCF8574 sử dụng 2 dây:
SDA (Analog Pin A4) và SCL (Analog Pin A5) với địa chỉ phần cứng cố định 7-bit (0x27 hoặc 0x3F), giảm thiểu tối đa số lượng chân I/O tiêu tốn trên vi điều khiển.
- Khung truyền nối tiếp UART (PC $\leftrightarrow$ Arduino): Định dạng gói dữ liệu ASCII chuẩn với tốc độ Baudrate
9600 bps:
$$\text{Frame: } [\text{HEADER: '#'}] + [\text{COMMAND: 1 Byte}] + [\text{DATA: N Bytes}] + [\text{FOOTER: '*' }]$$
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển gia tăng (Iterative Prototyping) kết hợp phương pháp kiểm thử vòng lặp phần cứng (Hardware-in-the-Loop Testing):
+-----------------------------------------------------------------------------------+
| DEVELOPMENT MILESTONES |
+-----------------------------------------------------------------------------------+
| Giai đoạn 1 (Tuần 1 - 3): Khảo sát lý thuyết chuẩn truyền (SPI, I2C, UART), |
| tính toán thông số nguồn và linh kiện. |
| Giai đoạn 2 (Tuần 4 - 6): Thiết kế mạch in (PCB), thi công khung mô hình vật lý. |
| Giai đoạn 3 (Tuần 7 - 10): Lập trình nhúng Arduino, viết thuật toán ANPR trên C# |
| sử dụng EmguCV (Canny/OCR). |
| Giai đoạn 4 (Tuần 11 - 12):Xây dựng Website đặt chỗ PHP/MySQL và tích hợp CSDL. |
| Giai đoạn 5 (Tuần 13 - 14):Kiểm thử toàn hệ thống, tinh chỉnh sai số và báo cáo. |
+-----------------------------------------------------------------------------------+
Ma trận quản lý rủi ro kỹ thuật
| Rủi ro kỹ thuật |
Mức độ ảnh hưởng |
Biện pháp giảm thiểu |
| Nhiễu quang học ngoại vi ảnh hưởng cảm biến FC-51 |
Trung bình |
Tinh chỉnh biến trở phân áp trên module, bố trí chụp che chắn góc tán xạ quang học. |
| Sụt áp khi 2 động cơ Servo cùng khởi động |
Cao |
Tính toán tổng dòng đỉnh ($1.6\text{ A}$), bố trí tụ lọc nguồn $1000\mu\text{F}$ và cấp nguồn riêng qua cổng USB/Adapter độc lập. |
| Sai lệch nhận dạng ký tự OCR khi biển số bị nghiêng |
Cao |
Áp dụng thuật toán nắn xoay hình học (Affine Transformation) và lọc đường bao phân cấp (Tree Contours). |
Implementation và kết quả
Quy trình phát triển phần mềm và thuật toán
Thuật toán xử lý và nhận diện biển số xe được hiện thực hóa qua chuỗi pipeline tuần tự trên ứng dụng C# EmguCV:
[Ảnh chụp RGB]
---> [Chuyển GrayScale]
---> [Lọc mờ Gaussian G(x,y)]
---> [Dò biên Canny (Gx, Gy)]
---> [Trích xuất Contours dạng cây]
---> [Lọc hình chữ nhật tỷ lệ biển số]
---> [Nhị phân hóa thích nghi]
---> [Tesseract OCR Engine]
---> [Chuỗi ký tự biển số]
- Bộ lọc làm mịn Gaussian 2D: Khử nhiễu tần số cao trước khi dò biên:
$$G(x,y) = \frac{1}{2\pi\sigma^2} \exp\left(-\frac{x^2+y^2}{2\sigma^2}\right)$$
- Dò biên tối ưu Canny: Tính toán đạo hàm bậc nhất theo hướng $x$ và $y$ ($G_x, G_y$), thực hiện triệt tiêu phi cực đại (Non-Maximum Suppression) và lọc ngưỡng trễ kép (Hysteresis Thresholding) để tạo ra các đường biên liên tục không đứt đoạn.
- Mô hình tổ chức đường bao phân cấp dạng cây (Tree Hierarchy Contours): Sau khi dò biên, các đường bao được sắp xếp thành cấu trúc cây phân tầng. Nút gốc $C_0$ đại diện cho khung biển số, các nhánh con cấp một ($C_1 \dots C_7$) đại diện cho từng ký tự, và các nhánh con cấp hai ($C_{21}, C_{41}, C_{42}, C_{51}$) đại diện cho các lỗ rỗng bên trong các chữ số như '0', '4', '6', '8', '9'.
Trích đoạn mã nguồn xử lý trung tâm
1. Firmware nhúng Arduino đọc RFID RC522 và điều khiển Servo
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define SS_PIN 10
#define RST_PIN 9
#define SERVO_IN_PIN 5
#define BUTTON_IN_PIN 3
MFRC522 mfrc522(SS_PIN, RST_PIN);
Servo servoIn;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
servoIn.attach(SERVO_IN_PIN);
servoIn.write(0); // Đóng Barrier ban đầu
pinMode(BUTTON_IN_PIN, INPUT_PULLUP);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("SYSTEM READY...");
}
void loop() {
// Kiểm tra có thẻ RFID đưa vào vùng quét
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
String cardUID = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
cardUID += String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
cardUID += String(mfrc522.uid.uidByte[i], HEX);
}
cardUID.toUpperCase();
// Gửi chuỗi UID lên ứng dụng C# PC qua UART
Serial.println("#RFID:" + cardUID + "*");
mfrc522.PICC_HaltA();
}
// Đọc tín hiệu mở cổng từ PC gửi xuống
if (Serial.available() > 0) {
String command = Serial.readStringUntil('\n');
if (command.indexOf("OPEN_BARRIER_IN") >= 0) {
servoIn.write(90); // Mở 90 độ
delay(4000); // Giữ mở trong 4 giây
servoIn.write(0); // Đóng lại
}
}
}
2. Xử lý ảnh nhận diện biển số trên C# (EmguCV & Tesseract OCR)
using System;
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;
using Emgu.CV.OCR;
public class LicensePlateRecognizer
{
private Tesseract _ocrEngine;
public LicensePlateRecognizer(string tessDataPath)
{
// Khởi tạo Engine Tesseract OCR với tập ký tự chữ và số
_ocrEngine = new Tesseract(tessDataPath, "eng", OcrEngineMode.TesseractOnly);
_ocrEngine.SetVariable("tessedit_char_whitelist", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.");
}
public string ExtractLicensePlate(Image<Bgr, byte> inputImage)
{
// Bước 1: Chuyển đổi sang ảnh xám
Image<Gray, byte> grayImage = inputImage.Convert<Gray, byte>();
// Bước 2: Khử nhiễu bằng Gaussian Blur
Image<Gray, byte> blurredImage = grayImage.SmoothGaussian(5);
// Bước 3: Phát hiện biên bằng thuật toán Canny
Image<Gray, byte> cannyEdges = blurredImage.Canny(100, 50);
// Bước 4: Tìm kiếm Contours dạng cây
using (MemStorage storage = new MemStorage())
{
Contour<System.Drawing.Point> contours = cannyEdges.FindContours(
CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE,
RETR_TYPE.CV_RETR_TREE,
storage);
while (contours != null)
{
MCvBox2D box = contours.GetMinAreaRect();
// Lọc tỷ lệ khung chữ nhật đặc trưng của biển số xe (width/height ~ 1.5 đến 4.5)
double ratio = (double)box.size.Width / box.size.Height;
if ((ratio > 1.2 && ratio < 5.0) && (box.size.Width * box.size.Height > 1000))
{
grayImage.ROI = contours.GetBoundingRectangle();
_ocrEngine.Recognize(grayImage);
string detectedText = _ocrEngine.GetUTF8Text();
grayImage.ResetROI();
if (!string.IsNullOrWhiteSpace(detectedText))
return detectedText.Replace("\n", "").Trim();
}
contours = contours.HNext;
}
}
return string.Empty;
}
}
3. Xử lý đặt chỗ và kiểm tra hạn hủy vị trí trên PHP (Web Backend)
<?php
// booking_process.php - Xử lý đặt chỗ và tự động giải phóng vị trí quá 60 phút
$conn = new mysqli("localhost", "root", "", "parking_system");
if ($conn->connect_error) {
die("Kết nối CSDL thất bại: " . $conn->connect_error);
}
// Hủy các đơn đặt chỗ quá hạn 1 giờ chưa check-in
$expireQuery = "UPDATE tbl_Booking SET IsActive = 0
WHERE IsActive = 1 AND NOW() > ExpireTime";
$conn->query($expireQuery);
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$custName = $conn->real_escape_string($_POST['customer_name']);
$phone = $conn->real_escape_string($_POST['phone_number']);
$plate = $conn->real_escape_string($_POST['plate_number']);
$slotId = $conn->real_escape_string($_POST['slot_id']);
// Kiểm tra vị trí đỗ có đang trống và chưa bị đặt không
$checkSlot = $conn->query("SELECT * FROM tbl_Booking WHERE SlotID = '$slotId' AND IsActive = 1");
if ($checkSlot->num_rows == 0) {
$expireTime = date("Y-m-d H:i:s", strtotime("+1 hour"));
$insert = "INSERT INTO tbl_Booking (CustomerName, PhoneNumber, PlateNumber, SlotID, ExpireTime, IsActive)
VALUES ('$custName', '$phone', '$plate', '$slotId', '$expireTime', 1)";
if ($conn->query($insert) === TRUE) {
echo json_encode(["status" => "SUCCESS", "message" => "Đặt chỗ thành công! Vị trí giữ trong 60 phút."]);
} else {
echo json_encode(["status" => "ERROR", "message" => "Lỗi truy vấn hệ thống."]);
}
} else {
echo json_encode(["status" => "OCCUPIED", "message" => "Vị trí đã có người đặt trước!"]);
}
}
$conn->close();
?>
Kiểm thử và đánh giá hiệu năng
Hệ thống đã trải qua quy trình kiểm thử thực nghiệm 100 chu kỳ xe ra/vào liên tục trong các điều kiện thử nghiệm khác nhau.
+-----------------------------------------------------------------------------------+
| BENCHMARK & ACCURACY SUMMARY |
+-----------------------------------------------------------------------------------+
| Tiêu chí thử nghiệm | Điều kiện thực nghiệm | Kết quả đo lường thực tế |
+----------------------------+----------------------------+--------------------------+
| Độ nhạy đọc thẻ RFID RC522 | Khoảng cách 1.5 - 3.5 cm | 99.0% (99/100 lượt) |
| Nhận diện ký tự OCR (Ngày) | Ánh sáng khuếch tán 300lux | 88.0% (44/50 lượt) |
| Nhận diện ký tự (Nghiêng) | Góc nghiêng camera > 25° | 72.0% (36/50 lượt) |
| Thời gian nâng hạ Servo | Góc quay 0° - 90° - 0° | 4.0 giây/chu kỳ |
| Tổng thời gian toàn trình | Đọc thẻ -> ANPR -> Mở cổng | 1.8 - 2.5 giây/xe |
+-----------------------------------------------------------------------------------+
Bảng so sánh tính năng hoàn thành so với mục tiêu đề ra
| Hạng mục tính năng |
Kế hoạch ban đầu |
Kết quả hoàn thành |
Đánh giá mức độ đáp ứng |
| Đọc thẻ RFID tự động |
Chuẩn 13.56 MHz RC522 |
Hoàn thành mạch đọc + Buzzer báo |
Đạt $100%$ |
| Nhận diện biển số tự động |
Tách ký tự biển số |
Tách biên Canny + OCR EmguCV |
Đạt $88%$ (đạt yêu cầu mô hình) |
| Hiển thị thông tin LCD |
Màn hình 20x4 I2C |
Hiển thị trạng thái 6 vị trí đỗ |
Đạt $100%$ |
| Đóng mở Barrier cơ học |
Động cơ Servo mini |
Tự động nâng 4s khi thẻ đúng |
Đạt $95%$ |
| Web Portal đặt chỗ trực tuyến |
Đăng ký vị trí đỗ |
Giao diện PHP/MySQL đặt chỗ 1h |
Đạt $100%$ |
Đổi mới và đóng góp
- Kiến trúc xác thực an ninh hai lớp (Dual-Layer Logic Authentication): Khác biệt hoàn toàn với các bãi xe thẻ từ truyền thống chỉ so khớp mã thẻ, hệ thống tích hợp bộ lọc ràng buộc logic:
UID Thẻ $\leftrightarrow$ Biển số nhận diện từ Camera. Nếu phát hiện hành vi tráo thẻ sang phương tiện khác, hệ thống lập tức khóa cổng và kích hoạt cảnh báo tới nhân viên an ninh.
- Cấu trúc phân cấp đường bao cây (Contours Tree Hierarchy): Đồ án áp dụng cấu trúc dữ liệu dạng cây để quản lý các cạnh biên thu nhận từ giải thuật Canny, giúp phân biệt chính xác vùng biên ngoài của khung biển số với các vùng rỗng cục bộ bên trong từng ký tự số/chữ cái, nâng cao độ chính xác tiền xử lý ký tự trước khi đưa vào OCR.
- Mô hình quản trị lai (Hybrid Edge-IoT Architecture): Kết hợp giữa phần mềm cục bộ phản hồi thời gian thực trên máy trạm PC và dịch vụ Web từ xa trên nền tảng PHP/MySQL, tạo điều kiện cho người dùng chủ động đặt chỗ trước, giảm thiểu triệt để thời gian chạy xe lòng vòng tìm kiếm slot đỗ trong các tòa nhà cao tầng.
- Hiệu quả kinh tế - kỹ thuật đo lường được:
- Cắt giảm $100%$ chi phí in ấn vé giấy dùng một lần.
- Rút ngắn thời gian kiểm soát xe vào bãi từ $30\text{ s}$ xuống còn $< 3\text{ s}$ (cải thiện $90%$ tốc độ lưu thông).
- Triệt tiêu hoàn toàn hiện tượng thất thoát doanh thu thủ công nhờ cơ sở dữ liệu đồng bộ hóa minh bạch.
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế
Hệ thống hoàn toàn khả thi để ứng dụng trực tiếp tại:
- Tầng hầm chung cư, tòa nhà văn phòng quy mô vừa và nhỏ.
- Bãi giữ xe thông minh tại các bệnh viện, trường đại học, siêu thị.
- Trạm kiểm soát xe nội bộ của các khu công nghiệp, kho vận logistics.
Hướng dẫn triển khai và lắp đặt phần cứng
+-----------------------------------------------------------------------------------+
| DEPLOYMENT INSTRUCTIONS |
+-----------------------------------------------------------------------------------+
| 1. Phần cứng: |
| - Cấp nguồn Adapter 5V - 2A ổn định vào chân 5V của Arduino Uno R3. |
| - Đấu nối Module RC522: 3.3V->3.3V, RST->D9, MISO->D12, MOSI->D11, |
| SCK->D13, SDA->D10. |
| - Đấu nối Module LCD 20x4 qua I2C: VCC->5V, GND->GND, SDA->A4, SCL->A5. |
| - Đấu nối Cảm biến FC-51: Cấp nguồn 5V, chân Out nối tuần tự từ D8 đến D13. |
| |
| 2. Phần mềm & Máy chủ: |
| - Cài đặt XAMPP v7.2, kích hoạt Apache Server và MySQL Database. |
| - Import file cơ sở dữ liệu `parking_system.sql`. |
| - Cài đặt .NET Framework v4.5 và EmguCV v3.4 x86/x64 trên máy trạm Windows. |
| - Kết nối Camera USB độ phân giải tối thiểu 720p hướng thẳng làn xe vào/ra. |
+-----------------------------------------------------------------------------------+
Bảng dự toán chi phí phần cứng mô hình
| STT |
Thiết bị / Linh kiện |
Số lượng |
Đơn giá ước tính (VNĐ) |
Thành tiền (VNĐ) |
| 1 |
Bo mạch Arduino Uno R3 (ATmega328P) |
3 |
120.000 |
360.000 |
| 2 |
Module RFID RC522 (13.56 MHz) + Thẻ Tag |
2 |
45.000 |
90.000 |
| 3 |
Màn hình LCD 20x4 kèm Module I2C |
1 |
95.000 |
95.000 |
| 4 |
Cảm biến vật cản hồng ngoại FC-51 |
6 |
15.000 |
90.000 |
| 5 |
Động cơ Servo mini SG90 (5V) |
2 |
35.000 |
70.000 |
| 6 |
Còi Buzzer 5V + Nút nhấn + Điện trở |
4 |
5.000 |
20.000 |
| 7 |
Khung mô hình Formex, mica, dây nối |
1 bộ |
250.000 |
250.000 |
| TỔNG |
Tổng chi phí linh kiện phần cứng |
|
|
975.000 VNĐ |
Hiệu quả hoàn vốn (ROI): Đối với một điểm trông giữ xe quy mô 500 phương tiện, việc tự động hóa hoàn toàn giúp tiết giảm 2 nhân viên trực ca (tương đương tiết kiệm $12.000.000 - 15.000.000\text{ VNĐ/tháng}$), mang lại thời gian thu hồi vốn đầu tư chỉ trong vòng 4 – 6 tháng.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Module cảm biến hồng ngoại FC-51 dễ bị nhiễu tín hiệu quang khi tiếp xúc trực tiếp với nguồn bức xạ mặt trời gay gắt ngoài trời.
- Thuật toán OCR quang học truyền thống trên EmguCV phụ thuộc nhiều vào độ tương phản ánh sáng; độ chính xác suy giảm khi biển số xe bị bám bùn đất, cong vênh hoặc góc chụp bị nghiêng quá $30^\circ$.
- Cơ cấu nâng hạ barrier bằng động cơ Servo mini chỉ mang tính minh họa mô hình, chưa tích hợp cảm biến an toàn chống kẹp phương tiện.
- Nền tảng Web đặt chỗ chưa tích hợp chứng chỉ bảo mật mã hóa giao vận SSL/HTTPS và cơ chế thanh toán liên kết ngân hàng.
Hướng phát triển trong tương lai
- Nâng cấp thuật toán Deep Learning: Thay thế pipeline Canny + OCR truyền thống bằng các mô hình mạng nơ-ron tích chập hiện đại như YOLOv8 (phát hiện vùng biển số) kết hợp LPRNet/CRNN (nhận dạng chuỗi ký tự theo thời gian thực), nâng độ chính xác tổng thể lên $\ge 98%$.
- Mở rộng giao thức IoT công nghiệp: Thay thế đường truyền nối tiếp UART/USB bằng vi điều khiển ESP32 giao tiếp qua giao thức MQTT hoặc bus công nghiệp RS-485, cho phép quản lý tập trung hàng trăm làn xe phân tán qua Cloud Server.
- Tích hợp cổng thanh toán trực tuyến: Tự động tạo mã động VietQR / MoMo / ZaloPay hiển thị trực tiếp trên màn hình phụ tại trạm ra để khách hàng quét mã thanh toán không tiếp xúc.
Đối tượng hưởng lợi
+-----------------------------------------------------------------------------------+
| BENEFICIARY GROUPS |
+-----------------------------------------------------------------------------------+
| [SINH VIÊN & NGHIÊN CỨU SINH] |
| - Tài liệu tham khảo chuẩn mực về tích hợp liên ngành Cơ điện tử - CNTT - Xử lý ảnh|
| - Bộ mã nguồn mẫu C# EmguCV, lập trình nhúng C++ và thiết kế Web PHP/MySQL. |
| |
| [LẬP TRÌNH VIÊN & KỸ SƯ NHÚNG] |
| - Framework giao tiếp đa giao thức (SPI, I2C, UART) tin cậy giữa PC và Vi điều khiển|
| - Kiến trúc xử lý ảnh ANPR và phân đoạn ký tự dựa trên Contours Tree Hierarchy. |
| |
| [DOANH NGHIỆP & CHỦ BÃI XE] |
| - Giải pháp công nghệ chi phí thấp, triển khai nhanh chóng. |
| - Giảm 90% thời gian chờ đợi, tiết kiệm 100% chi phí in vé, chống thất thoát vốn. |
+-----------------------------------------------------------------------------------+
Câu hỏi thường gặp
1. Yêu cầu cấu hình máy tính để triển khai phần mềm quản lý là gì?
Máy tính trạm chỉ cần cấu hình tiêu chuẩn: CPU Intel Core i3 (thế hệ 4 trở lên) hoặc tương đương, RAM $4\text{ GB}$, ổ cứng còn trống tối thiểu $5\text{ GB}$, hệ điều hành Windows 7/10/11 (32-bit hoặc 64-bit), có cổng giao tiếp USB để kết nối Arduino và Camera độ phân giải tối thiểu HD 720p ($1280 \times 720$).
2. Hệ thống có thể mở rộng từ 6 vị trí lên 500 vị trí đỗ xe như thế nào?
Để mở rộng lên quy mô lớn, kiến trúc phần cứng sẽ chuyển đổi từ cảm biến nối dây đơn lẻ sang mạng cảm biến không dây Zigbee/LoRa hoặc cảm biến siêu âm gắn trần kết nối qua bus RS-485 truyền về bộ gom dữ liệu tập trung (Data Concentrator). Cơ sở dữ liệu chuyển từ LocalDB sang hệ quản trị CSDL phân tán MySQL/PostgreSQL trên Cloud Server.
3. Quy trình xử lý khi khách hàng làm mất thẻ từ RFID diễn ra như thế nào?
Khi mất thẻ, nhân viên quản trị kích hoạt chức năng "Xử lý mất thẻ" trên phần mềm C#. Nhân viên nhập biển số xe thực tế của khách; hệ thống sẽ truy vấn CSDL để đối chiếu hình ảnh chụp lúc xe vào, thời gian gửi và thông tin cá nhân. Sau khi xác thực đúng chủ xe, nhân viên ấn nút mở cưỡng bức barrier và cập nhật hủy thẻ cũ trên hệ thống.
4. Hệ thống hoạt động ra sao nếu xảy ra sự cố mất kết nối mạng Internet?
Hệ thống vận hành theo mô hình phân tán độc lập: Toàn bộ quá trình quét thẻ RFID, nhận diện biển số ANPR và điều khiển barrier đóng/mở đều thực thi cục bộ (Offline) giữa Arduino và máy tính trạm qua mạng nội bộ. Kết nối Internet chỉ dùng cho dịch vụ đặt chỗ trước (Web Booking); khi mất mạng, bãi xe vẫn hoạt động đóng/mở bình thường.
5. Chi phí đầu tư thực tế cho một làn xe thương mại là bao nhiêu và thời gian hoàn vốn?
Chi phí triển khai một trạm kiểm soát thương mại hoàn chỉnh (gồm 2 Camera IP chuyên dụng, 1 Barrier tự động công nghiệp, 1 đầu đọc RFID tầm xa, máy tính trạm và cảm biến vòng từ) dao động từ $25.000.000 - 35.000.000\text{ VNĐ/làn}$. Với doanh thu trông giữ xe trung bình, thời gian thu hồi toàn bộ chi phí đầu tư (ROI) là khoảng 4 đến 6 tháng.
Kết luận
Đồ án tốt nghiệp "Thiết kế, thi công mô hình bãi giữ xe ô tô" đã giải quyết thành công bài toán tự động hóa kiểm soát phương tiện thông qua sự kết hợp nhịp nhàng giữa kỹ thuật phần cứng nhúng (Arduino, RFID RC522, LCD I2C) và công nghệ phần mềm xử lý ảnh hiện đại (C# EmguCV, thuật toán Canny, mô hình Contours dạng cây và Tesseract OCR), song hành cùng nền tảng Web đặt chỗ IoT tiện lợi.
Kết quả thử nghiệm đạt tỷ lệ đọc thẻ $99%$ và độ chính xác nhận diện biển số $88%$ với thời gian xử lý toàn trình chỉ từ $1.8 - 2.5\text{ giây/xe}$ đã chứng minh tính khả thi, độ tin cậy và tiềm năng thương mại hóa mạnh mẽ của đề tài. Đây không chỉ là công trình học thuật xuất sắc của sinh viên ngành Điện tử Công nghiệp mà còn là giải pháp kỹ thuật thực tiễn đóng góp vào tiến trình xây dựng đô thị thông minh (Smart City) tại Việt Nam.