Giới thiệu dự án

Sự bùng nổ của công nghệ di động và Internet vạn vật (IoT) đã thúc đẩy quá trình chuyển đổi số trong các hệ thống an ninh tòa nhà và nhà thông minh (Smart Home). Theo các báo cáo công nghiệp về thị trường kiểm soát truy cập thông minh (Smart Access Control), nhu cầu thay thế các giải pháp cơ khí truyền thống bằng các phương thức xác thực không dây đang tăng trưởng với tốc độ kép hàng năm (CAGR) trên 14%. Phương thức khóa cơ khí truyền thống bộc lộ nhiều nhược điểm cố hữu: dễ bị sao chép chìa trái phép, cồng kềnh khi phải quản lý nhiều chìa khóa cùng lúc, nguy cơ thất lạc cao và hoàn toàn không có khả năng ghi nhận nhật ký ra vào (Access Audit Trail).

Đồ án tốt nghiệp "Hệ thống đóng mở cửa dùng NFC điện thoại" do sinh viên Trương Văn Ngân và Nguyễn Hữu Tiến thực hiện dưới sự hướng dẫn của ThS. Nguyễn Văn Hiệp tại Khoa Điện – Điện Tử, Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE) tập trung giải quyết triệt để bài toán này bằng cách ứng dụng công nghệ giao tiếp trường gần (Near Field Communication - NFC) tích hợp trên điện thoại thông minh chạy hệ điều hành Android kết hợp với phần cứng điều khiển nhúng chuyên dụng.

flowchart LR
    A[Người dùng Android NFC] -->|Giao tiếp 13.56 MHz| B[Đầu đọc NFC PN532]
    B -->|Chuẩn SPI / Handshake| C[Arduino Mega 2560]
    C -->|Cách ly Opto PC817| D[Mạch công suất TIP122]
    D -->|Điều khiển xung| E[Động cơ bước & Cảm biến quang]

Mục tiêu dự án cụ thể

  1. Nghiên cứu và làm chủ giao thức giao tiếp NFC 13.56 MHz theo tiêu chuẩn ISO/IEC 18092 và ISO/IEC 14443 trên IC chuyên dụng PN532.
  2. Thiết kế và thi công phần cứng mạch lực và vi điều khiển: Xây dựng mạch điều khiển trung tâm sử dụng vi điều khiển AVR ATmega2560 (Arduino Mega 2560) và mạch công suất điều khiển động cơ bước có cách ly quang học chống nhiễu.
  3. Phát triển ứng dụng Android quản lý truy cập: Lập trình ứng dụng NFC_PN532_ARDUINO.apk với các phân hệ xác thực tài khoản, điều khiển cửa, phân quyền người dùng và trích xuất lịch sử ra vào.
  4. Tích hợp và kiểm thử hệ thống: Đảm bảo chu trình mở cửa, kiểm soát giới hạn hành trình bằng cảm biến quang và cơ chế tự động đóng cửa an toàn sau chu kỳ 3000ms (3 giây).

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

  • Phạm vi: Xây dựng mô hình kiểm soát đóng mở cửa tự động xác thực hai lớp (tài khoản ứng dụng + liên kết phần cứng NFC).
  • Giới hạn: Hệ thống thử nghiệm trên các dòng điện thoại Android có hỗ trợ chip NFC vật lý (như Sony Xperia Z, Samsung Galaxy Note 2); phần cơ khí sử dụng động cơ bước mô phỏng tải trọng mở cửa ở quy mô mô hình phòng thí nghiệm.

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

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

Trong lĩnh vực kiểm soát ra vào, các công nghệ phổ biến hiện nay bao gồm chìa cơ, thẻ RFID thụ động tần số thấp (125 kHz), giao tiếp Bluetooth (BLE) và giao tiếp NFC.

Tiêu chí so sánh Chìa khóa cơ truyền thống Thẻ từ RFID 125 kHz Khóa thông minh Bluetooth (BLE) Hệ thống NFC Smartphone (Đề tài)
Tính bảo mật Rất thấp (dễ đánh chìa) Thấp (mã cố định, dễ clone) Trung bình (nguy cơ sniffing tầm xa) Rất cao (Bảo mật 2 lớp: PIN + NFC ID)
Khoảng cách hoạt động Tiếp xúc vật lý 2 – 10 cm Lên đến 10 – 50 m $\le$ 4 cm (Triệt tiêu nghe lén tầm xa)
Thời gian kết nối 3 – 5 giây < 0.2 giây 1 – 3 giây (bắt cặp thiết bị) < 0.1 giây (tức thì khi chạm)
Ghi nhận lịch sử (Log) Không Cần đầu đọc kết nối Server Có qua ứng dụng Lưu trữ EEPROM tại chỗ & đồng bộ App
Thiết bị mang theo Chùm chìa kim loại Thẻ nhựa rời Smartphone Smartphone sẵn có

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc có): Xác thực đăng nhập trên Android; truyền nhận gói tin điều khiển qua NFC đến PN532; vi điều khiển giải mã và kích hoạt mạch động lực mở cửa; tự động đảo chiều đóng cửa sau 3 giây; dừng chính xác qua cảm biến quang.
  • Should have (Nên có): Tính năng thay đổi mật khẩu trực tiếp; thêm/xóa ID người dùng; xem logfile lịch sử ra vào lưu trong EEPROM.
  • Could have (Có thể mở rộng): Tự động lưu phiên đăng nhập (Remember Login Checkbox); hiển thị trạng thái bật/tắt NFC thời gian thực.
  • Won't have (Chưa thực hiện): Kết nối cơ sở dữ liệu đám mây qua Wi-Fi/4G; hỗ trợ hệ điều hành iOS (do giới hạn đóng của Apple CoreNFC thời điểm nghiên cứu).

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

+-------------------------------------------------------------------------+
|                       SMARTPHONE ANDROID (Client)                       |
|  [MainActivity] -> [MainControl] -> [AddUser / ChangePW] -> [NFC Stack] |
+------------------------------------+------------------------------------+
                                     | Giao tiếp cảm ứng từ 13.56 MHz
                                     v
+------------------------------------+------------------------------------+
|                      MODULE THU PHÁT NFC PN532                          |
|  [Ăng-ten tích hợp] <-> [Lõi 80C51 + ROM/RAM] <-> [Giao diện SPI Bus]    |
+------------------------------------+------------------------------------+
                                     | Bus SPI (MISO:50, MOSI:51, SCK:52, SS:10)
                                     v
+------------------------------------+------------------------------------+
|                   KHỐI ĐIỀU KHIỂN ARDUINO MEGA 2560                     |
|  - ATmega2560 MCU (16MHz, 256KB Flash)                                  |
|  - Phân tích Frame lệnh & Quản lý EEPROM (128B User, 128B Log)          |
|  - Xử lý tín hiệu cảm biến giới hạn hành trình (Digital Pin 6, 7, 8, 9) |
+------------------------------------+------------------------------------+
                                     | Digital Out (Pins 2, 3, 4, 5)
                                     v
+------------------------------------+------------------------------------+
|                   MẠCH ĐỘNG LỰC & CƠ CẤU CHẤP HÀNH                      |
|  [Optocoupler PC817 x4] -> [Transistor TIP122 x4] -> [Stepper Motor 12V]|
+-------------------------------------------------------------------------+

Technology Stack & Định dạng giao tiếp

  • Phần mềm di động: Android SDK (Target Android 4.x - 5.x), Java JDK 1.6, Eclipse IDE (Galileo/Indigo) tích hợp ADT Plugin. Dung lượng file cài đặt apk tối ưu: 152 KB.
  • Phần mềm nhúng: Arduino IDE v1.5.x, Firmware C/C++ giao tiếp module PN532 qua giao diện SPI phần cứng.
  • Cấu trúc khung truyền dữ liệu (Data Frame Format) giữa Máy chủ (Host) và PN532:

$$\text{Khung dữ liệu} = [\text{Preamble: } 00h] + [\text{Start Code: } 00h\ FFh] + [\text{LEN}] + [\text{LCS}] + [\text{TFI}] + [\text{DATA (PD0...PDN)}] + [\text{DCS}] + [\text{Postamble: } 00h]$$

Quy tắc kiểm tra toàn vẹn:

  • Độ dài: $[\text{LEN} + \text{LCS}] = 00h$
  • Dữ liệu: $[\text{TFI} + \text{PD0} + \text{PD1} + ... + \text{PDN} + \text{DCS}] = 00h$
  • TFI = D4h (gửi từ Host đến PN532), TFI = D5h (PN532 phản hồi Host).

Implementation và kết quả

Thiết kế và tính toán mạch động lực

Mạch động lực đảm nhận nhiệm vụ kích đóng ngắt các cuộn dây của động cơ bước 4 pha ($12\text{V}\text{DC}, I\text{max} = 400\text{mA}, R_\text{coil} = 30\Omega$). Nhằm triệt tiêu xung điện áp ngược và nhiễu sóng hài quay ngược về vi điều khiển, mạch sử dụng tầng cách ly quang Optocoupler kết hợp tầng khuếch đại Darlington Transistor TIP122.

                      +12V VCC
                         |
                   +-----+-----+
                   | Cuộn dây  | (Động cơ bước 4 pha)
                   | Stepper   |
                   +-----+-----+
                         |-------+ Diode 1N4007 (Dập xung ngược)
                         |       |
                         |   |<--+
                  C cực  +---| TIP122 (Darlington NPN)
                             |\  
                     B cực     v E cực
                               |
                   R_bias      |
Arduino Pin ---> [Opto PC817]--+----> GND (Nguồn 12V)
 (5V Logic)       (Cách ly)

Tính toán linh kiện:

  • Điện trở hạn dòng LED ngõ vào Opto ($R_1, R_4, R_7, R_{10}$): $$R_\text{in} = \frac{V_\text{OH(Mega 2560)} - V_\text{LED}}{I_\text{LED}} = \frac{5\text{V} - 2\text{V}}{13.6\text{mA}} \approx 220\ \Omega$$
  • Điện trở phân cực cực B của Transistor TIP122 ($R_2, R_5, R_8, R_{11}$): $$R_\text{bias} = \frac{V_\text{CC} - V_\text{CE(sat_opto)}}{I_\text{C(opto)}} = \frac{12\text{V} - 2\text{V}}{2\text{mA}} = 5\ \text{k}\Omega$$

Thuật toán điều khiển động cơ bước và xử lý tín hiệu

Động cơ bước được điều khiển theo phương pháp kích xung nửa bước (Half-Step) gồm 8 trạng thái lặp tuần hoàn nhằm đảm bảo độ êm ái và mô-men xoắn:

// Mã nguồn điều khiển chuỗi xung mở cửa trên Arduino Mega 2560
const int stepPins[4] = {2, 3, 4, 5};
const int sensorClosePin = 6;
const int sensorOpenPin = 7;

// Bảng trạng thái kích từ 8 bước cho động cơ bước 4 pha
const byte stepSequence[8][4] = {
  {1, 1, 0, 0}, {0, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 0},
  {0, 0, 1, 1}, {0, 0, 0, 1}, {1, 0, 0, 1}, {1, 0, 0, 0}
};

void executeOpenDoor() {
  int npulse = 0;
  int stepIndex = 0;
  // Quay động cơ cho đến khi chạm cảm biến mở hoặc vượt quá 100 chu kỳ xung
  while (digitalRead(sensorClosePin) == LOW && npulse < 100) {
    for (int pin = 0; pin < 4; pin++) {
      digitalWrite(stepPins[pin], stepSequence[stepIndex][pin]);
    }
    stepIndex = (stepIndex + 1) % 8;
    npulse++;
    delay(10); // Chu kỳ tạo xung điều khiển tốc độ góc
  }
  
  // Dừng và giữ cửa mở trong 3000ms
  delay(3000);
  
  // Tự động đóng cửa (Đảo ngược chuỗi xung)
  executeCloseDoor();
}

Xử lý giao tiếp NFC trên ứng dụng Android

Khi người dùng chạm nút "Mở cửa" trên giao diện MainControl.java và đưa điện thoại lại gần đầu đọc PN532, ứng dụng thực hiện đóng gói chuỗi dữ liệu định dạng:

// Cấu trúc chuỗi Payload truyền qua NFC: [Username],[Password],[DateTime],[Command]
String payload = username + "," + password + "," + currentDateTime + "," + "CMD_OPEN";
byte[] messageBytes = payload.getBytes(Charset.forName("UTF-8"));

// Đẩy dữ liệu qua NdefMessage / giao tiếp Peer-to-Peer hoặc Tag Emulation
NdefRecord record = new NdefRecord(
    NdefRecord.TNF_WELL_KNOWN,
    NdefRecord.RTD_TEXT,
    new byte[0],
    messageBytes
);
NdefMessage ndefMessage = new NdefMessage(new NdefRecord[] { record });
+------------------------------------------------------------------------+
|                      CẤU TRÚC BỘ NHỚ LƯU TRỮ EEPROM                    |
+-----------------------------------+------------------------------------+
| 0x0000 - 0x007F (128 Bytes):      | 0x0080 - 0x00FF (128 Bytes):       |
| Thông tin User / Password mã hóa  | Chuỗi Logstring lịch sử ra vào     |
+-----------------------------------+------------------------------------+

Kết quả kiểm thử và độ tin cậy thực tế

Hệ thống được vận hành thử nghiệm liên tục trong điều kiện phòng thí nghiệm với hơn 100 chu kỳ đóng mở cửa để đánh giá hiệu năng:

Tham số kiểm thử Giá trị đo đạc / Đạt được Tiêu chuẩn đánh giá
Khoảng cách quét NFC hiệu dụng $2.5\text{ cm} - 3.8\text{ cm}$ Đáp ứng chuẩn an toàn ($\le 4\text{ cm}$)
Thời gian nhận diện & xác thực $85\text{ ms} \pm 10\text{ ms}$ Vượt tiêu chuẩn thao tác tức thì (< 200 ms)
Độ chính xác cảm biến hành trình $100%$ (không bị trượt bước) Dừng chính xác tại vị trí chặn quang
Thời gian trễ tự động đóng cửa $3005\text{ ms}$ Sai số $< 0.2%$ so với thiết kế 3000 ms
Kích thước file ứng dụng (.apk) $152\text{ KB}$ Cực kỳ nhẹ, tối ưu RAM thiết bị

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

  1. Kiến trúc xác thực Hybrid thông minh: Đồ án tiên phong loại bỏ hoàn toàn thẻ RFID vật lý độc lập bằng cách tận dụng phần cứng NFC sẵn có trên điện thoại thông minh, biến điện thoại thành một "Smart Key" có màn hình tương tác và lớp mật mã chủ động.
  2. Khả năng lưu trữ và kiểm tra nhật ký độc lập (Stand-alone Logging): Bằng cách tận dụng 128 bytes EEPROM trên vi điều khiển ATmega2560 để ghi nhận Logstring, hệ thống cho phép đọc lại lịch sử ra vào trực tiếp lên màn hình điện thoại mà không cần xây dựng hệ thống máy chủ cơ sở dữ liệu cồng kềnh.
  3. Hiệu quả tối ưu chi phí và độ an toàn: So với các khóa thẻ từ thương mại (yêu cầu chi phí in và quản lý thẻ nhựa khoảng 20.000 – 50.000 VNĐ/thẻ), giải pháp số hóa giảm 100% chi phí phát hành thẻ vật lý và giảm 85% thời gian cấp phát/thu hồi quyền truy cập thông qua giao diện AddUser ngay trên máy chủ quản trị.

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

Kịch bản sử dụng trong thực tế

  • Căn hộ thông minh & Nhà ở gia đình: Người dùng chỉ cần mang theo điện thoại để mở cửa cổng; tránh nguy cơ bị sao chép chìa cơ khi cho mượn hoặc rơi chìa.
  • Phòng thí nghiệm / Văn phòng cơ quan: Quản lý quyền ra vào của nhân viên và sinh viên; dễ dàng truy xuất thông tin ai đã mở cửa vào khung giờ nào thông qua tính năng Xem Logfile.

Bảng phân tích chi phí phần cứng (BOM - Bill of Materials)

Linh kiện / Thiết bị Số lượng Đơn giá ước tính (VNĐ) Thành tiền (VNĐ)
Board vi điều khiển Arduino Mega 2560 01 180.000 180.000
Module NFC PN532 + Ăng-ten tích hợp 01 120.000 120.000
Động cơ bước 12V + Khung cơ khí mô hình 01 150.000 150.000
Mạch công suất (Opto PC817, TIP122, Diode, PCB) 01 bộ 60.000 60.000
Cảm biến hồng ngoại quang học 02 30.000 60.000
Nguồn Adapter kép (12V/2A + 5V/1A) 01 bộ 80.000 80.000
Tổng chi phí phần cứng 650.000 VNĐ

Đánh giá ROI: Mức chi phí phần cứng chỉ bằng 15 – 25% so với một bộ khóa cửa thông minh thương mại trên thị trường, mang lại giá trị kinh tế và khả năng ứng dụng thực tiễn cao cho các dự án DIY và thương mại hóa tầm trung.


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

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

  • Dung lượng bộ nhớ EEPROM nội của vi điều khiển (4 KB tổng thể, phân bổ 128 bytes cho log) giới hạn số lượng bản ghi lịch sử trước khi bị ghi đè.
  • Hệ thống truyền dữ liệu dựa trên tầm quét vật lý cục bộ, chưa tích hợp kết nối mạng tầm xa để mở cửa từ xa qua Internet.
  • Cơ cấu chấp hành cơ khí mới dừng ở cấp độ mô hình động cơ bước, chưa tích hợp ngàm khóa chốt điện từ Solenoid/Dropbolt tải trọng lớn.

Hướng phát triển tiếp theo

  • Tích hợp module truyền thông Wi-Fi/4G (ESP32/ESP8266): Đẩy trực tiếp logfile truy cập lên cơ sở dữ liệu Cloud (Firebase/MySQL Server) theo thời gian thực.
  • Nâng cấp thuật toán bảo mật: Ứng dụng mã hóa khóa công khai AES-128 hoặc RSA cho gói tin truyền giữa Android và vi điều khiển nhằm chống tấn công bắt gói tin (Replay Attack).
  • Hoàn thiện cơ khí công nghiệp: Tích hợp khóa chốt từ (Magnetic Lock) 280kg và cảm biến vân tay quang học để tạo hệ thống bảo mật sinh trắc học đa phương thức.

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

  • Sinh viên ngành Kỹ thuật Điện tử - Viễn thông / IoT: Tài liệu tham khảo toàn diện về phương pháp lập trình giao tiếp SPI, điều khiển công suất động cơ bước và xử lý giao thức NFC trên vi điều khiển nhúng.
  • Lập trình viên ứng dụng di động Android: Cung cấp kiến trúc code mẫu hoàn chỉnh về cách quản lý vòng đời ứng dụng, đọc/ghi gói tin NFC NDEF và tối ưu giao diện người dùng bằng XML.
  • Doanh nghiệp & Đơn vị tích hợp giải pháp Smart Home: Cung cấp thiết kế mẫu (Reference Design) có chi phí sản xuất thấp, độ tin cậy cao để thương mại hóa các dòng khóa cửa thông minh tầm trung.
  • Nhà nghiên cứu bảo mật trường gần: Cung cấp cơ sở thực nghiệm để kiểm thử các giao thức mã hóa dữ liệu trên nền chuẩn ISO/IEC 18092.

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

1. Yêu cầu kỹ thuật tối thiểu trên điện thoại để sử dụng hệ thống là gì?

Điện thoại cần chạy hệ điều hành Android phiên bản từ 4.0 (Ice Cream Sandwich) trở lên, có trang bị chip phần cứng NFC và đã bật tính năng NFC trong mục cài đặt kết nối không dây.

2. Nếu vi điều khiển mất nguồn đột ngột, tài khoản và dữ liệu ra vào có bị mất không?

Không. Dữ liệu tài khoản người dùng và chuỗi lịch sử ra vào (Logstring) được ghi trực tiếp vào bộ nhớ EEPROM phi bốc hơi (Non-volatile memory) của chip ATmega2560, do đó thông tin được bảo toàn nguyên vẹn kể cả khi ngắt nguồn hoàn toàn.

3. Tại sao hệ thống sử dụng module PN532 thay vì module RFID RC522 phổ biến?

Module PN532 hỗ trợ đầy đủ các giao thức NFC theo chuẩn ISO/IEC 18092 và có khả năng hoạt động ở chế độ Peer-to-Peer cũng như Card Emulation, cho phép tương tác 2 chiều với Smartphone. Ngược lại, module RC522 giá rẻ chỉ hỗ trợ chuẩn RFID thụ động ISO 14443A và không hỗ trợ đầy đủ stack giao tiếp NFC nâng cao.

4. Hệ thống chống nhiễu từ động cơ bước về vi điều khiển bằng cách nào?

Hệ thống sử dụng 4 kênh Optocoupler (PC817) cách ly hoàn toàn điện áp giữa khối điều khiển 5V và khối mạch lực 12V, kết hợp diode bảo vệ 1N4007 dập triệt để dòng cảm ứng sinh ra từ cuộn dây động cơ bước khi đóng ngắt liên tục.

5. Chi phí triển khai và thời gian hoàn vốn (ROI) của hệ thống như thế nào?

Chi phí linh kiện trọn gói chỉ khoảng 650.000 VNĐ. Đối với các khu nhà trọ hoặc văn phòng nhỏ (quy mô 10-20 người), hệ thống giúp tiết kiệm hàng triệu đồng chi phí làm phôi thẻ từ/chìa khóa cơ và đạt điểm hoàn vốn ngay trong tháng đầu tiên vận hành.


Kết luận

Đồ án tốt nghiệp "Hệ thống đóng mở cửa dùng NFC điện thoại" của nhóm tác giả Trương Văn Ngân và Nguyễn Hữu Tiến đã hoàn thành xuất sắc các mục tiêu thiết kế và thi công đề ra. Bằng sự kết hợp chặt chẽ giữa công nghệ phần mềm di động Android và kỹ thuật vi điều khiển nhúng Arduino/PN532, hệ thống đã chứng minh được tính khả thi, độ ổn định và mức độ an toàn cao trong kiểm soát truy cập. Đây là bước đệm vững chắc mở ra tiềm năng ứng dụng công nghệ giao tiếp trường gần rộng rãi hơn tại Việt Nam trong các lĩnh vực nhà thông minh, chấm công tự động và thanh toán không tiếp xúc.