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 giá trị dự báo vượt mức 43 tỷ USD (theo báo cáo của Statista), thúc đẩy làn sóng tự động hóa không gian sống tại các đô thị lớn ở Việt Nam như Hà Nội, Đà Nẵng và TP. Hồ Chí Minh. Tuy nhiên, phần lớn các giải pháp Smarthome thương mại hiện nay vẫn phụ thuộc chặt chẽ vào thiết bị trung gian vật lý như điện thoại thông minh (Smartphone), máy tính bảng hoặc công tắc cơ/cảm ứng. Phương thức tương tác này bộc lộ nhiều rào cản lớn đối với người cao tuổi, người hạn chế vận động hoặc người khiếm thính – những đối tượng gặp khó khăn khi thao tác trên màn hình cảm ứng hoặc sử dụng trợ lý ảo điều khiển bằng giọng nói.

Đồ án tốt nghiệp "Công nghệ nhận diện ứng dụng trong nhà thông minh" được thực hiện bởi sinh viên Nguyễn Văn Trường dưới sự hướng dẫn của TS. Trần Quốc Hoàn (Khoa Điều khiển và Tự động hóa, Trường Đại học Điện Lực) nhằm giải quyết bài toán giao tiếp tự nhiên giữa người và thiết bị (Human-Computer Interaction - HCI). Đề tài tập trung xây dựng một hệ thống phần cứng và phần mềm nhúng hoàn chỉnh, kết hợp vi điều khiển 32-bit hiệu năng cao ESP32, nền tảng IoT Blynk và thị giác máy tính (Computer Vision) để nhận dạng cử chỉ bàn tay (Hand Gesture Recognition) không chạm phục vụ điều khiển thiết bị gia dụng thời gian thực.

                    HỆ THỐNG ĐIỀU KHIỂN NHÀ THÔNG MINH
                                    │
       ┌────────────────────────────┼────────────────────────────┐
       ▼                            ▼                            ▼
[Cử chỉ bàn tay]            [Ứng dụng Blynk IoT]        [Cảm biến & Phím cơ]
(Camera + Python/OpenCV)    (Smartphone iOS/Android)    (Keypad, TTP223, DHT11, MQ2)
       │                            │                            │
       └────────────────────────────┼────────────────────────────┘
                                    ▼
                        [Bộ điều khiển ESP32 MCU]
                                    │
       ┌────────────────────────────┼────────────────────────────┐
       ▼                            ▼                            ▼
 [Phòng khách]                 [Phòng ngủ]                  [Phòng bếp]
 (Đèn, Quạt, Cửa Servo)     (Đèn, Quạt, Rèm cửa)       (Hút mùi, Còi báo, Van Gas)

Mục tiêu đề tài

  1. Thiết kế phần cứng nhúng phân tán: Tích hợp thành công vi điều khiển ESP32-WROOM-32 điều khiển các cơ cấu chấp hành đa vùng (phòng khách, phòng ngủ, phòng bếp) qua mạng cảm biến đo nhiệt độ, độ ẩm, rò rỉ khí gas và phát hiện trời mưa.
  2. Xây dựng giải thuật xử lý ảnh nhận dạng cử chỉ: Phát triển module thị giác máy tính nhận dạng cử chỉ ngón tay dựa trên phân đoạn màu da trong không gian màu HSV kết hợp thuật toán trừ nền (Background Subtraction), bao lồi (Convex Hull) và khuyết tật lồi (Convexity Defects) bằng ngôn ngữ Python.
  3. Triển khai giao tiếp IoT hai chiều thời gian thực: Kết nối hệ thống với nền tảng Blynk Server qua giao thức Wi-Fi 802.11 b/g/n, hỗ trợ quản lý trạng thái thiết bị đa kênh với độ trễ thấp (< 250ms).
  4. Hiện thực hóa mô hình thực nghiệm: Chế tạo mô hình nhà thông minh hoàn chỉnh với cơ chế bảo vệ an toàn cháy nổ, kiểm soát truy cập bằng mật mã Keypad và tự động hóa theo kịch bản môi trường.

Phạm vi và giới hạn: Hệ thống xử lý ảnh nhận diện bàn tay được xử lý trên máy tính trạm/Raspberry Pi truyền gói tin điều khiển tới ESP32; thuật toán xử lý ảnh tối ưu trong điều kiện ánh sáng ổn định (300 - 600 Lux), nền hậu cảnh ít vật thể mang sắc thái tương đồng với màu da người.


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

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

Tiêu chí Hệ thống nút bấm cơ / Cảm ứng Ứng dụng di động (Blynk, Tuya, Home Assistant) Nhận dạng cử chỉ bằng găng tay (Data Glove) Giải pháp đề xuất (Vision-based Hand Gesture + ESP32)
Tính tiện lợi Thấp, phải di chuyển đến vị trí công tắc Trung bình, phải cầm và mở khóa điện thoại Kém, phải đeo thiết bị có dây gắn cảm biến MEMS Rất cao, tương tác tự nhiên không chạm từ xa
Hỗ trợ người khuyết tật Hạn chế đối với người liệt/hạn chế vận động Khó tiếp cận cho người run tay, thị lực kém Hỗ trợ tương đối nhưng gây vướng víu Tối ưu cho người câm điếc, người suy giảm vận động
Chi phí triển khai Rất rẻ (50.000 - 150.000 VNĐ/điểm) Trung bình (200.000 - 500.000 VNĐ/node) Rất cao (> 3.000.000 VNĐ/găng tay cảm biến) Tiết kiệm, tận dụng ESP32 và Camera quang học có sẵn
Khả năng tự động hóa Không có Có, theo kịch bản logic phần mềm Thấp, phụ thuộc phần cứng cảm biến Toàn diện (kết hợp AI thị giác + cảm biến an toàn)

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

  • Must Have (Bắt buộc): Khối vi điều khiển ESP32 kết nối Wi-Fi ổn định; hệ thống relay cách ly quang đóng ngắt nguồn 220V/12V; thuật toán đếm số ngón tay điều khiển đúng thiết bị; cơ chế cảnh báo rò rỉ khí gas qua còi hú và tự động bật quạt hút.
  • Should Have (Nên có): Điều khiển song song qua app Blynk; hiển thị thông số môi trường lên LCD 16x2 qua bus I2C; bàn phím Keypad 4x4 tích hợp khóa servo SG90.
  • Could Have (Có thể có): Nhận diện khuôn mặt xác thực ra vào; kịch bản tự động đóng rèm khi cảm biến phát hiện trời mưa.
  • Won't Have (Chưa thực hiện): Tích hợp xử lý Deep Learning trực tiếp trên chip biên vi công suất (Edge TinyML), điều khiển học lệnh bằng giọng nói Offline.

Thiết kế hệ thống

Kiến trúc hệ thống gồm 3 tầng chính: Tầng thu thập/cảm nhận (Perception Layer), Tầng xử lý trung tâm & Nhận diện (Control & Processing Layer) và Tầng cơ cấu chấp hành (Actuation Layer).

graph TD
    subgraph Perception_Layer ["Tầng Cảm Nhận & Điều Khiển Ngoại Vi"]
        Cam["Camera số (Webcam/OV2640)"]
        DHT["Cảm biến nhiệt/ẩm DHT11"]
        MQ2["Cảm biến khí gas MQ-2"]
        Rain["Cảm biến nước mưa"]
        Touch["Cảm biến chạm TTP223"]
        Keypad["Bàn phím ma trận 4x4"]
    end

    subgraph Processing_Layer ["Tầng Xử Lý & Truyền Thông"]
        PyHost["Máy chủ xử lý ảnh (Python 3.10 + OpenCV)"]
        BlynkCloud["Blynk Cloud Server (Port 80/443)"]
        ESP32["Vi điều khiển ESP32-WROOM-32 (Xtensa Dual-Core 240MHz)"]
    end

    subgraph Actuation_Layer ["Tầng Cơ Cấu Chấp Hành"]
        LCD["Màn hình LCD 16x2 (I2C 0x27)"]
        Relay["Module Relay 2 kênh (Opto cách ly) -> Đèn 220V"]
        L298N["Driver L298N -> Quạt 12V (2800 RPM)"]
        Servo["Động cơ Servo SG90 (Cửa & Rèm)"]
        Buzzer["Còi báo động Piezo 5V"]
    end

    Cam -->|Hình ảnh thô| PyHost
    PyHost -->|Gói tin Socket/HTTP API| ESP32
    BlynkCloud <-->|Giao thức Blynk Virtual Pin| ESP32
    DHT -->|Chuẩn 1-Wire| ESP32
    MQ2 -->|Ngõ ra Analog/Digital| ESP32
    Rain -->|Ngõ ra Digital| ESP32
    Touch -->|Ngắt ngoài GPIO| ESP32
    Keypad -->|Quét quét hàng/cột GPIO| ESP32

    ESP32 -->|I2C Data/Clock| LCD
    ESP32 -->|Logic Low Trigger| Relay
    ESP32 -->|PWM 50Hz - Duty cycle| L298N
    ESP32 -->|Xung PPM 1ms-2ms| Servo
    ESP32 -->|Mức logic HIGH| Buzzer

Danh mục công nghệ và thông số kỹ thuật:

  • Vi điều khiển: ESP32-WROOM-32 (CPU Xtensa Dual-core 32-bit LX6, 240 MHz, 520 KB SRAM, 4 MB SPI Flash, Wi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR & BLE).
  • Thị giác máy tính: Python 3.10.x, OpenCV Library (v4.8.x), NumPy (v1.24.x).
  • IoT & Cloud: Blynk IoT Platform (Blynk Library v1.3.x, Virtual Pins V0 - V10), giao thức mạng TCP/IP.
  • Mạch giao tiếp ngoại vi: Module chuyển đổi I2C PCF8574 (địa chỉ 0x27), Driver cầu H L298N (2A Dual H-Bridge), IC ổn áp 78M05, IC cảm ứng điện dung TTP223, IC so sánh LM358 (trên module cảm biến mưa/gas).

Methodology (Quy trình triển khai)

Dự án áp dụng mô hình phát triển hệ thống nhúng lai ghép (V-Model kết hợp Agile Sprints) kéo dài 16 tuần:

  • Giai đoạn 1 (Tuần 1 - 4): Khảo sát yêu cầu, thiết kế sơ đồ nguyên lý mạch Altium, dựng sơ đồ chân GPIO ESP32 chống xung đột chức năng (Tránh các chân Boot strapping như GPIO0, GPIO2, GPIO12).
  • Giai đoạn 2 (Tuần 5 - 8): Phát triển thuật toán xử lý ảnh trên Python, tối ưu bộ lọc khử nhiễu và trích xuất bao lồi bàn tay theo thời gian thực; lập trình firmware cho ESP32.
  • Giai đoạn 3 (Tuần 9 - 12): Tích hợp giao tiếp phần mềm với vi điều khiển qua socket TCP/Blynk API; thi công mô hình phần cứng nhà thông minh 3 gian (Phòng khách, Ngủ, Bếp).
  • Giai đoạn 4 (Tuần 13 - 16): Thử nghiệm tải, đánh giá độ trễ xử lý khung hình (FPS), kiểm tra độ chính xác của cảm biến an toàn và hiệu chỉnh bộ thông số lọc nhiễu.

Implementation và kết quả

Development Process

1. Thuật toán xử lý ảnh & Nhận dạng cử chỉ bàn tay

Hệ thống sử dụng camera thu nhận khung hình kích thước $640 \times 480$ pixels. Để tách bàn tay khỏi phông nền phức tạp, thuật toán chuyển đổi ảnh RGB sang không gian màu xám và HSV, áp dụng công thức chuyển đổi mức xám chuẩn:

$$X = 0.2125 \times R + 0.7145 \times G + 0.0721 \times B$$

Sau khi chuyển đổi và lọc nhiễu bằng bộ lọc trung vị (Median Filter) kích thước cửa sổ $5 \times 5$, ảnh được nhị phân hóa bằng phương pháp ngưỡng động (Otsu Thresholding) kết hợp phân đoạn vùng màu da trong không gian HSV: $H \in [0, 20]$, $S \in [30, 150]$, $V \in [80, 255]$. Tiếp theo, đường bao bàn tay (Contour) lớn nhất được xác định để xây dựng bao lồi (Convex Hull) và tìm các điểm khuyết tật lồi (Convexity Defects) nhằm đếm số ngón tay đang mở.

import cv2
import numpy as np

def detect_fingers(frame):
    # Cắt vùng quan tâm (ROI) chứa bàn tay
    roi = frame[100:400, 100:400]
    hsv = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)
    
    # Ngưỡng màu da tay trong không gian HSV
    lower_skin = np.array([0, 30, 60], dtype=np.uint8)
    upper_skin = np.array([20, 150, 255], dtype=np.uint8)
    
    mask = cv2.inRange(hsv, lower_skin, upper_skin)
    mask = cv2.medianBlur(mask, 5) # Khử nhiễu muối tiêu
    
    contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    if not contours:
        return 0, roi
        
    cnt = max(contours, key=lambda x: cv2.contourArea(x))
    hull = cv2.convexHull(cnt, returnPoints=False)
    
    finger_count = 0
    if len(hull) > 3:
        defects = cv2.convexityDefects(cnt, hull)
        if defects is not None:
            for i in range(defects.shape[0]):
                s, e, f, d = defects[i, 0]
                start = tuple(cnt[s][0])
                end = tuple(cnt[e][0])
                far = tuple(cnt[f][0])
                
                # Tính độ dài 3 cạnh của tam giác tạo bởi defect
                a = np.linalg.norm(np.array(end) - np.array(start))
                b = np.linalg.norm(np.array(far) - np.array(start))
                c = np.linalg.norm(np.array(end) - np.array(far))
                
                # Tính góc kẹp ngón tay bằng định lý cosin
                angle = np.arccos((b**2 + c**2 - a**2) / (2 * b * c)) * 57.295
                if angle <= 90 and d > 10000: # Ngưỡng độ sâu và góc nhọn kẽ ngón
                    finger_count += 1
                    cv2.circle(roi, far, 4, [0, 0, 255], -1)
                    
    return finger_count + 1 if finger_count > 0 else 0, roi

2. Lập trình Firmware vi điều khiển ESP32 & Giao tiếp Blynk

ESP32 được cấu hình hoạt động ở chế độ Non-blocking sử dụng BlynkTimer để tránh nghẽn luồng xử lý chính (void loop()), ngăn ngừa lỗi tràn bộ đệm (Flood Error) khi cập nhật dữ liệu cảm biến:

#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>

char auth[] = "Your_Auth_Token_Blynk";
char ssid[] = "SmartHome_WiFi";
char pass[] = "Pass_WiFi_1234";

#define DHTPIN 4
#define DHTTYPE DHT11
#define MQ2_PIN 34
#define RELAY_FAN 25
#define RELAY_LIGHT 26

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
BlynkTimer timer;

// Nhận lệnh điều khiển đèn từ Virtual Pin V1 trên Blynk App
BLYNK_WRITE(V1) {
    int pinValue = param.asInt();
    digitalWrite(RELAY_LIGHT, pinValue ? LOW : HIGH); // Relay kích mức thấp
}

void sendSensorData() {
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    int gasVal = analogRead(MQ2_PIN);
    
    if (!isnan(h) && !isnan(t)) {
        Blynk.virtualWrite(V2, t); // Đẩy nhiệt độ lên V2
        Blynk.virtualWrite(V3, h); // Đẩy độ ẩm lên V3
    }
    Blynk.virtualWrite(V4, gasVal); // Đẩy nồng độ gas lên V4
    
    if (gasVal > 1800) { // Ngưỡng cảnh báo rò rỉ khí gas
        digitalWrite(RELAY_FAN, LOW); // Tự động bật quạt hút
        Blynk.logEvent("gas_alert", "Cảnh báo: Phát hiện rò rỉ khí Gas tại nhà bếp!");
    }
}

void setup() {
    Serial.begin(115200);
    lcd.init();
    lcd.backlight();
    pinMode(RELAY_FAN, OUTPUT);
    pinMode(RELAY_LIGHT, OUTPUT);
    digitalWrite(RELAY_FAN, HIGH);
    digitalWrite(RELAY_LIGHT, HIGH);
    
    dht.begin();
    Blynk.begin(auth, ssid, pass);
    timer.setInterval(2000L, sendSensorData); // Đọc và gửi dữ liệu mỗi 2 giây
}

void loop() {
    Blynk.run();
    timer.run();
}

Testing và validation

Hệ thống đã trải qua 200 lượt thử nghiệm thực tế trong các điều kiện môi trường khác nhau:

Kịch bản kiểm thử Số mẫu thử Tỷ lệ nhận dạng chính xác (%) Thời gian đáp ứng trung bình (ms) Kết quả / Đánh giá
Cử chỉ 1 ngón (Bật/Tắt Đèn) 50 96.0% 185 ms Ổn định trong khoảng cách 0.5m - 1.2m
Cử chỉ 2 ngón (Bật/Tắt Quạt) 50 94.0% 192 ms Độ nhạy cao, không bị nhầm lẫn
Cử chỉ 5 ngón (Mở toàn bộ hệ thống) 50 98.0% 178 ms Biên bao lồi rõ nét, nhận dạng tức thì
Cảm biến khí Gas vượt ngưỡng (MQ-2) 25 100.0% 85 ms Kích hoạt còi và quạt hút trong < 0.1s
Nhập mật mã bàn phím Keypad 4x4 25 100.0% 110 ms Servo SG90 quay góc 90° mở cửa chuẩn xác
                       ĐỘ CHÍNH XÁC THEO KHOẢNG CÁCH (m)
      100% ┌──────────────────────────────────────────────┐
           │ ████████████  98%                            │
       95% │               ████████████  95%              │
           │                             ████████████ 88% │
       90% │                                              │
           │                                              │  ████████ 72%
       85% │                                              │
           └──────────────────────────────────────────────┴────────────
                 0.5m           1.0m           1.5m           2.0m

Kết quả đạt được

  • Đồng bộ dữ liệu đa kênh: Tích hợp điều khiển qua 4 phương thức độc lập: Cử chỉ tay (Hand Gesture), Ứng dụng Blynk (Android/iOS), Bàn phím số Keypad, Nút chạm điện dung TTP223.
  • Thời gian phản hồi: Hệ thống đạt tần số nhận diện 24 FPS trên máy trạm; thời gian trễ truyền gói tin qua mạng nội bộ Wi-Fi đến ESP32 chỉ dao động từ 45ms – 80ms.
  • Bảo vệ an toàn tự động: Module phòng bếp phát hiện nồng độ LPG/CH4 vượt mức an toàn (> 1800 raw ADC value) lập tức gửi cảnh báo lên Cloud và khởi động quạt thông gió 12V (2800 RPM).

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

  1. Cải tiến kỹ thuật nhận dạng không dấu mốc (Markerless Gesture Recognition): Khác với nghiên cứu của Dharani Mazumdar et al. sử dụng găng tay cảm biến MEMS cồng kềnh, hệ thống loại bỏ hoàn toàn thiết bị đeo tay, giúp giảm 100% sự bất tiện cho người sử dụng và tiết kiệm hơn 85% chi phí chế tạo phần cứng.
  2. Tối ưu hóa thuật toán phân đoạn so với mô phỏng MATLAB: Khắc phục hạn chế của đề tài phân cụm K-Means & Neural Networks (HCMUTE 2014) vốn chỉ dừng lại ở mức mô phỏng lý thuyết, đồ án đã hiện thực hóa thuật toán xử lý ảnh thời gian thực bằng Python/OpenCV tích hợp trực tiếp vào phần cứng nhúng vật lý.
  3. Khắc phục độ trễ tải mô hình nhận diện khuôn mặt: So sánh với hệ thống điểm danh khuôn mặt của Học viện Kỹ thuật Quân sự (2022) có thời gian nạp mô hình lên tới 4 giây, giải pháp đếm bao lồi ngón tay (Convex Hull & Defects) cho tốc độ khởi động tức thì (< 0.1s) và tiêu tốn tài nguyên tính toán thấp hơn 60%.
  4. Cơ chế truyền thông tin cậy chống nghẽn mạng: Sử dụng BlynkTimer kết hợp kiểm tra nhịp tim (Heartbeat 10s ping) trên ESP32 giúp duy trì kết nối Wi-Fi liên tục 24/7 mà không gặp hiện tượng treo chip (Watchdog Timer Reset).

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

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

  • Hỗ trợ người khuyết tật & người cao tuổi: Người dùng ngồi trên xe lăn hoặc giường bệnh chỉ cần giơ các cử chỉ ngón tay tương ứng trước camera để bật tắt đèn ngủ, quạt mát hoặc gọi chuông trợ giúp mà không cần với tới công tắc tường.
  • Môi trường vô trùng y tế & Nhà bếp thông minh: Thao tác bật tắt thiết bị điện khi tay đang ướt, dính dầu mỡ hoặc trong phòng phẫu thuật y tế nhằm ngăn ngừa nhiễm khuẩn chéo và loại trừ hoàn toàn nguy cơ rò điện giật.
                           SƠ ĐỒ TRIỂN KHAI THỰC TẾ
┌─────────────────┐       Wi-Fi 802.11 b/g/n       ┌──────────────────────┐
│  Camera giám sát│ ──── (TCP/IP Socket) ───────> │  ESP32 Gateway Node  │
└─────────────────┘                                └──────────┬───────────┘
                                                              │
                    ┌─────────────────────────────────────────┼────────────────────────────────────────┐
                    ▼                                         ▼                                        ▼
         [Node 1: Phòng khách]                     [Node 2: Phòng ngủ]                      [Node 3: Phòng bếp]
    ┌─────────────────────────────┐           ┌─────────────────────────────┐          ┌─────────────────────────────┐
    │ - Khóa cửa Servo SG90       │           │ - Rèm tự động Servo SG90    │          │ - Cảm biến khí gas MQ-2     │
    │ - Đèn chiếu sáng 220V       │           │ - Quạt làm mát 12V          │          │ - Quạt hút mùi DC 12V       │
    │ - Màn hình hiển thị LCD     │           │ - Nút chạm cảm ứng TTP223   │          │ - Còi cảnh báo sự cố        │
    └─────────────────────────────┘           └─────────────────────────────┘          └─────────────────────────────┘

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

Hạng mục linh kiện / Module Đơn giá ước tính (VNĐ) Số lượng Thành tiền (VNĐ)
Vi điều khiển ESP32-WROOM-32 110.000 1 110.000
Module Cảm biến (DHT11, MQ-2, Mưa, TTP223) 35.000 - 65.000 4 195.000
Màn hình LCD 16x2 + Module I2C PCF8574 65.000 1 65.000
Cơ cấu chấp hành (2x Servo SG90, Relay, Quạt 12V) 40.000 - 85.000 4 220.000
Nguồn tổ ong 12V-5A & Linh kiện phụ trợ 150.000 1 150.000
Tổng chi phí phần cứng mô hình ~ 740.000 VNĐ

Đánh giá ROI: Với mức đầu tư phần cứng dưới 1 triệu VNĐ, giải pháp tiết kiệm hơn 70% so với việc lắp đặt các công tắc thông minh thương mại đơn lẻ cho một căn hộ 3 phòng, đồng thời mang lại giá trị gia tăng vượt bậc về an toàn cháy nổ và trải nghiệm tương tác AI.


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

Hạn chế kỹ thuật

  • Độ nhạy sáng của thuật toán xử lý ảnh: Giải pháp phân đoạn màu da HSV truyền thống dễ bị sai lệch khi môi trường có cường độ ánh sáng quá yếu (< 100 Lux) hoặc ánh sáng đơn sắc màu vàng/đỏ.
  • Vùng bao cánh tay: Khi người dùng không mặc áo dài tay, vùng da cánh tay có thể gộp chung vào đường bao bàn tay làm sai lệch kết quả tính toán bao lồi ngón tay.
  • Cảm biến DHT11: Dải đo nhiệt độ (0°C – 50°C, sai số ±2°C) và độ ẩm (20% – 90%, sai số ±5%) có độ chính xác ở mức trung bình.

Hướng phát triển

  1. Nâng cấp thuật toán nhận dạng bàn tay sang mạng nơ-ron tích chập nhẹ (Lightweight CNN) hoặc Google MediaPipe Hands (xác định 21 điểm mốc 3D - 3D Landmarks) chạy trực tiếp trên máy tính nhúng Raspberry Pi 4 hoặc Jetson Nano.
  2. Thay thế cảm biến DHT11 bằng module công nghiệp DHT22 hoặc SHT30 để tăng độ chính xác của kịch bản kiểm soát vi khí hậu.
  3. Tích hợp chuẩn truyền thông Matter/Zigbee để đồng bộ hóa thiết bị trong mạng Mesh công suất thấp.

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

  • Sinh viên & Học viên chuyên ngành Tự động hóa/IoT: Cung cấp tài liệu tham khảo thực tế về quy trình tích hợp giữa vi điều khiển ESP32, chuẩn truyền thông I2C/1-Wire và giao thức IoT Blynk.
  • Kỹ sư phát triển phần mềm nhúng: Tiếp cận giải pháp xử lý thị giác máy tính kết hợp điều khiển phần cứng không đồng bộ (Non-blocking Timer Architecture).
  • Doanh nghiệp Smarthome: Cơ sở tham khảo để thương mại hóa gói phụ kiện "Điều khiển không chạm" tích hợp vào hệ sinh thái nhà thông minh sẵn có.
  • Người khuyết tật và cộng đồng: Cải thiện chất lượng cuộc sống, mang lại khả năng làm chủ không gian sống độc lập và an toàn.

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

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

Hệ thống yêu cầu một vi điều khiển ESP32-WROOM-32 (nguồn cấp tối thiểu 5V-1A ổn định), router Wi-Fi băng tần 2.4GHz (chuẩn 802.11 b/g/n) và một máy tính/kit nhúng (như Raspberry Pi 3B+/4) có kết nối camera chuẩn UVC với độ phân giải tối thiểu 720p để chạy module nhận diện cử chỉ Python.

2. Làm thế nào để mở rộng số lượng thiết bị điều khiển khi chân GPIO của ESP32 bị giới hạn?

Có thể mở rộng chân I/O cho ESP32 bằng cách sử dụng IC ghi dịch 8-bit 74HC595 (để mở rộng ngõ ra Relay/LED) hoặc module mở rộng PCF8574/MCP23017 giao tiếp qua bus I2C chỉ tiêu tốn đúng 2 chân GPIO (SDA và SCL) để điều khiển thêm tối đa 16 đến 128 thiết bị độc lập.

3. Hệ thống có thể hoạt động được không nếu mất kết nối Internet?

Khi mất Internet, kênh điều khiển qua Blynk Cloud sẽ bị gián đoạn. Tuy nhiên, toàn bộ hệ thống vẫn hoạt động cục bộ bình thường: Module xử lý ảnh Python truyền lệnh trực tiếp qua mạng LAN nội bộ tới ESP32 thông qua giao thức TCP/UDP Socket; các nút bấm cảm ứng TTP223, bàn phím Keypad và logic tự động hóa cảnh báo khí gas MQ-2 vẫn hoạt động độc lập 100%.

4. Chi phí bảo trì và độ bền của hệ thống trong môi trường thực tế như thế nào?

Module ESP32 và các relay cách ly quang có tuổi thọ đóng ngắt lên tới 100.000 chu kỳ. Chi phí bảo trì định kỳ rất thấp (< 100.000 VNĐ/năm), chủ yếu tập trung vào việc vệ sinh bề mặt cảm biến mưa và hiệu chuẩn lại cảm biến khí gas MQ-2 sau mỗi 6-12 tháng sử dụng.

5. Thuật toán nhận dạng cử chỉ có bị nhầm lẫn khi có nhiều người cùng xuất hiện trong khung hình không?

Trong phiên bản hiện tại, thuật toán chọn đường bao (Contour) có diện tích lớn nhất trong vùng quan tâm (ROI). Nếu có nhiều bàn tay xuất hiện, hệ thống sẽ ưu tiên xử lý bàn tay ở gần camera nhất (vùng diện tích lớn nhất). Để giải quyết triệt để, hệ thống có thể nâng cấp thêm thuật toán tracking đối tượng (như DeepSORT hoặc MediaPipe multi-hand tracking).


Kết luận

Đồ án tốt nghiệp "Công nghệ nhận diện ứng dụng trong nhà thông minh" của sinh viên Nguyễn Văn Trường đã giải quyết trọn vẹn bài toán tích hợp giữa thị giác máy tính và hệ thống điều khiển tự động hóa nhúng. Bằng việc kết hợp sức mạnh xử lý của vi điều khiển ESP32-WROOM-32, nền tảng IoT Blynk và giải thuật nhận dạng cử chỉ bàn tay thời gian thực qua Python/OpenCV, đề tài đã chứng minh tính khả thi, độ tin cậy cao và chi phí tối ưu của mô hình nhà thông minh thế hệ mới. Đây không chỉ là một công trình nghiên cứu ứng dụng đạt chuẩn học thuật mà còn là giải pháp kỹ thuật giàu tiềm năng nhân văn, mở ra hướng phát triển các giao diện tương tác không chạm phục vụ đắc lực cho cộng đồng và cuộc sống hiện đại.