Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số ngành bán lẻ và dịch vụ lưu trú - ẩm thực (F&B và Hospitality), các chương trình khách hàng thân thiết (Loyalty Programs) đóng vai trò then chốt trong việc duy trì tỷ lệ giữ chân khách hàng (Customer Retention Rate). Theo thống kê từ Bond Brand Loyalty, hơn 84% người tiêu dùng có xu hướng gắn bó với thương hiệu sở hữu hệ thống tích điểm thưởng minh bạch và tiện lợi. Tuy nhiên, phần lớn các doanh nghiệp chuỗi vừa và nhỏ (SMEs) vẫn đang đối mặt với bài toán chi phí hạ tầng đắt đỏ khi triển khai thẻ từ, thẻ chip chuyên dụng hoặc mã vạch truyền thống.

Đồ án tốt nghiệp "Hệ thống tính điểm thưởng bằng công nghệ NFC" được thực hiện bởi sinh viên Nguyễn Hoàng Thái (MSSV: 15119043), dưới sự hướng dẫn của PGS. Võ Minh Huân tại Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh (Khoa Đào tạo Chất lượng cao, Bộ môn Máy tính - Viễn thông). Đề tài tập trung giải quyết bài toán tối ưu hóa quy trình tương tác khách hàng thông qua việc nghiên cứu, thiết kế và chế tạo giải pháp tích điểm đa chi nhánh dựa trên nền tảng giao tiếp trường gần (Near Field Communication - NFC).

+-----------------------------------------------------------------------------+
|                            HỆ THỐNG HIỆN HỮU (CŨ)                           |
|  [Thẻ cứng độc lập A] --> [Máy POS Shop A] --> [Database cục bộ Shop A]     |
|  [Thẻ cứng độc lập B] --> [Máy POS Shop B] --> [Database cục bộ Shop B]     |
|  * Rời rạc, chi phí in ấn cao ($0.8/thẻ), nguy cơ mất thẻ/quên thẻ 35%/năm  |
+-----------------------------------------------------------------------------+
                                     VS
+-----------------------------------------------------------------------------+
|                        HỆ THỐNG ĐỀ XUẤT (NFC + CLOUD)                       |
|  [NFC Tag (NTAG213)] <---+                                                  |
|          hoặc            |---> [Android Phone] ---> [GAS Webhook]           |
|  [NFC Smartphone]    <---+      (NFC Reader/Writer)         |               |
|                                                             v               |
|                                                 [Firebase Realtime DB]      |
|                                                 [Google Sheets Ledger]      |
|  * Đồng bộ chuỗi liên kết, 0đ in ấn thẻ thành viên, thời gian quét <350ms   |
+-----------------------------------------------------------------------------+

Vấn đề thực tiễn và bài toán đặt ra (Problem Statement)

Các hệ thống thẻ thành viên truyền thống bộc lộ nhiều điểm nghẽn nghiêm trọng:

  • Phân mảnh dữ liệu: Mỗi nhà hàng, khách sạn trong cùng liên minh đối tác sử dụng một định dạng thẻ riêng, không có cơ chế liên kết cơ sở dữ liệu thời gian thực.
  • Chi phí vận hành cao: Doanh nghiệp phải chịu chi phí phôi thẻ nhựa (PVC Barcode/Magnetic Stripe) dao động từ 0.50 - 1.20 USD/thẻ, cùng chi phí bảo trì đầu đọc chuyên dụng đắt đỏ.
  • Trải nghiệm người dùng kém: Khách hàng chịu gánh nặng lưu trữ hàng chục thẻ vật lý trong ví, dẫn đến tỷ lệ bỏ quên thẻ khi thanh toán lên tới 35%, làm gián đoạn chu kỳ tích điểm.
  • Thời gian xử lý giao dịch chậm: Việc nhập số điện thoại hoặc quét barcode thủ công mất trung bình 8 - 15 giây/giao dịch tại quầy thu ngân.

Mục tiêu của đồ án (Project Objectives)

  1. Xây dựng ứng dụng di động trên hệ điều hành Android có khả năng đóng vai trò làm NFC Reader/Writer, tương thích toàn diện với tiêu chuẩn ISO/IEC 14443 Type A.
  2. Thiết kế cơ chế mã hóa và ghi dữ liệu định dạng NDEF (NFC Data Exchange Format) lên các thẻ NFC NTAG213, đồng thời hỗ trợ tính năng khóa thẻ vĩnh viễn (Read-Only Lock).
  3. Xây dựng hạ tầng Cloud Backend hai tầng (Two-Tier Cloud Architecture) kết hợp giữa Google Apps Script Webhook và Firebase Realtime Database để đồng bộ hóa giao dịch tức thời giữa các chi nhánh.
  4. Tối ưu hóa thời gian xử lý giao dịch (Transaction Latency) xuống dưới 500ms cho mỗi lượt tương tác một chạm (Tap-and-Go).

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

  • Phương pháp giải pháp: Khai thác chế độ Reader/Writer Mode và Card Emulation Mode của chuẩn giao tiếp vô tuyến 13.56 MHz, biến smartphone thương mại thành thiết bị POS di động nhỏ gọn.
  • Phạm vi triển khai: Ứng dụng chạy trên smartphone Android hỗ trợ phần cứng NFC (thực nghiệm trên Fujitsu F-02H, Android OS), tương tác với các dòng thẻ thông dụng NXP NTAG213/Mifare Classic 1K.
  • Giới hạn: Hệ thống yêu cầu thiết bị di động duy trì kết nối Internet (Wi-Fi/4G) để đồng bộ dữ liệu điểm số tức thời lên máy chủ phân tán.

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

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

So sánh các giải pháp tích điểm trên thị trường

Tiêu chí kỹ thuật Thẻ nhựa Barcode / Từ Ứng dụng quét mã QR Giải pháp NFC Đề xuất
Băng tần / Giao thức Quang học / Tiếp xúc từ Quang học (Camera 2D) RF 13.56 MHz (ISO/IEC 14443A)
Thời gian giao dịch 8.0 - 12.0 giây 4.0 - 6.0 giây 0.3 - 0.5 giây (Chạm tức thì)
Chi phí phần cứng quầy $150 - $300 (Đầu quét) Tận dụng Camera $0 (Tận dụng Smartphone NFC)
Chi phí phương tiện/User $0.50 - $1.00/thẻ $0 (App cài đặt) $0.08 - $0.15/tag dán hoặc $0
Yêu cầu ánh sáng/Góc quét Cần căn chỉnh góc Nhạy cảm với ánh sáng Không phụ thuộc góc quét/quang học
Bảo mật vật lý Rất thấp (Dễ copy mã) Trung bình (Dễ chụp lại) Cao (Hỗ trợ Read-Only Lock & UID)

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

+---------------------------------------------------------------------------+
|                          MÔ HÌNH YÊU CẦU MoSCoW                           |
+---------------------------------------------------------------------------+
| [M] MUST HAVE:                                                            |
|  - Khởi tạo NFC Host Controller & phát hiện phần cứng tự động.            |
|  - Ghi bản ghi NDEF (Text Record / URI Record) vào bộ nhớ EEPROM NTAG213. |
|  - Đọc NDEF payload và tự động trích xuất Unique Identifier (UID).        |
|  - Khóa thẻ (Lock Tag) chuyển phân vùng bộ nhớ sang chế độ Read-Only.    |
|  - Gửi Payload đồng thời lên Google Sheets và Firebase qua giao thức HTTPS.|
+---------------------------------------------------------------------------+
| [S] SHOULD HAVE:                                                          |
|  - Cơ chế tự động tính lũy điểm thưởng theo tỷ lệ cấu hình động.           |
|  - Báo lỗi trực quan khi thẻ bị lệch vùng từ trường (Field Loss).         |
+---------------------------------------------------------------------------+
| [C] COULD HAVE:                                                           |
|  - Chế độ tích điểm Offline khi mất kết nối mạng tạm thời.                |
|  - Giao diện tra cứu lịch sử tích lũy đa cửa hàng cho người dùng cuối.    |
+---------------------------------------------------------------------------+
| [W] WON'T HAVE (Giai đoạn này):                                           |
|  - Tích hợp thanh toán thẻ tín dụng EMV qua Secure Element (SE).          |
+---------------------------------------------------------------------------+

Thiết kế hệ thống

Kiến trúc tổng thể (System Architecture)

Hệ thống hoạt động theo mô hình xử lý 3 lớp: Lớp vật lý/thu thập dữ liệu (NFC Tag & RF Subsystem), Lớp xử lý trung gian (Android Mobile Client), và Lớp dịch vụ đám mây (Cloud Data Layer).

graph TD
    subgraph "Lớp Tương Tác Vật Lý"
        Tag["Thẻ NFC NTAG213<br>(ISO/IEC 14443A - 13.56 MHz)"]
    end

    subgraph "Lớp Xử Lý Di Động (Android Client)"
        CLF["NFC Contactless Front-End (CLF)"]
        HostCtrl["Host Controller Interface (HCI)"]
        App["Ứng dụng Tích Điểm (Java/Android Studio)"]
        ModuleWrite["Module WriteTag"]
        ModuleRead["Module ReadTag"]
        ModuleLock["Module LogTag (Lock)"]
        
        CLF <--> HostCtrl
        HostCtrl <--> App
        App --> ModuleWrite
        App --> ModuleRead
        App --> ModuleLock
    end

    subgraph "Lớp Dịch Vụ Đám Mây (Cloud Backend)"
        GAS["Google Apps Script (Webhook API)"]
        GSheets[("Google Sheets Ledger Engine")]
        Firebase[("Firebase Realtime Database")]
        
        App -- "HTTPS POST (JSON Payload)" --> GAS
        GAS --> GSheets
        GAS -- "REST API (PUT/PATCH)" --> Firebase
    end

    Tag <== "Khớp từ trường cảm ứng (0 - 4cm)" ==> CLF

Technology Stack và phiên bản cụ thể

  • Nền tảng di động: Android SDK Platform 29 (Android 10.0), tương thích ngược tối thiểu từ Android SDK API 21 (Android 5.0 Lollipop).
  • Ngôn ngữ lập trình di động: Java 8 (Oracle JDK 1.8.0), tích hợp Android NDK framework.
  • Thư viện NFC nòng cốt: android.nfc, android.nfc.tech.Ndef, android.nfc.tech.NdefFormatable.
  • Phần cứng phần cứng Tag: NXP NTAG213 (Dung lượng tổng 180 Bytes, bộ nhớ người dùng 144 Bytes, chuẩn ISO/IEC 14443-3 Type A, tần số sóng mang 13.56 MHz, tốc độ truyền 106 kbps).
  • Cloud Backend & Database:
    • Google Apps Script V8 Engine runtime.
    • Google Sheets API v4.
    • Firebase Realtime Database (REST API v1beta protocol).

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

Dữ liệu giao dịch được lưu trữ phân tán dưới định dạng JSON thời gian thực trên Firebase:

{
  "loyalty_transactions": {
    "TX_20200115_0001": {
      "tag_uid": "04:5A:2B:8A:12:6C:80",
      "customer_id": "CUST_HCMUTE_1043",
      "store_id": "STORE_RESTAURANT_Q1",
      "points_added": 50,
      "total_accumulated_points": 350,
      "transaction_type": "PURCHASE_REWARD",
      "timestamp": 1579082400000,
      "device_reader_model": "FUJITSU-F02H",
      "status": "CONFIRMED"
    }
  },
  "customer_ledgers": {
    "04:5A:2B:8A:12:6C:80": {
      "customer_name": "Nguyen Van A",
      "tier": "GOLD",
      "current_points": 350,
      "last_updated": 1579082400000
    }
  }
}

Thiết kế bảo mật (Security Considerations)

  1. Khóa thẻ phần cứng (Static & Dynamic Lock Bytes): Ứng dụng kích hoạt ghi đè các byte khóa tại Page 0x02 (Static Lock) và Page 0x28 (Dynamic Lock) trên IC NTAG213, biến vùng nhớ NDEF thành chỉ đọc vĩnh viễn nhằm ngăn chặn hacker ghi đè điểm giả mạo.
  2. Bảo mật kênh truyền (Transport Layer Security): Toàn bộ dữ liệu đẩy từ smartphone lên máy chủ đám mây đều được bọc qua đường truyền mã hóa SSL/TLS 1.3 với HTTPS POST, ngăn chặn tấn công trung gian (Man-in-the-Middle).

Implementation và kết quả

Quy trình phát triển (Development Process)

Dự án được thực hiện theo mô hình Agile rút gọn với 4 Sprint chính:

  • Sprint 1: Nghiên cứu lý thuyết truyền sóng RF, phân tích giao thức khung bản tin ISO/IEC 14443A và cấu trúc NDEF Record.
  • Sprint 2: Thiết kế giao diện người dùng và lập trình module WriteTag, ReadTag, LogTag trên Android Studio.
  • Sprint 3: Triển khai kịch bản Google Apps Script Webhook và kết nối Realtime Stream vào Firebase.
  • Sprint 4: Thử nghiệm tích hợp hệ thống, đo lường độ trễ và đánh giá độ chính xác dữ liệu qua 5 phiên thử nghiệm lặp.

Thuật toán và kỹ thuật lập trình nòng cốt

1. Module ghi dữ liệu NDEF và thiết lập khóa bảo vệ (Java / Android)

Đoạn mã chịu trách nhiệm tạo bản ghi NdefRecord chứa dữ liệu định danh khách hàng, kiểm tra dung lượng bộ nhớ thẻ và tiến hành ghi đè/khóa thẻ:

package com.hcmute.nfc.loyalty;

import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.Tag;
import android.nfc.tech.Ndef;
import android.nfc.tech.NdefFormatable;
import java.io.IOException;
import java.nio.charset.Charset;

public class NfcTagManager {

    public static boolean writeCustomerNdefMessage(Tag tag, String customerPayload) {
        // Khởi tạo bản ghi định dạng Text Record chuẩn NFC Forum RTD
        byte[] langBytes = "en".getBytes(Charset.forName("US-ASCII"));
        byte[] textBytes = customerPayload.getBytes(Charset.forName("UTF-8"));
        byte[] payload = new byte[1 + langBytes.length + textBytes.length];
        
        payload[0] = (byte) (langBytes.length & 0x07F); // Status byte
        System.arraycopy(langBytes, 0, payload, 1, langBytes.length);
        System.arraycopy(textBytes, 0, payload, 1 + langBytes.length, textBytes.length);

        NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], payload);
        NdefMessage message = new NdefMessage(new NdefRecord[]{record});

        try {
            Ndef ndef = Ndef.get(tag);
            if (ndef != null) {
                ndef.connect();
                if (!ndef.isWritable()) {
                    return false; // Thẻ đã bị khóa Read-Only
                }
                if (ndef.getMaxSize() < message.toByteArray().length) {
                    return false; // Dữ liệu vượt quá dung lượng EEPROM (144 bytes)
                }
                ndef.writeNdefMessage(message);
                ndef.close();
                return true;
            } else {
                // Thẻ chưa được format chuẩn NDEF
                NdefFormatable formatable = NdefFormatable.get(tag);
                if (formatable != null) {
                    formatable.connect();
                    formatable.format(message);
                    formatable.close();
                    return true;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    public static boolean lockTagToReadOnly(Tag tag) {
        try {
            Ndef ndef = Ndef.get(tag);
            if (ndef != null) {
                ndef.connect();
                boolean isLockSuccess = ndef.makeReadOnly(); // Kích hoạt Lock Bits vĩnh viễn
                ndef.close();
                return isLockSuccess;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }
}

2. Kịch bản Webhook xử lý dữ liệu và đẩy lên Firebase (Google Apps Script / JS)

function doPost(e) {
  try {
    var rawData = e.postData.contents;
    var jsonData = JSON.parse(rawData);
    
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Transactions");
    var timestamp = new Date();
    
    // Ghi dữ liệu kiểm toán vào Google Sheets Ledger
    sheet.appendRow([
      timestamp,
      jsonData.tag_uid,
      jsonData.customer_id,
      jsonData.store_id,
      jsonData.points
    ]);
    
    // Đồng bộ tức thời sang Firebase Realtime Database
    var firebaseUrl = "https://nfc-loyalty-hcmute-default-rtdb.firebaseio.com/customer_ledgers/" + jsonData.tag_uid + ".json";
    var payload = JSON.stringify({
      "current_points": jsonData.points,
      "last_updated": timestamp.getTime()
    });
    
    var options = {
      "method": "patch",
      "contentType": "application/json",
      "payload": payload
    };
    
    UrlFetchApp.fetch(firebaseUrl, options);
    
    return ContentService.createTextOutput(JSON.stringify({"status": "SUCCESS", "code": 200}))
      .setMimeType(ContentService.MimeType.JSON);
  } catch (error) {
    return ContentService.createTextOutput(JSON.stringify({"status": "ERROR", "message": error.toString()}))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

Thử nghiệm và kiểm chuẩn (Testing & Validation)

Hệ thống đã trải qua 5 phiên thực nghiệm độc lập tại môi trường phòng thí nghiệm để kiểm tra tính toàn vẹn tín hiệu, khả năng truyền dữ liệu qua RF và hiệu suất đồng bộ đám mây:

Lần TN Chức năng thử nghiệm Khoảng cách tiếp xúc (cm) Thời gian đọc/ghi (ms) Độ trễ Cloud Sync (ms) Trạng thái kết quả
Lần 1 WriteTag (Ghi UID + Tên) 2.5 cm 115 ms 280 ms Thành công (Data verified)
Lần 2 ReadTag & Upload 3.0 cm 42 ms 310 ms Thành công (Sheets & Firebase)
Lần 3 LogTag (Khóa Read-Only) 1.8 cm 140 ms N/A Thành công (Lock bit asserted)
Lần 4 WriteTag sau khi Khóa 2.0 cm N/A N/A Từ chối ghi (Đúng thiết kế)
Lần 5 Quét liên tục 10 lần 1.0 - 4.0 cm 45 ms (tb) 295 ms (tb) 100% đồng bộ, 0 lỗi mất gói
+---------------------------------------------------------------------------+
|               BIỂU ĐỒ PHÂN RÃ THỜI GIAN XỬ LÝ (LATENCY BENCHMARK)         |
+---------------------------------------------------------------------------+
| Tương tác vô tuyến RF (13.56 MHz): [45ms]                                 |
| Xử lý nội tại Android OS (NDEF Parsing): [25ms]                           |
| Kênh truyền mạng HTTPS POST: [180ms]                                      |
| Ghi Cloud Ledger (GAS + Firebase): [110ms]                               |
|                                                                           |
| ===> TỔNG THỜI GIAN HOÀN TẤT GIAO DỊCH: ~360ms (< Ngưỡng chuẩn 500ms)     |
+---------------------------------------------------------------------------+

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

Các cải tiến kỹ thuật nổi bật

  1. Kiến trúc Serverless Hybrid tối ưu chi phí: Thay vì duy trì một máy chủ chuyên dụng đắt đỏ (như AWS EC2 hay VPS tốn $20-$50/tháng), hệ thống kết hợp Google Apps Script (miễn phí) đóng vai trò trung gian dữ liệu và Firebase Realtime DB, giúp chi phí vận hành hạ tầng tiến về gần bằng 0 đồng.
  2. Cơ chế chống giả mạo kép (Dual-Layer Anti-Tampering): Tích hợp định danh vật lý bất biến (Factory Hardwired 7-byte UID) của chip NTAG213 cùng lệnh makeReadOnly(), triệt tiêu khả năng người dùng can thiệp sửa đổi số điểm lưu trên thẻ.
  3. Mô hình tương tác liên kết đa chuỗi (Federated Loyalty Chain): Cho phép một thẻ duy nhất có thể quét và tích lũy điểm thưởng chéo giữa nhiều nhà hàng, khách sạn khác nhau thông qua cơ chế phân định store_id trong bản ghi giao dịch.

Đóng góp thực tiễn cho ngành kỹ thuật máy tính

  • Cung cấp tài liệu tham khảo hoàn chỉnh về quy trình lập trình giao tiếp NFC trên hệ điều hành Android, từ việc quản lý bộ điều khiển host controller, xử lý intent filter foreground dispatch, cho đến thao tác mức bit với bộ nhớ EEPROM của thẻ thông minh.
  • Chứng minh tính khả thi của việc thay thế các đầu đọc thẻ POS cồng kềnh bằng các thiết bị di động phổ thông tích hợp chip NFC.

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

Kịch bản ứng dụng thực tế (Real-world Use Cases)

  • Chuỗi nhà hàng F&B liên kết: Khách hàng sử dụng thẻ NFC móc khóa (NFC Keyfob) hoặc sticker dán lưng điện thoại. Khi thanh toán tại bất kỳ cơ sở nào trong chuỗi, nhân viên chỉ cần đưa smartphone lại gần trong 1 giây để cộng điểm thưởng.
  • Dịch vụ khách sạn & Resort: Tích hợp thẻ phòng khách sạn (Hotel Keycard) tương thích chuẩn Mifare/NTAG làm thẻ tích điểm ẩm thực, spa và dịch vụ giải trí nội khu.
sequenceDiagram
    autonumber
    actor Customer as Khách Hàng (NFC Tag)
    actor Cashier as Thu Ngân (Android App)
    participant Cloud as Cloud Webhook (GAS)
    participant DB as Firebase Database

    Customer->>Cashier: Chạm thẻ NFC vào mặt lưng điện thoại (0-4cm)
    Cashier->>Cashier: Phân tích NDEF Record & Trích xuất UID
    Cashier->>Cashier: Tính toán điểm cộng theo hóa đơn
    Cashier->>Cloud: Gửi HTTPS POST Payload (UID, Store_ID, Points)
    par Ghi song song
        Cloud->>Cloud: Ghi nhật ký vào Google Sheets Ledger
    and
        Cloud->>DB: Cập nhật biến động số dư điểm (PATCH)
    end
    DB-->>Cashier: Phản hồi xác nhận thành công (HTTP 200 OK)
    Cashier-->>Customer: Thông báo giao dịch hoàn tất trên màn hình (<400ms)

Yêu cầu triển khai hệ thống (Deployment Requirements)

  • Phía cửa hàng: Mỗi quầy thu ngân trang bị 01 điện thoại thông minh chạy Android 5.0 trở lên, có hỗ trợ phần cứng NFC (NFC Controller Chip NXP hoặc Broadcom) và kết nối mạng Wi-Fi/4G.
  • Phía khách hàng: Thẻ nhựa NFC NTAG213, móc khóa NFC, hoặc sticker NTAG213 dán điện thoại (chi phí ~2.000 VNĐ/thẻ).

Phân tích hiệu quả kinh tế (Cost-Benefit & ROI Analysis)

Giả định triển khai cho một chuỗi F&B gồm 5 chi nhánh, phục vụ 10.000 lượt khách thành viên/năm:

Khoản mục chi phí Giải pháp POS & Thẻ từ truyền thống Giải pháp Hệ thống NFC Đề xuất
Đầu đọc thẻ tại 5 quầy 5 máy x $200 = $1,000 $0 (Tận dụng smartphone nhân viên)
Phôi thẻ (10.000 khách) 10.000 thẻ nhựa x $0.80 = $8,000 10.000 NFC Tags x $0.10 = $1,000
Chi phí máy chủ/Database Máy chủ Cloud VPS: $360/năm Firebase & Google Cloud Free Tier = $0
TỔNG CHI PHÍ NĂM ĐẦU $9,360 USD $1,000 USD (Tiết kiệm ~89.3%)

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

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

  • Phụ thuộc vào phần cứng di động: Các dòng điện thoại cũ hoặc một số dòng máy khóa NFC nội bộ không thể cài đặt làm thiết bị đọc ghi.
  • Tính bất biến khi khóa thẻ: Thao tác LogTag ghi đè Lock Bits vĩnh viễn trên NTAG213 không thể đảo ngược, đòi hỏi quy trình ghi ban đầu phải có độ chính xác 100%.
  • Chưa hỗ trợ Offline Mode: Nếu quầy thu ngân mất kết nối Internet, giao dịch không thể đồng bộ ngay lập tức lên máy chủ trung tâm.

Hướng phát triển và mở rộng

  1. Ứng dụng chế độ mô phỏng thẻ (Host Card Emulation - HCE): Phát triển ứng dụng khách hàng (Customer-facing App) cho phép chính smartphone của khách hàng tự đóng vai trò như một thẻ thông minh ảo (Virtual Smart Card) giao tiếp với máy POS qua chuẩn ISO/IEC 14443-4 mà không cần phát hành tag vật lý.
  2. Nâng cấp chuẩn mã hóa bảo mật: Chuyển đổi từ thẻ NTAG213 thông thường sang dòng thẻ bảo mật cao MIFARE DESFire EV2/EV3 hỗ trợ phần cứng mã hóa AES-128 cryptographic authentication chống sao chép bộ nhớ tuyệt đối.
  3. Cơ chế đồng bộ hàng đợi Offline (Local SQLite Queue): Tích hợp cơ sở dữ liệu cục bộ Room DB trên Android để lưu vết giao dịch khi mất mạng và tự động đồng bộ hóa (Background Sync) ngay khi có kết nối trở lại.

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

  • Sinh viên và người học ngành Kỹ thuật Máy tính / IoT: Tiếp cận mã nguồn thực tế, hiểu rõ cơ chế hoạt động của ngăn xếp giao thức vô tuyến ISO/IEC 14443 và cách tích hợp phần cứng di động với nền tảng điện toán đám mây.
  • Lập trình viên di động (Mobile Developers): Nắm vững kỹ thuật xử lý NfcAdapter, xử lý xung đột tín hiệu và phương pháp đóng gói bản tin NDEF trên hệ điều hành Android.
  • Doanh nghiệp vừa và nhỏ (SMEs): Sở hữu một giải pháp công nghệ tích điểm hiện đại, tốc độ cao với chi phí đầu tư ban đầu giảm đến gần 90% so với giải pháp thương mại truyền thống.
  • Nhà nghiên cứu ứng dụng: Cung cấp dữ liệu đo kiểm thực nghiệm về độ trễ, khoảng cách và tính ổn định của sóng RF 13.56 MHz trong môi trường bán lẻ thực tế.

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

1. Yêu cầu phần cứng tối thiểu để triển khai ứng dụng là gì?

Điện thoại thông minh chạy hệ điều hành Android tối thiểu từ phiên bản 5.0 (API Level 21) trở lên, có tích hợp chip NFC (kiểm tra trong phần Cài đặt > Kết nối không dây > NFC). Thẻ sử dụng tương thích với chuẩn ISO/IEC 14443 Type A (khuyến nghị NXP NTAG213, NTAG215 hoặc NTAG216).

2. Hệ thống có thể mở rộng cho hàng trăm cửa hàng cùng lúc không?

Hoàn toàn có thể. Do hạ tầng lưu trữ đặt trên nền tảng Firebase Realtime Database của Google, hệ thống có khả năng tự động co giãn (Auto-scaling) phục vụ hàng chục ngàn kết nối đồng thời với độ trễ phản hồi dưới 100ms. Đối với dữ liệu kế toán lớn, Google Sheets có thể được thay thế bằng Google BigQuery hoặc PostgreSQL thông qua REST API.

3. Có thể tích hợp hệ thống này vào phần mềm POS bán hàng hiện có không?

Có. Nhờ thiết kế kiến trúc dạng Webhook mở (RESTful Endpoint), bất kỳ phần mềm quản lý bán hàng nào (như KiotViet, Sapo, Odoo) đều có thể kết nối tới cơ sở dữ liệu Firebase thông qua API HTTP tiêu chuẩn để lấy thông tin khách hàng và số điểm tích lũy theo thời gian thực.

4. Chi phí duy trì hệ thống hàng tháng là bao nhiêu?

Với quy mô doanh nghiệp vừa và nhỏ dưới 50.000 giao dịch/tháng, toàn bộ chi phí máy chủ Google Apps Script và Firebase hoàn toàn nằm trong gói miễn phí (Spark Plan). Doanh nghiệp chỉ chi trả chi phí mua thẻ NFC một lần duy nhất.

5. Dữ liệu thẻ NFC có thể bị hacker dùng điện thoại khác sao chép không?

Đối với các thẻ NTAG213 thông thường, sau khi ghi dữ liệu, ứng dụng kích hoạt lệnh khóa phân vùng makeReadOnly(). Kẻ gian không thể thay đổi điểm trên thẻ. Tuy nhiên, để chống hoàn toàn việc clone mã UID, các hệ thống thương mại lớn có thể nâng cấp sang chuẩn thẻ mã hóa AES như MIFARE DESFire.


Kết luận

Đồ án tốt nghiệp "Hệ thống tính điểm thưởng bằng công nghệ NFC" của sinh viên Nguyễn Hoàng Thái đã giải quyết thành công bài toán số hóa quy trình quản lý khách hàng thân thiết cho chuỗi cửa hàng liên kết. Bằng cách kết hợp sáng tạo giữa công nghệ vô tuyến tầm gần NFC trên thiết bị di động Android và kiến trúc điện toán đám mây hai tầng (Google Apps Script + Firebase), đề tài đã chứng minh được tính vượt trội về tốc độ xử lý (<360ms), độ chính xác tuyệt đối và hiệu quả kinh tế rõ rệt (giảm 89% chi phí vận hành năm đầu).

Kết quả nghiên cứu và sản phẩm thực nghiệm của đồ án không chỉ đáp ứng hoàn chỉnh các yêu cầu kỹ thuật của một công trình tốt nghiệp ngành Công nghệ Kỹ thuật Máy tính tại HCMUTE, mà còn mở ra tiềm năng ứng dụng thương mại hóa rộng rãi trong các mô hình bán lẻ thông minh và đô thị thông minh trong tương lai.