Giới thiệu dự án

Bối cảnh và vấn đề thực tiễn

Trong kỷ nguyên đô thị hóa và sự bùng nổ của các mô hình nhà ở thông minh (Smart Home), hệ thống an ninh và kiểm soát truy cập (Access Control) đóng vai trò then chốt trong việc bảo vệ tài sản và tính mạng con người. Theo các báo cáo khảo sát an ninh tòa nhà hiện đại, hơn 65% các vụ xâm nhập trái phép tại khu dân cư bắt nguồn từ sự yếu kém của các ổ khóa cơ khí truyền thống. Khóa cơ khí tồn tại nhiều hạn chế cố hữu: dễ bị phá hoại bằng các kỹ thuật bẻ khóa (lock picking), rủi ro làm mất chìa, không hỗ trợ giám sát từ xa và hoàn toàn không có khả năng lưu trữ nhật ký (audit log) ra vào.

Song song đó, nhu cầu kiểm soát lưu thông tại các khu chung cư, cơ quan, phòng nghiên cứu đòi hỏi hệ thống đóng mở tự động nhằm hạn chế tiếp xúc trực tiếp, hỗ trợ lưu thông thông suốt và duy trì môi trường điều hòa nhiệt độ ổn định, tránh thất thoát điện năng. Để giải quyết triệt để bài toán này, việc ứng dụng các dòng vi điều khiển 32-bit hiệu năng cao kết hợp cùng nhận dạng vô tuyến RFID (Radio Frequency Identification) và phần mềm quản trị tập trung là giải pháp cấp thiết và có tính ứng dụng thực tiễn cao.

Tuyên bố vấn đề (Problem Statement)

Hệ thống kiểm soát ra vào truyền thống và các sản phẩm thương mại giá rẻ hiện nay đối mặt với các điểm nghẽn chính:

  1. Lỗ hổng bảo mật vật lý: Ổ khóa cơ dễ bị can thiệp cơ học; thẻ từ độc lập không có cơ chế quản lý danh tính theo thời gian thực.
  2. Thiếu khả năng truy vết và kiểm toán: Không ghi nhận được lịch sử ai đã mở cửa, thời gian chính xác, cũng như không đưa ra cảnh báo khi phát hiện hành vi dò quét mật mã trái phép.
  3. Quản trị người dùng phân tán: Việc thêm/xóa quyền truy cập trên các thiết bị khóa độc lập (standalone) phức tạp, thiếu giao diện trực quan và không đồng bộ được với cơ sở dữ liệu quan hệ (RDBMS).

Mục tiêu của dự án

Đề tài "Thiết kế khóa thông minh sử dụng bộ điều khiển STM32" do nhóm sinh viên Khoa Điện tử, Trường Đại học Công nghiệp Hà Nội (HaUI) nghiên cứu và phát triển tập trung vào 4 mục tiêu cốt lõi:

  1. Nghiên cứu, thiết kế phần cứng chuyên dụng: Tích hợp vi điều khiển STM32F103C8T6 với module RFID RC522 (13.56 MHz), bàn phím ma trận 4x4, cảm biến hồng ngoại nhận diện vật cản và cơ cấu chấp hành động cơ Servo RC.
  2. Tối ưu hóa khối nguồn công suất: Thiết kế mạch nguồn hạ áp tích hợp từ 220VAC/15VAC xuống nguồn 5VDC/3A ổn định sử dụng IC giảm áp xung LM2596.
  3. Xây dựng firmware điều khiển thời gian thực: Lập trình nhúng xử lý giao tiếp bus SPI tốc độ cao, quét ma trận phím, phát xung PWM điều khiển động cơ mở/đóng cửa tự động sau chu kỳ trễ 4–5 giây.
  4. Phát triển phần mềm quản lý máy tính: Xây dựng giao diện ứng dụng WPF (Windows Presentation Foundation) trên nền tảng .NET kết nối máy chủ cơ sở dữ liệu Microsoft SQL Server, đồng bộ dữ liệu qua chuẩn truyền thông nối tiếp USART/UART thông qua IC CH340.
+--------------------------------------------------------------------+
|                         NGƯỜI DÙNG                                 |
|         (Quẹt thẻ RFID 13.56MHz hoặc Nhập mã PIN 4x4)              |
+---------------------------------+----------------------------------+
                                  |
                                  v
+---------------------------------+----------------------------------+
|                    KHỐI ĐIỀU KHIỂN TRUNG TÂM                       |
|           Vi điều khiển STM32F103C8T6 (ARM Cortex-M3 72MHz)        |
|  - Giao tiếp SPI (RC522)             - Quét ma trận GPIO (Keypad)  |
|  - Cảm biến hồng ngoại (LM393)      - Điều chế xung PWM (Servo 5V)|
+---------------------------------+----------------------------------+
                                  |
                   Giao thức USART (Bridge CH340)
                                  |
                                  v
+---------------------------------+----------------------------------+
|                   HỆ THỐNG PHẦN MỀM & DỮ LIỆU                      |
|  - Ứng dụng quản trị WPF (C# / MVVM / .NET)                        |
|  - Hệ quản trị CSDL Microsoft SQL Server (Lưu log & Quản lý User)  |
+--------------------------------------------------------------------+

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án kết hợp giữa thiết kế phần cứng nhúng (Embedded Hardware Design) và kỹ nghệ phần mềm máy tính (Desktop Application Engineering). Hệ thống đảm bảo xác thực đa phương thức (Multi-factor Authentication - MFA) gồm thẻ RFID Mifare và mã PIN cá nhân. Kết quả đạt được đo lường bằng các chỉ số kỹ thuật:

  • Tốc độ đọc và nhận diện thẻ RFID: $< 200\text{ ms}$ ở khoảng cách $0 - 60\text{ mm}$.
  • Thời gian xác thực và điều khiển mở chốt cửa: $< 500\text{ ms}$.
  • Độ tin cậy nhận diện: $100%$ đối với thẻ hợp lệ, $0%$ tỷ lệ chấp nhận sai (FAR) với thẻ chưa khai báo.
  • Tự động đóng chốt an toàn sau $4 - 5\text{ giây}$.

Phạm vi và giới hạn đề tài

  • Phạm vi: Mô hình khóa điện tử tích hợp cơ cấu cửa trượt/mở xoay mô phỏng không gian căn hộ và văn phòng; phần mềm giám sát trên hệ điều hành Windows quản lý danh mục người dùng và xuất báo cáo lịch sử.
  • Giới hạn: Hệ thống thử nghiệm giao tiếp qua cổng USB-Serial (RS232/TTL qua CH340), chưa tích hợp module truyền thông không dây tầm xa (Wi-Fi/Zigbee/LoRa) để điều khiển qua Cloud.

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

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

Tiêu chí kỹ thuật Khóa cơ khí truyền thống Khóa số Standalone (Vi điều khiển 8-bit PIC/8051) Hệ thống khóa thông minh STM32 + WPF + SQL
Phương thức xác thực Chìa khóa kim loại Mã PIN hoặc Thẻ RFID cố định Đa phương thức: RFID 13.56MHz + Bàn phím ma trận 4x4
Xử lý trung tâm Cơ học Vi điều khiển 8-bit (xung nhịp thấp $< 20\text{MHz}$) ARM Cortex-M3 32-bit (xung nhịp cao $72\text{MHz}$, bộ nhớ 64KB Flash)
Khả năng lưu trữ log Không có Cục bộ trên EEPROM dung lượng nhỏ Microsoft SQL Server lưu trữ hàng triệu bản ghi nhật ký
Quản trị người dùng Đổi ổ khóa thủ công Nhấn nút phần cứng phức tạp Giao diện WPF trực quan, thêm/xóa/phân quyền tức thời
Khả năng mở rộng Không Kém, hạn chế chân ngoại vi Rất cao, hỗ trợ chuẩn SPI, I2C, USART, CAN, PWM
Độ an toàn dữ liệu Rất thấp (dễ sao chép chìa) Trung bình (dễ bị giải mã bộ nhớ) Cao (mã hóa chuỗi truyền USART, xác thực 2 bước)

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

  • Must have (Bắt buộc): Đọc mã UID từ thẻ RFID RC522; Quét mã PIN từ bàn phím ma trận 4x4; Điều khiển động cơ Servo quay góc $90^\circ$ mở chốt và tự đóng sau 5s; Mạch hạ áp 5V/3A bảo vệ hệ thống.
  • Should have (Nên có): Giao tiếp USART thời gian thực với PC; Ghi nhận lịch sử quẹt thẻ (thời gian, ID thẻ, tên người dùng) vào SQL Server; Cảm biến hồng ngoại phát hiện vật cản.
  • Could have (Có thể có): Chức năng xuất báo cáo lịch sử ra file Excel; Màn hình LED/LCD hiển thị trạng thái tại chỗ.
  • Won't have (Chưa thực hiện): Nhận diện sinh trắc học khuôn mặt/vân tay 3D; Kết nối đám mây đa nền tảng qua MQTT/HTTPs.

Thiết kế hệ thống

1. Ngăn xếp công nghệ (Technology Stack)

  • Phần cứng (Embedded Hardware):
    • Vi điều khiển: STM32F103C8T6 (32-bit ARM Cortex-M3, 72 MHz, 64 KB Flash, 20 KB SRAM).
    • Module RFID: NXP MFRC522 (tần số 13.56 MHz, chuẩn SPI, hỗ trợ thẻ Mifare S50/S70).
    • Bàn phím ma trận: 4x4 Keypad màng nhựa (16 phím chức năng).
    • IC nguồn: LM2596 Simple Switcher Step-Down Voltage Regulator (tần số chuyển mạch 150 kHz).
    • Cảm biến phát hiện vật cản: Module hồng ngoại so sánh LM393 (góc quét $35^\circ$, khoảng cách $2 - 30\text{ cm}$).
    • Giao tiếp máy tính: IC chuyển đổi USB-UART CH340G.
    • Thiết bị chấp hành: Động cơ RC Servo 5V DC điều khiển góc bằng xung PWM.
  • Phần mềm (Software & Database):
    • Công cụ lập trình nhúng: Keil MDK ARM v5.3x / STM32CubeIDE (thư viện STM32 Standard Peripheral / HAL).
    • Phần mềm thiết kế mạch: Altium Designer 16.
    • Nền tảng ứng dụng máy tính: C# .NET Framework, Windows Presentation Foundation (WPF) theo mẫu thiết kế MVVM.
    • Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2019.

2. Thiết kế khối nguồn công suất

Để cung cấp dòng điện liên tục và ổn định cho toàn bộ vi điều khiển, module RF và động cơ chấp hành mà không gây sụt áp, hệ thống sử dụng mạch nguồn xung hạ áp sử dụng IC LM2596. Mạch biến áp hạ nguồn lưới từ $220\text{VAC}$ về $15\text{VAC}$ (dòng định mức $3\text{A}$), sau đó đi qua cầu chỉnh lưu diode và tụ lọc để đưa vào chân Vin của LM2596.

Điện áp đầu ra $V_{out}$ được cấu hình thông qua cầu phân áp hồi tiếp gồm $R_1$ và $R_3$ theo công thức lý thuyết: $$V_{out} = V_{ref} \times \left(1 + \frac{R_1}{R_3}\right)$$ Trong đó:

  • Điện áp tham chiếu nội $V_{ref} = 1.23\text{ V}$.
  • Chọn điện trở hồi tiếp dưới $R_3 = 3.3\text{ k}\Omega$ (thuộc dải tiêu chuẩn $1\text{ k}\Omega - 5\text{ k}\Omega$).
  • Để đạt $V_{out} = 5.0\text{ V}$, ta tính toán giá trị $R_1$: $$R_1 = R_3 \times \left(\frac{V_{out}}{V_{ref}} - 1\right) = 3.3 \times \left(\frac{5.0}{1.23} - 1\right) \approx 10.11\text{ k}\Omega$$ Nhóm chọn điện trở chuẩn thực tế $R_1 = 10\text{ k}\Omega$, điện áp ra đo đạc thực tế: $$V_{out} = 1.23 \times \left(1 + \frac{10}{3.3}\right) = 4.957\text{ V} \approx 5.0\text{ VDC}$$ Điện áp này hoàn toàn đáp ứng độ ổn định cho STM32F103C8T6 (qua IC ổn áp 3.3V AMS1117-3.3 trên board) và cấp tải trực tiếp cho động cơ Servo.

3. Thiết kế cơ sở dữ liệu (Database Schema)

Hệ thống sử dụng cơ sở dữ liệu quan hệ trên SQL Server gồm các bảng thực thể chính:

-- Bảng quản lý người dùng
CREATE TABLE tbl_Users (
    UserID INT IDENTITY(1,1) PRIMARY KEY,
    FullName NVARCHAR(100) NOT NULL,
    UserRole NVARCHAR(50) DEFAULT N'Cư dân',
    PhoneNumber VARCHAR(15),
    CreatedAt DATETIME DEFAULT GETDATE()
);

-- Bảng định danh thẻ RFID
CREATE TABLE tbl_Cards (
    CardID INT IDENTITY(1,1) PRIMARY KEY,
    CardUID VARCHAR(20) UNIQUE NOT NULL,
    UserID INT FOREIGN KEY REFERENCES tbl_Users(UserID) ON DELETE CASCADE,
    IsActive BIT DEFAULT 1,
    IssuedDate DATETIME DEFAULT GETDATE()
);

-- Bảng lưu trữ nhật ký vào ra (Audit Log)
CREATE TABLE tbl_AccessLogs (
    LogID BIGINT IDENTITY(1,1) PRIMARY KEY,
    CardUID VARCHAR(20),
    AccessType NVARCHAR(30), -- 'Thẻ RFID' hoặc 'Bàn phím PIN'
    AccessStatus NVARCHAR(30), -- 'Thành công' hoặc 'Từ chối'
    AccessTime DATETIME DEFAULT GETDATE()
);

4. Giao thức đóng gói dữ liệu truyền thông (Communication Protocol)

Giao tiếp giữa STM32 và máy tính thực hiện qua cổng USART tốc độ 9600 baud, 8 data bits, 1 stop bit, no parity. Quy ước cấu trúc gói tin (Framing Protocol):

  • Phần mềm yêu cầu thêm thẻ: Gửi chuỗi ký tự định dạng Ti (trong đó T là Header lệnh, i là chỉ số thẻ/ID người dùng).
  • STM32 phản hồi quét thẻ lần 1: Gửi chuỗi IA1x (I là Header, A1 là trạng thái quét lần 1 thành công, x là Footer kết thúc).
  • STM32 phản hồi xác thực lần 2: Gửi chuỗi IA2x (A2 là trạng thái quét lần 2 trùng khớp, kích hoạt phần mềm mở form lưu thông tin).
  • Mã quẹt thẻ bình thường: Gửi trực tiếp chuỗi UID thẻ dạng hex (VD: UID:A3F8120C\n).

Phương pháp nghiên cứu và phát triển (Methodology)

Dự án áp dụng mô hình phát triển hệ thống nhúng lặp (Iterative V-Model) kéo dài trong 9 tuần:

  • Tuần 1 - 2: Khảo sát yêu cầu, lập đề cương, lựa chọn linh kiện, so sánh vi điều khiển (STM32 vs PIC vs Nuvoton).
  • Tuần 3 - 4: Nghiên cứu nguyên lý giao tiếp SPI, UART, cơ chế PWM và cấu tạo cơ khí cửa trượt/mở cánh.
  • Tuần 5 - 6: Thiết kế sơ đồ nguyên lý (Schematic) và layout mạch in 2 lớp trên Altium Designer; thiết kế mạch nguồn xung LM2596.
  • Tuần 7: Gia công mạch in, hàn linh kiện, lắp ráp mô hình cơ khí bằng tấm Fomex chịu lực, gắn cảm biến hồng ngoại, bàn phím và servo.
  • Tuần 8 - 9: Lập trình firmware C, xây dựng ứng dụng WPF C#, kiểm thử tích hợp toàn diện và hoàn thiện tài liệu báo cáo.

Implementation và kết quả

Quá trình phát triển phần mềm và Firmware

1. Thuật toán quét bàn phím ma trận 4x4

Bàn phím gồm 4 hàng (Row 1-4) cấu hình ngõ ra (GPIO Output Open-Drain/Push-Pull) và 4 cột (Col 1-4) cấu hình ngõ vào có điện trở kéo lên nội (GPIO Input Pull-up). Thuật toán quét liên tục (Key Scanning Routine) dịch mức logic 0 qua từng hàng và đọc giá trị các cột:

// Thuật toán quét bàn phím ma trận 4x4 trên STM32
#include "stm32f10x.h"
#include "keypad.h"

char Keypad_Scan(void) {
    const char keymap[4][4] = {
        {'1', '2', '3', 'A'},
        {'4', '5', '6', 'B'},
        {'7', '8', '9', 'C'},
        {'*', '0', '#', 'D'}
    };
    uint16_t row_pins[4] = {GPIO_Pin_0, GPIO_Pin_1, GPIO_Pin_2, GPIO_Pin_3};
    uint16_t col_pins[4] = {GPIO_Pin_4, GPIO_Pin_5, GPIO_Pin_6, GPIO_Pin_7};

    for (int r = 0; r < 4; r++) {
        // Kéo tất cả các hàng lên mức cao 1
        for (int i = 0; i < 4; i++) {
            GPIO_SetBits(GPIOB, row_pins[i]);
        }
        // Kéo riêng hàng r xuống mức thấp 0
        GPIO_ResetBits(GPIOB, row_pins[r]);

        // Đọc trạng thái 4 cột
        for (int c = 0; c < 4; c++) {
            if (GPIO_ReadInputDataBit(GPIOB, col_pins[c]) == Bit_RESET) {
                // Chống rung phím (Debounce 20ms)
                Delay_ms(20);
                while (GPIO_ReadInputDataBit(GPIOB, col_pins[c]) == Bit_RESET);
                return keymap[r][c];
            }
        }
    }
    return '\0'; // Không có phím nào được nhấn
}

2. Xử lý đọc dữ liệu RFID RC522 qua chuẩn giao tiếp SPI

Vi điều khiển STM32 đóng vai trò SPI Master, module RC522 đóng vai trò SPI Slave với 4 đường tín hiệu: SCK, MOSI, MISO, và CS/SDA (Slave Select).

// Hàm đọc và truyền dữ liệu thẻ RFID lên ứng dụng máy tính qua USART
void Process_RFID_Task(void) {
    uint8_t status;
    uint8_t str[MAX_LEN];

    // Quét tìm thẻ trong vùng từ trường
    status = MFRC522_Request(PICC_REQIDL, str);
    if (status == MI_OK) {
        // Chống va chạm, lấy mã UID duy nhất của thẻ
        status = MFRC522_Anticoll(str);
        if (status == MI_OK) {
            char buffer[32];
            sprintf(buffer, "UID:%02X%02X%02X%02X\r\n", str[0], str[1], str[2], str[3]);
            // Gửi chuỗi UID lên phần mềm máy tính
            USART_SendString(USART1, buffer);
            
            // Bật còi Buzzer bíp phản hồi và kích hoạt Timer đếm trễ
            Buzzer_Beep(100);
        }
    }
}

3. Xử lý sự kiện nhận dữ liệu trên ứng dụng máy tính C# WPF

Ứng dụng sử dụng lớp System.IO.Ports.SerialPort hoạt động trên luồng xử lý bất đồng bộ (Background Thread) để không gây treo giao diện đồ họa (UI Thread):

private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    string incomingData = _serialPort.ReadLine().Trim();
    
    // Điều hướng cập nhật giao diện thông qua Dispatcher
    this.Dispatcher.Invoke(() =>
    {
        if (incomingData.StartsWith("UID:"))
        {
            string cardUid = incomingData.Substring(4);
            VerifyAndLogAccess(cardUid);
        }
        else if (incomingData == "IA1x")
        {
            lblStatus.Text = "Đã quét lần 1. Vui lòng quẹt lại lần 2 để xác nhận!";
        }
        else if (incomingData == "IA2x")
        {
            OpenNewUserRegistrationModal();
        }
    });
}

Thử nghiệm và kiểm chứng

Hệ thống đã trải qua quá trình kiểm thử nghiêm ngặt tại phòng thí nghiệm Điện tử viễn thông:

Kịch bản thử nghiệm Số lần thực hiện Số lần thành công Tỷ lệ chính xác Thời gian đáp ứng trung bình
Quẹt thẻ RFID hợp lệ đã đăng ký 100 100 100% 185 ms
Quẹt thẻ RFID không hợp lệ (thẻ lạ) 50 50 (Báo từ chối) 100% 190 ms
Nhập mã PIN chính xác trên Keypad 50 50 100% 320 ms
Nhập mã PIN sai liên tiếp 3 lần 30 30 (Khóa bàn phím) 100% Tức thì ($< 10\text{ ms}$)
Phát hiện vật cản bằng cảm biến IR 50 49 98% 85 ms
Ghi nhận lịch sử vào SQL Server 200 200 100% 45 ms (truy vấn nội bộ)
BIỂU ĐỒ SO SÁNH THỜI GIAN ĐÁP ỨNG TRUNG BÌNH (ms)
-----------------------------------------------------------------------
Quẹt thẻ RFID hợp lệ        [██████████] 185 ms
Quẹt thẻ lạ (từ chối)       [██████████] 190 ms
Nhập mã PIN bàn phím 4x4    [████████████████] 320 ms
Cảm biến hồng ngoại phát hiện[████] 85 ms
Ghi nhận cơ sở dữ liệu SQL  [██] 45 ms
-----------------------------------------------------------------------

Kết quả đạt được

  • Về phần cứng: Hoàn thiện bo mạch in (PCB) 2 lớp kích thước nhỏ gọn $10\text{ cm} \times 8\text{ cm}$, đường mạch tín hiệu $0.3\text{ mm}$ chống nhiễu tốt; nguồn cấp $5\text{VDC}$ tải dòng ổn định không sinh nhiệt cao nhờ hiệu suất chuyển đổi của LM2596 đạt $> 85%$.
  • Về tính năng:
    • Xác thực hai tầng: Thẻ RFID (Mifare $13.56\text{ MHz}$) và Mã PIN ma trận 4x4.
    • Tự động đóng cửa: Động cơ servo xoay góc kéo chốt và tự động quay về vị trí khóa sau đúng $5\text{ giây}$.
    • Cơ chế quản lý người dùng: Thêm thẻ mới trực quan với giao thức xác thực 2 lần quét chống nhầm lẫn (IA1xIA2x).
    • Ghi nhật ký đầy đủ: Thời gian, ID người dùng, phương thức mở khóa và tình trạng chấp thuận/từ chối đều được lưu trữ bảo toàn trên Microsoft SQL Server.

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

  1. Kiến trúc nhúng 32-bit vượt trội: Thay vì sử dụng các vi điều khiển 8-bit truyền thống (như ATmega328P hay PIC16F/18F) thường bị giới hạn về bộ nhớ và tốc độ xử lý ngắt, hệ thống tận dụng sức mạnh của ARM Cortex-M3 (STM32F103C8T6) với xung nhịp 72 MHz. Điều này giúp tốc độ xử lý giải thuật lọc nhiễu phím và giao tiếp SPI với module RFID tăng hơn 300%.
  2. Giao thức đồng bộ hai bước (Two-step Enrollment Protocol): Giải quyết triệt để lỗi ghi nhận trùng thẻ hoặc gán sai ID trong quá trình thêm người dùng bằng chu trình handshake phản hồi (Ti $\rightarrow$ IA1x $\rightarrow$ IA2x).
  3. Mạch nguồn xung tích hợp chống sụt áp: Ứng dụng biến áp đối xứng kết hợp IC xung buck LM2596 cho phép hệ thống vận hành ổn định ngay cả khi động cơ Servo RC tiêu thụ dòng tức thời lên tới $1.5\text{A}$, triệt tiêu hiện tượng reset vi điều khiển do sụt áp nguồn logic.
  4. Hệ thống phần mềm trực quan hóa cao cấp: Chuyển đổi toàn bộ việc quản trị thiết bị từ nút bấm phần cứng phức tạp sang giao diện WPF chuẩn công nghiệp, kết nối đồng bộ cơ sở dữ liệu SQL Server, mở ra khả năng quản trị đa điểm.

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

Kịch bản triển khai thực tế

  • Căn hộ chung cư và nhà ở thông minh: Lắp đặt tại cửa chính thay thế khóa cơ; cấp quyền mở cửa cho người thân hoặc người giúp việc theo khung giờ định trước.
  • Hệ thống chấm công và kiểm soát văn phòng: Thẻ RFID đóng vai trò kép: vừa là thẻ nhân viên mở cửa phòng ban, vừa ghi nhận thời gian chấm công về máy chủ cơ sở dữ liệu doanh nghiệp.
  • Phòng thí nghiệm / Trung tâm dữ liệu (Server Room): Đòi hỏi tính bảo mật cao với cơ chế ghi log chi tiết từng giây phục vụ công tác thanh tra an ninh thông tin.

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

CƠ CẤU CHI PHÍ SẢN XUẤT NGUYÊN MẪU (BOM)
+------------------------------------+-----------------------+
| Hạng mục linh kiện / Module        | Chi phí ước tính (VND)|
+------------------------------------+-----------------------+
| Board STM32F103C8T6                | 65.000                |
| Module RFID RC522 + Thẻ Mifare     | 45.000                |
| Bàn phím ma trận 4x4               | 25.000                |
| Khối nguồn (Biến áp + LM2596)      | 95.000                |
| Cảm biến hồng ngoại LM393          | 15.000                |
| Động cơ RC Servo 5V                | 55.000                |
| Gia công mạch in PCB + Linh kiện rời| 80.000               |
| Khung vỏ mô hình Fomex             | 40.000                |
+------------------------------------+-----------------------+
| TỔNG CHI PHÍ PHẦN CỨNG             | 420.000 VND           |
+------------------------------------+-----------------------+

So với các dòng khóa cửa thông minh thương mại trên thị trường (có giá dao động từ $3.500.000 - 8.000.000\text{ VND}$), giải pháp thiết kế có chi phí linh kiện chỉ chiếm khoảng 10 - 12%, mở ra cơ hội thương mại hóa rất lớn cho các dự án nhà ở xã hội hoặc văn phòng khởi nghiệp quy mô vừa và nhỏ.


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

Hạn chế kỹ thuật

  • Giao tiếp giữa khóa và máy tính quản lý còn phụ thuộc vào đường truyền dây dẫn nối tiếp USART qua cổng USB (khoảng cách tối đa khuyến nghị $< 15\text{ m}$ để tránh suy hao và nhiễu).
  • Chưa có pin sạc dự phòng (Lithium Backup Battery) tích hợp tự động chuyển nguồn khi mất điện lưới 220VAC.
  • Cơ chế bảo mật truyền thông UART chưa áp dụng thuật toán mã hóa đối xứng (như AES-128) để chống nghe lén dữ liệu trên đường truyền vật lý.

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

  • Nâng cấp truyền thông không dây Cloud IoT: Bổ sung module Wi-Fi ESP32 hoặc module Zigbee/NB-IoT để đẩy trực tiếp dữ liệu lên nền tảng đám mây (AWS IoT Core / Azure IoT Hub), cho phép điều khiển mở khóa và giám sát từ xa qua ứng dụng di động (Flutter/React Native).
  • Tích hợp sinh trắc học tiên tiến: Kết hợp cảm biến vân tay điện dung FPM10A hoặc module camera AI nhận diện khuôn mặt cục bộ (Edge AI).
  • Hệ thống pin dự phòng thông minh (UPS): Thiết kế mạch sạc xả tự động pin 18650 tích hợp IC giám sát dung lượng, đảm bảo hệ thống vận hành liên tục từ $24 - 48\text{ giờ}$ khi mất điện lưới.

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

  • Sinh viên khối kỹ thuật (Điện tử, Tự động hóa, CNTT): Nguồn tài liệu tham khảo chi tiết từ khâu thiết kế mạch in Altium, lập trình ngoại vi STM32 (SPI, UART, Timer PWM) đến phát triển ứng dụng giao tiếp C# WPF.
  • Kỹ sư phát triển hệ thống nhúng (Embedded Developers): Nắm bắt kiến trúc tích hợp hệ thống phần cứng - phần mềm hoàn chỉnh, kỹ thuật bẫy lỗi truyền thông và thuật toán xử lý dữ liệu cảm biến thời gian thực.
  • Doanh nghiệp vừa và nhỏ, cơ sở sản xuất: Giải pháp tham khảo để chế tạo các hệ thống kiểm soát ra vào chi phí thấp, dễ dàng bảo trì và nội địa hóa hoàn toàn công nghệ.
  • Nhà nghiên cứu học thuật: Cung cấp dữ liệu thực nghiệm về độ ổn định của giao tiếp SPI/UART và hiệu năng xử lý của dòng chip ARM Cortex-M3 trong các ứng dụng điều khiển thời gian thực.

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

1. Yêu cầu kỹ thuật phần cứng và môi trường để triển khai hệ thống là gì?

Hệ thống yêu cầu nguồn cấp lưới $220\text{VAC}/50\text{Hz}$ hoặc nguồn một chiều $12 - 15\text{VDC}$ tối thiểu $2\text{A}$. Máy tính giám sát cần chạy hệ điều hành Windows 10/11, cài đặt .NET Framework 4.7.2 trở lên, Microsoft SQL Server 2014 hoặc mới hơn, và cổng USB 2.0/3.0 để cắm module CH340 nhận dữ liệu qua cổng COM ảo.

2. Giới hạn lưu trữ và khả năng mở rộng số lượng thẻ của hệ thống như thế nào?

Vi điều khiển STM32 chỉ đóng vai trò thu thập mã UID và chuyển tiếp lên máy tính. Do đó, giới hạn số lượng thẻ và người dùng hoàn toàn phụ thuộc vào dung lượng ổ cứng của máy tính chạy Microsoft SQL Server (có khả năng lưu trữ hàng triệu thẻ và hàng chục triệu bản ghi nhật ký vào ra mà không làm suy giảm hiệu năng).

3. Làm thế nào để tích hợp khóa với các hệ thống báo cháy hoặc an ninh tòa nhà sẵn có?

Hệ thống có thể dễ dàng mở rộng thông qua các chân ngắt ngoài (External Interrupt - EXTI) còn trống trên STM32F103C8T6. Khi nhận tín hiệu mức logic từ hệ thống báo cháy (Fire Alarm System), vi điều khiển sẽ kích hoạt ngắt ưu tiên cao nhất, lập tức mở chốt cửa và duy trì trạng thái mở cho đến khi có lệnh reset an toàn.

4. Chi phí vận hành và bảo trì hệ thống định kỳ bao gồm những gì?

Hệ thống tiêu thụ công suất cực thấp ở chế độ chờ (khoảng $< 1.5\text{W}$). Chi phí vận hành điện năng không đáng kể ($< 5.000\text{ VND/tháng}$). Công tác bảo trì định kỳ 6 tháng một lần bao gồm việc tra dầu mỡ cơ cấu cơ khí servo, kiểm tra độ siết các ốc vít đấu nối và sao lưu dự phòng (backup) cơ sở dữ liệu SQL Server.

5. Khả năng chống làm giả thẻ RFID và chống dò mật khẩu hoạt động như thế nào?

Module RC522 đọc mã định danh duy nhất (UID 4-byte hoặc 7-byte) được nhà sản xuất nạp cố định trên chip Mifare. Về phía bàn phím ma trận, firmware STM32 tích hợp thuật toán đếm số lần nhập sai liên tiếp: nếu nhập sai quá 3 lần, hệ thống sẽ tự động khóa nhận phím trong vòng 60 giây và phát tín hiệu cảnh báo qua còi Buzzer, đồng thời gửi cảnh báo an ninh về phần mềm quản trị.


Kết luận

Đề tài "Thiết kế khóa thông minh sử dụng bộ điều khiển STM32" do nhóm sinh viên Nguyễn Đình Đông và Nguyễn Thanh Tùng thực hiện dưới sự hướng dẫn của TS. Nguyễn Tiến Kiệm đã giải quyết thành công bài toán kiểm soát truy cập thông minh, kết hợp hài hòa giữa công nghệ điều khiển nhúng 32-bit và hệ thống quản trị dữ liệu tập trung.

Dự án không chỉ đạt được các chỉ tiêu kỹ thuật khắt khe về thời gian đáp ứng ($< 200\text{ ms}$), độ chính xác tuyệt đối ($100%$) và tính ổn định công suất, mà còn chứng minh tính khả thi vượt trội về mặt kinh tế với chi phí sản xuất thấp. Đây là tiền đề vững chắ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 xu hướng phát triển đô thị thông minh và chuyển đổi số trong lĩnh vực an ninh tòa nhà tại Việt Nam.