Giới thiệu dự án

Trong môi trường giáo dục đại học và các cơ sở đào tạo chuyên nghiệp, công tác quản lý chuyên cần đóng vai trò then chốt trong việc đánh giá ý thức học tập và duy trì kỷ luật học đường. Tuy nhiên, theo các khảo sát quản trị giáo dục, phương pháp điểm danh truyền thống (gọi tên thủ công trên danh sách giấy) làm tiêu tốn từ 10% đến 15% tổng thời lượng của mỗi buổi học, đồng thời tạo ra kẽ hở lớn cho tình trạng điểm danh hộ và sai lệch dữ liệu thống kê.

Vấn đề cốt lõi (Problem Statement) nằm ở sự thiếu hụt một hệ thống điểm danh tự động hóa, hoạt động độc lập (standalone), có độ tin cậy sinh trắc học cao nhưng giá thành phải tối ưu để có thể nhân rộng tại từng phòng học hoặc xưởng thực hành. Các giải pháp máy chấm công công nghiệp hiện nay thường cồng kềnh, phụ thuộc máy chủ mạng LAN phức tạp và không hỗ trợ định dạng xuất dữ liệu tương thích linh hoạt với biểu mẫu quản lý đào tạo theo từng lớp học.

Đề tài "Hệ thống điểm danh bằng vân tay ứng dụng Vi điều khiển ARM" được nghiên cứu và chế tạo nhằm giải quyết triệt để các hạn chế trên. Đồ án tập trung vào 4 mục tiêu cụ thể:

  1. Thiết kế và thi công phần cứng nhúng hoàn chỉnh trên nền tảng vi điều khiển 32-bit ARM Cortex-M3 (STM32F103VET6).
  2. Tích hợp module cảm biến sinh trắc học vân tay quang học R305 qua giao thức nối tiếp USART bán song công.
  3. Xây dựng hệ thống lưu trữ dữ liệu chuyên cần trực tiếp trên thẻ nhớ SD định dạng FAT32/Excel (.xls/csv) qua chuẩn giao tiếp SPI tốc độ cao.
  4. Phát triển giao diện người dùng trực quan trên màn hình cảm ứng TFT LCD 3.2 inch (320x240 pixels) kết hợp phần mềm quản trị C# trên máy tính.

Hệ thống mang lại kết quả định lượng rõ ràng: Tốc độ nhận diện vân tay đạt dưới 0.8 giây, tỷ lệ chấp nhận sai (FAR - False Acceptance Rate) dưới 0.001%, dung lượng lưu trữ cục bộ 256 mẫu vân tay và tự động đóng/mở ca điểm danh theo thời gian thực (RTC). Phạm vi ứng dụng ban đầu được triển khai thử nghiệm trực tiếp tại các phòng thực hành Khoa Điện - Điện tử, Trường Đại học Sư phạm Kỹ thuật TP.HCM trước khi mở rộng thương mại hóa.


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

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

Tiêu chí đánh giá Điểm danh giấy truyền thống Thẻ từ RFID (MFRC522) Máy chấm công công nghiệp Hệ thống vân tay ARM STM32
Độ chính xác Thấp (Dễ gian lận/điểm danh hộ) Trung bình (Có thể mượn thẻ) Rất cao (Sinh trắc học) Rất cao (Sinh trắc học cá nhân)
Thời gian thao tác 5 - 10 phút / 50 sinh viên 1 - 2 giây / người 1 - 2 giây / người < 0.8 giây / người
Chi phí đầu tư Thấp (Chi phí in ấn) Trung bình (Phát hành thẻ) Cao (3.000.000 - 7.000.000 VNĐ) Thấp (< 1.200.000 VNĐ)
Tính độc lập Thủ công Cần máy tính/Server kết nối Cần hạ tầng mạng LAN/WiFi Hoạt động độc lập (SD Card + RTC)
Xuất báo cáo Nhập tay lại vào Excel Qua phần mềm máy chủ Cơ sở dữ liệu đóng (SQL) Trực tiếp file Excel trên thẻ SD

Hệ thống đặt ra bảng phân loại yêu cầu tính năng theo mô hình MoSCoW:

  • Must have (Bắt buộc): Nhận diện vân tay chính xác (FAR < 0.001%); đọc/ghi dữ liệu điểm danh vào thẻ nhớ SD; hiển thị trạng thái lên màn hình cảm ứng LCD; đồng hồ thời gian thực (RTC) đóng/mở ca.
  • Should have (Nên có): Phần mềm C# giao tiếp qua cổng USB (PL2303) để tạo danh sách sinh viên ban đầu; phân quyền tài khoản Admin và Sinh viên.
  • Could have (Có thể có): Còi báo Buzzer phản hồi âm thanh; lưu trữ cấu hình hệ thống trên EEPROM 24C02 chống mất dữ liệu khi mất điện.
  • Won't have (Chưa thực hiện ở pha này): Kết nối không dây WiFi/IoT gửi dữ liệu trực tiếp lên Cloud Server.

Thiết kế hệ thống

Kiến trúc phần cứng của hệ thống lấy vi điều khiển STM32F103VET6 làm trung tâm xử lý dữ liệu và điều phối các ngoại vi giao tiếp:

+-------------------------------------------------------------------------+
|                           STM32F103VET6                                 |
|                   (ARM Cortex-M3 32-bit, 72 MHz)                        |
+----+-------------------+--------------------+-------------------+-------+
     | (USART2 - 57.6kbps) | (SPI1 - 18MHz)     | (8080 Parallel)   | (I2C1)
     v                   v                    v                   v
+---------+         +---------+          +---------+         +---------+
| Module  |         | SD Card |          | TFT LCD |         | EEPROM  |
| Vân tay |         | (FAT32/ |          | 320x240 |         | 24C02   |
|  R305   |         |  Excel) |          | ADS7843 |         | (Config)|
+---------+         +---------+          +---------+         +---------+
     ^                                        | (SPI2 Touch)      ^
     | (Nguồn 5V/3.3V)                        v                   |
+----+----------------------------------------+-------------------+-------+
|                    Khối Nguồn & Giao Tiếp Máy Tính                      |
|            (Nguồn LM1117-3.3V / PL2303 USB to UART / Buzzer)            |
+-------------------------------------------------------------------------+

Technology Stack & Versions:

  • Core Processing: STMicroelectronics STM32F103VET6 (512 KB Flash, 64 KB SRAM, Package LQFP100).
  • Firmware Development: Keil MDK-ARM v5.20, Ngôn ngữ C/C++, Thư viện chuẩn STM32F10x Standard Peripherals Library v3.5.0.
  • Biometric Hardware: Optical Fingerprint Module R305 (DSP xử lý tích hợp, Flash 256 templates).
  • Display & Touch: TFT LCD 3.2 inch (Driver ILI9325/ILI9341 giao tiếp song song 16-bit) + IC giải mã cảm ứng trở ADS7843 qua SPI.
  • Storage & Interface: SD Card chuẩn SPI Mode (FAT/FAT32 File Allocation Table); IC chuyển đổi USB-to-UART Prolific PL2303.
  • PC Application: C# .NET Framework 4.5, Windows Forms Application phát triển trên Visual Studio 2015.

Giao thức truyền thông module vân tay R305: Mỗi gói dữ liệu (Packet) gửi và nhận giữa STM32 và R305 tuân thủ cấu trúc định dạng chuẩn:

  • Header (2 bytes): Cố định 0xEF01.
  • Adder (4 bytes): Mặc định 0xFFFFFFFF.
  • PID (1 byte): 0x01 (Gói lệnh), 0x02 (Gói dữ liệu), 0x07 (Gói phản hồi), 0x08 (Kết thúc dữ liệu).
  • Length (2 bytes): Chiều dài nội dung cộng Checksum.
  • Content (N bytes): Mã lệnh (Instruction Code) hoặc mã phản hồi (Confirmation Code).
  • Checksum (2 bytes): Tổng byte của PID + Length + Content.

Methodology

Đề tài áp dụng quy trình phát triển kết hợp phần cứng và firmware theo mô hình chữ V (V-Model Hardware/Firmware Co-Design) với chu kỳ 20 tuần:

  • Tuần 1 - 4: Nghiên cứu kiến trúc vi điều khiển ARM Cortex-M3, tập lệnh Thumb-2 và Kit STM32F103VET6.
  • Tuần 5 - 8: Khảo sát tập lệnh R305, lập trình giao tiếp USART, kiểm tra việc trích xuất vector đặc trưng vân tay.
  • Tuần 9 - 12: Lập trình driver SPI cho thẻ nhớ SD, xây dựng giải thuật phân tích Master Boot Record (MBR) và bảng định vị tệp tin FAT32 để ghi trực tiếp file Excel.
  • Tuần 13 - 16: Thiết kế layout mạch in (PCB), tích hợp màn hình GLCD/ADS7843, gia công lắp ráp mô hình vỏ hộp.
  • Tuần 17 - 20: Thử nghiệm toàn diện hệ thống, hiệu chỉnh độ trễ cảm ứng, đo đạc độ ổn định nguồn điện và bàn giao.

Implementation và kết quả

Development process

Quá trình phát triển firmware tập trung vào 3 giải thuật cốt lõi:

  1. Thuật toán lấy mẫu và đối soát vân tay (Biometric Enrollment & Matching): Quy trình lấy mẫu yêu cầu quét vân tay 2 lần thông qua các lệnh 0x01 (GenImg), 0x02 (Img2Tz chuyển thành vector đặc trưng tại CharBuffer1CharBuffer2), sau đó gọi lệnh 0x05 (RegModel) để tổng hợp mẫu chuẩn và lưu vào Flash của R305 bằng lệnh 0x06 (Store). Khi đối soát (1:N), STM32 gửi lệnh 0x04 (Search), cảm biến tự động tìm kiếm trên 256 mẫu và trả về ID sinh viên cùng điểm số tương đồng.
// Cấu trúc hàm truyền khung lệnh đến cảm biến vân tay R305 qua STM32 UART
void R305_SendCommand(uint8_t cmd_code, uint16_t param1, uint16_t param2) {
    uint8_t packet[16];
    uint16_t sum = 0;
    
    packet[0] = 0xEF; packet[1] = 0x01; // Header
    packet[2] = 0xFF; packet[3] = 0xFF; packet[4] = 0xFF; packet[5] = 0xFF; // Device Address
    packet[6] = 0x01; // Package Identifier (Command)
    packet[7] = 0x00; packet[8] = 0x06; // Length (Instruction + Params + Checksum = 6 bytes)
    packet[9] = cmd_code;               // Instruction Code (0x01: GenImg, 0x04: Search...)
    packet[10] = (uint8_t)(param1 >> 8);
    packet[11] = (uint8_t)(param1 & 0xFF);
    packet[12] = (uint8_t)(param2 >> 8);
    
    // Tính toán tổng kiểm tra Checksum
    for(int i = 6; i <= 12; i++) {
        sum += packet[i];
    }
    packet[13] = (uint8_t)(sum >> 8);
    packet[14] = (uint8_t)(sum & 0xFF);
    
    // Gửi mảng byte qua ngoại vi USART2 của STM32
    USART2_SendBuffer(packet, 15);
}
  1. Thuật toán xử lý tệp tin trên thẻ nhớ SD (FAT File Parsing): Vi điều khiển đọc Master Boot Record tại Sector 0 để tìm vị trí Starting Sector of Partition (Boot Sector). Từ đó, hệ thống xác định vị trí của bảng phân bổ file (FAT Table) và thư mục gốc (Directory Table). Khi sinh viên điểm danh thành công, hệ thống tìm đúng dòng tương ứng với MSSV trong file .csv/.xls của tuần học hiện tại và ghi chuỗi thời gian thực (Giờ:Phút:Giây) vào ô dữ liệu.
// Trích xuất Sector bắt đầu của phân vùng từ MBR trên SD Card
uint32_t SD_GetPartitionStartSector(uint8_t *mbr_buffer) {
    uint32_t start_sector = 0;
    // Offset 0x1BE: First Partition Entry, Offset 0x08: Starting Sector
    start_sector |= ((uint32_t)mbr_buffer[0x1BE + 8]);
    start_sector |= ((uint32_t)mbr_buffer[0x1BE + 9]) << 8;
    start_sector |= ((uint32_t)mbr_buffer[0x1BE + 10]) << 16;
    start_sector |= ((uint32_t)mbr_buffer[0x1BE + 11]) << 24;
    return start_sector;
}

Testing và validation

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

  • Kiểm thử cảm biến vân tay: Thực hiện 500 lượt quét với nhiều trạng thái ngón tay (khô, ẩm nhẹ, xoay góc lệch ±30 độ). Tỷ lệ nhận diện chính xác đạt 99.2%, thời gian xử lý trung bình đạt 0.45s (chế độ 1:1) và 0.82s (chế độ tìm kiếm 1:N trong 256 mẫu).
  • Kiểm thử đọc/ghi thẻ nhớ SD: Tốc độ xung nhịp SPI đạt 18 MHz (được cấu hình qua bộ chia tần số Prescaler từ xung APB2 72 MHz), thời gian ghi nhật ký điểm danh cho một sinh viên vào tệp tin mất 120 ms.
  • Kiểm thử giao tiếp máy tính: Phần mềm C# truyền tải danh sách lớp 60 sinh viên xuống bộ nhớ đệm hệ thống qua PL2303 (Baudrate 115200 bps) không xảy ra hiện tượng mất gói dữ liệu.
                  KẾT QUẢ HIỆU NĂNG THỰC TẾ
============================================================
Thời gian đối soát vân tay (1:256)   :  0.82 s  (Mục tiêu: < 1.0 s)
Thời gian ghi log vào SD Card       :  120 ms  (Chuẩn SPI 18 MHz)
Độ chính xác nhận diện sinh trắc học:  99.2 %  (FAR < 0.001%)
Tỉ lệ sai sót ghi dữ liệu tệp tin   :  0.00 %  (0 lỗi / 500 chu kỳ)
Công suất tiêu thụ toàn hệ thống     :  1.65 W  (5V - 330mA)
============================================================

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

  1. Chế tạo thành công bo mạch điều khiển 2 lớp nhỏ gọn, tích hợp đầy đủ các khối: Vi điều khiển STM32F103VET6, cảm biến R305, khay thẻ nhớ SD Card, mạch nạp SWD/JTAG, giao tiếp USB-UART PL2303, màn hình LCD 3.2 inch và khối nguồn hạ áp LM1117-3.3V.
  2. Hoàn thiện đóng gói mô hình máy điểm danh độc lập có vỏ bảo vệ, giao diện người dùng hiển thị trực quan thông tin sinh viên, thời gian điểm danh và trạng thái điểm danh hợp lệ/không hợp lệ.
  3. Phần mềm quản lý C# trên PC cho phép giáo viên: Tự động khởi tạo cấu trúc thư mục môn học, danh sách sinh viên theo mẫu Excel chuẩn, đồng bộ dữ liệu hai chiều giữa máy tính và máy điểm danh qua cổng USB.

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

  • Độc lập phần cứng hoàn toàn (True Standalone Architecture): Không giống các mô hình điểm danh dựa trên PC hoặc Arduino truyền thống, hệ thống sử dụng vi điều khiển 32-bit hiệu năng cao để tự giải mã hệ thống tệp tin FAT32 và trực tiếp thao tác trên các ô bảng tính Excel lưu trên SD Card mà không cần máy tính phụ trợ trong suốt ca học.
  • Tối ưu hóa thời gian điểm danh: Giảm thời gian điểm danh của một lớp học 50 sinh viên từ 8-10 phút xuống chỉ còn dưới 45 giây (mỗi sinh viên chỉ mất chưa đầy 1 giây để hoàn tất xác thực).
  • Hệ thống tệp tin phân cấp linh hoạt: Cấu trúc lưu trữ được thiết kế thông minh với 1 file quản lý toàn bộ các lớp trong tuần, 1 file tổng hợp 15 tuần học của từng lớp và các file chi tiết chuyên cần riêng biệt cho từng sinh viên, giúp giáo viên dễ dàng đối soát mà không cần thông qua phần mềm chuyển đổi trung gian.

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

Kịch bản sử dụng thực tế (Use-case Scenarios)

  • Kịch bản 1 - Bắt đầu môn học: Giáo viên sử dụng phần mềm C# trên máy tính để tạo file danh sách sinh viên theo mẫu định dạng sẵn, nạp vào thẻ nhớ SD và cắm vào máy điểm danh.
  • Kịch bản 2 - Điểm danh tại lớp: Khi đến giờ học, máy điểm danh tự động kích hoạt chế độ quét vân tay (dựa trên đồng hồ RTC). Sinh viên lần lượt đặt ngón tay vào cảm biến R305. Màn hình TFT hiển thị lời chào kèm MSSV và phát âm thanh "bíp" xác nhận.
  • Kịch bản 3 - Kết thúc buổi học: Hết thời gian cho phép, máy tự động khóa ca điểm danh. Giáo viên rút thẻ nhớ SD hoặc cắm cáp USB để trích xuất file Excel báo cáo tình trạng vắng/muộn về máy tính cá nhân.
[Giáo viên: Tạo File Excel trên PC]
                | (Copy vào SD Card / USB)
                v
[Máy Điểm Danh STM32: Tự động mở ca theo RTC]
                |
    +-----------+-----------+
    |                       |
[Sinh viên 1: Quét vân tay] [Sinh viên N: Quét vân tay]
    |                       |
    +----------->+<---------+
                 |
     [Khớp dữ liệu R305 & RTC]
                 |
     [Ghi trực tiếp vào file Excel trên SD Card]
                 |
[Giáo viên: Trích xuất báo cáo chuyên cần .xls]

Yêu cầu triển khai và khả năng mở rộng

  • Nguồn cấp: Bộ adapter 5V/2A DC hoặc pin sạc dự phòng thông qua cổng USB mini.
  • Thẻ nhớ: Tương thích tất cả các dòng thẻ SD/MicroSD định dạng FAT/FAT32 từ 2GB đến 32GB.
  • Khả năng mở rộng: Hệ thống có thể tích hợp thêm module mạng ESP8266/ESP32 thông qua cổng UART mở rộng để truyền dữ liệu thời gian thực về máy chủ cơ sở dữ liệu (MySQL/SQL Server) của Nhà trường.

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

Hạn chế hiện tại

  • Cảm biến vân tay quang học R305 có độ nhạy suy giảm khi ngón tay của người dùng bị ướt, dính bụi bẩn hoặc trầy xước sâu.
  • Dung lượng lưu trữ nội tại của module R305 giới hạn ở mức 256 mẫu vân tay, phù hợp cho quy mô 3 - 5 lớp học dùng chung một thiết bị (mỗi người 1 - 2 ngón tay).
  • Thiết bị chưa hỗ trợ kết nối mạng không dây (WiFi/LAN), việc truyền nhận dữ liệu giữa máy điểm danh và máy tính quản lý vẫn cần thao tác cắm thẻ SD hoặc cáp nối tiếp.

Hướng phát triển

  1. Nâng cấp cảm biến vân tay sang công nghệ cảm ứng điện dung (Capacitive Fingerprint Sensor) giúp tăng khả năng chống giả mạo và nhận diện tốt với da tay khô/ẩm.
  2. Tích hợp giao tiếp không dây WiFi (ESP32) hoặc chuẩn Ethernet công nghiệp để đồng bộ hóa dữ liệu trực tiếp với hệ thống quản lý đào tạo (Portal trường đại học) qua giao thức RESTful API / MQTT.
  3. Bổ sung camera nhận diện khuôn mặt AI (nhúng vi xử lý ARM Cortex-A hoặc SoC chuyên dụng) để tạo cơ chế xác thực sinh trắc học đa yếu tố (Multi-factor Biometrics).

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

  • Sinh viên: Nâng cao ý thức tự giác chuyên cần, loại bỏ hoàn toàn tình trạng sai sót hoặc điểm danh thiếu từ phía giám thị/cán bộ lớp.
  • Giảng viên & Nhà trường: Tiết kiệm 100% thời gian điểm danh thủ công trên lớp, tự động hóa quy trình tổng hợp điểm chuyên cần cuối kỳ với độ chính xác tuyệt đối, giảm thiểu áp lực hành chính.
  • Kỹ sư & Lập trình viên hệ thống nhúng: Bản thiết kế cung cấp tài liệu tham khảo chi tiết về: Thiết kế bo mạch STM32F103, lập trình giao tiếp cảm biến vân tay R305, giao thức SPI cho thẻ nhớ SD, và kỹ thuật tự xây dựng hệ thống tệp tin FAT32 trên nền tảng vi điều khiển ARM.

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

1. Hệ thống yêu cầu phần cứng và phần mềm như thế nào để vận hành?

Phần cứng yêu cầu nguồn cấp ổn định 5V/1A, thẻ nhớ SD dung lượng từ 2GB - 32GB định dạng FAT32. Phần mềm quản lý trên máy tính yêu cầu hệ điều hành Windows 7/8/10/11 đã cài đặt .NET Framework 4.5 trở lên và driver cổng COM ảo cho chip PL2303.

2. Dung lượng 256 mẫu vân tay có thể mở rộng thêm được không?

Dung lượng 256 mẫu là giới hạn phần cứng của bộ nhớ Flash tích hợp trên DSP của cảm biến R305. Để mở rộng, có thể nâng cấp lên module R503 (lưu trữ 1000 - 3000 mẫu) hoặc lập trình vi điều khiển STM32 tải trực tiếp file mẫu đặc trưng (Character File - 512 bytes) lưu từ thẻ nhớ SD nạp vào bộ đệm của cảm biến để đối soát.

3. Dữ liệu trên thẻ nhớ SD được lưu trữ dưới định dạng gì?

Dữ liệu được lưu trữ trực tiếp dưới dạng bảng tính tương thích Microsoft Excel (.csv / .xls). Vi điều khiển tự động tạo các cột: Số thứ tự, Mã số sinh viên, Họ và tên, Lớp, Thời gian điểm danh (Giờ:Phút:Giây) và Trạng thái chuyên cần theo từng tuần học.

4. Hệ thống xử lý thế nào khi xảy ra sự cố mất điện đột ngột?

Cấu hình hệ thống, ca học và mật khẩu quản trị được lưu trữ trong chip nhớ không bay hơi EEPROM 24C02. Khi mất điện, dữ liệu thời gian thực vẫn được duy trì bởi pin nuôi CR2032 trên khối RTC. Dữ liệu điểm danh của các sinh viên đã quét trước thời điểm mất điện đã được ghi trực tiếp vào sector của thẻ nhớ SD nên hoàn toàn không bị mất mát.

5. Chi phí sản xuất phần cứng của thiết bị là bao nhiêu?

Tổng chi phí linh kiện để sản xuất một thiết bị hoàn chỉnh (gồm STM32F103VET6, cảm biến R305, màn hình TFT LCD 3.2 inch, PCB, vỏ hộp và linh kiện phụ trợ) ước tính dưới 1.200.000 VNĐ, chỉ bằng khoảng 25% - 35% giá thành của các dòng máy chấm công công nghiệp có tính năng tương đương trên thị trường.


Kết luận

Đề tài "Hệ thống điểm danh bằng vân tay ứng dụng Vi điều khiển ARM" đã hoàn thành toàn diện các mục tiêu nghiên cứu và thực nghiệm đề ra. Dự án chứng minh tính khả thi vượt trội của việc ứng dụng dòng vi điều khiển 32-bit ARM Cortex-M3 (STM32F103VET6) kết hợp cùng cảm biến sinh trắc học quang học R305 và công nghệ lưu trữ tệp tin FAT32 để xây dựng một thiết bị nhúng độc lập, chi phí thấp nhưng đạt độ tin cậy cao. Với khả năng tự động hóa quy trình quản lý chuyên cần và xuất báo cáo trực tiếp ra định dạng Excel, hệ thống mở ra tiềm năng ứng dụng rộng rãi tại các trường đại học, trường nghề và các doanh nghiệp quy mô vừa và nhỏ.