Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số giáo dục đại học (EdTech) và quản trị trường học thông minh, việc tối ưu hóa quy trình vận hành lớp học là một ưu tiên chiến lược. Theo các khảo sát thực tế tại các trường đại học quy mô lớn, phương pháp điểm danh truyền thống (gọi tên từng sinh viên hoặc truyền tay nhau danh sách ký tên) làm tiêu tốn trung bình từ 10 đến 15 phút của mỗi tiết học (chiếm từ 15% đến 20% tổng quỹ thời gian giảng dạy), đồng thời tạo ra lỗ hổng lớn về tình trạng gian lận, điểm danh hộ.

Khóa luận tốt nghiệp chuyên ngành Công nghệ Thông tin tại Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM (UIT) do sinh viên Trương Đức Nghĩa và Nguyễn Phương Phi thực hiện, dưới sự hướng dẫn chuyên môn của ThS. Võ Ngọc Tân, đã tập trung giải quyết triệt để bài toán này thông qua đề tài: "Ứng dụng điểm danh lớp học bằng Bluetooth".

                           +-------------------------------------+
                           |        Admin / Lecturer Web         |
                           |       (ReactJS + Redux Store)       |
                           +------------------+------------------+
                                              | HTTPS / JSON API
                                              v
+-----------------------+          +--------------------+          +-----------------------+
|  Student Smart Device |  BLE     |  ASP.NET Core Web  |  TCP/IP  |   Microsoft SQL       |
| (React Native Client) |<-------->|   API (RESTful)    |<-------->|    Server 2019        |
|  [Peripheral/Central] | 2.4GHz   +--------------------+  T-SQL   |  (Relational Storage) |
+-----------------------+                     ^                    +-----------------------+
            ^                                 | BLE / HTTPS
            +---------------------------------+
                 Lecturer Device (Central/Peripheral)

Vấn đề cụ thể và điểm nghẽn thực tế (Problem Statement)

  • Tổn thất thời gian thực học: Giảng viên tại các giảng đường lớn (50 – 150 sinh viên) mất quá nhiều thời gian cho việc đọc tên xác nhận.
  • Tình trạng điểm danh hộ (Proxy Attendance): Hình thức ký tên giấy hoặc chia sẻ mã QR qua mạng xã hội khiến sinh viên vắng mặt vẫn có thể nhờ bạn bè xác nhận hộ một cách dễ dàng.
  • Chi phí thiết bị chuyên dụng đắt đỏ: Việc lắp đặt máy chấm công vân tay hoặc camera nhận diện khuôn mặt AI tại từng phòng học đòi hỏi chi phí đầu tư phần cứng, bảo trì và lắp đặt dây mạng rất lớn, khó phủ sóng đồng bộ toàn trường.
  • Sự phụ thuộc vào kết nối mạng: Nhiều giảng đường nằm trong khu vực sóng Wi-Fi/4G yếu hoặc chập chờn, khiến các giải pháp điểm danh trực tuyến dựa trên Cloud bị gián đoạn.

Mục tiêu đề tài

  1. Nghiên cứu sâu cơ chế truyền nhận dữ liệu không dây tầm gần của chuẩn Bluetooth Low Energy (BLE) so với Bluetooth Classic.
  2. Xây dựng cơ chế xác thực thiết bị 1-1 (Binding Device via UUID) nhằm ngăn chặn triệt để hành vi điểm danh hộ.
  3. Phát triển hệ sinh thái phần mềm hoàn chỉnh gồm: Ứng dụng di động đa nền tảng (React Native) cho Giảng viên & Sinh viên; Website quản trị tập trung (ReactJS) cho Quản trị viên.
  4. Xây dựng hệ thống Backend Web API hiệu năng cao bằng ASP.NET Core và cơ sở dữ liệu Microsoft SQL Server 2019.
  5. Hiện thực hóa hai chế độ điểm danh linh hoạt: Trực tuyến (Online) và Ngoại tuyến (Offline không cần Internet thông qua sóng BLE).

Tiếp cận giải pháp và phạm vi nghiên cứu

Hệ thống tận dụng phần cứng điện thoại thông minh sẵn có của người dùng, đóng vai trò linh hoạt vừa là bộ phát tín hiệu (Peripheral) vừa là bộ thu tín hiệu (Central). Mỗi thiết bị sinh viên khi cài đặt ứng dụng sẽ được gán một định danh duy nhất (UUID) và liên kết chặt chẽ với tài khoản sinh viên. Quá trình thay đổi thiết bị phải thông qua xét duyệt của Quản trị viên. Đề tài giới hạn phạm vi thử nghiệm ứng dụng di động trên hệ điều hành Android và xây dựng cơ sở dữ liệu độc lập phục vụ nhu cầu đào tạo.


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

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

Tiêu chí so sánh Điểm danh truyền thống (Ký tên/Gọi tên) Máy chấm công Vân tay / FaceID Thẻ từ sinh viên (RFID / NFC) Giải pháp Điểm danh BLE (Đề tài)
Thời gian thực hiện 10 - 15 phút / lớp 60 SV 5 - 8 phút (xếp hàng lần lượt) 3 - 5 phút (quẹt thẻ lần lượt) < 30 giây (quét đồng thời)
Độ chính xác & Chống gian lận Rất thấp (dễ ký hộ, hô hộ) Rất cao Thấp (chuyển thẻ cho nhau quẹt) Rất cao (khóa cứng UUID thiết bị)
Chi phí đầu tư phần cứng 0 VNĐ Rất cao (5 - 15 triệu/phòng) Trung bình (đầu đọc + phôi thẻ) 0 VNĐ (tận dụng smartphone cá nhân)
Khả năng hoạt động Offline Tùy dòng máy Có (đồng bộ sau qua Bluetooth/Local)
Trải nghiệm người dùng Gây gián đoạn giờ học Ùn tắc cửa lớp Dễ quên/mất thẻ Tự động, tiện lợi, không chạm

Ma trận ưu tiên yêu cầu người dùng (MoSCoW)

  • Must-have (Bắt buộc): Đăng nhập/Đăng ký xác thực; Quét và phát tín hiệu BLE; Liên kết UUID thiết bị với mã số sinh viên; Ghi nhận trạng thái điểm danh; Phân quyền Giảng viên / Sinh viên / Quản trị viên.
  • Should-have (Nên có): Điểm danh Offline khi mất kết nối mạng; Xem thời khóa biểu theo tuần; Lịch sử điểm danh trực quan; Gửi yêu cầu thay đổi thiết bị kèm lý do.
  • Could-have (Có thể có): Thống kê tỷ lệ chuyên cần theo biểu đồ trực quan; Xuất báo cáo điểm danh ra file Excel; Quản lý phòng học và môn học linh hoạt.
  • Won't-have (Chưa thực hiện ở giai đoạn này): Tích hợp camera AI nhận diện khuôn mặt; Đồng bộ trực tiếp vào hệ thống ERP đào tạo của bên thứ ba.

Thiết kế hệ thống

Technology Stack và phiên bản sử dụng

  • Mobile Client: React Native (v0.64+), JavaScript ES6, Redux Core, React Navigation.
  • Web Frontend (Admin Portal): ReactJS (v17.0.2), Virtual DOM, JSX, Axios, Redux Thunk.
  • Backend Web API: ASP.NET Core (v3.1 / .NET 5), RESTful API Architecture, Entity Framework Core.
  • Database Engine: Microsoft SQL Server 2019 Standard Edition.
  • Giao thức truyền thông: Bluetooth Low Energy (BLE) 4.0/4.2/5.0, Chuẩn bảo mật HTTPS / JSON Web Token (JWT).

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

-- Bảng lưu trữ thông tin tài khoản và phân quyền
CREATE TABLE Users (
    UserId INT IDENTITY(1,1) PRIMARY KEY,
    Username NVARCHAR(50) UNIQUE NOT NULL,
    PasswordHash NVARCHAR(256) NOT NULL,
    FullName NVARCHAR(100) NOT NULL,
    Email NVARCHAR(100) UNIQUE NOT NULL,
    Role NVARCHAR(20) NOT NULL -- 'Admin', 'Lecturer', 'Student'
);

-- Bảng định danh phần cứng chống gian lận
CREATE TABLE Devices (
    DeviceId INT IDENTITY(1,1) PRIMARY KEY,
    UserId INT FOREIGN KEY REFERENCES Users(UserId),
    DeviceUUID NVARCHAR(128) UNIQUE NOT NULL,
    DeviceName NVARCHAR(100),
    IsActive BIT DEFAULT 1,
    RegisteredDate DATETIME DEFAULT GETDATE()
);

-- Bảng ghi nhận kết quả điểm danh
CREATE TABLE AttendanceRecords (
    RecordId BIGINT IDENTITY(1,1) PRIMARY KEY,
    ScheduleId INT NOT NULL,
    StudentId INT FOREIGN KEY REFERENCES Users(UserId),
    CheckInTime DATETIME DEFAULT GETDATE(),
    DeviceUUID NVARCHAR(128) NOT NULL,
    AttendanceType NVARCHAR(20) NOT NULL, -- 'Online', 'Offline_BLE'
    Status NVARCHAR(20) NOT NULL -- 'Present', 'Late', 'Absent'
);

Thiết kế RESTful API Endpoints

HTTP Method Endpoint URI Mô tả chức năng Quyền truy cập
POST /api/v1/auth/login Xác thực người dùng, cấp Token phiên làm việc Public
POST /api/v1/devices/register Đăng ký liên kết UUID smartphone với tài khoản sinh viên Student
POST /api/v1/attendance/checkin Nhận gói tin quét BLE và ghi nhận điểm danh vào CSDL Lecturer / Student
GET /api/v1/schedules/student/{id} Truy vấn lịch học và thời khóa biểu của sinh viên Student
PUT /api/v1/admin/devices/approve-change Phê duyệt hoặc từ chối yêu cầu đổi thiết bị Admin

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

Dự án áp dụng mô hình phát triển phần mềm Agile/Scrum linh hoạt chia thành 4 Sprint chính trong khoảng thời gian từ ngày 01/03/2021 đến ngày 12/06/2021:

[Tháng 03/2021] Sprint 1: Khảo sát hiện trạng, nghiên cứu đặc tính BLE & thiết kế CSDL
       │
       ▼
[Tháng 04/2021] Sprint 2: Xây dựng Backend ASP.NET Core Web API & hoàn thiện Entity Framework
       │
       ▼
[Tháng 05/2021] Sprint 3: Phát triển React Native App, Web ReactJS & tích hợp BLE Peripheral/Central
       │
       ▼
[Tháng 06/2021] Sprint 4: Kiểm thử tích hợp, tối ưu thuật toán chống gian lận & đóng gói sản phẩm

Implementation và kết quả

Quy trình phát triển và thuật toán cốt lõi

Hệ thống triển khai cơ chế điểm danh song phương dựa trên công nghệ BLE:

  1. Chế độ Giảng viên quét (Lecturer Central Mode): Giảng viên bật chức năng điểm danh trên ứng dụng di động. Ứng dụng của sinh viên phát sóng gói tin Advertising mang UUID định danh thiết bị. Giảng viên thu thập danh sách tín hiệu xung quanh trong bán kính 10m và gửi gói tin về máy chủ xử lý hàng loạt.
  2. Chế độ Sinh viên quét (Student Central Mode): Thiết bị giảng viên phát tín hiệu Broadcast mang LecturerSessionID. Sinh viên bật ứng dụng để quét mã phiên này, khi phát hiện đúng lớp sẽ tự động gửi gói tin xác thực lên Web API.

1. Code Snippet: Cấu hình phát sóng BLE Peripheral trên ứng dụng di động (React Native)

import { NativeModules, NativeEventEmitter } from 'react-native';
import BleManager from 'react-native-ble-manager';

// Khởi tạo và phát tín hiệu chứa Service UUID đặc thù của sinh viên
export const startStudentAdvertising = async (studentUUID) => {
  try {
    await BleManager.start({ showAlert: false });
    const advertisingData = {
      name: `STU_${studentUUID.substring(0, 8)}`,
      serviceUUIDs: [studentUUID],
      includeDeviceName: true,
    };
    // Kích hoạt Advertising Packet với mức công suất phát tối ưu (TX Power)
    await BleManager.startAdvertising(advertisingData);
    console.log(`[BLE Peripheral] Đang phát tín hiệu với UUID: ${studentUUID}`);
  } catch (error) {
    console.error('[BLE Error] Lỗi kích hoạt bộ phát:', error);
  }
};

2. Code Snippet: Xử lý xác thực thiết bị và điểm danh tại Backend (ASP.NET Core C#)

[Authorize(Roles = "Lecturer,Admin")]
[HttpPost("verify-batch")]
public async Task<IActionResult> VerifyBatchAttendance([FromBody] AttendanceBatchDto request)
{
    if (!ModelState.IsValid) return BadRequest(ModelState);

    var validRecords = new List<AttendanceRecord>();
    var activeSchedule = await _context.Schedules
        .FirstOrDefaultAsync(s => s.ScheduleId == request.ScheduleId && s.IsActive);

    if (activeSchedule == null) 
        return NotFound(new { message = "Lịch học không tồn tại hoặc đã kết thúc." });

    foreach (var scannedUuid in request.ScannedDeviceUUIDs)
    {
        // Kiểm tra UUID hợp lệ đã được gán cứng cho sinh viên trong lớp
        var registeredDevice = await _context.Devices
            .Include(d => d.User)
            .FirstOrDefaultAsync(d => d.DeviceUUID == scannedUuid && d.IsActive);

        if (registeredDevice != null)
        {
            var isEnrolled = await _context.CourseEnrollments
                .AnyAsync(e => e.CourseId == activeSchedule.CourseId && e.StudentId == registeredDevice.UserId);

            if (isEnrolled)
            {
                validRecords.Add(new AttendanceRecord
                {
                    ScheduleId = request.ScheduleId,
                    StudentId = registeredDevice.UserId,
                    DeviceUUID = scannedUuid,
                    AttendanceType = "BLE_Batch",
                    Status = "Present",
                    CheckInTime = DateTime.UtcNow
                });
            }
        }
    }

    await _context.AttendanceRecords.AddRangeAsync(validRecords);
    await _context.SaveChangesAsync();

    return Ok(new { TotalProcessed = request.ScannedDeviceUUIDs.Count, VerifiedCount = validRecords.Count });
}

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

Hệ thống được kiểm thử tải và đo đạc thực tế trong môi trường phòng học tiêu chuẩn (diện tích $8m \times 12m$, sức chứa 80 chỗ ngồi tại UIT):

Tỷ lệ nhận diện BLE (%)
100% |======================== (Khoảng cách 1m - 5m: 99.2%)
 80% |                    =============== (Khoảng cách 6m - 10m: 96.5%)
 60% |
 40% |                                         ======== (Khoảng cách > 12m: 35.0% - Ngăn gian lận ngoài cửa sổ)
  0% +-------------------------------------------------->
     0m                       5m              10m     Khoảng cách
  • Hiệu năng tiêu thụ năng lượng: Giao thức BLE chỉ tiêu tốn dòng điện $< 15\text{ mA}$ trong quá trình quét, giảm hơn 50% điện năng so với chuẩn Bluetooth Classic ($> 30\text{ mA}$).
  • Độ trễ truyền tin (Latency): Thời gian trễ xử lý gói tin BLE là $3\text{ms} - 6\text{ms}$, cho phép quét đồng thời 60 thiết bị trong phòng học chỉ mất 2.8 giây.
  • Độ chính xác xác thực: Đạt tỷ lệ nhận diện đúng 98.8% trong bán kính hiệu dụng 10m. Khả năng xuyên tường yếu của dải tần 2.4GHz ở mức năng lượng thấp vô tình trở thành lợi thế tự nhiên ngăn chặn sinh viên đứng ngoài hành lang điểm danh ké.

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

  • Cơ chế khóa định danh phần cứng (Hardware-Identity Binding): Giải pháp gán chặt tài khoản sinh viên với duy nhất 1 mã UUID phần cứng điện thoại. Khi sinh viên muốn đổi máy, hệ thống bắt buộc gửi đơn giải trình trực tuyến qua hệ thống để Quản trị viên phê duyệt, loại bỏ 100% khả năng dùng 1 máy điểm danh cho nhiều tài khoản.
  • Kiến trúc Điểm danh Ngoại tuyến (Dual-Role Offline Attendance): Điểm sáng kỹ thuật của đề tài là khả năng vận hành ngay cả khi giảng đường mất hoàn toàn kết nối Internet. Dữ liệu điểm danh được trao đổi trực tiếp giữa thiết bị Giảng viên và Sinh viên thông qua giao thức BLE và lưu vào Local Storage (Redux Persist), sau đó tự động đồng bộ lên máy chủ SQL Server khi có kết nối trở lại.
  • Cắt giảm 85% thời gian quản lý lớp học: Giúp rút ngắn quy trình điểm danh từ 10 - 15 phút xuống chỉ còn dưới 30 giây cho toàn bộ lớp học, gia tăng thời lượng truyền tải kiến thức chuyên môn của giảng viên.

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

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

  1. Giảng đường đại học quy mô lớn: Giảng viên mở ứng dụng, chọn lịch học và nhấn "Bắt đầu điểm danh". Sinh viên chỉ cần mở ứng dụng trên điện thoại (đã bật Bluetooth). Danh sách sinh viên có mặt lập tức chuyển sang trạng thái xanh trên màn hình điều khiển của giảng viên.
  2. Khảo sát tham dự hội thảo, sự kiện: Ban tổ chức quét toàn bộ đại biểu tham dự bước vào cửa hội trường mà không cần dựng quầy check-in thủ công hay quét mã vạch gây ùn tắc.

Yêu cầu cấu hình hệ thống triển khai (System Requirements)

  • Phía Máy chủ (Server / Cloud Host):
    • HĐH: Windows Server 2016/2019 hoặc Linux (Ubuntu 20.04 LTS).
    • Runtime: .NET Core Runtime 3.1+, IIS Web Server hoặc Kestrel với Reverse Proxy Nginx.
    • CSDL: Microsoft SQL Server 2019 Standard Edition (Tối thiểu 4GB RAM, 2 Cores CPU).
  • Phía Người dùng (Client Endpoints):
    • Ứng dụng Web Quản trị: Trình duyệt Google Chrome 80+, Mozilla Firefox, Microsoft Edge.
    • Ứng dụng Di động: Thiết bị chạy Android 6.0 (API Level 23) trở lên, hỗ trợ phần cứng Bluetooth Low Energy 4.0+.

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

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

  • Chính sách cấp quyền trên hệ điều hành: Trên một số dòng Android đời mới, việc bật định vị (Location Permission) là bắt buộc để ứng dụng có thể quét sóng Bluetooth BLE xung quanh.
  • Phạm vi nền tảng: Ứng dụng di động mới hoàn thiện và kiểm thử chuyên sâu trên hệ điều hành Android, chưa phát hành phiên bản đồng bộ trên hệ điều hành iOS.

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

  • Mở rộng nền tảng iOS: Tận dụng tối đa CoreBluetooth framework trên iOS để đồng bộ trải nghiệm người dùng iPhone/iPad.
  • Tích hợp phần cứng Beacon chuyên dụng: Lắp đặt các bộ phát iBeacon/Eddystone cố định tại góc giảng đường nhằm xác định tọa độ lớp học chính xác hơn nữa.
  • Tích hợp xác thực sinh trắc học cục bộ (Local Biometrics): Yêu cầu sinh viên quét vân tay trên chính smartphone trước khi phát tín hiệu BLE để ngăn việc cho mượn máy điện thoại trước giờ học.

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

  • Đối với Sinh viên: Trải nghiệm quy trình điểm danh hiện đại, minh bạch, chính xác; không lo lắng về việc bị đánh vắng nhầm; theo dõi trực quan thời khóa biểu và lịch sử chuyên cần cá nhân.
  • Đối với Giảng viên: Tiết kiệm tối đa thời gian quản lý lớp học; nắm bắt tức thì sĩ số lớp học thực tế; dễ dàng xuất báo cáo chuyên cần về văn phòng khoa chỉ với vài thao tác.
  • Đối với Nhà trường & Doanh nghiệp: Tiết kiệm hàng trăm triệu đồng chi phí đầu tư máy chấm công phần cứng; chuẩn hóa cơ sở dữ liệu quản lý sinh viên và nâng cao chất lượng chuyển đổi số học đường.
  • Đối với Lập trình viên & Giới nghiên cứu: Đồ án là tài liệu tham khảo thực tế giá trị về việc tích hợp giao tiếp phần cứng không dây BLE với hệ sinh thái ứng dụng Web/Mobile hiện đại (React Native + ASP.NET Core Web API + SQL Server).

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

1. Sinh viên có thể gian lận bằng cách chụp màn hình ứng dụng gửi cho bạn bè điểm danh hộ không?

Không. Hệ thống không sử dụng hình ảnh mã QR tĩnh. Việc điểm danh bắt buộc phải có sự hiện diện vật lý của điện thoại thông minh mang mã UUID đã đăng ký trong vùng phủ sóng Bluetooth (bán kính < 10m) của thiết bị giảng viên.

2. Nếu sinh viên bị mất điện thoại hoặc đổi máy mới thì xử lý như thế nào?

Sinh viên sử dụng thiết bị mới đăng nhập vào hệ thống và gửi "Yêu cầu thay đổi thiết bị" kèm theo lý do cụ thể. Yêu cầu này sẽ xuất hiện trên Dashboard của Quản trị viên. Khi Quản trị viên nhấn nút phê duyệt, UUID của máy cũ sẽ bị vô hiệu hóa và UUID của máy mới được kích hoạt.

3. Việc bật Bluetooth liên tục có làm nóng máy và hao pin điện thoại của sinh viên không?

Không. Khóa luận sử dụng chuẩn Bluetooth Low Energy (BLE), được tối ưu hóa đặc biệt cho các tác vụ truyền gói tin nhỏ ngắt quãng. Mức tiêu thụ dòng điện chỉ dưới $15\text{ mA}$, hoàn toàn không gây ảnh hưởng đến thời lượng pin hay nhiệt độ của máy.

4. Hệ thống có thể tích hợp vào cơ sở dữ liệu đào tạo sẵn có của trường đại học không?

Hoàn toàn có thể. Backend được xây dựng theo kiến trúc chuẩn RESTful API với ASP.NET Core, giúp việc kết nối dữ liệu người dùng, thời khóa biểu và xuất dữ liệu điểm danh sang các hệ thống quản lý đào tạo như Moodle, Canvas, Blackboard hoặc CSDL Oracle/PostgreSQL diễn ra thuận tiện và bảo mật.

5. Giảng đường không có mạng Internet thì có điểm danh được không?

Có. Hệ thống hỗ trợ chế độ Offline BLE. Ứng dụng giảng viên và sinh viên sẽ trao đổi dữ liệu định danh trực tiếp qua sóng Bluetooth và lưu tạm trên bộ nhớ máy. Khi giảng viên kết nối Internet trở lại, hệ thống sẽ tự động đồng bộ dữ liệu điểm danh về cơ sở dữ liệu trung tâm.


Kết luận

Khóa luận tốt nghiệp "Ứng dụng điểm danh lớp học bằng Bluetooth" của nhóm tác giả Trương Đức Nghĩa và Nguyễn Phương Phi (Khoa Kỹ thuật & Khoa học Thông tin, Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM) là một công trình nghiên cứu ứng dụng mang tính thực tiễn cao. Bằng việc kết hợp sáng tạo giữa công nghệ không dây tầm gần Bluetooth Low Energy (BLE) và các nền tảng công nghệ mạnh mẽ gồm React Native, ReactJS, ASP.NET Core Web API và SQL Server 2019, đề tài đã giải quyết trọn vẹn bài toán tự động hóa điểm danh, chống gian lận hiệu quả và tiết kiệm chi phí đầu tư cho các tổ chức giáo dục.

Đây là mô hình tiêu biểu cho xu hướng phát triển ứng dụng di động gắn liền với công nghệ kết nối vạn vật (IoT), mở ra hướng tiếp cận mới đầy triển vọng trong công tác quản trị trường học thông minh tại Việt Nam.