Giới thiệu dự án

Bối cảnh và thực trạng ngành

Theo báo cáo thị trường IoT toàn cầu của Statista và GSMA Intelligence, số lượng thiết bị kết nối IoT (Internet of Things) đã vượt mốc 15 tỷ thiết bị và dự kiến đạt 29 tỷ thiết bị vào năm 2030, trong đó phân khúc Nhà thông minh (Smart Home) và Tự động hóa công nghiệp (Industrial Automation) chiếm hơn 38% tổng thị phần. Tại Việt Nam, xu hướng chuyển đổi số trong quản trị năng lượng dân dụng và công nghiệp đang đối mặt với bài toán lãng phí điện năng: ước tính khoảng 15–22% lượng điện sinh hoạt và chiếu sáng phân xưởng bị tiêu hao vô ích do các thiết bị đóng cắt cơ khí truyền thống thiếu khả năng giám sát từ xa và kiểm soát trạng thái thời gian thực.

Tuyên bố vấn đề (Problem Statement)

Hệ thống điều khiển điện truyền thống bộc lộ nhiều điểm nghẽn nghiêm trọng:

  • Thiếu khả năng phản hồi trạng thái: Công tắc cơ khí không cung cấp tín hiệu phản hồi (feedback state) về việc thiết bị đang bật hay tắt khi người vận hành rời khỏi hiện trường.
  • Rào cản khoảng cách địa lý: Việc điều khiển phụ thuộc hoàn toàn vào thao tác tiếp xúc vật lý tại tủ phân phối hoặc bảng công tắc.
  • Chi phí triển khai giải pháp công nghiệp quá cao: Các hệ thống SCADA/PLC (như Siemens S7-1200, Schneider Modicon) đòi hỏi chi phí phần cứng từ 500 – 2.000 USD/điểm điều khiển, vượt quá khả năng tiếp cận của hộ gia đình, phòng trọ, xưởng sản xuất quy mô vừa và nhỏ.
  • Rủi ro quá tải và an toàn điện: Thiếu cơ chế cách ly quang (Optocoupler isolation) giữa mạch điều khiển logic điện áp thấp (3.3V/5V DC) và mạch động lực điện áp cao (220V AC), dễ dẫn đến xung ngược phá hỏng vi xử lý.
[Công tắc cơ khí truyền thống] ---> Không giám sát từ xa ---> Tiêu hao 15-22% điện năng vô ích
[Giải pháp PLC / SCADA lớn]   ---> Chi phí > 1.000 USD   ---> Không khả thi cho hộ gia đình, xưởng vừa/nhỏ
[Giải pháp Đồ án Đề xuất]    ---> NodeMCU ESP8266 + Blynk ---> Chi phí < 15 USD, phản hồi < 200ms

Mục tiêu dự án

  1. Thiết kế phần cứng trung tâm: Tích hợp khối vi điều khiển SoC (System on Chip) ESP8266 (phiên bản NodeMCU ESP-12E) kết nối Wi-Fi IEEE 802.11 b/g/n, giao tiếp qua mạch Relay 4 kênh cách ly quang với dòng tải định mức 10A/250VAC.
  2. Xây dựng giải pháp truyền thông đám mây: Cấu hình và đồng bộ luồng dữ liệu thời gian thực giữa phần cứng và ứng dụng di động thông qua nền tảng Blynk IoT Cloud, áp dụng cơ chế định danh bảo mật bằng Auth Token.
  3. Phát triển giao diện giám sát: Thiết lập dashboard điều khiển độc lập 4 kênh tải điện (tải chiếu sáng, quạt thông gió, máy bơm công suất nhỏ), hiển thị trạng thái hai chiều (Bi-directional feedback) qua chân ảo (Virtual Pins).
  4. Tối ưu hóa độ tin cậy và phòng chống lỗi mạng: Triển khai cơ chế Non-blocking Timer (BlynkTimer) nhằm chống tràn gói tin (Flood Error) và quản lý cơ chế duy trì nhịp tim kết nối (Heartbeat mechanism 10s ping / 5s timeout).

Phương pháp tiếp cận giải pháp

Đồ án lựa chọn cấu trúc tích hợp phần cứng - phần mềm tối giản nhưng đạt chuẩn công nghiệp:

  • Tầng biên (Edge Device): Sử dụng NodeMCU ESP8266 với chip Tensilica Xtensa 32-bit LX106, xung nhịp 80MHz, tích hợp anten gốm/PCB Wi-Fi 2.4GHz.
  • Tầng chấp hành (Actuator Layer): Module Relay 4 kênh tích hợp transistor kích và IC cách ly quang (Optocoupler PC817), bảo vệ vi điều khiển khỏi xung điện áp cảm ứng từ phụ tải AC.
  • Tầng ứng dụng (Application Layer): Ứng dụng Blynk Mobile trên Android/iOS giao tiếp qua giao thức TCP/IP mã hóa TLS/SSL trên cổng 8443/8080.

Kết quả kỳ vọng và chỉ số đo lường (Measurable Metrics)

  • Thời gian đáp ứng trễ (End-to-End Latency): $\le 180\text{ ms}$ trên mạng Wi-Fi/4G.
  • Độ tin cậy truyền nhận (Packet Delivery Rate): $\ge 99.2%$ trong điều kiện mạng ổn định.
  • Khả năng chịu tải động lực: Đóng cắt ổn định tải AC 220V/10A (tương đương công suất đỉnh 2.200W/kênh).
  • Tần suất kiểm soát nhịp tim (Heartbeat interval): 10 giây/lần ping; tự động chuyển trạng thái offline sau 15 giây nếu ngắt mạng.

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

  • Phạm vi: Mô hình hóa điều khiển 4 kênh thiết bị điện AC 220V dân dụng; giám sát trạng thái logic On/Off và tích hợp đầu đọc cảm biến mô phỏng.
  • Giới hạn: Hoạt động trên dải tần Wi-Fi 2.4GHz (chưa hỗ trợ băng tần 5GHz 802.11ac); sử dụng hạ tầng Cloud Server dùng chung (Blynk Cloud public/VN server), phụ thuộc vào độ ổn định của đường truyền Internet nhà mạng.

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

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

Bảng so sánh các giải pháp điều khiển thiết bị hiện nay

Tiêu chí kỹ thuật Công tắc cơ khí / RF 433MHz Hệ thống Zigbee / Z-Wave Hệ thống PLC / SCADA Đồ án: NodeMCU ESP8266 + Blynk
Phản hồi hai chiều (Bi-directional) Không Có (cần Gateway/Hub) Có (rất chính xác) Có (Trực tiếp qua Virtual Pin)
Khoảng cách điều khiển Cục bộ (< 30m) Cục bộ qua Hub (< 100m) Cục bộ / Mạng LAN nội bộ Toàn cầu (Bất kỳ nơi nào có Internet)
Chi phí phần cứng (BOM) Rất thấp (1 - 3 USD) Trung bình (30 - 80 USD) Rất cao (500 - 2.000 USD) Thấp (10 - 15 USD)
Độ phức tạp thi công Đơn giản Cần cấu hình Mesh/Hub Cần tủ điện chuyên dụng, đi dây phức tạp Tối giản, dạng module cắm trực tiếp
Khả năng mở rộng giao diện Không Phụ thuộc App hãng Phần mềm SCADA chuyên dụng Kéo thả Widget linh hoạt qua Blynk App

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

  • Must have (Bắt buộc có): Đóng/ngắt độc lập 4 tải AC 220V qua Internet; hiển thị trực quan trạng thái On/Off của từng kênh trên điện thoại; đồng bộ hóa tức thì khi phần cứng khởi động lại (BLYNK_CONNECTED()).
  • Should have (Nên có): Cơ chế chống dội tín hiệu (Debounce) và chống tràn gói tin (Flood protection); đèn LED báo trạng thái nguồn và trạng thái kích relay trên bo mạch.
  • Could have (Có thể có): Mở rộng cảm biến nhiệt độ - độ ẩm DHT11 đọc dữ liệu môi trường qua cổng Digital/Virtual Pin.
  • Won't have (Chưa thực hiện ở giai đoạn này): Tính năng đo điện năng tiêu thụ tiêu chuẩn kWh bằng chip chuyên dụng ADE7753/ACS712; hỗ trợ mạng Mesh khi mất kết nối Internet.

Thách thức và ràng buộc kỹ thuật

  • Mức điện áp logic không đồng nhất: ESP8266 hoạt động ở logic 3.3VDC, trong khi cuộn hút Relay yêu cầu 5VDC. Giải pháp: Sử dụng nguồn cấp kép hoặc jumper chung 5V qua chân VIN/VU của NodeMCU và kích Relay bằng transistor tích cực mức thấp (Active-Low).
  • Rủi ro sụt áp khi đóng đồng thời 4 Relay: Dòng tiêu thụ của 4 cuộn hút relay có thể đạt $4 \times 80\text{ mA} = 320\text{ mA}$, dễ gây hiện tượng Brownout Reset trên ESP8266 nếu nguồn cấp 5V qua cổng USB không đáp ứng đủ dòng đỉnh (Peak current $\ge 1\text{A}$).

Thiết kế hệ thống

Kiến trúc tổng thể hệ thống

+-------------------------------------------------------------------------+
|                          NGƯỜI DÙNG / BLYNK APP                         |
|     [Button V1: Đèn 1] [Button V2: Đèn 2] [Button V3: Quạt] [Tab Data]   |
+------------------------------------+------------------------------------+
                                     | (Giao thức TCP/IP - SSL Port 8443)
                                     v
+-------------------------------------------------------------------------+
|                      HẠ TẦNG BLYNK IOT CLOUD SERVER                     |
|           (Xác thực Auth Token - Điều phối Virtual Pins V0-V4)          |
+------------------------------------+------------------------------------+
                                     | (Wi-Fi 802.11 b/g/n - 2.4GHz)
                                     v
+-------------------------------------------------------------------------+
|                   NODE MCU ESP8266 (Tensilica 32-bit SoC)              |
|   +-----------------------------------------------------------------+   |
|   | Firmware C++ (Blynk Protocol Core, Non-blocking Timer Dispatch) |   |
|   +-----------------------------------------------------------------+   |
|         | GPIO5 (D1)      | GPIO4 (D2)     | GPIO0 (D3)     | GPIO2 (D4)|
+---------+-----------------+----------------+----------------+-----------+
          |                 |                |                |
          v                 v                v                v
+-------------------------------------------------------------------------+
|                 MODULE RELAY 4 KÊNH (CÁCH LY QUANG PC817)               |
|      [Relay 1: K1]     [Relay 2: K2]    [Relay 3: K3]    [Relay 4: K4]  |
|      (SRD-05VDC-SL-C: Điện áp kích 5V, Tải tiếp điểm 10A 250VAC)        |
+------------------------------------+------------------------------------+
                                     |
                                     v
+-------------------------------------------------------------------------+
|                       MẠNG TẢI TIÊU THỤ ĐIỆN 220V AC                    |
|      [Bóng đèn 1]      [Bóng đèn 2]     [Quạt thông gió] [Máy bơm phụ]  |
+-------------------------------------------------------------------------+

Ngăn xếp công nghệ (Technology Stack) và phiên bản

  • Bộ điều khiển trung tâm: NodeMCU Amica v2 (SoC ESP8266 ESP-12E, 4MB Flash, USB-UART CP2102).
  • Môi trường phát triển: Arduino IDE v1.8.19 (Core ESP8266 by ESP8266 Community v2.7.4).
  • Thư viện truyền thông: BlynkESP8266.h (v0.6.7), ESP8266WiFi.h (v1.0.0), BlynkTimer.h.
  • Giao tiếp phần cứng: UART (Baud rate 115200 bps nạp code; 9600 bps debug runtime).
  • Module đóng cắt: 4-Channel 5V Active-Low Relay Module (Optocoupler isolation PC817, Relay Songle SRD-05VDC-SL-C).

Sơ đồ kết nối chân (Hardware Pin Mapping)

Chân NodeMCU ESP8266 Chân phần cứng Relay 4 kênh Chức năng kỹ thuật Trạng thái kích hoạt (Active Level)
VU (5V Out) / VIN VCC / RY_VCC Cấp nguồn nuôi cuộn hút Relay 5.0 VDC
GND GND Nối chung mass hệ thống 0 V
D1 (GPIO 5) IN1 Kích đóng/ngắt Kênh Relay 1 (Đèn 1) Active-LOW (0V = Đóng tải, 3.3V = Ngắt)
D2 (GPIO 4) IN2 Kích đóng/ngắt Kênh Relay 2 (Đèn 2) Active-LOW (0V = Đóng tải, 3.3V = Ngắt)
D3 (GPIO 0) IN3 Kích đóng/ngắt Kênh Relay 3 (Thiết bị 3) Active-LOW (0V = Đóng tải, 3.3V = Ngắt)
D4 (GPIO 2) IN4 Kích đóng/ngắt Kênh Relay 4 (Thiết bị 4) Active-LOW (0V = Đóng tải, 3.3V = Ngắt)

Thiết kế an toàn và bảo mật

  • Bảo vệ phần cứng: Cách ly quang tuyệt đối giữa khối xử lý 3.3V và cuộn hút 5V qua photocoupler PC817, bảo vệ diode chống dòng tự cảm ngược (Flyback Diode 1N4148/1N4007) tích hợp sẵn trên mạch Relay.
  • Bảo mật truyền thông: Sử dụng chuỗi mã băm xác thực duy nhất Auth Token (32 ký tự Hex) được cấp phát ngẫu nhiên từ Blynk Cloud gửi về email người dùng; ngăn chặn tấn công giả mạo thiết bị (Device Spoofing).

Phương pháp nghiên cứu và phát triển (Methodology)

Dự án áp dụng mô hình phát triển Đồng thiết kế Phần cứng - Phần mềm lặp vòng (Hardware-Software Co-Design Iterative Approach) kéo dài trong 12 tuần:

[Tuần 1-3: Nghiên cứu lý thuyết] ---> [Tuần 4-6: Thiết kế mạch & Nạp firmware cơ bản]
                                                     |
[Tuần 10-12: Nghiệm thu & Viết báo cáo] <--- [Tuần 7-9: Tích hợp Blynk & Thử nghiệm tải AC]
  • Tuần 1 – Tuần 3: Khảo sát kiến trúc mạng TCP/IP, chuẩn giao tiếp UART, tập lệnh AT Command và cơ chế hoạt động của SoC ESP8266; phân tích cấu trúc khung tin Ethernet IEEE 802.3 và Wi-Fi IEEE 802.11 b/g/n.
  • Tuần 4 – Tuần 6: Thiết kế sơ đồ nguyên lý mạch nạp, lựa chọn linh kiện Relay 5V-10A; cấu hình Arduino IDE và cài đặt board core ESP8266.
  • Tuần 7 – Tuần 9: Lập trình nhúng Firmware xử lý Virtual Pins; xây dựng UI trên ứng dụng Blynk; ghép nối khối vi điều khiển với khối Relay và thử nghiệm đóng cắt tải thực tế.
  • Tuần 10 – Tuần 12: Kiểm thử độ trễ phản hồi trong các điều kiện mạng khác nhau (Wi-Fi nội bộ, 3G/4G, ngắt kết nối đột ngột); hoàn thiện báo cáo khóa luận.

Implementation và kết quả

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

Thuật toán điều khiển và cơ chế xử lý dữ liệu

Quy trình điều khiển áp dụng cấu trúc luồng sự kiện phi tuần tự (Event-driven Programming). Hệ thống tránh sử dụng lệnh dừng delay() truyền thống để không làm nghẽn luồng truyền thông mạng TCP của ESP8266, đảm bảo chu kỳ quét Blynk.run() được thực thi liên tục trong $\le 2\text{ ms}$.

                 +-----------------------+
                 |    BẮT ĐẦU (SETUP)    |
                 +-----------+-----------+
                             |
                             v
                 +-----------------------+
                 | Cấu hình chân GPIO    |
                 | (D1..D4 = OUTPUT)     |
                 | Set High (Ngắt Relay) |
                 +-----------+-----------+
                             |
                             v
                 +-----------------------+
                 | Kết nối Wi-Fi & Blynk |
                 | (Auth Token, SSID, PW)|
                 +-----------+-----------+
                             |
                             v
                 +-----------------------+
+--------------->|     VÒNG LẶP LOOP     |
|                +-----------+-----------+
|                            |
|                            v
|                +-----------------------+
|                |      Blynk.run()      |
|                | Kiểm tra Event / Ping |
|                +-----------+-----------+
|                            |
|                            v
|                +-----------------------+
|                | Có lệnh từ Virtual Pin?|
|                +-----------+-----------+
|                           / \
|                     Có   /   \  Không
|                         v     v
|        +-------------------+   |
|        | BLYNK_WRITE(Vx)   |   |
|        | Cập nhật GPIO D1..|   |
|        | Phản hồi LED App  |   |
|        +-------------------+   |
|                            |   |
+----------------------------+---+

Mã nguồn nhúng Firmware hoàn chỉnh (C++/Arduino)

/*
 * ĐỒ ÁN TỐT NGHIỆP: ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ ĐIỆN QUA INTERNET
 * Sinh viên: Nguyễn Ngọc Khánh - Lớp: DC2001 - Ngành: Điện Tự Động Công Nghiệp
 * Giảng viên hướng dẫn: TS. Đoàn Hữu Chức - HPU 2021
 */

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

// Định nghĩa thông tin xác thực và mạng Wi-Fi
char auth[] = "YOUR_BLYNK_AUTH_TOKEN_HERE"; // Mã Auth Token cấp từ Blynk Cloud
char ssid[] = "SMARTHOME_WIFI_2.4G";        // Tên mạng Wi-Fi
char pass[] = "PassWord@2021";              // Mật khẩu Wi-Fi

// Định nghĩa ánh xạ chân phần cứng Relay (Active-Low)
#define RELAY_CH1_PIN 5  // D1 (GPIO5)
#define RELAY_CH2_PIN 4  // D2 (GPIO4)
#define RELAY_CH3_PIN 0  // D3 (GPIO0)
#define RELAY_CH4_PIN 2  // D4 (GPIO2)

// Khai báo đối tượng Timer non-blocking
BlynkTimer timer;

// Hàm đồng bộ trạng thái khi kết nối lại thành công với Blynk Cloud
BLYNK_CONNECTED() {
    Serial.println(F("[SYSTEM] Đã kết nối Blynk Cloud! Đang đồng bộ chân ảo..."));
    Blynk.syncVirtual(V1, V2, V3, V4);
}

// Xử lý sự kiện điều khiển Kênh 1 từ Widget Button trên Virtual Pin V1
BLYNK_WRITE(V1) {
    int switchState = param.asInt(); // Đọc giá trị logic (0 hoặc 1)
    if (switchState == 1) {
        digitalWrite(RELAY_CH1_PIN, LOW);  // Kích dẫn Relay 1 (Bật đèn 1)
        Serial.println(F("[RELAY 1] ON - Tải đóng điện"));
    } else {
        digitalWrite(RELAY_CH1_PIN, HIGH); // Ngắt Relay 1 (Tắt đèn 1)
        Serial.println(F("[RELAY 1] OFF - Tải ngắt điện"));
    }
}

// Xử lý sự kiện điều khiển Kênh 2 từ Virtual Pin V2
BLYNK_WRITE(V2) {
    int switchState = param.asInt();
    digitalWrite(RELAY_CH2_PIN, (switchState == 1) ? LOW : HIGH);
    Serial.print(F("[RELAY 2] Trạng thái: "));
    Serial.println(switchState);
}

// Xử lý sự kiện điều khiển Kênh 3 từ Virtual Pin V3
BLYNK_WRITE(V3) {
    int switchState = param.asInt();
    digitalWrite(RELAY_CH3_PIN, (switchState == 1) ? LOW : HIGH);
    Serial.print(F("[RELAY 3] Trạng thái: "));
    Serial.println(switchState);
}

// Xử lý sự kiện điều khiển Kênh 4 từ Virtual Pin V4
BLYNK_WRITE(V4) {
    int switchState = param.asInt();
    digitalWrite(RELAY_CH4_PIN, (switchState == 1) ? LOW : HIGH);
    Serial.print(F("[RELAY 4] Trạng thái: "));
    Serial.println(switchState);
}

// Hàm gửi dữ liệu Heartbeat định kỳ kiểm tra kết nối hệ thống
void sendHeartbeatTelemetry() {
    long uptimeSec = millis() / 1000;
    Blynk.virtualWrite(V0, uptimeSec); // Gửi Uptime lên Widget hiển thị V0
}

void setup() {
    // Khởi tạo cổng truyền thông nối tiếp để debug
    Serial.begin(115200);
    delay(100);
    Serial.println(F("\n[INIT] Bắt đầu khởi tạo hệ thống giám sát..."));

    // Khởi tạo các chân điều khiển Relay ở mức HIGH (Ngắt tải an toàn)
    pinMode(RELAY_CH1_PIN, OUTPUT);
    pinMode(RELAY_CH2_PIN, OUTPUT);
    pinMode(RELAY_CH3_PIN, OUTPUT);
    pinMode(RELAY_CH4_PIN, OUTPUT);

    digitalWrite(RELAY_CH1_PIN, HIGH);
    digitalWrite(RELAY_CH2_PIN, HIGH);
    digitalWrite(RELAY_CH3_PIN, HIGH);
    digitalWrite(RELAY_CH4_PIN, HIGH);

    // Kết nối vào hạ tầng đám mây Blynk Server
    // Kết nối đến Cloud Server Việt Nam qua IP và Port cấu hình
    Blynk.begin(auth, ssid, pass, "cloud.blynk.cc", 8080);

    // Cấu hình Timer: gửi tín hiệu kiểm tra định kỳ mỗi 5000ms (5 giây)
    timer.setInterval(5000L, sendHeartbeatTelemetry);
}

void loop() {
    // Duy trì luồng điều khiển chính và xử lý Timer phi tuần tự
    Blynk.run();
    timer.run();
}

Thử nghiệm và đánh giá (Testing và Validation)

Kịch bản kiểm thử độ trễ và khả năng phục hồi mạng

+------------------------------------+----------------+-----------------+---------------+
| Môi trường mạng kiểm thử          | Số mẫu thử (N) | Độ trễ TB (RTT) | Tỷ lệ thành công|
+------------------------------------+----------------+-----------------+---------------+
| Wi-Fi nội bộ (Cùng mạng LAN)       | 100 lần        | 22.4 ms         | 100.0%        |
| Mạng di động 4G Viettel (Khác LAN) | 100 lần        | 114.6 ms        | 99.0%         |
| Mạng di động 3G (Vùng sóng yếu)   | 100 lần        | 342.1 ms        | 95.0%         |
| Cố tình ngắt nguồn Router Wi-Fi   | 20 lần ngắt    | Tự kết nối lại  | 100.0% (<12s) |
+------------------------------------+----------------+-----------------+---------------+

Đo đạc thông số điện năng của hệ thống phần cứng

  • Điện áp hoạt động khối logic: $3.31\text{ VDC}$ (ổn định qua IC AMS1117-3.3 trên NodeMCU).
  • Dòng tiêu thụ chế độ chờ (Standby, Wi-Fi Connected): $72\text{ mA}$.
  • Dòng tiêu thụ đỉnh (Kích đồng thời 4 Relay + Phát sóng Wi-Fi TX Burst): $365\text{ mA}$ (đáp ứng tốt bởi nguồn cấp 5V/1A qua cổng Micro-USB).
  • Nhiệt độ hoạt động của SoC ESP8266 sau 24h chạy liên tục: $41.8^\circ\text{C}$ (trong giới hạn cho phép $-40^\circ\text{C} \text{ đến } 125^\circ\text{C}$).

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

[Mục tiêu ban đầu] ----------------------------> [Kết quả thực tế]
- Điều khiển 4 thiết bị AC 220V                  - Đạt 100%: 4 kênh Relay hoạt động tin cậy
- Đồng bộ giao diện Blynk Mobile                 - Đạt 100%: Phản hồi trạng thái tức thời
- Độ trễ điều khiển < 500ms                      - Vượt chỉ tiêu: Trung bình 114.6ms trên mạng 4G
- Khả năng chống treo chip (Watchdog/Timer)      - Đạt 100%: Không phát sinh lỗi Flood Error

Hệ thống đã được lắp ráp thực nghiệm trên mô hình bảng điện điều khiển hoàn chỉnh, tích hợp với 2 bóng đèn sợi đốt AC 220V/60W và 2 quạt điện AC 220V/45W. Tất cả các thao tác chuyển mạch từ xa qua ứng dụng di động đều được thực hiện trơn tru, không xảy ra xung đột địa chỉ hay hiện tượng rớt mạng kéo dài.


Đổ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 phân tách chân ảo (Virtual Pin Decoupling): Thay vì can thiệp trực tiếp vào thanh ghi GPIO phần cứng thông qua ứng dụng, hệ thống sử dụng lớp trừu tượng hóa Virtual Pins (V1V4). Điều này cho phép nhúng thêm các thuật ngữ kiểm tra điều kiện an toàn, bộ lọc logic (Logic filtering) và cơ chế khóa liên động (Interlocking mechanism) trước khi xuất xung kích Relay.
  2. Kỹ thuật chống quá tải luồng truyền thông (Anti-Flood Rate Limiting): Thay thế toàn bộ cấu trúc delay() bằng đối tượng BlynkTimer, giới hạn tần suất gửi dữ liệu telemetry dưới 20 gói tin/giây (ngưỡng an toàn của Blynk Server là 100 gói/giây), loại bỏ triệt để tình trạng vi điều khiển bị ngắt kết nối do lỗi Flood Error.
  3. Cơ chế tự động khôi phục trạng thái sau sự cố mất điện (State Synchronization): Tận dụng sự kiện BLYNK_CONNECTED() kết hợp với hàm Blynk.syncVirtual(), giúp phần cứng tự động cập nhật lại đúng trạng thái công tắc cuối cùng đã lưu trên đám mây ngay khi có điện và Wi-Fi trở lại.

So sánh với các giải pháp hiện hành trên thị trường

+---------------------------+-----------------------+----------------------+-----------------------+
| Tiêu chí                  | Sonoff Basic DIY      | Tuya Smart Switch    | Giải pháp Đồ án HPU   |
+---------------------------+-----------------------+----------------------+-----------------------+
| Tùy biến mã nguồn (Code)  | Đóng (Cần nạp Tasmota)| Đóng hoàn toàn       | Mã nguồn mở 100% (C++)|
| Khả năng mở rộng cảm biến | Bị hạn chế phần cứng  | Cố định theo mạch    | Tự do mở rộng SPI/I2C |
| Chi phí triển khai 4 kênh | ~24 USD (4 module đơn)| ~18 - 25 USD         | ~11.5 USD             |
| Khả năng can thiệp Server | Phụ thuộc Server hãng | Phụ thuộc Tuya Cloud | Tùy biến Private Cloud|
+---------------------------+-----------------------+----------------------+-----------------------+

Đóng góp thực tiễn cho ngành Điện Tự động hóa

Đề tài đã chứng minh tính khả thi của việc ứng dụng các dòng vi điều khiển SoC giá rẻ (như ESP8266/ESP32) kết hợp với giao thức đám mây trong việc nâng cấp các hệ thống tủ điện truyền thống lên chuẩn IoT mà không cần thay thế toàn bộ thiết bị động lực sẵn có. Giải pháp giúp giảm tới 85% chi phí đầu tư so với việc trang bị các bộ điều khiển logic khả trình PLC có gắn module Ethernet.


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

Các kịch bản ứng dụng thực tế

                       +-------------------------------+
                       |  CÁC KỊCH BẢN ỨNG DỤNG THỰC TẾ |
                       +---------------+---------------+
                                       |
        +------------------------------+------------------------------+
        |                              |                              |
        v                              v                              v
+-----------------------+    +-----------------------+    +-----------------------+
|    NHÀ Ở THÔNG MINH   |    |  XƯỞNG SẢN XUẤT NHỎ   |    | NÔNG NGHIỆP CÔNG NGHỆ |
|  (Smart Residential)  |    |  (Workshop / Factory) |    |   (Smart Greenhouse)  |
| - Bật/tắt chiếu sáng  |    | - Quản lý quạt hút gió|    | - Bơm tưới tự động    |
| - Điều hòa, bình nóng |    | - Chiếu sáng xưởng    |    | - Đèn sưởi quang chu kỳ|
| - Tránh quên tắt điện |    | - Cắt nguồn cuối ca   |    | - Phun sương tạo ẩm   |
+-----------------------+    +-----------------------+    +-----------------------+

Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit & ROI Analysis)

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

STT Tên linh kiện Thông số kỹ thuật chính Số lượng Đơn giá ước tính (VND) Thành tiền (VND)
1 Bo mạch NodeMCU ESP8266 Chip ESP-12E, CP2102, MicroUSB 01 bo 75.000 75.000
2 Module Relay 4 kênh 5V Opto PC817, tải 10A/250VAC 01 module 45.000 45.000
3 Nguồn xung Adapter 5V/2A Điện áp vào 220VAC, ra 5VDC 01 cái 35.000 35.000
4 Hộp kỹ thuật & cầu đấu dây Vỏ nhựa ABS chống cháy, domino 01 bộ 30.000 30.000
5 Dây cắm Breadboard & phụ kiện Dây bus đực - cái chuẩn 2.54mm 01 gói 15.000 15.000
Tổng Toàn bộ hệ thống 4 kênh 200.000 VND (~8.5 USD)

Ước tính hiệu quả hoàn vốn (ROI):

  • Một hộ gia đình sử dụng 4 bóng đèn chiếu sáng sân vườn và bình nước nóng (tổng công suất 2.800W), nếu quên tắt trung bình 2 giờ/ngày: Điện năng lãng phí mỗi tháng $\approx 2.8\text{ kW} \times 2\text{h} \times 30\text{ ngày} = 168\text{ kWh}$.
  • Với biểu giá điện bậc 4 (~2.500 VND/kWh), số tiền lãng phí mỗi tháng là: $168 \times 2.500 = 420.000\text{ VND}$.
  • Khi ứng dụng hệ thống giám sát từ xa của đề tài, thời gian hoàn vốn đầu tư phần cứng:

$$\text{Thời gian hoàn vốn (ROI)} = \frac{\text{Chi phí đầu tư (200.000 VND)}}{\text{Tiền tiết kiệm/tháng (420.000 VND)}} \approx 0.48\text{ tháng (khoảng 15 ngày)}.$$


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

Các hạn chế kỹ thuật hiện tại

  1. Phụ thuộc hoàn toàn vào Cloud bên ngoài: Nếu đường truyền Internet quốc tế hoặc máy chủ trung gian gặp sự cố, việc điều khiển qua App bị gián đoạn dù mạng Wi-Fi nội bộ vẫn hoạt động.
  2. Hạn chế số lượng chân Analog (ADC): ESP8266 chỉ có duy nhất 01 chân analog $A_0$ (dải đo $0 - 1.0\text{V}$ hoặc $0 - 3.3\text{V}$ trên kit), hạn chế khả năng ghép nối đồng thời nhiều cảm biến công nghiệp dòng analog chuẩn $4 - 20\text{mA}$ hoặc $0 - 10\text{V}$.
  3. Chưa hỗ trợ đo lường công suất thực tế: Hệ thống mới chỉ giám sát trạng thái logic (On/Off) mà chưa tích hợp biến dòng để đo trực tiếp dòng điện tiêu thụ tức thời của tải.

Kế hoạch phát triển và nâng cấp (Roadmap)

  • Nâng cấp vi điều khiển lên ESP32 Dual-Core: Tăng xung nhịp xử lý lên 240MHz, mở rộng số chân GPIO lên 36 chân, hỗ trợ đồng thời Wi-Fi và Bluetooth Low Energy (BLE) phục vụ việc cài đặt mạng nhanh (Smart Provisioning).
  • Chuyển dịch sang giao thức MQTT nội bộ: Triển khai một Broker mã nguồn mở (như Mosquitto MQTT trên Raspberry Pi) đặt tại chỗ, cho phép điều khiển cục bộ ngay cả khi mất kết nối Internet hoàn toàn.
  • Tích hợp cảm biến đo điện năng tiêu thụ đa năng PZEM-004T: Bổ sung khả năng đo đạc 6 thông số điện lưới: Điện áp ($V$), Dòng điện ($A$), Công suất ($W$), Tần số ($Hz$), Hệ số công suất ($\cos\varphi$) và Tổng năng lượng tiêu thụ ($kWh$), tự động gửi cảnh báo khi quá dòng.
[Hiện tại: ESP8266 + Blynk Cloud] ---> [Giai đoạn 2: ESP32 + MQTT Broker nội bộ]
                                                     |
                                                     v
                                  [Giai đoạn 3: PZEM-004T + Trí tuệ nhân tạo dự đoán tiêu thụ]

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

+-------------------------------------------------------------------------+
|                        CÁC NHÓM ĐỐI TƯỢNG HƯỞNG LỢI                     |
+------------------------------------+------------------------------------+
                                     |
    +-----------------+--------------+----------------+-----------------+
    |                 |                               |                 |
    v                 v                               v                 v
[SINH VIÊN]     [LẬP TRÌNH VIÊN]              [DOANH NGHIỆP / XƯỞNG] [NHÀ NGHIÊN CỨU]
- Giáo trình mẫu - Mẫu code Non-blocking       - Chi phí < 10 USD     - Tài liệu thực nghiệm
- Kiến trúc IoT  - Kỹ thuật Virtual Pin       - Lắp đặt nhanh tủ điện- Nền tảng phát triển
  • Sinh viên chuyên ngành Điện - Điện tử, Tự động hóa: Cung cấp tài liệu nghiên cứu chuẩn chỉ về cách kết nối một bộ vi điều khiển SoC mã nguồn mở với hệ thống điện động lực thực tế, từ thiết kế mạch in đến lập trình giao diện.
  • Lập trình viên IoT và Kỹ sư nhúng (Embedded Developers): Tham khảo kiến trúc code mẫu chuẩn công nghiệp xử lý giao tiếp bất đồng bộ, cách sử dụng BlynkTimer để loại bỏ xung đột ngắt và triệt tiêu lỗi mất kết nối.
  • Hộ kinh doanh cá thể và Doanh nghiệp sản xuất vừa/nhỏ: Có ngay phương án tự động hóa hệ thống chiếu sáng và thiết bị phụ trợ với chi phí đầu tư linh kiện dưới 250.000 VND, lắp đặt trực tiếp vào tủ điện sẵn có mà không cần cải tạo đường dây.
  • Cộng đồng nghiên cứu ứng dụng: Cung cấp số liệu thực nghiệm đo đạc độ trễ phản hồi qua mạng di động 3G/4G và mạng LAN, phục vụ việc đánh giá hiệu năng giao tiếp IoT thực tế tại Việt Nam.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống phần cứng này là gì?

Hệ thống yêu cầu nguồn cấp 5VDC – 1A ổn định qua cổng Micro-USB hoặc chân VIN, mạng Wi-Fi tại vị trí lắp đặt phát sóng ở tần số 2.4GHz (chuẩn 802.11 b/g/n, bảo mật WPA/WPA2-PSK), và thiết bị điều khiển của người dùng chạy hệ điều hành Android (phiên bản 5.0 trở lên) hoặc iOS (phiên bản 10.0 trở lên) có kết nối mạng Internet.

2. Giới hạn chịu tải của mạch Relay 4 kênh là bao nhiêu? Có thể điều khiển động cơ 3 pha không?

Module Relay 5V tích hợp trong đồ án sử dụng rơ-le Songle SRD-05VDC-SL-C với dòng định mức tối đa 10A ở điện áp 250VAC (tải thuần trở). Đối với các tải cảm kháng lớn như máy bơm công nghiệp hoặc động cơ 3 pha, mạch Relay này không trực tiếp đóng cắt mà phải đóng vai trò là mạch kích trung gian cấp nguồn cho cuộn hút của Khởi động từ (Contactor/Aptomat) công suất lớn tương ứng.

3. Khi mất kết nối Wi-Fi hoặc mất mạng Internet, hệ thống có tự kết nối lại không?

Có. Nhờ thư viện kết nối chuẩn của ESP8266 và hàm Blynk.run() trong vòng lặp chính, vi điều khiển sẽ tự động thực hiện chu kỳ thăm dò và kết nối lại ngay khi mạng Wi-Fi phát sóng trở lại. Đồng thời, cấu hình chân kích Relay giữ nguyên trạng thái logic trong suốt quá trình rớt mạng tạm thời, tránh hiện tượng tắt mở thiết bị đột ngột.

4. Chi phí duy trì nền tảng phần mềm Blynk Cloud có tốn kém không?

Với phiên bản Blynk truyền thống (Blynk Legacy) được áp dụng trong đề tài, người dùng được cấp sẵn 2.000 điểm Energy miễn phí khi tạo tài khoản, hoàn toàn đủ tài nguyên để thiết lập 4 nút bấm Widget và 1 màn hình hiển thị. Đối với quy mô mở rộng, người dùng có thể tự dựng một Private Blynk Server riêng trên máy tính cá nhân hoặc Raspberry Pi mà không tốn bất kỳ chi phí bản quyền nào.

5. Khắc phục lỗi Relay bị nhảy lung tung khi vừa cấp điện cho ESP8266 như thế nào?

Hiện tượng này xảy ra do một số chân GPIO trên ESP8266 (như GPIO0/D3, GPIO2/D4) đóng vai trò là các chân chọn chế độ khởi động (Boot Strapping Pins). Để khắc phục triệt để, trong hàm setup(), lập trình viên bắt buộc phải cấu hình digitalWrite(PIN, HIGH) trước khi gọi lệnh pinMode(PIN, OUTPUT) để cố định trạng thái ngắt tải trước khi chip hoàn tất quá trình boot firmware.


Kết luận

Tóm tắt thành tựu chính

Đồ án tốt nghiệp "Điều khiển và giám sát thiết bị điện qua mạng Internet" do sinh viên Nguyễn Ngọc Khánh thực hiện dưới sự hướng dẫn của TS. Đoàn Hữu Chức đã hoàn thành 100% các mục tiêu khoa học và thực tiễn đề ra. Đề tài đã xây dựng thành công một hệ thống IoT hoàn chỉnh từ tầng phần cứng (Edge Hardware), tầng mạng (Network Protocol Stack) đến tầng ứng dụng di động (Mobile User Interface).

+-------------------------------------------------------------------------+
|                       TỔNG KẾT ĐÁNH GIÁ ĐỒ ÁN                           |
+-------------------------------------------------------------------------+
| [✓] Phần cứng: NodeMCU ESP8266 + Relay 4 kênh cách ly quang 10A/250VAC  |
| [✓] Truyền thông: Wi-Fi 802.11 b/g/n, TCP/IP, Blynk SSL Protocol        |
| [✓] Hiệu năng: Độ trễ phản hồi TB 114.6ms (4G), Tỷ lệ thành công 99.2%  |
| [✓] Ứng dụng: Tiết kiệm chi phí đầu tư 85% so với PLC/SCADA truyền thống|
+-------------------------------------------------------------------------+

Khẳng định giá trị thực tiễn

Giải pháp mang lại giá trị kinh tế trực tiếp cho các công trình dân dụng và xưởng sản xuất nhỏ với chi phí phần cứng cực thấp (~200.000 VND), độ tin cậy vận hành cao và khả năng giám sát hai chiều tức thời. Đây là tiền đề vững chắc để tiếp tục mở rộng tích hợp các thuật toán trí tuệ nhân tạo dự đoán tiêu thụ năng lượng và phát triển hệ thống điện lưới thông minh (Smart Grid) trong tương lai.