Giới thiệu dự án

Thị trường Nhà thông minh (Smart Home) toàn cầu đang chứng kiến sự tăng trưởng vượt bậc với tốc độ CAGR đạt trên 22.3% (theo Statista, 2023). Tại Việt Nam, xu hướng đô thị hóa nhanh chóng thúc đẩy nhu cầu tự động hóa và tăng cường an ninh cho các căn hộ chung cư cao tầng. Tuy nhiên, các giải pháp thương mại khép kín hiện nay thường đối mặt với hai rào cản lớn: chi phí bản quyền/thiết bị đắt đỏ và tính phụ thuộc hoàn toàn vào hạ tầng Internet băng rộng. Khi mạng internet gặp sự cố hoặc máy chủ đám mây (cloud) quá tải, hầu hết các tác vụ cơ bản như mở khóa cửa, điều khiển rèm và bật tắt ánh sáng đều bị gián đoạn hoặc đình trệ.

Đồ án tốt nghiệp Kỹ sư Kỹ thuật Máy tính tại Trường Đại học Công nghệ Thông tin (ĐHQG-HCM) của tác giả Lê Đình Thành (GVHD: ThS. Phan Đình Duy, 2023) đã nghiên cứu và phát triển thành công đề tài: "Hệ thống điều khiển tự động cho căn hộ chung cư" (Automatic Control System for Apartment). Đề tài giải quyết triệt để bài toán tối ưu chi phí, nâng cao tính độc lập của mạng cục bộ và tích hợp kiểm soát an ninh đa tầng.

graph TD
    Client[Web Browser / iOS Siri / Nút nhấn] -->|HTTP / WebSocket| Server[Web Server PHP 8.x + MySQL + Face-api.js]
    Server -->|WebSocket Full-Duplex| ESP_Master[ESP32 Gateway Trung tâm]
    ESP32_CAM[ESP32-CAM OV2640] -->|HTTP POST Image| Server
    ESP_Master -->|Giao thức ESP-NOW| Node_Door[ESP32 Node Cửa Ra Vào]
    ESP_Master -->|Giao thức ESP-NOW| Node_Living[ESP32 Node Phòng Khách]
    Node_Door --> AS608[Cảm biến vân tay AS608 - UART]
    Node_Door --> RC522[Đầu đọc thẻ RC522 - SPI]
    Node_Door --> SR602[Cảm biến PIR SR602]
    Node_Door --> DoorRelay[Chốt khóa cửa điện tử]
    Node_Living --> AM2320[Cảm biến nhiệt/ẩm AM2320 - I2C]
    Node_Living --> RainSensor[Cảm biến mưa kỹ thuật số]
    Node_Living --> WS2812[LED RGB NeoPixel WS2812]
    Node_Living --> SG90[Động cơ Servo Rèm SG90 - PWM]

Mục tiêu dự án

  1. Kiểm soát truy cập đa sinh trắc học và thẻ từ: Tích hợp nhận diện khuôn mặt thời gian thực qua ESP32-CAM, cảm biến vân tay quang học AS608 và thẻ từ RFID RC522 tần số 13.56 MHz.
  2. Mạng truyền thông cục bộ thời gian thực: Kết hợp giao thức không dây tầm ngắn ESP-NOW giữa các vi điều khiển ESP32 và kênh truyền song công toàn phần (Full-duplex) WebSocket giữa Gateway và Web Server.
  3. Tự động hóa căn hộ theo ngữ cảnh môi trường: Điều khiển đóng rèm tự động khi phát hiện trời mưa, điều chỉnh màu sắc đèn LED RGB NeoPixel WS2812, hẹn giờ thiết bị tải công suất và hỗ trợ điều khiển qua giọng nói (Siri Shortcuts).
  4. Cơ chế cảnh báo an ninh thời gian thực: Tự động kích hoạt còi báo động tại chỗ và chụp hình gửi cảnh báo kèm hình ảnh qua giao thức SMTP Gmail khi phát hiện xâm nhập trái phép quá số lần cho phép.

Phương pháp tiếp cận và kết quả kỳ vọng

  • Phương pháp: Phân tán tải xử lý theo mô hình phân tầng (Tiered Edge-Fog Architecture). Các thuật toán xử lý phân tích khuôn mặt nặng được phân bổ chạy trên trình duyệt/máy chủ bằng face-api.js (nhân TensorFlow.js), trong khi các tác vụ I/O điều khiển cứng (PWM, UART, SPI, I2C) được các chip SoC ESP32 Xtensa Dual-Core xử lý độc lập.
  • Chỉ số kỳ vọng: Tốc độ quét vân tay dưới 0.4 giây; độ trễ truyền bản tin ESP-NOW dưới 15ms; độ trễ cập nhật trạng thái WebSocket dưới 50ms; tỷ lệ nhận diện khuôn mặt chính xác trên 95% ở điều kiện đủ sáng.
  • Phạm vi & Giới hạn: Hệ thống thử nghiệm trên mô hình căn hộ thông minh quy chuẩn; ESP32-CAM xử lý định dạng JPEG chuẩn VGA/SVGA; hệ thống điều khiển giọng nói tích hợp giao thức Webhook qua ứng dụng iOS Shortcuts.

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

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

Tiêu chí Giải pháp Thương mại (Bkav / Lumi) Giải pháp Nền tảng Đám mây (Tuya / Sonoff) Hệ thống Đề tài (ESP-NOW + WebSocket)
Kiến trúc mạng Zigbee / Z-Wave Gateway độc quyền Wi-Fi 2.4GHz Cloud-dependent Mạng lai: Wi-Fi + ESP-NOW Mesh + WebSocket LAN
Khả năng hoạt động offline Hạn chế (chỉ cục bộ qua app nội mạng) Rất kém (mất Internet mất điều khiển) Hoàn chỉnh (vẫn tương tác qua ESP-NOW và nút nhấn)
Xác thực sinh trắc học Đắt đỏ, module khóa riêng biệt Phụ thuộc khóa thông minh tích hợp sẵn Đa phương thức: Face-api.js + AS608 + RFID RC522
Chi phí triển khai Rất cao (20 - 80 triệu VNĐ) Trung bình (5 - 15 triệu VNĐ) Cực kỳ tối ưu (< 2.5 triệu VNĐ chi phí linh kiện)
Tính mở & Tùy biến Khép kín (Closed ecosystem) Phụ thuộc API nhà cung cấp Mã nguồn mở, can thiệp sâu tầng Firmware & Database

Yêu cầu người dùng theo mô hình MoSCoW

  • Must have (Bắt buộc): Mở cửa qua 3 phương thức (Vân tay, Thẻ từ, Web), điều khiển bật/tắt thiết bị thời gian thực qua WebSocket, cảnh báo gửi ảnh qua Gmail khi đăng nhập sai quá 3 lần, tự động đóng rèm khi mưa.
  • Should have (Nên có): Nhận diện khuôn mặt với Face-api.js, điều khiển bằng giọng nói qua Siri Shortcuts, hẹn giờ bật tắt điều hòa/rèm cửa.
  • Could have (Có thể có): Chế độ chuyển màu ngẫu nhiên cho LED RGB WS2812, đổi mật khẩu và phân quyền người dùng (Admin/User).
  • Won't have (Chưa làm đợt này): Nhận dạng giọng nói tiếng Việt offline nhúng trên vi điều khiển, camera theo dõi góc quay 360 độ.

Thiết kế hệ thống

Bảng thông số phần cứng & công nghệ sử dụng

Thiết bị / Công nghệ Model / Phiên bản Giao tiếp phần cứng / Giao thức Vai trò chức năng
Vi điều khiển Gateway & Node ESP32 NodeMCU Lua (Xtensa LX6) Wi-Fi 802.11 b/g/n, Bluetooth, ESP-NOW Xử lý logic, cầu nối mạng, đọc ngoại vi
Camera Module ESP32-CAM (Cảm biến OV2640) DVP / Wi-Fi HTTP Post Thu thập hình ảnh độ phân giải JPEG
Cảm biến vân tay AS608 (Độ phân giải 500 DPI) UART TTL (Baudrate 57600 bps) Quét, lưu trữ 200 mẫu vân tay (512B/template)
Đầu đọc thẻ RFID RC522 (Chip MFRC522, 13.56 MHz) SPI (Tốc độ tối đa 10 Mbps) Đọc định danh thẻ chuẩn ISO14443A/MIFARE
Cảm biến nhiệt/độ ẩm AM2320 I2C (Serial Clock SCL, Serial Data SDA) Đo độ ẩm 10-99% RH (±3%), nhiệt độ -40~80°C
Đèn LED hiển thị NeoPixel WS2812 (12 LED RGB 5050) 1-Wire Digital (800 Kbps data stream) Chiếu sáng trang trí 16.7 triệu màu, 256 mức sáng
Động cơ chấp hành Micro Servo SG90 PWM (Tần số 50Hz, chu kỳ xung 20ms) Kéo mở và đóng rèm cửa tự động
Backend & Frontend PHP 8.1, MySQL 8.0, HTML5/CSS3/JS WebSocket RFC 6455, HTTP/REST, SMTP Giao diện điều khiển, xử lý database, web socket
Computer Vision Engine Face-api.js (TensorFlow.js Core) Client-side WebGL / CPU inference Trích xuất 128D Vector đặc trưng khuôn mặt
               +-------------------------------------------------------+
               |                  DATABASE: MySQL 8.0                  |
               +-------------------------------------------------------+
                     |                    |                   |
                     v                    v                   v
      +---------------------+ +----------------------+ +--------------------+
      |     tbl_users       | |   tbl_fingerprints   | |  tbl_device_states |
      +---------------------+ +----------------------+ +--------------------+
      | id: INT (PK)        | | id: INT (PK)         | | id: INT (PK)       |
      | username: VARCHAR   | | finger_id: INT       | | device_name: VAR   |
      | password: VARCHAR   | | user_name: VARCHAR   | | status: TINYINT    |
      | role: ENUM(adm/usr) | | created_at: DATETIME | | timer_on: TIME     |
      | email: VARCHAR      | +----------------------+ | timer_off: TIME    |
      +---------------------+                          +--------------------+

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

Dự án áp dụng mô hình phát triển xoắn ốc kết hợp nguyên lý Agile:

  1. Giai đoạn 1 (Tuần 1 - Tuần 3): Khảo sát linh kiện phần cứng, thiết kế mạch nguyên lý, thử nghiệm các giao thức truyền thông thấp cấp (UART, SPI, I2C, PWM).
  2. Giai đoạn 2 (Tuần 4 - Tuần 7): Xây dựng mạng ESP-NOW đa điểm, đồng bộ kênh truyền Wi-Fi (Wi-Fi Channel Sync Algorithm), cấu hình WebSocket Server trên nền PHP/Node.
  3. Giai đoạn 3 (Tuần 8 - Tuần 11): Tích hợp thị giác máy tính với Face-api.js, lập trình giao diện Web quản trị, cấu hình Siri Shortcuts và hệ thống cảnh báo SMTP.
  4. Giai đoạn 4 (Tuần 12 - Tuần 14): Lắp ráp sa bàn mô hình căn hộ, kiểm thử toàn diện (End-to-End Testing), tối ưu hóa độ trễ và lập tài liệu kỹ thuật.

Implementation và kết quả

Quy trình phát triển & Mã nguồn tiêu biểu

1. Thuật toán tự động đồng bộ kênh truyền Wi-Fi và khởi tạo ESP-NOW

Khi ESP32 Gateway kết nối vào Router Wi-Fi của căn hộ, kênh phát sóng (Channel 1 - 13) sẽ do Router chỉ định. Để giao tiếp ESP-NOW hoạt động song song không bị xung đột, Gateway phải truy xuất kênh truyền hiện tại và phát sóng đồng bộ cho các Node vệ tinh:

// Trích đoạn mã C++ trên ESP32 Gateway: Khởi tạo và đồng bộ ESP-NOW
#include <esp_now.h>
#include <WiFi.h>

typedef struct struct_message {
    char target[16];
    int device_id;
    int state;
} struct_message;

struct_message outgoingData;
esp_now_peer_info_t peerInfo;

void initEspNowSync() {
    // Lấy kênh truyền hiện tại của mạng Wi-Fi đã kết nối
    int32_t currentWiFiChannel = WiFi.channel();
    
    if (esp_now_init() != ESP_OK) {
        Serial.println("Lỗi khởi tạo giao thức ESP-NOW!");
        return;
    }
    
    // Cấu hình Peer cho Node Phòng Khách (Địa chỉ MAC quảng bá hoặc unicast)
    uint8_t broadcastAddress[] = {0x24, 0x0A, 0xC4, 0xXX, 0xXX, 0xXX};
    memcpy(peerInfo.peer_addr, broadcastAddress, 6);
    peerInfo.channel = currentWiFiChannel; // Đồng bộ kênh với Wi-Fi
    peerInfo.encrypt = false;
    
    if (esp_now_add_peer(&peerInfo) != ESP_OK) {
        Serial.println("Thêm Peer ESP-NOW thất bại!");
    }
}

2. Trích xuất đặc trưng và xác thực khuôn mặt phía Web Client

Sử dụng mô hình mạng nơ-ron tích chập (CNN) MobileNet V1 chạy trên nền WebGL thông qua face-api.js để tính toán khoảng cách Euclid (Euclidean Distance) giữa ảnh chụp từ ESP32-CAM và vector mẫu đã lưu trữ:

// Xử lý so khớp khuôn mặt thời gian thực với face-api.js
async function verifyFaceFromCamera(esp32CamImageUrl, labeledDescriptors) {
    const img = await faceapi.fetchImage(esp32CamImageUrl);
    const detections = await faceapi.detectSingleFace(img)
        .withFaceLandmarks()
        .withFaceDescriptor();

    if (!detections) {
        return { success: false, message: "Không phát hiện khuôn mặt!" };
    }

    // Khởi tạo FaceMatcher với ngưỡng sai số (threshold) 0.6
    const faceMatcher = new faceapi.FaceMatcher(labeledDescriptors, 0.6);
    const bestMatch = faceMatcher.findBestMatch(detections.descriptor);

    if (bestMatch.label !== 'unknown') {
        // Gửi lệnh mở cửa qua WebSocket
        webSocketConnection.send(JSON.stringify({
            action: "OPEN_DOOR",
            auth_type: "FACE_ID",
            user: bestMatch.label
        }));
        return { success: true, user: bestMatch.label, distance: bestMatch.distance };
    } else {
        return { success: false, message: "Người lạ! Kích hoạt cảnh báo." };
    }
}

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

Hệ thống đã trải qua 150 kịch bản kiểm thử tích hợp (End-to-End Testing) tại phòng thí nghiệm:

Phương thức điều khiển / Xác thực Số lần thử Thành công Tỷ lệ chính xác Thời gian xử lý trung bình
Mở cửa qua Vân tay AS608 50 49 98.0% 340 ms
Mở cửa qua Thẻ từ RFID RC522 50 50 100.0% 120 ms
Nhận diện khuôn mặt (Đủ sáng) 50 47 94.0% 1,450 ms (chụp + stream + nhận diện)
Nhận diện khuôn mặt (Thiếu sáng) 30 23 76.6% 1,620 ms
Đóng rèm tự động khi mưa 30 30 100.0% 850 ms (từ lúc ướt đến khi xoay Servo)
Điều khiển giọng nói Siri 40 38 95.0% 1,100 ms (bao gồm phân tích ngữ nghĩa)
Cảnh báo xâm nhập qua Gmail 20 20 100.0% 3,200 ms (gửi kèm 01 ảnh JPEG đính kèm)

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

  1. Kiến trúc mạng lai đồng bộ tự động (Dual-layer Local Networking): Khắc phục triệt để điểm yếu mất kết nối của hệ thống IoT thông thường nhờ cơ chế kết hợp song song ESP-NOW và WebSocket. Khi mạng Internet bị ngắt, việc điều khiển giữa các phân vùng trong căn hộ vẫn vận hành mượt mà với độ trễ nội mạng cực thấp (<15ms).
  2. Khả năng Edge Provisioning thông minh: Tích hợp tính năng SoftAP Captive Portal trực tiếp trên ESP32. Người dùng dễ dàng cấu hình SSID và mật khẩu Wi-Fi của căn hộ thông qua trình duyệt điện thoại mà không cần phải nạp lại firmware (hardcode mã nguồn).
  3. Mô hình bảo mật đa tầng chi phí thấp: Tích hợp 3 lớp xác thực an ninh vật lý (Face ID + Fingerprint + RFID) trên nền tảng phần cứng thương mại mở, giảm 85% chi phí đầu tư so với các khóa cửa kỹ thuật số chuyên dụng trên thị trường.

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

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

  • Kịch bản 1: Cư dân trở về nhà: Cư dân bước tới trước cửa căn hộ. Cảm biến hồng ngoại SR602 phát hiện chuyển động, đánh thức module ESP32-CAM chụp ảnh và đưa về máy chủ xử lý. Song song đó, người dùng có thể quét ngón tay lên AS608. Cửa tự động mở trong vòng 0.4 giây, đèn LED phòng khách WS2812 chuyển sang màu trắng ấm chào đón.
  • Kịch bản 2: Cảnh báo đột nhập: Kẻ gian cố tình nhập sai vân tay hoặc quét thẻ không hợp lệ liên tiếp 3 lần. Hệ thống lập tức khóa quyền truy cập 3 phút, kích hoạt còi báo động công suất lớn tại cửa và kích hoạt ESP32-CAM chụp liên tục 3 khung hình gửi thẳng về hộp thư Gmail của chủ hộ.

Phân tích chi phí & Lợi ích (Cost-Benefit Analysis)

Ước tính tổng chi phí linh kiện phần cứng (BOM):
├── 03 x NodeMCU ESP32 (3 x 95.000 VNĐ)          : 285.000 VNĐ
├── 01 x ESP32-CAM + OV2640                      : 145.000 VNĐ
├── 01 x Cảm biến vân tay AS608                  : 320.000 VNĐ
├── 01 x Module RFID RC522 + Thẻ từ              :  45.000 VNĐ
├── 01 x Cảm biến nhiệt độ, độ ẩm AM2320         :  55.000 VNĐ
├── 01 x Vòng LED NeoPixel WS2812 (12 LED)       :  40.000 VNĐ
├── 01 x Động cơ Servo SG90 + Cảm biến mưa       :  65.000 VNĐ
├── Nguồn 5V/3A, Relay, Buzzer, Breadboard & Dây : 180.000 VNĐ
└── TỔNG CHI PHÍ PHẦN CỨNG                       : ~1.135.000 VNĐ

So với một bộ giải pháp smart home căn hộ tối thiểu trên thị trường có giá từ 15 đến 30 triệu VNĐ, hệ thống tự chế tạo giúp tiết kiệm đến hơn 90% chi phí đầu tư ban đầu, hoàn vốn tức thì và dễ dàng tự sửa chữa, thay thế linh kiện.


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

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

  • Chất lượng ống kính OV2640: Module ESP32-CAM không tích hợp đèn hồng ngoại chuyên dụng (Night Vision IR LED), dẫn đến tỷ lệ nhận diện khuôn mặt ban đêm giảm xuống còn 76.6%.
  • Băng thông ESP-NOW: Payload giới hạn tối đa 250 bytes cho mỗi gói tin truyền thông, đòi hỏi cấu trúc dữ liệu truyền giữa các node phải được nén chặt dưới dạng byte array / struct.
  • Độ trễ xử lý Face Recognition: Do chạy trên Web Client/Server nội bộ không có GPU rời, thời gian xử lý khung hình mất khoảng 1.4 - 1.6 giây.

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

  • Nâng cấp ESP32-CAM lên dòng vi xử lý chuyên dụng cho AIoT như ESP32-S3 (hỗ trợ tập lệnh tăng tốc Vector instructions và giao tiếp camera 8-bit song song).
  • Ứng dụng chuẩn giao tiếp Matter / Thread để mở rộng khả năng tương thích đa nền tảng (Apple HomeKit, Google Home, Home Assistant).
  • Thiết kế mạch in PCB 2 lớp hoàn chỉnh để thu nhỏ kích thước thiết bị, tăng độ bền công nghiệp và khả năng chống nhiễu điện từ.

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

  • Sinh viên & Học viên: Cung cấp tài liệu tham khảo chi tiết về cách kết hợp giao thức mạng không dây tầm ngắn (ESP-NOW) với WebSocket, kỹ thuật lập trình nhúng trên dòng chip ESP32 và tích hợp AI thị giác máy tính mức ứng dụng.
  • Kỹ sư & Lập trình viên IoT: Nắm bắt mô hình kiến trúc mạng phân tán cục bộ (Local Fog Architecture), quy trình xử lý bất đồng bộ trong hệ thống điều khiển thời gian thực và phương pháp viết Webhook tích hợp trợ lý ảo Apple Siri.
  • Doanh nghiệp & Startup: Cung cấp mẫu thiết kế nền tảng (Reference Design) tối ưu hóa giá thành BOM cho các thiết bị điều khiển căn hộ chung cư thông minh giá rẻ.

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

1. Hệ thống có yêu cầu máy chủ đám mây (Cloud Server) để hoạt động không?

Không. Toàn bộ hệ sinh thái có thể triển khai cục bộ hoàn toàn thông qua một máy chủ mini (hoặc máy tính nhúng Raspberry Pi / Orange Pi) đặt ngay trong căn hộ chung cư. Việc điều khiển qua Web và mạng ESP-NOW vẫn hoạt động ổn định ngay cả khi mất đường truyền Internet ra quốc tế.

2. Giới hạn khoảng cách và số lượng thiết bị của giao thức ESP-NOW là bao nhiêu?

Trong điều kiện căn hộ có nhiều tường bê tông ngăn cách, khoảng cách truyền nhận tin cậy của ESP-NOW đạt từ 20 đến 35 mét. Một Master ESP32 có thể quản lý lên tới 20 Node vệ tinh (Peer Nodes) với cơ chế định địa chỉ MAC trực tiếp mà không gây nghẽn băng thông.

3. Tích hợp điều khiển qua giọng nói Apple Siri hoạt động theo cơ chế nào?

Hệ thống sử dụng ứng dụng Shortcuts (Phím tắt) trên hệ điều hành iOS. Khi người dùng ra lệnh bằng giọng nói cho Siri, Shortcuts sẽ thực thi một HTTP POST/GET Request chứa payload điều khiển tương ứng gửi trực tiếp về IP Web Server nội bộ của căn hộ.

4. Dữ liệu khuôn mặt và vân tay của người dùng được bảo mật ra sao?

Cảm biến AS608 lưu trữ mã hóa mẫu vân tay dưới dạng đặc trưng điểm (Minutiae Data - 512 bytes) trong bộ nhớ flash nội tại của cảm biến, không lưu ảnh quét thô. Đối với khuôn mặt, dữ liệu được chuyển đổi thành chuỗi vector nhúng 128 chiều (128-dimensional embedding) trong cơ sở dữ liệu MySQL, đảm bảo tính riêng tư tối đa cho cư dân.

5. Chi phí duy trì và bảo trì hệ thống hàng tháng là bao nhiêu?

Hệ thống tiêu thụ điện năng cực thấp (trung bình dưới 5W cho toàn bộ cụm điều khiển trung tâm và các node cảm biến). Do sử dụng hạ tầng mạng nội bộ và các nền tảng mã nguồn mở, chi phí bảo trì và vận hành hàng tháng gần như bằng 0 VNĐ.


Kết luận

Đồ án tốt nghiệp "Hệ thống điều khiển tự động cho căn hộ chung cư" của tác giả Lê Đình Thành (Khoa Kỹ thuật Máy tính, Trường Đại học Công nghệ Thông tin - ĐHQG-HCM) đã chứng minh tính khả thi xuất sắc trong việc hiện đại hóa không gian sống với chi phí tối thiểu. Bằng cách kết hợp linh hoạt giữa sức mạnh xử lý của vi điều khiển SoC ESP32, độ trễ cực thấp của giao thức ESP-NOW/WebSocket và thuật toán nhận diện khuôn mặt Face-api.js, hệ thống đã giải quyết toàn diện các bài toán về an ninh, tự động hóa môi trường và trải nghiệm người dùng. Đây là tài liệu tham khảo kỹ thuật giá trị và là nền tảng vững chắc cho các nghiên cứu ứng dụng IoT dân dụng trong tương lai.