Giới thiệu dự án

Trong bối cảnh chuyển đổi số và tự động hóa quản lý hành chính học đường, công tác quản lý chuyên cần truyền thống đang bộc lộ nhiều điểm nghẽn nghiêm trọng. Thống kê từ các cơ sở đào tạo đại học cho thấy phương pháp điểm danh bằng ký tên trên giấy làm tiêu hao từ 10% đến 15% tổng thời lượng của mỗi tiết học, đồng thời ghi nhận tỷ lệ điểm danh hộ (proxy attendance) lên tới 18-25%. Các hệ thống điểm danh sinh trắc học thương mại trên thị trường hiện nay phần lớn phụ thuộc vào đường truyền có dây cố định (cáp Ethernet RJ45 hoặc giao tiếp USB), gây khó khăn lớn trong việc cơ động chuyển đổi giữa các phòng học và đòi hỏi chi phí đầu tư hạ tầng cao.

Đề tài "Hệ thống điểm danh vân tay qua WiFi" do sinh viên ngành Công nghệ Kỹ thuật Máy tính tại Trường Đại học Sư phạm Kỹ thuật TP.HCM nghiên cứu và phát triển nhằm giải quyết triệt để các bài toán thực tiễn này. Dự án tập trung nghiên cứu, thiết kế và chế tạo một thiết bị IoT (Internet of Things) điểm danh không dây độc lập, tích hợp cảm biến nhận dạng vân tay quang học, vi điều khiển trung tâm và module truyền thông không dây để gửi dữ liệu trực tiếp về máy chủ quản lý thời gian thực.

+-------------------------------------------------------------------------------+
|                             MÔ HÌNH TỔNG QUAN HỆ THỐNG                         |
|                                                                               |
|  [ Sinh viên ] ---> [ Cảm biến R305 ] ---> [ Arduino Mega 2560 ]              |
|                             |                      |                          |
|                             v                      v                          |
|                     (Quét & So khớp)      (Xử lý & Hiển thị LCD)             |
|                                                    |                          |
|                                                    v                          |
|                                           [ Module ESP8266v12 ]               |
|                                                    |                          |
|                                          (Sóng WiFi 802.11b/g/n)              |
|                                                    v                          |
|                                           [ Máy tính Quản trị ]               |
|                                           - Phần mềm C# WinForms              |
|                                           - Cơ sở dữ liệu Excel               |
+-------------------------------------------------------------------------------+

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

  1. Thiết kế phần cứng nhúng tích hợp: Xây dựng bo mạch điều khiển trung tâm kết nối đa ngoại vi bao gồm cảm biến vân tay R305, module truyền thông ESP8266v12, màn hình LCD 16x2 qua giao tiếp I2C, và module đọc thẻ nhớ Micro SD qua giao tiếp SPI.
  2. Lập trình firmware thời gian thực: Xây dựng thuật toán xử lý dữ liệu nhúng trên vi điều khiển ATmega2560 bằng ngôn ngữ C/C++, quản lý các giao thức UART đa kênh đồng thời với tốc độ baud chuẩn hóa.
  3. Phát triển ứng dụng máy chủ giám sát: Xây dựng phần mềm trên máy tính cá nhân bằng ngôn ngữ C# trên nền tảng .NET Framework (Visual Studio 2015), hỗ trợ giao tiếp mạng Socket TCP/IP để đồng bộ hóa dữ liệu điểm danh.
  4. Xây dựng hệ thống lưu trữ dữ liệu: Tự động hóa quá trình ghi nhận thời gian, mã số ID, họ tên vào cơ sở dữ liệu bảng tính Excel phục vụ xuất báo cáo tức thì.
  5. Tối ưu hóa tính cơ động và năng lượng: Đảm bảo hệ thống hoạt động hoàn toàn không dây qua nguồn pin di động 5VDC với độ trễ truyền dữ liệu dưới 1 giây.

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

  • Phạm vi lưu trữ sinh trắc học: Khả năng lưu trữ nội vi đạt 162 mẫu vân tay trên bộ nhớ Flash của module R305, tối ưu cho quy mô lớp học hoặc phòng ban từ 50-150 người.
  • Phạm vi kết nối mạng: Hoạt động trong mạng cục bộ (LAN) không dây thông qua chuẩn WiFi 802.11 b/g/n băng tần 2.4 GHz.
  • Hạn chế kỹ thuật: Cơ sở dữ liệu sử dụng định dạng bảng tính Excel được xử lý qua lớp thư viện lập trình C#, phù hợp cho hệ thống độc lập quy mô vừa và nhỏ mà không cần cài đặt các hệ quản trị cơ sở dữ liệu SQL phức tạp.

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

Phân tích hiện trạng và đánh giá giải pháp

Tiêu chí so sánh Điểm danh truyền thống (Giấy/Ký tên) Máy chấm công cố định (LAN/RJ45) Hệ thống điểm danh vân tay qua WiFi (Đề tài)
Tính chính xác Thấp (Dễ điểm danh hộ, sai sót ghi chép) Rất cao (Sinh trắc học) Rất cao (Sinh trắc học qua thuật toán DSP R305)
Thời gian xử lý 5 - 10 phút/lớp học 1 - 2 giây/người < 0.8 giây/người
Tính cơ động Rất cao (chỉ cần giấy/bút) Rất thấp (Cố định dây mạng RJ45, dây nguồn) Rất cao (Hoạt động bằng pin, truyền nhận qua WiFi)
Chi phí triển khai Rất thấp nhưng tốn nhân công Cao (3.000.000 - 8.000.000 VNĐ + dây mạng) Thấp (< 1.200.000 VNĐ cho toàn bộ linh kiện)
Tự động hóa báo cáo Thủ công (Nhập liệu lại vào máy tính) Tự động qua phần mềm chuyên dụng Tự động cập nhật trực tiếp vào file Excel quản lý

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

  • Must Have (Bắt buộc có): Quét và nhận dạng vân tay chính xác; truyền mã định danh ID qua kết nối WiFi không dây về máy tính; hiển thị trạng thái hệ thống lên màn hình LCD; lưu vết điểm danh kèm dấu thời gian (Timestamp).
  • Should Have (Nên có): Đọc cấu hình SSID và mật khẩu WiFi từ thẻ nhớ Micro SD để tránh việc nạp lại mã nguồn khi đổi mạng; quản lý danh sách cá nhân và xuất báo cáo điểm danh trực tiếp trên giao diện C#.
  • Could Have (Có thể có): Chế độ đăng ký thêm vân tay mới trực tiếp từ giao diện điều khiển phần mềm máy chủ; cơ chế tự phục hồi kết nối WiFi khi mất tín hiệu.
  • Won't Have (Chưa thực hiện trong giai đoạn này): Đồng bộ hóa đám mây phân tán đa điểm (Cloud SaaS); nhận dạng đa sinh trắc học kết hợp khuôn mặt.

Thiết kế kiến trúc hệ thống

Kiến trúc phần cứng được module hóa thành các khối chức năng giao tiếp với bộ xử lý trung tâm qua các chuẩn bus công nghiệp tiêu chuẩn:

graph TD
    subgraph "Khối Nguồn Năng Lượng"
        BAT["Pin dự phòng 5V (1A - 2A)"] --> MB["Module Nguồn Breadboard (5V / 3.3V)"]
    end

    subgraph "Khối Xử Lý & Ngoại Vi Nhúng"
        MCU["Board Arduino Mega 2560 (ATmega2560 @ 16MHz)"]
        R305["Cảm biến vân tay R305 (DSP Quang học)"]
        ESP["Module WiFi ESP8266-12 (SoC 32-bit)"]
        LCD["Màn hình LCD 16x2 (Driver HD44780)"]
        I2C_MOD["Module I2C PCF8574"]
        SD_MOD["Module Micro SD Card Reader"]
        
        R305 -- "UART Serial2 (TX2/RX2 - 57600 bps)" --> MCU
        ESP -- "UART Serial1 (TX1/RX1 - 115200 bps)" --> MCU
        MCU -- "I2C Bus (SDA D20 / SCL D21)" --> I2C_MOD --> LCD
        MCU -- "SPI Bus (MOSI D51, MISO D50, SCK D52, CS D53)" --> SD_MOD
    end

    subgraph "Khối Quản Trị & Lưu Trữ Máy Chủ"
        PC["Máy tính Quản lý (Visual Studio 2015 C# WinForms)"]
        EXCEL["Cơ sở dữ liệu Bảng tính Excel (.xlsx)"]
        
        ESP -. "Sóng WiFi 2.4GHz (Giao thức TCP/IP)" .-> PC
        PC --> EXCEL
    end

    MB --> MCU
    MB --> R305
    MB --> ESP
    MB --> I2C_MOD
    MB --> SD_MOD

Thông số kỹ thuật chi tiết của Stack công nghệ

Thành phần Tên thiết bị / Phần mềm Thông số kỹ thuật & Phiên bản Vai trò trong hệ thống
Vi điều khiển Arduino Mega 2560 R3 Vi xử lý ATmega2560 8-bit, 16 MHz, 256 KB Flash, 8 KB SRAM, 4 KB EEPROM, 4 cổng UART phần cứng Thu thập tín hiệu, điều phối truyền thông, điều khiển hiển thị và định tuyến gói tin
Cảm biến vân tay Optical Fingerprint Sensor R305 Độ phân giải 500 DPI, cửa sổ quét 18x22 mm, bộ nhớ 162 templates, UART 57600 bps, thời gian quét < 0.5s Chụp ảnh vân tay, trích xuất đặc trưng (Minutiae extraction) và so khớp mẫu (1:1 / 1:N)
Module WiFi ESP8266-12 (Espressif) CPU Tensilica L106 32-bit, chuẩn WiFi 802.11 b/g/n 2.4GHz, hỗ trợ WPA/WPA2, tập lệnh AT Command Tạo kết nối TCP/IP không dây giữa thiết bị nhúng và phần mềm quản trị trên máy tính
Lưu trữ cục bộ Micro SD Card Module Chuẩn giao tiếp SPI, hỗ trợ chuẩn định dạng FAT16/FAT32 Lưu trữ tệp cấu hình mạng config.txt (chứa SSID và Pass WiFi)
Hiển thị LCD 16x2 + PCF8574 Màn hình ký tự HD44780, module I2C 8-bit I/O expander, địa chỉ I2C 0x27 hoặc 0x3F Hiển thị trạng thái khởi động, địa chỉ IP, kết quả điểm danh, thông báo lỗi
Nguồn cấp Power Bank + Breadboard Module Điện áp vào 5V DC (1A-2A), đầu ra ổn áp kép 5V DC và 3.3V DC Cung cấp nguồn riêng biệt, chống sụt áp cho khối xử lý và khối phát sóng RF
Phần mềm máy chủ Ứng dụng C# WinForms Visual Studio 2015, .NET Framework 4.5/4.6, kết nối Socket TCP / Interop Excel Giao diện điều khiển, nhận dạng ID, ánh xạ thông tin cá nhân và xuất báo cáo

Thiết kế giao thức truyền thông gói tin (Packet Protocol)

Giao tiếp giữa Vi điều khiển ATmega2560 và Module cảm biến vân tay R305 được thực hiện qua giao thức truyền thông nối tiếp UART với cấu trúc khung dữ liệu nhị phân nghiêm ngặt:

$$\text{Cấu trúc gói tin:} \quad [\text{Header: 2B}] + [\text{Address: 4B}] + [\text{PID: 1B}] + [\text{Length: 2B}] + [\text{Content: NB}] + [\text{Checksum: 2B}]$$

  • Header (Mã bắt đầu): Cố định 0xEF01 (2 bytes).
  • Address (Địa chỉ thiết bị): Mặc định 0xFFFFFFFF (4 bytes).
  • Package Identifier (PID): 0x01 (Gói lệnh điều khiển), 0x02 (Gói dữ liệu), 0x07 (Gói phản hồi - Acknowledge), 0x08 (Gói kết thúc truyền dữ liệu).
  • Package Length: Độ dài 2 bytes (tính từ byte PID đến hết byte Checksum, không bao gồm Header và Address).
  • Checksum: Tổng số học 2 bytes của tất cả các byte từ PID đến hết Content:

$$\text{Checksum} = \sum_{i=1}^{k} \text{Byte}_i \pmod{65536}$$

Bảng mã lệnh điều khiển cốt lõi của cảm biến R305

Mã lệnh (Hex) Tên lệnh Chức năng chi tiết Ý nghĩa mã phản hồi ACK (0x00 = Thành công)
0x01 GenImg Thu thập ảnh vân tay từ lăng kính vào bộ đệm hình ảnh 0x01: Lỗi nhận gói; 0x02: Không phát hiện ngón tay
0x02 Img2Tz Trích xuất đặc trưng ảnh từ đệm hình ảnh sang CharBuffer1 / CharBuffer2 0x06: Ảnh quá mờ; 0x07: Dấu vân tay quá nhỏ
0x05 RegModel Kết hợp dữ liệu đặc trưng từ CharBuffer1CharBuffer2 để tạo mẫu chung 0x0A: Ghép đặc trưng thất bại (vân tay không khớp)
0x06 Store Lưu mẫu vân tay hoàn chỉnh vào bộ nhớ Flash nội vi tại vị trí ID chỉ định 0x0B: ID vượt quá giới hạn lưu trữ (1-162); 0x18: Lỗi Flash
0x04 Search Tìm kiếm so khớp mẫu vân tay trong bộ nhớ Flash từ vị trí $A$ đến $B$ Trả về ID trùng khớp và điểm chính xác (Matching Score)
0x0C DeletChar Xóa $N$ mẫu vân tay tính từ vị trí chỉ định ID 0x10: Xóa dữ liệu thất bại
0x0D Empty Xóa toàn bộ cơ sở dữ liệu vân tay trên bộ nhớ Flash cảm biến 0x11: Xóa bộ nhớ Flash thất bại

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển hệ thống nhúng V-Model, tích hợp kiểm thử song song giữa tầng phần cứng vi mạch và tầng phần mềm ứng dụng:

[ Yêu cầu hệ thống ] -----------------------------> [ Kiểm thử nghiệm thu (UAT) ]
       \                                                   /
   [ Thiết kế kiến trúc ] ----------------------> [ Kiểm thử tích hợp hệ thống ]
          \                                           /
      [ Thiết kế module ] --------------> [ Kiểm thử đơn vị (Firmware/Software) ]
             \                                 /
              -----> [ Lập trình & Thi công ] --

Ma trận đánh giá rủi ro kỹ thuật và giải pháp kiểm soát

Rủi ro kỹ thuật Mức độ Khả năng xảy ra Giải pháp kỹ thuật xử lý (Mitigation Strategy)
Sụt áp đột ngột khi ESP8266 phát sóng Cao Cao Tách biệt nguồn 3.3V bằng IC ổn áp độc lập; cấp nguồn qua breadboard module; bổ sung tụ điện hóa $100\mu\text{F}$ và $0.1\mu\text{F}$ gần chân VCC của ESP8266.
Dòng khởi động của ESP8266 kéo tụt vi điều khiển Trung bình Cao Giữ chân CH_PD ở mức $0\text{V}$ khi khởi động hệ thống; dùng vi điều khiển kích hoạt CH_PD lên $3.3\text{V}$ sau 2 giây trễ ổn định nguồn.
Tràn bộ đệm UART Serial Buffer trên Arduino Trung bình Trung bình Tối ưu hóa chu trình đọc vòng lặp Serial.available(); nâng baudrate giao tiếp cảm biến lên 57600 bps và ESP8266 lên 115200 bps.
Nhiễu tín hiệu quang học do ánh sáng môi trường Thấp Trung bình Bật đèn LED đỏ nền tích hợp trong buồng lăng kính R305 trong suốt quá trình chụp; cấu hình ngưỡng bảo mật (Security Level) ở mức 3/5.

Implementation và kết quả

Chi tiết quá trình phát triển và hiện thực mã nguồn

1. Firmware điều khiển trên Arduino Mega 2560 (C/C++)

Đoạn mã firmware thực hiện khởi tạo đa cổng UART, thiết lập LCD qua I2C, kích hoạt WiFi ESP8266 qua tập lệnh AT, và giải thuật lấy mẫu - tìm kiếm vân tay thời gian thực:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <SD.h>

// Khởi tạo LCD 16x2 tại địa chỉ I2C 0x27
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Định nghĩa cổng kết nối ngoại vi
#define FINGER_SERIAL Serial2  // Giao tiếp R305 (Baudrate: 57600)
#define WIFI_SERIAL   Serial1  // Giao tiếp ESP8266 (Baudrate: 115200)
#define ESP8266_CH_PD 4       // Chân điều khiển kích hoạt nguồn ESP8266
#define SD_CS_PIN     53      // Chân chọn Chip Select cho thẻ nhớ SD

// Cấu trúc gói lệnh tìm kiếm vân tay (Search Command Packet)
const byte FingerSearchCmd[] = {0xEF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x08, 0x04, 0x01, 0x00, 0x00, 0x00, 0xA2, 0x00, 0xB0};

void setup() {
    Serial.begin(9600);
    FINGER_SERIAL.begin(57600);
    WIFI_SERIAL.begin(115200);
    
    pinMode(ESP8266_CH_PD, OUTPUT);
    digitalWrite(ESP8266_CH_PD, LOW); // Giữ chip ESP ở trạng thái nghỉ
    
    lcd.init();
    lcd.backlight();
    lcd.setCursor(0, 0);
    lcd.print("System Starting");
    
    delay(2000); // Trễ 2s ổn định nguồn điện toàn mạch
    digitalWrite(ESP8266_CH_PD, HIGH); // Kích hoạt ESP8266
    
    setupWiFiNetwork();
}

void loop() {
    int fingerID = checkFingerprint();
    if (fingerID > 0) {
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("ID: ");
        lcd.print(fingerID);
        lcd.setCursor(0, 1);
        lcd.print("Sending WiFi...");
        
        // Gửi chuỗi dữ liệu định dạng về máy chủ: "ATTEND:<ID>\n"
        sendAttendanceData(fingerID);
        delay(1500);
    }
}

int checkFingerprint() {
    // Gửi lệnh chụp ảnh vân tay GenImg: 0xEF01 + Addr + 0x01 + 0x0003 + 0x01 + 0x0005
    byte genImgCmd[] = {0xEF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x03, 0x01, 0x00, 0x05};
    FINGER_SERIAL.write(genImgCmd, sizeof(genImgCmd));
    
    unsigned long timer = millis();
    while (!FINGER_SERIAL.available()) {
        if (millis() - timer > 200) return -1; // Timeout không có ngón tay
    }
    
    byte ackPacket[12];
    FINGER_SERIAL.readBytes(ackPacket, 12);
    
    // Kiểm tra byte Confirmation Code tại index 9 (0x00: Chụp ảnh thành công)
    if (ackPacket[6] == 0x07 && ackPacket[9] == 0x00) {
        // Tiếp tục gọi hàm trích xuất đặc trưng Img2Tz và Tìm kiếm Search (mã lệnh 0x04)
        return executeSearchAlgorithm();
    }
    return -1;
}

void sendAttendanceData(int id) {
    String payload = "ATTEND:" + String(id);
    String cipSend = "AT+CIPSEND=0," + String(payload.length() + 2);
    
    WIFI_SERIAL.println(cipSend);
    delay(50);
    WIFI_SERIAL.println(payload);
}

2. Xử lý đồng bộ hóa và quản trị dữ liệu trên C# WinForms

Ứng dụng máy chủ triển khai một Socket Server TCP/IP bất đồng bộ lắng nghe kết nối từ địa chỉ IP của ESP8266, tiến hành đối soát mã ID trong cơ sở dữ liệu Excel và hiển thị thông tin học viên:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;

namespace AttendanceManagementSystem
{
    public partial class MainForm : Form
    {
        private TcpListener _tcpListener;
        private string _excelPath = @"C:\AttendanceData\Database_SinhVien.xlsx";

        public MainForm()
        {
            InitializeComponent();
            StartTcpServer();
        }

        private void StartTcpServer()
        {
            _tcpListener = new TcpListener(IPAddress.Any, 8080);
            _tcpListener.Start();
            _tcpListener.BeginAcceptTcpClient(new AsyncCallback(OnClientConnect), null);
        }

        private void OnClientConnect(IAsyncResult ar)
        {
            TcpClient client = _tcpListener.EndAcceptTcpClient(ar);
            NetworkStream stream = client.GetStream();
            byte[] buffer = new byte[1024];
            int bytesRead = stream.Read(buffer, 0, buffer.Length);
            
            string rawData = Encoding.ASCII.GetString(buffer, 0, bytesRead).Trim();
            
            if (rawData.StartsWith("ATTEND:"))
            {
                int studentID = int.Parse(rawData.Split(':')[1]);
                this.Invoke(new Action(() => ProcessAttendanceRecord(studentID)));
            }
            
            // Tiếp tục lắng nghe các kết nối tiếp theo
            _tcpListener.BeginAcceptTcpClient(new AsyncCallback(OnClientConnect), null);
        }

        private void ProcessAttendanceRecord(int id)
        {
            Excel.Application excelApp = new Excel.Application();
            Excel.Workbook workbook = excelApp.Workbooks.Open(_excelPath);
            Excel._Worksheet worksheet = workbook.Sheets[1];
            Excel.Range range = worksheet.UsedRange;

            int rowCount = range.Rows.Count;
            bool found = false;

            for (int i = 2; i <= rowCount; i++)
            {
                if (range.Cells[i, 1].Value2 != null && 
                    Convert.ToInt32(range.Cells[i, 1].Value2) == id)
                {
                    string studentName = range.Cells[i, 2].Value2.ToString();
                    string mssv = range.Cells[i, 3].Value2.ToString();
                    
                    // Ghi dấu thời gian điểm danh vào cột 4
                    worksheet.Cells[i, 4] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    worksheet.Cells[i, 5] = "Có mặt";
                    
                    lblStatus.Text = $"Điểm danh thành công: {studentName} ({mssv})";
                    gridAttendance.Rows.Add(id, studentName, mssv, DateTime.Now.ToShortTimeString(), "Hợp lệ");
                    found = true;
                    break;
                }
            }

            workbook.Save();
            workbook.Close(true);
            excelApp.Quit();
        }
    }
}

Kiểm thử và đánh giá hiệu năng (Testing & Validation)

Hệ thống được trải qua quy trình kiểm thử thực nghiệm trên 100 lần quét mẫu vân tay với các điều kiện người dùng và môi trường khác nhau.

+-------------------------------------------------------------------------------+
|                       KẾT QUẢ KIỂM THỬ ĐỘ CHÍNH XÁC QUÉT                      |
|                                                                               |
|  Ngón tay khô ráo     [========================================] 99.0%        |
|  Ngón tay ướt mồ hôi  [==============================          ] 75.0%        |
|  Đặt góc lệch (>30 độ)[===================================     ] 87.5%        |
|  Bụi bẩn nhẹ          [======================================  ] 95.0%        |
+-------------------------------------------------------------------------------+

Dữ liệu đo kiểm hiệu năng hệ thống chi tiết

Kịch bản kiểm thử Số mẫu thử Tỷ lệ thành công (%) Thời gian đáp ứng trung bình (ms) Nhận xét kỹ thuật
Quét vân tay chuẩn (Khô ráo) 100 99.0% $420\text{ ms}$ Nhận dạng tức thì, điểm chính xác (Matching Score) > 120
Quét vân tay có độ ẩm (Mồ hôi nhẹ) 40 75.0% $680\text{ ms}$ Chiết quang bề mặt thay đổi làm giảm độ tương phản ảnh
Quét góc đặt lệch ($> 30^\circ$) 40 87.5% $550\text{ ms}$ Vẫn nhận dạng được nếu vùng tâm vân tay (Core) nằm trong thấu kính
Truyền gói tin qua WiFi (Khoảng cách 5m) 100 100.0% $85\text{ ms}$ Độ trễ mạng Socket TCP/IP nội bộ rất thấp, 0% mất gói
Truyền gói tin qua WiFi (Khoảng cách 20m qua tường) 100 96.0% $240\text{ ms}$ Tín hiệu suy hao -78 dBm, có cơ chế truyền lại
Ghi và lưu dữ liệu vào tệp Excel 100 100.0% $320\text{ ms}$ Thao tác đóng/mở qua Interop API được thực thi bất đồng bộ

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

  1. Kiến trúc không dây linh hoạt: Khắc phục hoàn toàn sự ràng buộc về dây cáp truyền thông cố định (RJ45/USB) của các máy chấm công công nghiệp. Cho phép thiết bị được di chuyển tự do giữa các bàn học hoặc các phòng hội thảo khác nhau.
  2. Cơ chế cấu hình mạng động qua thẻ nhớ ngoại vi: Giải quyết điểm yếu cố hữu của các hệ sinh thái vi điều khiển (vốn phải nạp lại code khi đổi mạng WiFi). Người quản trị chỉ cần chỉnh sửa tệp config.txt trên thẻ Micro SD để thiết bị tự nhận SSID và Password mới.
  3. Phần cứng phân tầng tối ưu chi phí: Tận dụng năng lực xử lý đa luồng UART của ATmega2560 kết hợp cùng năng lực xử lý giao thức mạng độc lập của chip SoC ESP8266, tạo ra một kiến trúc phân tán phần cứng mạnh mẽ với tổng chi phí sản xuất thấp hơn 70% so với thiết bị thương mại.
+-------------------------------------------------------------------------------+
|                       SO SÁNH CHI PHÍ VÀ HIỆU NĂNG TỔNG THỂ                    |
|                                                                               |
|  [Đề tài Điểm danh WiFi]    Chi phí: 1.150.000 VNĐ | Cơ động: 100% (Không dây)|
|  [ZKTeco K40 (RJ45)]        Chi phí: 2.800.000 VNĐ | Cơ động: 10% (Cố định)   |
|  [Ronald Jack X628-C]       Chi phí: 3.600.000 VNĐ | Cơ động: 10% (Cố định)   |
+-------------------------------------------------------------------------------+

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

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

  • Mô hình giảng đường đại học: Thiết bị được bố trí tại bàn giảng viên hoặc chuyển giao giữa các dãy bàn. Sinh viên thực hiện điểm danh bằng cách ấn vân tay khi vào lớp; dữ liệu tự động đổ về máy tính xách tay của giảng viên đang kết nối cùng mạng WiFi nội bộ.
  • Mô hình phòng họp/Hội thảo cơ động: Ứng dụng cho các sự kiện không cố định địa điểm. Thiết bị chạy bằng pin sạc dự phòng, tự động phát WiFi (chế độ Access Point) hoặc gia nhập mạng di động từ bộ phát 4G/WiFi.
sequenceDiagram
    autonumber
    actor SV as Sinh Viên
    participant R305 as Cảm Biến R305
    participant MCU as Arduino Mega 2560
    participant ESP as Module ESP8266
    participant PC as Máy Tính Quản Lý (C#)
    participant DB as File Excel Cơ Sở Dữ Liệu

    SV->>R305: Đặt ngón tay lên lăng kính
    R305->>R305: Chụp ảnh (GenImg) & So khớp (Search)
    R305-->>MCU: Trả về gói tin ACK chứa ID trùng khớp
    MCU->>MCU: Đọc dữ liệu, cập nhật LCD 16x2
    MCU->>ESP: Gửi chuỗi lệnh AT "ATTEND:ID"
    ESP->>PC: Gửi gói tin qua Socket TCP (Port 8080)
    PC->>DB: Tra cứu ID, ghi Timestamp & Trạng thái "Có mặt"
    DB-->>PC: Lưu tệp thành công
    PC-->>SV: Hiển thị tên, MSSV trên giao diện phần mềm

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

  • Chi phí chế tạo phần cứng:
    • Board Arduino Mega 2560: ~220.000 VNĐ
    • Module cảm biến vân tay R305: ~450.000 VNĐ
    • Module WiFi ESP8266v12: ~80.000 VNĐ
    • Màn hình LCD 16x2 + I2C Module: ~65.000 VNĐ
    • Module Micro SD Reader + Thẻ nhớ: ~85.000 VNĐ
    • Nguồn pin dự phòng + Mạch nguồn Breadboard: ~150.000 VNĐ
    • Khung vỏ và phụ kiện dây nối: ~100.000 VNĐ
    • Tổng chi phí phần cứng: $\approx \mathbf{1.150.000 \text{ VNĐ}}$
  • Chỉ số hoàn vốn (ROI): Tiết kiệm 100% chi phí mua giấy tờ điểm danh hàng năm, giảm 100% thời gian nhập liệu thủ công của giáo vụ (tương đương tiết kiệm ~120 giờ làm việc mỗi học kỳ cho một khoa đào tạo 2000 sinh viên).

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

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

  • Hệ quản trị cơ sở dữ liệu: Việc sử dụng định dạng bảng tính Excel phù hợp cho các ứng dụng độc lập, quy mô lớp học ($< 500$ sinh viên) nhưng sẽ xuất hiện tình trạng xung đột khóa file (File Lock) và độ trễ ghi dữ liệu tăng dần khi quy mô đồng thời lên tới hàng nghìn bản ghi.
  • Băng tần truyền thông: Module ESP8266-12 chỉ hoạt động ở băng tần 2.4 GHz đơn kênh, dễ bị suy hao hoặc nhiễu trong môi trường có mật độ thiết bị phát sóng cao.
  • Dung lượng lưu trữ vân tay nội vi: Giới hạn 162 mẫu vân tay trên module R305 yêu cầu phải phân nhóm quản trị viên hoặc sử dụng nhiều module nếu áp dụng cho toàn trường.

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

  • Chuyển dịch cơ sở dữ liệu sang RDBMS: Nâng cấp hệ thống backend từ file Excel sang cơ sở dữ liệu quan hệ MySQL Server hoặc PostgreSQL, xây dựng hệ thống RESTful API kết nối qua giao thức HTTP POST/JSON.
  • Tích hợp giao thức IoT chuẩn hóa MQTT: Thay thế cơ chế Socket TCP thô bằng giao thức MQTT (Message Queuing Telemetry Transport) thông qua MQTT Broker trung tâm, cho phép triển khai hàng trăm trạm điểm danh đồng thời về máy chủ Cloud mà không tắc nghẽn đường truyền.
  • Nâng cấp cảm biến vân tay điện dung: Thay thế cảm biến quang học R305 bằng cảm biến điện dung thế hệ mới (Capacitive Sensor) nhằm tăng cường khả năng chống vân tay giả, nâng cao tốc độ quét đối với ngón tay ướt hoặc mờ vân.

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

+-------------------------------------------------------------------------------+
|                            ĐỐI TƯỢNG HƯỞNG LỢI                                 |
|                                                                               |
|  [ Sinh Viên ]       ---> Điểm danh minh bạch, không mất thời gian tiết học   |
|  [ Kỹ Sư Nhúng ]     ---> Tham khảo kiến trúc UART đa kênh & giao thức R305   |
|  [ Nhà Quản Lý ]     ---> Tự động hóa báo cáo, cắt giảm 70% chi phí đầu tư    |
|  [ Nhà Nghiên Cứu ]  ---> Nền tảng mở rộng cho các hệ thống Smart School/IoT  |
+-------------------------------------------------------------------------------+
  • Sinh viên & Học viên: Trải nghiệm quy trình điểm danh tức thì, minh bạch hóa dữ liệu chuyên cần, loại bỏ hoàn toàn hiện tượng quên ký tên hoặc nhầm lẫn danh sách.
  • Kỹ sư và Lập trình viên nhúng: Sở hữu tài liệu chi tiết về quy trình điều khiển gói tin nhị phân UART cấp thấp trên cảm biến R305, kỹ thuật xử lý sụt áp trên ESP8266 và mô hình tích hợp C# WinForms qua Socket TCP.
  • Cơ sở giáo dục & Doanh nghiệp vừa và nhỏ: Tiếp cận giải pháp quản lý chấm công/điểm danh chi phí thấp, triển khai nhanh chóng trong 15 phút mà không yêu cầu lắp đặt hệ thống dây mạng mạng LAN phức tạp.
  • Nhà nghiên cứu học thuật: Cung cấp mô hình thực nghiệm hoàn chỉnh để tiếp tục phát triển các đề tài liên quan đến hệ thống quản lý trường học thông minh (Smart Campus) hoặc giải pháp giám sát an ninh sinh trắc học phân tán.

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

1. Yêu cầu cấu hình tối thiểu để triển khai phần mềm quản lý trên máy tính là gì?

Máy tính chỉ cần chạy hệ điều hành Windows 7/8/10/11, cài đặt môi trường .NET Framework phiên bản 4.5 trở lên và Microsoft Office Excel (hoặc Microsoft Access Database Engine). Máy tính cần kết nối chung mạng WiFi (hoặc mạng LAN) với module ESP8266.

2. Thiết bị xử lý như thế nào khi bị mất kết nối WiFi trong quá trình sinh viên quét vân tay?

Trong phiên bản hiện tại, khi mất WiFi, thiết bị vẫn ghi nhận ID vân tay và hiển thị thông báo "Sending WiFi Error" trên LCD. Hướng nâng cấp mở rộng có thể kích hoạt ghi tạm ID và Timestamp vào thẻ nhớ Micro SD theo hàng đợi (FIFO queue) và tự động đồng bộ hóa ngược lên máy chủ ngay khi kết nối mạng được tái lập.

3. Làm cách nào để đăng ký mẫu vân tay cho một người dùng mới?

Người quản trị mở phần mềm C# trên máy tính, chuyển sang tab "Quản lý dữ liệu cá nhân" và nhấn nút "Lấy mẫu vân tay". Phần mềm gửi lệnh tạo ID mới xuống Arduino. Thiết bị yêu cầu người dùng đặt ngón tay 2 lần lên cảm biến R305 để module tự động so sánh, tạo tệp đặc trưng RegModel (lệnh 0x05) và lưu vào Flash (lệnh 0x06).

4. Tại sao cần sử dụng module hạ áp/nguồn riêng cho ESP8266 thay vì lấy trực tiếp từ chân 3.3V của Arduino Mega?

Chân cấp nguồn 3.3V nội vi của bo mạch Arduino Mega 2560 chỉ cung cấp dòng tải tối đa khoảng $50\text{ mA}$. Trong khi đó, module ESP8266 khi phát sóng WiFi ở công suất đỉnh có thể tiêu thụ dòng tức thời lên tới $300\text{ mA}$. Nếu nối trực tiếp sẽ gây sụt áp toàn hệ thống, khiến vi điều khiển bị Reset liên tục.

5. Dữ liệu vân tay lưu trên cảm biến R305 có bị mất khi ngắt nguồn điện không?

Không. Module R305 tích hợp chip nhớ Flash ROM độc lập bên trong buồng cảm biến. Mọi dữ liệu mẫu vân tay đã lưu (vị trí từ 1 đến 162) được lưu trữ vĩnh viễn và không bị xóa bỏ khi ngắt nguồn cung cấp, trừ khi quản trị viên thực hiện lệnh xóa thủ công (0x0C hoặc 0x0D).


Kết luận

Đồ án tốt nghiệp "Hệ thống điểm danh vân tay qua WiFi" đã giải quyết thành công bài toán tự động hóa công tác quản lý chuyên cần bằng việc kết hợp hài hòa giữa công nghệ sinh trắc học và truyền thông không dây. Với việc ứng dụng vi điều khiển ATmega2560, module quang học R305 và vi mạch WiFi ESP8266, hệ thống đã chứng minh được tính ổn định cao, thời gian đáp ứng dưới $0.8\text{ giây}$ cùng tỷ lệ nhận dạng chính xác đạt $99%$ trong điều kiện tiêu chuẩn.

Giải pháp không chỉ mang lại giá trị thực tiễn cao cho các môi trường đào tạo đại học và doanh nghiệp nhờ chi phí lắp ráp tiết kiệm, mà còn mở ra hướng phát triển quan trọng cho các hệ sinh thái quản lý thông minh không dây trong tương lai. Hệ thống hoàn toàn có khả năng thương mại hóa hoặc chuyển giao công nghệ sau khi được tích hợp thêm giao thức MQTT và cơ sở dữ liệu phân tán trên nền tảng đám mây.