Giới thiệu dự án

Sự gia tăng nhanh chóng của phương tiện cá nhân, đặc biệt là xe máy tại các đô thị lớn và các khuôn viên đại học quy mô trên 20.000 sinh viên tại Việt Nam, đang tạo ra áp lực khổng lồ lên hạ tầng giao thông tĩnh. Theo thống kê giao thông đô thị, thời gian trung bình để xử lý một lượt gửi/lấy xe bằng phương pháp thủ công (vé giấy hoặc bấm lỗ) dao động từ 30 đến 45 giây vào giờ cao điểm, gây ùn tắc kéo dài tại các cổng kiểm soát và tiêu tốn hàng trăm giờ lao động mỗi tháng của đội ngũ bảo vệ.

Đề tài "Thiết kế hệ thống bãi đỗ xe sinh viên" do sinh viên Quách Thiện Thành thực hiện dưới sự hướng dẫn của ThS. Nguyễn Ngô Lâm tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh (HCMUTE) chuyên ngành Công nghệ Kỹ thuật Máy tính giải quyết trực tiếp bài toán tự động hóa quy trình quản lý bãi đỗ xe trường học thông qua sự kết hợp giữa máy tính nhúng, công nghệ nhận dạng vô tuyến và kiến trúc cơ sở dữ liệu thời gian thực trên nền tảng điện toán đám mây.

                  +-----------------------------------+
                  |         NGUỒN CẤP NĂNG LƯỢNG      |
                  +-----------------+-----------------+
                                    |
+-------------------+     +---------v---------+     +-------------------+
|   KHỐI NGÕ VÀO    |     |   KHỐI XỬ LÝ TT   |     |   KHỐI HIỂN THỊ   |
| - RFID RC522 (SPI)| --> |   Raspberry Pi 3  | --> | - LCD 16x2 I2C    |
| - Keypad 4x4 (GPIO|     |   (Linux/Raspbian)|     |   (PCF8574)       |
+-------------------+     +---------+---------+     +-------------------+
                                    | (WiFi 802.11 b/g/n)
                          +---------v---------+
                          | FIREBASE REALTIME |
                          |     DATABASE      |
                          +---------+---------+
                                    | (HTTPS / WebSocket)
                          +---------v---------+
                          |   GIAO DIỆN WEB   |
                          | (Client Management|
                          +-------------------+

Vấn đề thực tiễn và bài toán kỹ thuật

Hệ thống bãi đỗ xe truyền thống bộc lộ những hạn chế cố hữu:

  • Tắc nghẽn giờ cao điểm: Tốc độ xử lý thủ công chậm, dễ gây tắc nghẽn cục bộ tại cổng ra vào.
  • Rủi ro thất thoát và tráo đổi vé: Vé giấy dễ rách, làm giả hoặc đánh rơi; việc đối chiếu biển số và người gửi phụ thuộc hoàn toàn vào mắt thường của bảo vệ.
  • Thiếu khả năng giám sát tức thời: Ban quản lý không có số liệu chính xác theo thời gian thực về dung lượng bãi đỗ, lịch sử ra/vào và trạng thái phương tiện.
  • Trường hợp ngoại lệ không có phương án dự phòng: Khi sinh viên quên thẻ, quy trình xác minh thủ công rất phức tạp và mất thời gian.

Mục tiêu nghiên cứu

  1. Xây dựng khối phần cứng trung tâm trên nền tảng máy tính nhúng Raspberry Pi 3, tích hợp giao tiếp ngoại vi qua các chuẩn giao tiếp công nghiệp SPI, I2C và GPIO.
  2. Tích hợp module RFID-RC522 (tần số 13.56 MHz) đạt tốc độ quét dưới 100ms và bàn phím ma trận 4x4 phục vụ cơ chế xác thực dự phòng.
  3. Thiết kế hệ thống cơ sở dữ liệu đám mây Firebase Realtime Database nhằm lưu trữ, cập nhật trạng thái ra/vào và đồng bộ hóa tức thời qua mạng không dây Wi-Fi.
  4. Xây dựng giao diện web cho phép quản trị viên và sinh viên tra cứu lịch sử, kiểm soát vị trí xe và cập nhật thông tin tài khoản theo thời gian thực.

Phương pháp tiếp cận và phạm vi

  • Giải pháp: Xây dựng mô hình nhúng biên (Edge Computing) sử dụng Raspberry Pi làm bộ điều khiển trung tâm (Master Controller), thu thập dữ liệu xác thực danh tính tại trạm kiểm soát và đẩy trực tiếp lên Cloud Database qua Wi-Fi tiêu chuẩn IEEE 802.11n.
  • Phạm vi: Áp dụng cho bãi đỗ xe máy sinh viên quy mô vừa và nhỏ; kiểm soát nhận dạng qua mã định danh thẻ RFID 32-bit (UID), nhập mã pin dự phòng qua bàn phím ma trận, phản hồi trạng thái qua màn hình LCD 16x2 I2C và quản lý trạng thái qua Web Dashboard.

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

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

Tiêu chí Bãi xe vé giấy truyền thống Bãi xe thẻ từ cục bộ (PC + Camera) Hệ thống IoT nhúng (Đề tài đề xuất)
Tốc độ xác thực 30 - 45 giây/lượt 2 - 5 giây/lượt < 1.0 giây/lượt
Chi phí triển khai Rất thấp (ban đầu) Rất cao (PC, Barie, Camera, Server) Thấp - Tối ưu (Board nhúng + Cloud)
Độ tin cậy dữ liệu Rất thấp, dễ gian lận Cao, phụ thuộc máy chủ nội bộ Rất cao (Đồng bộ Cloud mã hóa SSL)
Cơ chế dự phòng Ghi sổ thủ công Nhập tay trên máy tính Tích hợp Keypad ma trận 4x4 tại chỗ
Khả năng mở rộng Không Phức tạp (Cần kéo cáp LAN/Server) Linh hoạt qua kết nối Wi-Fi/NoSQL Cloud

Phân loại yêu cầu theo mô hình MoSCoW

  • Must have (Bắt buộc): Đọc thẻ RFID Mifare 13.56MHz qua giao tiếp SPI; ghi nhận thời gian thực (Timestamp) khi xe vào/ra; hiển thị thông báo trên LCD 16x2; đồng bộ dữ liệu với Firebase qua Wi-Fi.
  • Should have (Nên có): Bàn phím ma trận 4x4 quét hàng/cột hỗ trợ xác thực mã sinh viên khi mất thẻ; giao diện web quản lý phân quyền (Admin/User).
  • Could have (Có thể có): Cơ chế xác thực mật khẩu cấp 2; thống kê lưu lượng xe theo ngày/tuần trên giao diện web.
  • Won't have (Chưa thực hiện): Nhận dạng biển số tự động qua camera (ALPR) và hệ thống cần gạt Barie tự động cơ khí trong pha thử nghiệm này.

Thiết kế hệ thống

Technology Stack và phiên bản phần cứng/phần mềm

  • Khối xử lý trung tâm: Raspberry Pi 3 Model B (Broadcom BCM2837 64-bit ARMv8 Quad-Core Cortex-A53 @ 1.2GHz, 1GB LPDDR2 RAM, tích hợp BCM43438 Wi-Fi 802.11n 2.4GHz).
  • Hệ điều hành: Raspbian OS (Debian-based Kernel 4.19+).
  • Môi trường lập trình: Python 3.7 với các thư viện RPi.GPIO, spidev, mfrc522, smbus2 (I2C driver).
  • Module cảm biến & hiển thị:
    • Module RFID RC522: IC NXP MFRC522, chuẩn giao tiếp SPI (Serial Peripheral Interface), tần số 13.56 MHz, tốc độ truyền SPI lên tới 10 Mbps.
    • Màn hình LCD 16x2 kết hợp IC mở rộng PCF8574: Chuẩn I2C (Inter-Integrated Circuit), tốc độ xung nhịp 100 kHz (Standard-mode).
    • Module ma trận phím 4x4: 16 nút bấm, sử dụng 8 chân GPIO quét ma trận.
  • Cơ sở dữ liệu đám mây: Google Firebase Realtime Database (NoSQL JSON Data Tree, kết nối an toàn qua chứng chỉ SSL 2048-bit).
                      +------------------------------------------+
                      |       FIREBASE REALTIME DATABASE         |
                      +--------------------+---------------------+
                                           |
                    +----------------------+----------------------+
                    |                                             |
          +---------v---------+                         +---------v---------+
          |      users/       |                         |   parking_logs/   |
          +---------+---------+                         +---------+---------+
                    |                                             |
          +---------v---------+                         +---------v---------+
          |  {student_id}     |                         |    {log_id}       |
          |  - name: string   |                         |  - uid: string    |
          |  - rfid_uid: string                         |  - student_id: str|
          |  - pin_code: string                         |  - timestamp: int |
          |  - status: int    |                         |  - status: "IN"   |
          +-------------------+                         +-------------------+

Sơ đồ kết nối phần cứng chi tiết

Module ngoại vi Chân tín hiệu module Chân GPIO Raspberry Pi 3 Số chân vật lý (Pin Number) Chức năng kỹ thuật
RFID-RC522 SDA (SS) GPIO 8 Pin 24 SPI Chip Select 0 (CE0)
SCK GPIO 11 Pin 23 SPI Serial Clock (SCLK)
MOSI GPIO 10 Pin 19 SPI Master Out Slave In
MISO GPIO 9 Pin 21 SPI Master In Slave Out
RST GPIO 25 Pin 22 Reset Line
3.3V / GND 3.3V / GND Pin 1 / Pin 6 Nguồn cấp hoạt động (13-26mA)
LCD 16x2 I2C SDA GPIO 2 Pin 3 I2C Serial Data line
(PCF8574) SCL GPIO 3 Pin 5 I2C Serial Clock line
VCC / GND 5V / GND Pin 2 / Pin 9 Nguồn cấp LCD
Keypad 4x4 Row 1 - Row 4 GPIO 6, 13, 19, 26 Pin 31, 33, 35, 37 Quét ngõ vào hàng (Pull-up)
Col 1 - Col 4 GPIO 12, 16, 20, 21 Pin 32, 36, 38, 40 Xuất tín hiệu mức Logic 0 cột

Implementation và kết quả

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

Toàn bộ logic nhúng trên Raspberry Pi được phát triển bằng ngôn ngữ Python, áp dụng mô hình hướng sự kiện (Event-Driven) kết hợp đa luồng để đảm bảo quá trình đọc cảm biến không làm gián đoạn việc truyền nhận dữ liệu mạng.

       +------------------------------------+
       |          BẮT ĐẦU HỆ THỐNG          |
       +-----------------+------------------+
                         |
                         v
       +------------------------------------+
       |   KHỞI TẠO SPI, I2C, GPIO, WI-FI   |
       |     KẾT NỐI REALTIME DATABASE      |
       +-----------------+------------------+
                         |
                         v
       +------------------------------------+
+----> |       CHỜ TÍN HIỆU NGÕ VÀO         |
|      +-----------------+------------------+
|                        |
|             +----------+----------+
|             |                     |
|      (Quét thẻ RFID)       (Nhập mã Keypad)
|             |                     |
|             v                     v
|      +---------------+     +---------------+
|      | Đọc UID qua   |     | Quét ma trận  |
|      | giao tiếp SPI |     | 4x4 qua GPIO  |
|      +-------+-------+     +-------+-------+
|              |                     |
|              +----------+----------+
|                         |
|                         v
|      +------------------------------------+
|      | TRUY VẤN DATABASE & XÁC THỰC UID   |
|      +------------------+-----------------+
|                         |
|           +-------------+-------------+
|           |                           |
|       [HỢP LỆ]                   [KHÔNG HỢP LỆ]
|           |                           |
|           v                           v
|  +-------------------+       +--------------------+
|  | - Đổi Status      |       | - Báo lỗi LCD      |
|  | - Đẩy log Firebase|       | - Ghi log từ chối  |
|  | - Hiển thị LCD    |       +---------+----------+
|  +--------+----------+                 |
|           |                            |
+-----------+----------------------------+

Thuật toán quét bàn phím ma trận 4x4 (Row-Column Scanning Algorithm)

Thuật toán quét ma trận phím hoạt động với độ phức tạp thời gian $O(1)$, kiểm tra từng cột bằng cách kéo mức logic xuống thấp (Low - 0V) trong khi các hàng được thiết lập điện trở kéo lên nội (Pull-up Resistor, trạng thái mặc định High - 3.3V).

import RPi.GPIO as GPIO
import time

MATRIX = [
    ['1', '2', '3', 'A'],
    ['4', '5', '6', 'B'],
    ['7', '8', '9', 'C'],
    ['*', '0', '#', 'D']
]

ROW_PINS = [6, 13, 19, 26]
COL_PINS = [12, 16, 20, 21]

def setup_keypad():
    GPIO.setmode(GPIO.BCM)
    for r in ROW_PINS:
        GPIO.setup(r, GPIO.IN, pull_up_down=GPIO.PUD_UP)
    for c in COL_PINS:
        GPIO.setup(c, GPIO.OUT)
        GPIO.output(c, GPIO.HIGH)

def scan_keypad():
    for c_idx, c_pin in enumerate(COL_PINS):
        GPIO.output(c_pin, GPIO.LOW)  # Kéo cột xuống mức 0
        for r_idx, r_pin in enumerate(ROW_PINS):
            if GPIO.input(r_pin) == GPIO.LOW:  # Phát hiện phím được nhấn
                while GPIO.input(r_pin) == GPIO.LOW:
                    time.sleep(0.02)  # Chống dội phím (Debounce)
                GPIO.output(c_pin, GPIO.HIGH)
                return MATRIX[r_idx][c_idx]
        GPIO.output(c_pin, GPIO.HIGH)
    return None

Module đọc thẻ RFID RC522 và đồng bộ Firebase Realtime

Giao thức SPI cho phép Master (Raspberry Pi) đọc dữ liệu UID từ chip MFRC522 thông qua thanh ghi dữ liệu FIFO với tốc độ quét cao và tính toàn vẹn dữ liệu nghiêm ngặt.

from mfrc522 import SimpleMFRC522
import firebase_admin
from firebase_admin import credentials, db
import time

# Khởi tạo SDK Firebase Admin với chứng chỉ SSL
cred = credentials.Certificate('serviceAccountKey.json')
firebase_admin.initialize_app(cred, {
    'databaseURL': 'https://smart-parking-hcmute-default-rtdb.firebaseio.com/'
})

reader = SimpleMFRC522()

def process_parking_event():
    print("Hệ thống sẵn sàng: Quẹt thẻ RFID...")
    try:
        card_id, text = reader.read()
        uid_str = str(hex(card_id)).upper().strip()
        timestamp = int(time.time())
        
        user_ref = db.reference(f'/users/{uid_str}')
        user_data = user_ref.get()
        
        if user_data:
            current_status = user_data.get('status', 0)
            new_status = 1 if current_status == 0 else 0
            direction = "VÀO" if new_status == 1 else "RA"
            
            # Cập nhật trạng thái người dùng
            user_ref.update({'status': new_status, 'last_action': timestamp})
            
            # Ghi log lịch sử thời gian thực
            log_ref = db.reference('/parking_logs')
            log_ref.push({
                'uid': uid_str,
                'student_id': user_data.get('student_id', 'UNKNOWN'),
                'direction': direction,
                'timestamp': timestamp
            })
            print(f"Xác thực thành công: Sinh viên {user_data.get('name')} - Hướng: {direction}")
        else:
            print("CẢNH BÁO: Thẻ không hợp lệ hoặc chưa được đăng ký!")
            
    except Exception as e:
        print(f"Lỗi giao tiếp hệ thống: {str(e)}")

Kiểm thử và đánh giá hiệu năng

Hệ thống được vận hành thử nghiệm với tập mẫu 200 lượt ra/vào liên tục trong các điều kiện môi trường khác nhau để đo đạc độ ổn định của liên kết phần cứng và độ trễ truyền thông đám mây.

Kịch bản kiểm thử Số mẫu thực hiện Tỷ lệ thành công Thời gian phản hồi trung bình Ghi chú kỹ thuật
Đọc thẻ RFID chuẩn (0 - 40mm) 100 lần 100% 42.5 ms Tốc độ SPI ổn định tại 10 Mbps
Đọc thẻ góc nghiêng (> 45 độ) 30 lần 86.6% 65.0 ms Suy hao từ trường 13.56MHz
Xác thực dự phòng qua Keypad 30 lần 100% 120.0 ms Thời gian xử lý debounce 20ms
Đồng bộ Firebase (Mạng Wi-Fi tốt) 100 lần 100% 185.0 ms Ping mạng cục bộ 15ms
Đồng bộ Firebase (Mạng suy hao) 20 lần 95.0% 750.0 ms Cơ chế retry tự động của Firebase
+-----------------------------------------------------------------------+
|              PHÂN BỐ THỜI GIAN ĐÁP ỨNG TOÀN TRÌNH (ms)                |
+-----------------------------------------------------------------------+
|  [Đọc RFID SPI]  ===> 42.5 ms (18.1%)                                 |
|  [Xử lý CPU Pi]  ===> 7.5 ms (3.2%)                                   |
|  [Firebase Sync] ====> 185.0 ms (78.7%)                               |
|  -------------------------------------------------------------------  |
|  TỔNG THỜI GIAN TRUNG BÌNH: 235.0 ms / LƯỢT XÁC THỰC                 |
+-----------------------------------------------------------------------+

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

  1. Kiến trúc nhúng tối ưu thay thế máy trạm cồng kềnh: Thay vì yêu cầu một bộ máy tính để bàn (PC công suất 300W-500W) đặt tại mỗi cổng kiểm soát, hệ thống sử dụng board nhúng Raspberry Pi 3 tiêu thụ điện năng trung bình chỉ 3.5W - 5W, giảm hơn 98% điện năng tiêu thụ tại các chốt trực.
  2. Loại bỏ hạ tầng máy chủ cục bộ (Zero-On-Premises Infrastructure): Việc ứng dụng Firebase Realtime Database giúp loại bỏ hoàn toàn chi phí mua sắm, thiết lập và bảo trì máy chủ SQL nội bộ (On-premises Server). Cơ chế Serverless tự động mở rộng theo lưu lượng truy vấn thực tế.
  3. Cơ chế xác thực dự phòng tại chỗ qua bàn phím ma trận (Two-Way Fallback): Khắc phục nhược điểm "tắc nghẽn khi mất thẻ" của các bãi xe thẻ từ thông thường bằng cách cho phép sinh viên nhập mã định danh số (PIN/Student ID) trực tiếp trên bàn phím ma trận 4x4, kích hoạt xác thực hai bước nhanh chóng.
  4. Tối ưu hóa bus truyền thông phần cứng: Việc kết hợp vi mạch chuyển đổi I2C PCF8574 cho màn hình LCD giúp giảm số đường tín hiệu điều khiển từ 8 chân dữ liệu (theo chuẩn HD44780 4-bit/8-bit) xuống còn đúng 2 dây tín hiệu ($SDA, SCL$), giải phóng tài nguyên GPIO trên bo mạch nhúng để dễ dàng tích hợp các cảm biến phụ trợ khác.

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

Yêu cầu triển khai hệ thống

  • Yêu cầu phần cứng: 01 Board Raspberry Pi 3 Model B kèm nguồn 5V/2.5A DC ổn định; 01 Module đọc thẻ RFID RC522; 01 Module LCD 1602 kèm mạch I2C; 01 Bàn phím ma trận 4x4; thẻ từ RFID chuẩn Mifare Classic 1K (13.56 MHz).
  • Yêu cầu mạng: Điểm truy cập Wi-Fi băng tần 2.4 GHz với băng thông tối thiểu 1 Mbps tại trạm soát vé; cổng kết nối HTTPS (Port 443) ra Internet mở sẵn cho Cloud sync.
  • Yêu cầu phần mềm: Raspbian OS Lite hoặc Desktop, Python 3.7+ cài đặt thư viện điều khiển chân cắm và Firebase Admin SDK.
                    +--------------------------------+
                    |       CỔNG RA / VÀO BÃI XE     |
                    +---------------+----------------+
                                    |
                    +---------------v----------------+
                    |  TRẠM THIẾT BỊ NHÚNG CONTROLLER|
                    |  - Raspberry Pi 3 Box          |
                    |  - Đầu đọc thẻ RC522 mặt ngoài |
                    |  - Bàn phím nhập mã dự phòng   |
                    |  - LCD hướng dẫn sinh viên     |
                    +---------------+----------------+
                                    | (Wi-Fi 802.11n)
                    +---------------v----------------+
                    |     ACCESS POINT NỘI BỘ        |
                    +---------------+----------------+
                                    | (Internet Cáp quang)
                    +---------------v----------------+
                    |    GOOGLE CLOUD / FIREBASE     |
                    +---------------+----------------+
                                    |
            +-----------------------+-----------------------+
            |                                               |
+-----------v-----------+                       +-----------v-----------+
|    BAN QUẢN LÝ XE     |                       |   SINH VIÊN TRA CỨU   |
| (Web Dashboard Admin) |                       |  (Smartphone / Laptop)|
+-----------------------+                       +-----------------------+

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

  1. Quy trình gửi xe (Check-in):
    • Sinh viên đưa thẻ sinh viên (tích hợp chip RFID) lại gần đầu đọc RC522 ở khoảng cách $\le 4$ cm.
    • Raspberry Pi đọc mã UID, kiểm tra trạng thái trên Firebase. Nếu trạng thái là OUT (hoặc mới), hệ thống chuyển thành IN, lưu mốc thời gian $T_1$, hiển thị lời chào "XIN MOI VAO" trên LCD và kích hoạt tín hiệu mở cổng.
  2. Quy trình lấy xe (Check-out):
    • Sinh viên quẹt thẻ tại cổng ra. Hệ thống kiểm tra thấy trạng thái IN, đối chiếu thông tin chủ sở hữu, chuyển trạng thái thành OUT, ghi mốc thời gian $T_2$, hiển thị "TAM BIET" trên LCD.
  3. Quy trình xử lý sự cố quên/mất thẻ:
    • Sinh viên sử dụng bàn phím ma trận 4x4 nhập trực tiếp Mã số sinh viên (MSSV) và mã PIN cá nhân đã đăng ký. Hệ thống truy vấn trực tiếp bản ghi Firebase tương ứng và xử lý lượt gửi/lấy xe tương đương như khi quét thẻ.

Ước tính hiệu quả kinh tế (ROI)

  • Chi phí phần cứng: Ước tính dưới 1.500.000 VNĐ cho mỗi cổng kiểm soát (Raspberry Pi, cảm biến, màn hình, phím ma trận, vỏ hộp).
  • Chi phí vận hành: Miễn phí dịch vụ đám mây với gói Firebase Spark (Free Tier) đáp ứng tới 50.000 kết nối đồng thời và 100.000 lượt ghi mỗi ngày.
  • Tiết kiệm chi phí: Giảm 70% chi phí in ấn vé giấy hàng năm và giảm 50% nhân sự bảo vệ trực soát vé thủ công tại các cổng trường.

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

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

  • Chưa tích hợp camera nhận diện biển số (ALPR): Hệ thống mới xác thực dựa trên mã định danh thẻ UID và mã PIN, chưa có bước so khớp tự động hình ảnh biển số xe thực tế để chống tuyệt đối hành vi tráo xe trong bãi.
  • Phụ thuộc vào đường truyền Internet: Khi mất kết nối Wi-Fi hoàn toàn, khả năng đồng bộ dữ liệu với Firebase bị gián đoạn (mặc dù Firebase SDK có hỗ trợ cache cục bộ nhưng việc xác thực tài khoản mới cần kết nối mạng).
  • Khoảng cách quét thẻ còn ngắn: Module RC522 hoạt động ở cự ly $0 - 5$ cm, đòi hỏi sinh viên phải dừng hẳn xe và đưa thẻ sát vào đầu đọc.

Hướng phát triển nâng cấp

  • Tích hợp Camera AI & Mô hình Deep Learning (YOLOv8/SSD MobileNet): Kết nối Camera Module v2 qua cổng CSI của Raspberry Pi để tự động chụp ảnh, cắt vùng biển số và nhận dạng ký tự quang học (OCR) song song với thao tác quét thẻ.
  • Chuyển đổi sang chuẩn RFID UHF (Ultra High Frequency): Nâng cấp dải tần lên 860-960 MHz cho phép tầm quét xa từ 3 - 6 mét, giúp sinh viên không cần dừng xe quẹt thẻ thủ công.
  • Phát triển ứng dụng Mobile App (Flutter/React Native): Tích hợp mã QR Code động và tính năng thông báo tức thời (Push Notification) qua Firebase Cloud Messaging (FCM) mỗi khi xe được đưa vào hoặc ra khỏi bãi đỗ.

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

+---------------------------------------------------------------------------------+
|                              ĐỐI TƯỢNG HƯỞNG LỢI                                |
+-----------------------+------------------------+--------------------------------+
|       SINH VIÊN       |       NHÀ TRƯỜNG       |         LẬP TRÌNH VIÊN         |
|  - Rút ngắn thời gian |  - Tiết kiệm 98% điện  |  - Code mẫu chuẩn kiến trúc    |
|    chờ gửi xe < 1.0s  |  - Giảm 50% nhân sự    |  - Tham khảo bus SPI/I2C/GPIO  |
|  - Dự phòng mất thẻ   |  - Báo cáo số liệu tức |  - Tích hợp Cloud Serverless   |
|    qua mã PIN tại chỗ |    thời trên Dashboard |    trực tiếp trên Raspberry Pi |
+-----------------------+------------------------+--------------------------------+
  • Sinh viên & Người dùng: Giảm thiểu thời gian chờ đợi tại cổng bãi xe từ 45 giây xuống dưới 1 giây; chủ động tra cứu lịch sử gửi xe và số dư/thông tin tài khoản trên website cá nhân; không lo ngại tình trạng mất vé giấy bị phạt tiền.
  • Nhà trường & Đơn vị vận hành bãi xe: Hiện đại hóa hạ tầng quản trị khuôn viên thông minh (Smart Campus); nắm bắt chính xác mật độ phương tiện theo biểu đồ thời gian thực; giảm thiểu chi phí vật tư tiêu hao và sự cố tiêu cực trong giữ xe.
  • Kỹ sư nhúng & Sinh viên nghiên cứu: Cung cấp tài liệu tham khảo hoàn chỉnh từ thiết kế sơ đồ nguyên lý phần cứng, kỹ thuật lập trình giao tiếp ngoại vi cấp thấp (Low-level Peripheral Communication) trên Linux đến kỹ thuật đồng bộ dữ liệu đám mây NoSQL.

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

1. Hệ thống có thể hoạt động được không nếu mạng Wi-Fi tại bãi xe bị mất kết nối đột ngột?

Raspberry Pi chạy ứng dụng Python với Firebase SDK có hỗ trợ cơ chế lưu bộ nhớ đệm (Local Cache Persistence). Khi mất mạng, hệ thống vẫn có thể đọc mã UID từ phần cứng và ghi tạm vào bộ nhớ cục bộ (SQLite hoặc file JSON trên thẻ nhớ). Ngay khi kết nối Wi-Fi được khôi phục, tiến trình ngầm sẽ tự động đồng bộ hóa (Flush Sync) toàn bộ nhật ký ra/vào chưa được gửi lên máy chủ Firebase mà không làm mất mát dữ liệu.

2. Tần số hoạt động của RFID RC522 có gây can nhiễu với sóng Wi-Fi của Raspberry Pi không?

Hoàn toàn không. Module RFID-RC522 hoạt động ở tần số vô tuyến 13.56 MHz (băng tần HF - High Frequency), trong khi chip mạng không dây BCM43438 của Raspberry Pi 3 hoạt động ở băng tần vi ba 2.4 GHz (chuẩn 802.11 b/g/n). Hai tần số này cách nhau rất xa trong phổ điện từ nên không xảy ra hiện tượng can nhiễu chéo (Cross-talk Interference).

3. Tại sao lại dùng module PCF8574 cho LCD thay vì nối trực tiếp các chân LCD vào Raspberry Pi?

LCD 16x2 sử dụng vi điều khiển chuẩn HD44780 ở chế độ tối thiểu (4-bit mode) đòi hỏi ít nhất 6 chân GPIO ($RS, EN, D4, D5, D6, D7$). Việc cắm trực tiếp sẽ chiếm dụng nhiều chân vật lý của Raspberry Pi, gây khó khăn cho việc mở rộng bàn phím 4x4 (cần 8 chân) và module SPI (cần 5 chân). Mạch đệm PCF8574 chuyển đổi giao tiếp song song của LCD thành giao tiếp nối tiếp 2 dây I2C ($SDA$ và $SCL$), giúp tiết kiệm 4-6 chân GPIO quý giá trên máy tính nhúng.

4. Độ an toàn và chống trùng lặp mã thẻ của hệ thống được đảm bảo như thế nào?

Mỗi thẻ RFID Mifare Classic 1K đều có một mã định danh duy nhất (UID - Unique Identifier) gồm 4 byte (32-bit) hoặc 7 byte được nhà sản xuất nạp cố định vào Sector 0 của chip từ lúc xuất xưởng và không thể chỉnh sửa bằng các đầu đọc thông thường. Với không gian định danh 32-bit, có hơn $2^{32} \approx 4.29$ tỷ tổ hợp mã khác nhau, đảm bảo xác suất trùng lặp giữa hai thẻ sinh viên gần như bằng không.

5. Chi phí duy trì cơ sở dữ liệu Firebase Realtime hàng tháng là bao nhiêu?

Với quy mô một bãi đỗ xe sinh viên trường đại học (khoảng 3.000 đến 10.000 lượt xe ra/vào mỗi ngày), lưu lượng dữ liệu đọc/ghi và băng thông tải về hoàn toàn nằm trong giới hạn miễn phí của gói Firebase Spark Plan (1 GB lưu trữ dữ liệu, 10 GB/tháng băng thông tải mạng, 50.000 kết nối đồng thời). Do đó, chi phí máy chủ hàng tháng bằng 0 VNĐ.


Kết luận

Đề tài "Thiết kế hệ thống bãi đỗ xe sinh viên" của tác giả Quách Thiện Thành đã giải quyết trọn vẹn bài toán ứng dụng công nghệ IoT vào thực tiễn quản lý trường học thông minh. Bằng việc làm chủ các giao tiếp phần cứng quan trọng (SPI, I2C, GPIO) trên máy tính nhúng Raspberry Pi 3 và kết hợp linh hoạt với dịch vụ đám mây Firebase Realtime Database, công trình đã hiện thực hóa một hệ thống soát vé tự động có chi phí chế tạo thấp, thời gian xử lý nhanh vượt trội (< 1.0 giây/lượt) và độ ổn định cao.

Kết quả của đề tài không chỉ đóng vai trò là một mô hình mẫu hoàn chỉnh cho các giải pháp bãi giữ xe thông minh tại các cơ sở đào tạo, mà còn là nguồn tài liệu kỹ thuật có giá trị tham khảo cao cho cộng đồng nghiên cứu hệ thống nhúng và kỹ thuật máy tính. Hướng phát triển tích hợp camera nhận diện biển số AI và công nghệ RFID tầm xa sẽ tiếp tục hoàn thiện giải pháp, hướng tới triển khai thương mại hóa và ứng dụng trên diện rộng trong hạ tầng giao thông thông minh (Smart Transportation) tương lai.