Giới thiệu dự án

Trong kỷ nguyên vạn vật kết nối (Internet of Things - IoT) và nhà thông minh (Smart Home), giao tiếp giữa con người và máy tính (Human-Computer Interaction - HCI) đang chuyển dịch mạnh mẽ từ các giao thức vật lý truyền thống sang các giao diện tương tác tự nhiên (Natural User Interfaces - NUI). Theo các báo cáo thị trường công nghệ nhà thông minh toàn cầu, nhu cầu điều khiển không tiếp xúc (touchless control) đã tăng hơn 45% trong giai đoạn hậu đại dịch, thúc đẩy ứng dụng thị giác máy tính (Computer Vision) vào đời sống hàng ngày nhằm nâng cao tiện nghi, đảm bảo vệ sinh dịch tễ và hỗ trợ người khuyết tật.

Đồ án tốt nghiệp "Thiết kế hệ thống điều khiển thiết bị điện bằng nhận diện cử chỉ" của nhóm tác giả Nguyễn Thắng Phong và Nguyễn Hải Hưng (Khoa Đào tạo Chất lượng cao, Trường Đại học Sư phạm Kỹ thuật TP.HCM, dưới sự hướng dẫn của PGS. Phan Văn Ca) giải quyết trực tiếp bài toán điều khiển thiết bị gia dụng không tiếp xúc thông qua thị giác máy tính biên (Edge Vision).

Vấn đề thực tiễn và điểm nghẽn kỹ thuật (Problem Statement)

Các phương thức điều khiển thiết bị điện gia dụng hiện nay tồn tại nhiều rào cản:

  • Công tắc cơ học truyền thống: Đòi hỏi tiếp xúc vật lý trực tiếp, tiềm ẩn nguy cơ lây nhiễm vi khuẩn tại khu vực công cộng hoặc gây bất tiện cho người suy giảm khả năng vận động, người già và người khuyết tật.
  • Ứng dụng điện thoại thông minh (Smart App): Phải qua nhiều bước thao tác (mở khóa điện thoại, khởi chạy ứng dụng, điều hướng giao diện, chờ kết nối máy chủ), gây độ trễ trải nghiệm (latency friction).
  • Điều khiển bằng giọng nói (Voice Control): Kém hiệu quả trong môi trường nhiều tạp âm (acoustic noise), gặp rào cản phương ngữ, ngôn ngữ địa phương và tiềm ẩn rủi ro xâm phạm quyền riêng tư khi micro phải luôn ở trạng thái lắng nghe (always-listening mode).
  • Cảm biến chuyên dụng (Leap Motion, ToF, Radar sóng milimet): Chi phí phần cứng cao, khó tích hợp rộng rãi vào các hệ thống dân dụng giá rẻ.

Mục tiêu của dự án (Project Objectives)

  1. Nghiên cứu và hoàn thiện mô hình học sâu (Deep Learning): Tích hợp giải pháp MediaPipe Hands và mạng nơ-ron truyền thẳng (Multi-Layer Perceptron - MLP) trên nền tảng Keras để nhận diện chuẩn xác 16 cử chỉ bàn tay thời gian thực.
  2. Thiết kế kiến trúc phần cứng phân tán Master - Slave: Sử dụng máy tính nhúng Raspberry Pi 4 Model B làm khối xử lý trung tâm (Master/Server) và vi điều khiển ESP32 DEVKIT V1 làm khối chấp hành (Slave/Client).
  3. Xây dựng giao thức truyền thông mạng TCP/IP qua Socket: Đảm bảo kết nối không dây nội bộ (2.4 GHz Wi-Fi) giữa khối máy chủ và máy khách với độ trễ truyền gói tin dưới 50ms.
  4. Phát triển giao diện đồ họa người dùng (GUI) đa năng: Thiết kế giao diện tương tác cảm ứng bằng PyQt5, cho phép cấu hình linh hoạt (mapping) cử chỉ với từng kênh rơ-le thiết bị.
  5. Tích hợp cơ chế điều khiển dự phòng 3 lớp (Tri-mode Redundancy): Kết hợp nhận diện cử chỉ (Gesture Control), nút bấm phần mềm trên màn hình cảm ứng (Touchscreen GUI) và nút nhấn cơ học phần cứng (Physical Push Buttons).
+-------------------------------------------------------------------------------+
|                             KIẾN TRÚC TỔNG QUAN HỆ THỐNG                     |
+-------------------------------------------------------------------------------+
|                                                                               |
|  [ Khối Thu Thập ]        +--------------------+          [ Khối Chấp Hành ]  |
|  Webcam Logitech C270 --->|  RASPBERRY PI 4    |          ESP32 DevKit V1     |
|  (720p @ 30fps)           |  (Master / Server) |          (Slave / Client)    |
|                           |  - MediaPipe Hands |                |             |
|  [ Khối Giao Diện ]       |  - Keras MLP Model |  TCP/IP Socket |             |
|  Waveshare 7" LCD  <----->|  - PyQt5 UI Engine |===============>|             |
|  (Touch Screen)           |  - CSV State Sync  |   (Wi-Fi LAN)  |             |
|                           +--------------------+                v             |
|                                                          +--------------+     |
|                                                          | Relay Module |     |
|  [ Điều Khiển Dự Phòng ]                                 +--------------+     |
|  Nút nhấn cơ DS-227 -------------------------------------------->|            |
|                                                                  v            |
|                                                          [ Thiết Bị Điện ]    |
|                                                          (Tải Đèn AC/DC)      |
+-------------------------------------------------------------------------------+

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

  • Phạm vi triển khai: Hệ thống thử nghiệm điều khiển 4 tải điện mô phỏng (đèn LED công suất 12V) và 1 đèn LED báo trạng thái kích hoạt chế độ nhận diện.
  • Giới hạn môi trường: Hệ thống phụ thuộc vào mạng cục bộ không dây (Local Wi-Fi Network). Khi mất kết nối mạng, tính năng điều khiển không dây từ xa sẽ bị gián đoạn, người dùng chuyển sang cơ chế nút nhấn vật lý cục bộ tại khối ESP32.

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

Phân tích hiện trạng và giải pháp thay thế

Tiêu chí so sánh Công tắc cơ học Điều khiển giọng nói App Smartphone (Tuya/Blynk) Thị giác máy tính (Đề tài)
Giao thức tương tác Tiếp xúc vật lý Sóng âm thanh Màn hình cảm ứng từ xa Cử chỉ không gian (Spatial Gesture)
Độ trễ thao tác Tức thời (< 10ms) 800ms - 2500ms (Cloud API) 1000ms - 3000ms (Mở app) < 100ms (Edge Computing)
Độ nhạy môi trường Không bị ảnh hưởng Bị nhiễu bởi âm thanh ồn Phụ thuộc Internet Cần điều kiện ánh sáng tối thiểu
Chi phí triển khai Rất thấp Trung bình - Cao Thấp - Trung bình Tối ưu (Phần cứng mã nguồn mở)
Bảo mật & Riêng tư Tuyệt đối Nguy cơ nghe lén Cloud Rò rỉ dữ liệu tài khoản Tuyệt đối (Xử lý Offline tại Edge)

Ma trận ưu tiên yêu cầu chức năng (MoSCoW)

  • Must have (Bắt buộc): Nhận diện chính xác 16 cử chỉ tay chuẩn hóa; trích xuất 21 điểm mốc tọa độ không gian 3 chiều; truyền gói tin TCP/IP từ Raspberry Pi 4 sang ESP32; đóng ngắt rơ-le kích hoạt 4 kênh tải; chuyển đổi linh hoạt chế độ nhận diện cử chỉ qua nút cứng.
  • Should have (Nên có): Giao diện PyQt5 hiển thị luồng video thời gian thực; cơ chế cấu hình động quan hệ 1-1 giữa cử chỉ và thiết bị lưu trong file CSV; giao diện cảm ứng bật/tắt thiết bị trực tiếp.
  • Could have (Có thể mở rộng): Tự động phát hiện mất kết nối socket và tự phục hồi (Auto-reconnect); điều chỉnh ngưỡng xác suất Softmax theo môi trường sáng.
  • Won't have (Chưa thực hiện): Nhận diện cử chỉ động theo chuỗi thời gian (Dynamic Gesture Trajectory) qua LSTM; điều khiển qua hạ tầng đám mây công cộng (Cloud IoT).

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

Hệ thống hoạt động theo mô hình máy tính phân tán tại biên (Distributed Edge Architecture):

+-----------------------------------------------------------------------------------+
|                        LUỒNG DỮ LIỆU ĐIỀU KHIỂN HỆ THỐNG                          |
+-----------------------------------------------------------------------------------+
|                                                                                   |
|  [Camera Frame 720p]                                                              |
|          |                                                                        |
|          v                                                                        |
|  [MediaPipe Hands Detection] ===> Trích xuất 21 Landmarks (x, y, z)               |
|          |                                                                        |
|          v                                                                        |
|  [Vector Normalization] ======> Tịnh tiến về gốc cổ tay (ID:0) & Co giãn [-1, 1]  |
|          |                                                                        |
|          v                                                                        |
|  [Keras MLP Classification] ==> Dự đoán Gesture ID (1 -> 16) qua Softmax          |
|          |                                                                        |
|          v                                                                        |
|  [Decision Engine] ===========> Tra cứu Control Database (CSV)                    |
|          |                                                                        |
|          v                                                                        |
|  [TCP Socket Server] =========> Đóng gói Payload Command                          |
|          |                                                                        |
|     (Wi-Fi LAN)                                                                   |
|          |                                                                        |
|          v                                                                        |
|  [ESP32 Socket Client] =======> Băm chuỗi lệnh & Kích hoạt GPIO                   |
|          |                                                                        |
|          v                                                                        |
|  [4-Channel Relay Module] ====> Đóng/Ngắt Tải Điện Thực Tế (LED 12V)              |
|                                                                                   |
+-----------------------------------------------------------------------------------+

Danh mục công nghệ và thông số kỹ thuật (Tech Stack)

  • Edge AI & Computing: Python v3.8+, Google MediaPipe v0.8.9+, Keras / TensorFlow v2.6.0+, OpenCV-Python v4.5+.
  • Giao diện & Ứng dụng: PyQt5 v5.15+, Qt Designer, pyuic5 compiler.
  • Hệ điều hành & Nền tảng Master: Raspbian OS (Debian 11 bullseye, 64-bit), Kernel 5.10; Raspberry Pi 4 Model B (Broadcom BCM2711, Quad-core Cortex-A72 @ 1.5GHz, 4GB LPDDR4).
  • Bộ nhớ lưu trữ Master: Intel SSD Pro 1500 Series (180GB SATA qua USB 3.0 Bridge) thay thế thẻ nhớ MicroSD để tối ưu tốc độ đọc/ghi I/O (Sequential Read > 200 MB/s).
  • Phần cứng Client: ESP32 DEVKIT V1 - DOIT (Xtensa Dual-Core 32-bit LX6, 240MHz, 520KB SRAM, tích hợp Wi-Fi 802.11 b/g/n).
  • Cảm biến & Hiển thị: Webcam Logitech C270 (HD 720p/30fps, góc nhìn 60 độ); Màn hình cảm ứng điện dung Waveshare 7-inch HDMI LCD (Độ phân giải 1024x600 pixels).
  • Khối chấp hành & Nguồn: Module 4-Channel Relay cách ly quang Optocoupler (5V Trigger); Module 1-Channel Relay; Nguồn giảm áp DC-DC Buck LM2596 (Hiệu suất 92%, nguồn vào 12V, nguồn ra ổn định 5V/3A).

Thiết kế cơ sở dữ liệu trạng thái (State Database) và giao thức TCP/IP

Hệ thống sử dụng cơ chế đồng bộ hóa trạng thái thông qua tệp tin cấu trúc phẳng CSV (control_database.csv), định nghĩa cấu trúc:

$$\text{DataRow} = \langle \text{Device_ID}, \text{Current_State}, \text{Assigned_Gesture_ID}, \text{Gesture_Enabled} \rangle$$

Giao thức truyền thông qua cổng TCP Socket Port: 8080:

  • Khung dữ liệu điều khiển từ Server (Raspberry Pi) gửi sang Client (ESP32): CMD:<DEV_ID>:<STATE>\n (Ví dụ: CMD:1:ON\n, CMD:ALL:OFF\n).
  • Khung dữ liệu phản hồi từ Client sang Server khi ấn nút vật lý: BTN:<DEV_ID>:<STATE>\n.
  • Khung dữ liệu bật/tắt toàn bộ chế độ cử chỉ: MODE:GESTURE:<ENABLE/DISABLE>\n.

Quá trình thực thi và kết quả thử nghiệm

Thuật toán chuẩn hóa dữ liệu tọa độ mốc bàn tay (Landmark Normalization)

Mô hình trích xuất 21 điểm mốc $P_i = (x_i, y_i, z_i)$ từ MediaPipe ($i = 0 \dots 20$). Để mô hình bất biến với khoảng cách (tỉ lệ bàn tay) và vị trí của bàn tay trong khung hình, thuật toán chuẩn hóa 4 bước được triển khai:

  1. Chuyển đổi hệ tọa độ ảnh: Chuyển đổi tọa độ tỉ lệ $[0, 1]$ sang tọa độ pixel tuyệt đối theo kích thước khung hình $W = 1280, H = 720$: $$X_i = x_i \times W, \quad Y_i = y_i \times H$$
  2. Tịnh tiến gốc tọa độ về cổ tay (Landmark ID 0): Lấy điểm cổ tay $P_0(X_0, Y_0)$ làm gốc chuẩn: $$\Delta X_i = X_i - X_0, \quad \Delta Y_i = Y_i - Y_0 \quad (\forall i \in [0, 20])$$
  3. Làm phẳng vector đặc trưng (Feature Vector Flattening): Biến đổi thành vector 1 chiều kích thước 42 phần tử: $$V = [\Delta X_0, \Delta Y_0, \Delta X_1, \Delta Y_1, \dots, \Delta X_{20}, \Delta Y_{20}]$$
  4. Chuẩn hóa giá trị biên về khoảng $[-1, 1]$: Chia vector cho giá trị tuyệt đối cực đại của phần tử trong vector: $$V_{\text{norm}} = \frac{V}{\max(|V|)}$$
import numpy as np

def normalize_hand_landmarks(landmarks, frame_width=1280, frame_height=720):
    """
    Chuẩn hóa 21 điểm mốc bàn tay từ MediaPipe về vector 42 chiều trong khoảng [-1, 1]
    Lấy điểm mốc cổ tay (Landmark 0) làm gốc tọa độ.
    """
    landmark_coords = []
    for lm in landmarks.landmark:
        cx, cy = int(lm.x * frame_width), int(lm.y * frame_height)
        landmark_coords.append([cx, cy])
    
    # Bước 2: Tịnh tiến về gốc tọa độ cổ tay (Landmark ID: 0)
    base_x, base_y = landmark_coords[0][0], landmark_coords[0][1]
    relative_coords = []
    for coord in landmark_coords:
        relative_coords.append([coord[0] - base_x, coord[1] - base_y])
        
    # Bước 3: Làm phẳng mảng thành vector 1D (42 đặc trưng)
    flatten_vector = np.array(relative_coords).flatten()
    
    # Bước 4: Chuẩn hóa biên độ [-1, 1]
    max_val = np.max(np.abs(flatten_vector))
    if max_val == 0:
        return np.zeros(42, dtype=np.float32)
    normalized_vector = flatten_vector / max_val
    
    return normalized_vector.astype(np.float32)

Kiến trúc mạng nơ-ron và quy trình huấn luyện (Keras MLP)

Mô hình phân loại cử chỉ được xây dựng tối ưu cho vi xử lý nhúng, cấu trúc gồm 4 tầng:

  • Tầng đầu vào (Input Layer): 42 nơ-ron (tương ứng 42 tọa độ $x, y$ đã chuẩn hóa).
  • Tầng ẩn 1 (Dense Layer 1): 20 nơ-ron, hàm kích hoạt $\text{ReLU}(z) = \max(0, z)$.
  • Tầng ẩn 2 (Dense Layer 2): 10 nơ-ron, hàm kích hoạt $\text{ReLU}$.
  • Tầng đầu ra (Output Layer): 16 nơ-ron, hàm kích hoạt $\text{Softmax}$ tạo phân phối xác suất:

$$P(y = j \mid \mathbf{x}) = \frac{e^{z_j}}{\sum_{k=1}^{16} e^{z_k}}, \quad j \in {1, 2, \dots, 16}$$

import tensorflow as tf
from tensorflow.keras import layers, models

def build_gesture_classifier(input_dim=42, num_classes=16):
    model = models.Sequential([
        layers.Input(shape=(input_dim,)),
        layers.Dense(20, activation='relu', name='hidden_layer_1'),
        layers.Dropout(0.2),
        layers.Dense(10, activation='relu', name='hidden_layer_2'),
        layers.Dense(num_classes, activation='softmax', name='output_layer')
    ])
    
    model.compile(
        optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
        loss='sparse_categorical_crossentropy',
        metrics=['accuracy']
    )
    return model

# Khởi tạo và tóm tắt mô hình
gesture_model = build_gesture_classifier()
# Training config: Dataset ~70,000 samples, Batch Size = 128, Split: 75% Train / 25% Test

Triển khai mã nguồn điều khiển Client trên ESP32 (C/C++ Arduino Core)

ESP32 lắng nghe Socket từ Master qua Wi-Fi và cập nhật trạng thái các chân GPIO nối với module rơ-le:

#include <WiFi.h>

const char* ssid     = "SMART_HOME_IOT";
const char* password = "EmbeddedPassword2022";
const char* host     = "192.168.1.100"; // IP tĩnh của Raspberry Pi 4
const uint16_t port  = 8080;

const int RELAY_PINS[4] = {18, 19, 21, 22};
const int GESTURE_LED_PIN = 23;
WiFiClient client;

void setup() {
  Serial.begin(115200);
  for (int i = 0; i < 4; i++) {
    pinMode(RELAY_PINS[i], OUTPUT);
    digitalWrite(RELAY_PINS[i], HIGH); // Rơ-le kích LOW, mặc định ngắt tải
  }
  pinMode(GESTURE_LED_PIN, OUTPUT);
  
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  connectToHost();
}

void loop() {
  if (!client.connected()) {
    connectToHost();
  }
  
  if (client.available()) {
    String payload = client.readStringUntil('\n');
    processCommand(payload);
  }
}

void processCommand(String cmd) {
  cmd.trim();
  if (cmd.startsWith("CMD:")) {
    int devId = cmd.substring(4, 5).toInt() - 1;
    String state = cmd.substring(6);
    if (devId >= 0 && devId < 4) {
      digitalWrite(RELAY_PINS[devId], (state == "ON") ? LOW : HIGH);
    }
  } else if (cmd == "MODE:GESTURE:ENABLE") {
    digitalWrite(GESTURE_LED_PIN, HIGH);
  } else if (cmd == "MODE:GESTURE:DISABLE") {
    digitalWrite(GESTURE_LED_PIN, LOW);
  }
}

void connectToHost() {
  while (!client.connect(host, port)) {
    delay(1000);
  }
}

Kết quả thử nghiệm và đánh giá thực nghiệm

1. Đánh giá tập dữ liệu và mô hình học máy

  • Quy mô tập dữ liệu (Dataset): 69.840 mẫu cử chỉ ghi nhận từ nhiều người dùng với 16 lớp cử chỉ riêng biệt.
  • Phân chia dữ liệu: 75% tập huấn luyện (Train Set: 52.380 mẫu) và 25% tập kiểm thử (Test Set: 17.460 mẫu).
  • Kết quả đánh giá: Độ chính xác toàn cục (Overall Accuracy) trên tập kiểm thử đạt 97.8%.

2. Đánh giá tỷ lệ nhận diện theo khoảng cách và cường độ sáng

Nhóm thực nghiệm tiến hành 100 lần thử nghiệm cho mỗi điều kiện môi trường:

Khoảng cách (m) Cường độ sáng yếu (50 Lux) Ánh sáng văn phòng (250 Lux) Ánh sáng tự nhiên (500 Lux) Tỷ lệ nhận diện trung bình
0.5 m 92.0% 99.0% 98.0% 96.3%
1.0 m 89.0% 98.0% 97.0% 94.7%
1.5 m 81.0% 93.0% 92.0% 88.7%
2.0 m 68.0% 82.0% 80.0% 76.7%
Trung bình 82.5% 93.0% 91.8% 89.1%
+-------------------------------------------------------------------------------+
|       BIỂU ĐỒ ĐỘ CHÍNH XÁC THEO KHOẢNG CÁCH VÀ ĐIỀU KIỆN ÁNH SÁNG (%)        |
+-------------------------------------------------------------------------------+
|  100% |                                                                       |
|   90% |   [=====]  [=====]  [=====]                                           |
|   80% |   [=====]  [=====]  [=====]  [=====]                                  |
|   70% |   [=====]  [=====]  [=====]  [=====]  [=====]                         |
|   60% |   [=====]  [=====]  [=====]  [=====]  [=====]  [=====]                |
|    0% +------------------------------------------------------------           |
|            0.5m     1.0m     1.5m     2.0m    50 Lux   250 Lux                |
|          (96.3%)  (94.7%)  (88.7%)  (76.7%)  (82.5%)   (93.0%)                |
+-------------------------------------------------------------------------------+

3. Báo cáo phân loại chi tiết (Classification Report) trên 16 cử chỉ ở điều kiện chuẩn

Nhóm Cử Chỉ (Mã) Mô tả cử chỉ Precision Recall F1-Score Tỷ lệ thực tế (%)
Cử chỉ 01 - 04 Ngón trỏ chỉ hướng (1, 2, 3, 4 ngón duỗi) 0.98 0.97 0.975 98.0%
Cử chỉ 05 - 08 Nắm tay, Xòe 5 ngón, Thumbs Up, Thumbs Down 0.99 0.99 0.990 99.0%
Cử chỉ 09 - 12 Ký hiệu OK, Victory (Chữ V), Cử chỉ Rock, Cử chỉ Ba ngón 0.96 0.95 0.955 96.0%
Cử chỉ 13 - 16 Bàn tay nghiêng, Chụm ngón, Ký hiệu L, Chữ C 0.95 0.94 0.945 95.0%
Tổng kết toàn bộ Trung bình trọng số (Weighted Avg) 0.97 0.96 0.965 97.0%

4. Hiệu năng hệ thống (System Latency & Resource Utilization)

  • Tốc độ xử lý khung hình (FPS): Đạt 28 - 30 FPS ổn định trên Raspberry Pi 4 Model B (độ phân giải thu thập 720p).
  • Thời gian suy luận mô hình (Inference Latency): ~8.4 ms trên CPU Broadcom BCM2711.
  • Thời gian truyền gói tin mạng TCP (Network Roundtrip): ~12.6 ms qua mạng nội bộ Wi-Fi 2.4 GHz.
  • Tổng độ trễ phản hồi từ cử chỉ đến rơ-le nhảy (End-to-End Latency): < 65 ms, mang lại cảm giác phản hồi tức thì cho người dùng.
  • Mức tiêu thụ dòng điện khối Client ESP32: Tổng dòng điện tiêu thụ cực đại khi kích hoạt toàn bộ 5 rơ-le và 5 đèn báo đạt xấp xỉ 705 mA (nằm trong giới hạn an toàn của khối nguồn LM2596 công suất thiết kế 3A).

Đổi mới và đóng góp kỹ thuật

  1. Kiến trúc phân tách đặc trưng 2 giai đoạn (Two-Stage Decoupled Pipeline): Thay vì sử dụng mạng tích chập sâu (End-to-End CNN) nặng nề trực tiếp từ ảnh thô, hệ thống sử dụng MediaPipe Hands để trích xuất 21 điểm mốc tọa độ không gian làm tầng trung gian, kết hợp với mạng MLP 4 tầng siêu nhẹ. Thiết kế này giúp giảm 98% chi phí tính toán, cho phép chạy suy luận thời gian thực 30 FPS trên vi xử lý nhúng ARM Cortex-A72 mà không cần bộ tăng tốc GPU đắt tiền.
  2. Thuật toán chuẩn hóa tọa độ không phụ thuộc tỷ lệ và vị trí: Bằng cách lấy điểm mốc cổ tay (Landmark ID 0) làm gốc tọa độ tương đối kết hợp chuẩn hóa biên độ $[-1, 1]$, hệ thống nhận diện ổn định bất kể vị trí của tay trong khung hình và kích cỡ bàn tay của từng người dùng khác nhau.
  3. Cơ chế dung lỗi và điều khiển dự phòng 3 tầng (Fault-Tolerant Tri-Mode Architecture): Loại bỏ hoàn toàn "điểm lỗi đơn" (Single Point of Failure). Khi camera bị che khuất hoặc môi trường thiếu sáng, người dùng điều khiển qua màn hình cảm ứng 7-inch. Khi khối Master gặp sự cố hoặc mất kết nối mạng, các nút nhấn phần cứng DS-227 tại khối Client ESP32 vẫn duy trì khả năng đóng ngắt thiết bị cục bộ độc lập.
  4. Cơ sở dữ liệu cấu hình động (Dynamic Mapping Engine): Cho phép người dùng tùy ý gán bất kỳ cử chỉ nào trong số 16 cử chỉ cho bất kỳ thiết bị nào trực tiếp trên giao diện PyQt5 mà không cần biên dịch lại mã nguồn phần mềm.

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

Kịch bản ứng dụng (Real-World Use Cases)

  • Phòng mổ y tế và phòng sạch vô trùng (Sterile Cleanrooms): Bác sĩ và kỹ thuật viên điều khiển đèn mổ, thiết bị chẩn đoán hình ảnh mà không cần chạm tay vào bề mặt vật lý, ngăn ngừa tuyệt đối nguy cơ lây nhiễm chéo.
  • Hỗ trợ người khuyết tật và người cao tuổi (Assistive Smart Living): Giúp người bị hạn chế khả năng di chuyển dễ dàng bật/tắt quạt, đèn, tivi từ xa chỉ bằng động tác tay đơn giản trước camera.
  • Nhà bếp và xưởng cơ khí công nghiệp: Thao tác bật/tắt thiết bị khi bàn tay đang ướt, dính dầu mỡ hoặc đang mang găng tay bảo hộ dày.

Dự toán chi phí phần cứng (BOM - Bill of Materials)

Linh kiện / Thiết bị Quy cách / Model Số lượng Đơn giá ước tính (VNĐ)
Bo mạch Master Raspberry Pi 4 Model B (4GB RAM) 01 1.850.000
Bo mạch Client ESP32 DEVKIT V1 - DOIT 30 chân 01 120.000
Camera thu hình Logitech C270 HD (720p/30fps) 01 350.000
Màn hình cảm ứng Waveshare 7-inch HDMI LCD (1024x600) 01 1.100.000
Ổ cứng lưu trữ Intel SSD Pro 1500 Series (180GB) + Cáp chuyển SATA 01 300.000
Module Rơ-le Module Relay 4 kênh 5V + Relay 1 kênh 5V 02 75.000
Mạch nguồn hạ áp Module nguồn DC-DC Buck LM2596 02 40.000
Nút nhấn & Đèn báo Nút DS-227, Đèn LED AD16-22D, Vỏ Mica Trọn bộ 250.000
Tổng chi phí phần cứng (Tương đương ~170 USD) 4.085.000 VNĐ

Khả năng mở rộng hệ sinh thái (Scalability Roadmap)

  • Mở rộng đa điểm (Multi-Client Network): Một Raspberry Pi 4 Master có khả năng quản lý đồng thời lên đến 32 vi điều khiển ESP32 Client trong cùng dải mạng subnet thông qua giao thức TCP Non-blocking hoặc MQTT Broker tích hợp (Mosquitto).
  • Tích hợp nền tảng Nhà thông minh chuẩn công nghiệp: Dễ dàng đóng gói thành một Add-on chuẩn cho hệ sinh thái mã nguồn mở Home Assistant hoặc truyền nhận dữ liệu qua HomeBridge/Apple HomeKit.

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

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

  • Phụ thuộc điều kiện chiếu sáng: Khi cường độ sáng môi trường giảm xuống dưới 30 Lux, cảm biến CMOS của Webcam Logitech C270 bị nhiễu hạt (noise), làm suy giảm độ chính xác trích xuất điểm mốc của MediaPipe.
  • Cử chỉ tĩnh đơn lẻ: Hệ thống hiện chỉ hỗ trợ nhận diện các cử chỉ tĩnh (Static Gestures), chưa hỗ trợ các cử chỉ động theo quỹ đạo không gian (Dynamic Gestures như vuốt trái, vuốt phải, xoay tròn ngón tay để tăng giảm độ sáng/âm lượng).
  • Nhận diện đơn người dùng: Hệ thống ưu tiên xử lý bàn tay đầu tiên xuất hiện trong khung hình; chưa có thuật toán phân biệt quyền ưu tiên khi có nhiều người cùng đưa tay vào vùng quan sát của camera.

Hướng nâng cấp và phát triển tương lai

  1. Nâng cấp cảm biến thị giác: Tích hợp Camera hồng ngoại (IR Camera) hoặc Camera cảm biến chiều sâu (Intel RealSense / ToF Sensor) để hệ thống hoạt động hoàn hảo trong bóng tối tuyệt đối.
  2. Ứng dụng mạng học sâu chuỗi thời gian (Spatio-Temporal Deep Learning): Kết hợp MediaPipe với mạng tích hợp CNN-LSTM hoặc 1D-CNN + GRU để nhận diện chuỗi cử chỉ động phức tạp.
  3. Chuyển dịch sang mô hình Micro-Edge AI: Nén lượng tử hóa mô hình (TensorFlow Lite for Microcontrollers - TFLite Micro) để triển khai trực tiếp toàn bộ pipeline xử lý hình ảnh lên các chip SoC giá rẻ thế hệ mới tích hợp camera như ESP32-S3 hoặc Sipeed Maixduino (K210).

Đối tượng hưởng lợi từ dự án

  • Sinh viên ngành Kỹ thuật Máy tính, Điện tử & CNTT: Tiếp cận tài liệu tham khảo hoàn chỉnh về cách tích hợp một mô hình Trí tuệ nhân tạo (AI) lên phần cứng máy tính nhúng thực tế kết hợp lập trình mạng socket và giao diện GUI.
  • Kỹ sư phát triển IoT / Embedded Developers: Cung cấp mẫu thiết kế (Design Pattern) phân tách kiến trúc Master - Slave tin cậy, phương pháp chuẩn hóa vector đặc trưng hình học để tối ưu hóa tài nguyên phần cứng.
  • Doanh nghiệp sản xuất thiết bị Smart Home / Healthcare: Khung giải pháp chi phí thấp sẵn sàng thương mại hóa để tích hợp tính năng điều khiển không tiếp xúc vào các sản phẩm nhà thông minh, thiết bị y tế và buồng thang máy thông minh.
  • Người dùng cuối (Đặc biệt là người khuyết tật): Sở hữu giải pháp công nghệ trợ năng an toàn, tiện lợi, không phụ thuộc vào điện thoại thông minh hay khẩu lệnh giọng nói.

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

1. Yêu cầu cấu hình tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu khối Master chạy máy tính nhúng tối thiểu là Raspberry Pi 3 Model B+ (khuyến nghị Raspberry Pi 4 để đạt 30 FPS), thẻ nhớ MicroSD Class 10 (hoặc ổ cứng SSD USB 3.0), một Camera chuẩn UVC hỗ trợ độ phân giải tối thiểu 720p/30fps và vi điều khiển ESP32 cho mỗi cụm thiết bị điều khiển.

2. Khi mất kết nối mạng Wi-Fi cục bộ, hệ thống có hoạt động được không?

Khi mất mạng Wi-Fi, kết nối Socket giữa Raspberry Pi và ESP32 bị ngắt, tính năng nhận diện cử chỉ và điều khiển qua màn hình cảm ứng sẽ tạm ngừng truyền lệnh đến thiết bị. Tuy nhiên, khối Client ESP32 được thiết kế độc lập phần cứng, người dùng vẫn có thể bật/tắt các thiết bị điện bình thường thông qua 4 nút nhấn cơ học DS-227 tích hợp trên bo mạch.

3. Làm thế nào để hệ thống tránh tình trạng nhận diện nhầm khi người dùng vô tình vẫy tay?

Hệ thống tích hợp nút bấm vật lý và nút phần mềm chuyên dụng để kích hoạt/ngắt chế độ nhận diện cử chỉ (Gesture Activation Toggle). Khi chế độ này bị ngắt, camera và mô hình sẽ dừng tiến trình quét, loại bỏ 100% việc kích hoạt ngoài ý muốn. Ngoài ra, mô hình áp dụng ngưỡng phân loại xác suất $\text{Confidence Threshold} > 0.85$ và bộ đệm khử rung cử chỉ liên tục trong 5 khung hình (Debounce Filter).

4. Hệ thống có thể tích hợp điều khiển các thiết bị điện 220V công suất lớn không?

Hoàn toàn có thể. Module rơ-le trong đồ án có khả năng chịu tải tiếp điểm lên tới 250VAC - 10A (tương đương công suất tải điện trở 2200W). Người dùng chỉ cần đấu nối tiếp điểm rơ-le với nguồn điện xoay chiều gia dụng 220V để điều khiển bóng đèn sợi đốt, quạt bàn, bình đun nước hoặc khởi động từ (Contactor) cho các tải công nghiệp công suất lớn hơn.

5. Chi phí vận hành và bảo trì hệ thống như thế nào?

Toàn bộ hệ thống tiêu thụ công suất trung bình dưới 15W ở trạng thái hoạt động tối đa (Raspberry Pi 4 ăn dòng ~7W, ESP32 và các rơ-le ăn dòng ~3W), giúp tiết kiệm điện năng vượt trội. Mô hình AI và cơ sở dữ liệu hoạt động hoàn toàn offline trên mạng LAN cục bộ, không mất phí duy trì máy chủ Cloud định kỳ.


Kết luận

Đồ án tốt nghiệp "Thiết kế hệ thống điều khiển thiết bị điện bằng nhận diện cử chỉ" của nhóm tác giả Nguyễn Thắng Phong và Nguyễn Hải Hưng dưới sự hướng dẫn của PGS. Phan Văn Ca đã xây dựng thành công một giải pháp điều khiển nhà thông minh không tiếp xúc toàn diện, kết hợp hài hòa giữa Trí tuệ nhân tạo biên (Edge AI), Hệ thống nhúng (Embedded Systems)Giao tiếp người - máy tự nhiên (NUI).

Bằng việc sáng tạo kết hợp thư viện trích xuất đặc trưng MediaPipe Hands với mạng nơ-ron đa tầng Keras MLP và kiến trúc phân tán Master-Slave qua mạng TCP/IP, hệ thống đạt độ chính xác ấn tượng 97.8% với độ trễ phản hồi thời gian thực dưới 65 ms. Đây là nền tảng kỹ thuật vững chắc mở ra hướng ứng dụng thực tiễn to lớn trong việc nâng cao chất lượng cuộc sống, thúc đẩy phát triển công nghệ trợ năng cho người yếu thế và hiện thực hóa các không gian sống thông minh, an toàn trong tương lai.