Giới thiệu dự án

Trong bối cảnh đô thị hóa nhanh và xu hướng xây dựng mô hình đô thị thông minh (Smart City), việc quản lý và tối ưu hóa tài nguyên năng lượng (điện) và nước sinh hoạt trở thành thách thức cấp thiết. Theo các khảo sát ngành năng lượng, các hộ gia đình tiêu tốn trung bình từ 10% đến 18% chi phí lãng phí hàng tháng do không nắm bắt được biểu đồ tiêu thụ điện – nước theo thời gian thực (Real-time). Phương thức ghi chỉ số thủ công truyền thống qua công tơ cơ khí tồn tại nhiều hạn chế: chu kỳ chốt số chậm (30 ngày/lần), nguy cơ sai số do con người, thiếu tính minh bạch và hoàn toàn không cung cấp cảnh báo khi có sự cố rò rỉ hoặc quá tải.

Đồ án tốt nghiệp "Ứng dụng công nghệ IoT giám sát mức tiêu thụ điện – nước" (Thực hiện bởi sinh viên Nguyễn Thanh Ti, GVHD: ThS. Nguyễn Thanh Nghĩa - Trường Đại học Sư phạm Kỹ thuật TP.HCM) giải quyết bài toán cốt lõi: Số hóa và tự động hóa quy trình đo lường, đồng bộ hóa dữ liệu tiêu thụ điện - nước từ hộ gia đình lên nền tảng đám mây, cho phép người dùng và đơn vị quản lý theo dõi trực quan mọi lúc, mọi nơi thông qua nền tảng Web.

graph LR
    A[Cảm biến ACS712 & Đo Áp AC] -->|Tín hiệu Analog| C[Arduino Mega 2560]
    B[Cảm biến lưu lượng S201] -->|Xung số Interrupt| C
    C -->|Giao tiếp UART 10s/lần| D[NodeMCU ESP8266]
    D -->|I2C| E[LCD 16x2]
    D -->|Wi-Fi / HTTPS 120s/lần| F[(Firebase Realtime DB)]
    F -->|REST / WebSocket| G[Web Dashboard User/Admin]

Mục tiêu dự án

  1. Thiết kế khối thu thập dữ liệu phần cứng: Tích hợp module cảm biến dòng Hall ACS712-20A, mạch biến áp đo áp AC 220V và cảm biến lưu lượng YF-S201 với vi điều khiển Arduino Mega 2560 để tính toán năng lượng tiêu thụ (Wh) và thể tích nước (Lít).
  2. Xây dựng khối truyền thông và hiển thị tại chỗ: Sử dụng vi điều khiển NodeMCU ESP8266 nhận dữ liệu từ Arduino qua UART, hiển thị lên LCD 16x2 qua giao tiếp I2C và đẩy dữ liệu lên Cloud.
  3. Phát triển nền tảng Cloud & Web Dashboard: Xây dựng cơ sở dữ liệu trên Firebase Realtime Database, tích hợp xác thực Firebase Authentication (OAuth 2.0 Gmail) và triển khai Web giám sát trên Firebase Hosting.
  4. Xây dựng cơ chế khôi phục trạng thái (State Persistence): Tự động lưu trữ và đồng bộ lại chỉ số tiêu thụ từ Firebase khi hệ thống gặp sự cố mất nguồn điện, chống thất thoát dữ liệu.

Phạm vi và giới hạn

  • Phạm vi ứng dụng: Thử nghiệm giám sát mức tiêu thụ điện – nước cho quy mô hộ gia đình, phòng trọ, căn hộ chung cư.
  • Giới hạn kỹ thuật: Thiết bị hoạt động trên lưới điện xoay chiều dân dụng 220V/50Hz, dòng tải tối đa 20A; đo lưu lượng nước dân dụng trong dải 1 - 30 L/phút; kết nối Internet thông qua mạng Wi-Fi băng tần 2.4GHz (chuẩn IEEE 802.11 b/g/n).

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

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

Tiêu chí Công tơ cơ khí / Đồng hồ cơ truyền thống Thiết bị giám sát công nghiệp (Schneider / Siemens) Giải pháp IoT đề tài (Arduino Mega + NodeMCU + Firebase)
Phương thức thu thập Đọc chỉ số thủ công bằng mắt thường Tự động hóa qua RS485 / Modbus / PLC Tự động hóa qua cảm biến và vi điều khiển nhúng
Tần suất cập nhật 1 tháng / lần Thời gian thực (ms đến giây) Cập nhật LCD (10s), Đồng bộ Cloud (120s)
Khả năng giám sát từ xa Không hỗ trợ Có (SCADA / Phần mềm chuyên dụng đắt tiền) Có (Web App responsive trên mọi thiết bị qua Internet)
Đo lường tích hợp Riêng biệt (công tơ điện riêng, đồng hồ nước riêng) Thường tách rời từng hệ thống Tích hợp đồng thời cả điện năng (Wh) và lưu lượng nước (Lít)
Chi phí triển khai Thấp (thiết bị), Cao (nhân công định kỳ) Rất cao (> 10.000.000 VNĐ / điểm đo) Rất thấp (< 800.000 VNĐ / bộ hoàn chỉnh)

Phân loại yêu cầu theo mô hình MoSCoW

  • Must have (Bắt buộc): Đo chính xác dòng điện AC (0-20A), điện áp AC (0-250V), xung lưu lượng nước; hiển thị LCD 16x2; gửi dữ liệu lên Firebase Realtime Database; xác thực người dùng qua Gmail.
  • Should have (Nên có): Tự động tính toán quy đổi ra số tiền điện/nước tương ứng; giao diện quản trị Admin xem toàn bộ người dùng; lưu trữ lịch sử tiêu thụ 3 tháng gần nhất.
  • Could have (Có thể có): Cơ chế chuyển đổi giao diện hiển thị LCD thông qua nút nhấn cứng (Interrupt); biểu đồ so sánh mức tiêu thụ giữa các tháng.
  • Won't have (Chưa thực hiện): Tính năng ngắt tải từ xa bằng rơ-le; cảnh báo rò rỉ tức thời qua SMS Gateway.

Thiết kế hệ thống

classDiagram
    class ArduinoMega2560 {
        +readVoltageADC() float
        +readCurrentRMS() float
        +countWaterPulses() void
        +calculateEnergyWh() float
        +calculateWaterLiters() float
        +sendUARTPayload() void
    }
    class NodeMCUESP8266 {
        +receiveUARTPayload() void
        +syncNTPTime() void
        +updateLCD_I2C() void
        +pushFirebaseRealtime() void
        +recoverLastState() void
    }
    class FirebaseCloud {
        +RealtimeDatabase
        +Authentication_OAuth2
        +Hosting_StaticWeb
    }
    class WebDashboard {
        +renderUserView()
        +renderAdminView()
        +calculateBilling()
    }
    ArduinoMega2560 --> NodeMCUESP8266 : Serial UART (TX1/RX1)
    NodeMCUESP8266 --> FirebaseCloud : HTTPS / REST WebSocket
    FirebaseCloud --> WebDashboard : Realtime Listener

Technology Stack và thông số kỹ thuật

  • Vi xử lý đo lường: Arduino Mega 2560 (ATmega2560 @ 16MHz, 256KB Flash, 8KB SRAM, 54 chân I/O, tích hợp 4 cổng cứng UART, 16 kênh ADC 10-bit).
  • Vi điều khiển truyền thông: NodeMCU V3 ESP8266-12E (Tensilica L106 32-bit @ 80MHz, 4MB Flash, Wi-Fi 802.11 b/g/n 2.4GHz, hỗ trợ giao thức WPA/WPA2).
  • Cảm biến dòng: ACS712-20A (Độ nhạy $100\text{ mV/A}$, dải đo $\pm 20\text{A}$, cách ly quang điện lên đến $2.1\text{ kV}_{\text{RMS}}$, băng thông $80\text{ kHz}$).
  • Cảm biến lưu lượng: YF-S201 (Cảm biến Hall tác động bởi cánh quạt từ trường, dải lưu lượng $1 - 30\text{ L/min}$, tần số xung $F = 7.5 \times Q$, chịu áp lực nước $\le 1.75\text{ MPa}$).
  • Khối đo áp AC: Biến áp hạ áp $220\text{V} \rightarrow 12\text{V}_{\text{AC}}$, chỉnh lưu cầu Diode, phân áp trở ($10\text{k}\Omega / 20\text{k}\Omega$), tụ lọc lọc gợn sóng ($470\mu\text{F}$ và $100\text{nF}$), cầu chì bảo vệ $2\text{A}$.
  • Khối hiển thị & giao tiếp: LCD 16x2 kết hợp module chuyển đổi I2C PCF8574 (địa chỉ $0x27$ hoặc $0x3F$).
  • Cloud & Backend: Google Firebase (Realtime Database, Firebase Authentication OAuth 2.0, Firebase Hosting, Firebase CLI firebase-tools v4.x).
  • Frontend Framework: HTML5, CSS3, JavaScript ES6, Node.js runtime.

Cấu trúc cơ sở dữ liệu Firebase Realtime Database

Dữ liệu được tổ chức dưới dạng cấu trúc cây JSON tối ưu hóa cho truy vấn thời gian thực:

{
  "users": {
    "UID_GMAIL_USER_01": {
      "profile": {
        "email": "user01@gmail.com",
        "displayName": "Hộ Gia Đình 1",
        "address": "Block A - P302",
        "registeredAt": 1531708800
      },
      "live_metrics": {
        "current_voltage": 221.5,
        "current_amperage": 2.34,
        "power_instantaneous": 518.3,
        "last_updated": 1531734520
      },
      "consumption": {
        "current_month": {
          "total_energy_wh": 14250,
          "total_water_liters": 850,
          "calculated_cost_vnd": 125400
        },
        "history_3months": {
          "month_1": { "energy_wh": 120400, "water_liters": 12400 },
          "month_2": { "energy_wh": 115200, "water_liters": 11800 },
          "month_3": { "energy_wh": 131000, "water_liters": 13200 }
        }
      }
    }
  }
}

Methodology

Dự án áp dụng phương pháp tiếp cận theo mô hình phát triển phần cứng kết hợp phần mềm theo chu kỳ lặp (Iterative Engineering & Prototyping) qua 15 tuần thực hiện:

Giai đoạn (Milestone) Khoảng thời gian Nội dung công việc và Deliverables
M1: Khảo sát & Thiết kế Tuần 1 - Tuần 3 Nghiên cứu cảm biến ACS712, S201, NodeMCU, Firebase; lập sơ đồ khối hệ thống.
M2: Nghiên cứu phần mềm Tuần 4 - Tuần 6 Cấu hình Arduino IDE, tìm hiểu Firebase Realtime Database và thiết kế UI Web cơ bản.
M3: Tích hợp phần cứng Tuần 7 - Tuần 9 Lập trình lấy mẫu ADC, ngắt đếm xung trên Arduino; giao tiếp UART với ESP8266.
M4: Đóng gói & Chế tạo Tuần 10 - Tuần 12 Thiết kế hộp Mica ($20 \times 17 \times 9\text{ cm}$), thi công bo mạch nguồn và đi dây hệ thống.
M5: Thử nghiệm & Đánh giá Tuần 13 - Tuần 15 Kiểm chuẩn sai số đo dòng/áp/nước, kiểm thử chịu tải Cloud và hoàn thiện báo cáo.

Ma trận quản trị rủi ro kỹ thuật

  • Rủi ro 1: Nhiễu tín hiệu Analog AC trên chân ADC. Giải pháp: Sử dụng thuật toán lấy mẫu liên tục trong chu kỳ sóng 50Hz (20ms), tính giá trị hiệu dụng RMS thực ($V_{\text{RMS}}, I_{\text{RMS}}$), kết hợp tụ gốm $100\text{nF}$ lọc nhiễu cao tần.
  • Rủi ro 2: Treo hệ thống do mất kết nối Wi-Fi. Giải pháp: Tích hợp cơ chế non-blocking, sử dụng cờ trạng thái kiểm tra WiFi.status() == WL_CONNECTED trước khi thực thi lệnh push dữ liệu lên Firebase.
  • Rủi ro 3: Mất dữ liệu tích lũy khi mất nguồn điện đột ngột. Giải pháp: NodeMCU khi khởi động sẽ đọc giá trị total_energy_whtotal_water_liters gần nhất trên Firebase về làm điểm xuất phát cho phiên đo mới.

Implementation và kết quả

Development process

Thuật toán tính toán đo lường trên Arduino Mega 2560

Hệ thống sử dụng cơ chế xử lý không khóa (Non-blocking) bằng millis() để song song hóa việc lấy mẫu điện năng và đếm xung dòng chảy nước qua ngắt ngoài (External Interrupt):

#include <Arduino.h>

// Định nghĩa chân phần cứng
const int CURRENT_SENSOR_PIN = A0;
const int VOLTAGE_SENSOR_PIN = A1;
const byte WATER_FLOW_PIN = 2; // Chân ngắt ngoài INT0

volatile unsigned long pulseCount = 0;
float totalWaterLiters = 0.0;
float totalEnergyWh = 0.0;
unsigned long lastSampleTime = 0;
byte sampleCycleCounter = 0;

// Trình phục vụ ngắt đếm xung từ cảm biến lưu lượng S201
void IRAM_ATTR countWaterPulseISR() {
  pulseCount++;
}

void setup() {
  Serial.begin(9600);    // Serial Monitor debug
  Serial1.begin(9600);   // Giao tiếp UART với NodeMCU ESP8266 (TX1/RX1)
  pinMode(WATER_FLOW_PIN, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(WATER_FLOW_PIN), countWaterPulseISR, RISING);
  lastSampleTime = millis();
}

void loop() {
  // Chu kỳ lấy mẫu và tính toán 1 giây
  if (millis() - lastSampleTime >= 1000) {
    detachInterrupt(digitalPinToInterrupt(WATER_FLOW_PIN));
    
    // 1. Tính toán lưu lượng nước: F = 7.5 * Q (Q tính theo L/min)
    float flowRateLitersPerMin = (float(pulseCount) / 7.5);
    float litersInCurrentSecond = flowRateLitersPerMin / 60.0;
    totalWaterLiters += litersInCurrentSecond;
    pulseCount = 0;
    attachInterrupt(digitalPinToInterrupt(WATER_FLOW_PIN), countWaterPulseISR, RISING);

    // 2. Lấy mẫu và tính toán điện năng RMS
    float currentAmpsRMS = readACS712CurrentRMS(CURRENT_SENSOR_PIN);
    float voltageVoltsRMS = readACVoltageRMS(VOLTAGE_SENSOR_PIN);
    float instantaneousPowerWatts = voltageVoltsRMS * currentAmpsRMS;
    totalEnergyWh += (instantaneousPowerWatts * (1.0 / 3600.0));

    sampleCycleCounter++;
    lastSampleTime = millis();

    // 3. Mỗi 10 giây đóng gói gửi UART sang NodeMCU
    if (sampleCycleCounter >= 10) {
      // Chuỗi truyền: DATA,TotalEnergyWh,TotalWaterLiters,CurrentAmps,VoltageVolts
      Serial1.print("DATA,");
      Serial1.print(totalEnergyWh, 2);
      Serial1.print(",");
      Serial1.print(totalWaterLiters, 2);
      Serial1.print(",");
      Serial1.print(currentAmpsRMS, 2);
      Serial1.print(",");
      Serial1.println(voltageVoltsRMS, 1);
      
      sampleCycleCounter = 0;
    }
  }
}

Xử lý truyền nhận và đồng bộ Cloud trên NodeMCU ESP8266

#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define FIREBASE_HOST "iot-energy-water-monitor.firebaseio.com"
#define FIREBASE_AUTH "AIzaSyD-SecretTokenKeyFirebase"
#define WIFI_SSID "Home_WiFi"
#define WIFI_PASSWORD "Password123"

LiquidCrystal_I2C lcd(0x27, 16, 2);
unsigned long lastCloudSyncTime = 0;
String currentPayload = "";

void setup() {
  Serial.begin(9600); // Nhận UART từ Arduino Mega
  lcd.init();
  lcd.backlight();
  
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    lcd.setCursor(0, 0);
    lcd.print("Connecting WiFi");
  }
  
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  // Khôi phục chỉ số cũ từ Cloud khi khởi động lại
  float previousEnergy = Firebase.getFloat("users/USER_01/consumption/current_month/total_energy_wh");
  float previousWater = Firebase.getFloat("users/USER_01/consumption/current_month/total_water_liters");
}

void loop() {
  if (Serial.available()) {
    String dataStr = Serial.readStringUntil('\n');
    dataStr.trim();
    if (dataStr.startsWith("DATA,")) {
      // Phân tách chuỗi và cập nhật hiển thị LCD
      parseAndDisplayMetrics(dataStr);
    }
  }

  // Đồng bộ lên Cloud định kỳ 120 giây
  if (millis() - lastCloudSyncTime >= 120000) {
    pushMetricsToFirebase();
    lastCloudSyncTime = millis();
  }
}

Testing và validation

Kịch bản kiểm thử và kết quả thực nghiệm

+-----------------------------------------------------------------------------+
|                           KẾT QUẢ ĐO LƯỜNG THỰC NGHIỆM                       |
+----------------------+--------------------+--------------------+------------+
| Tải thử nghiệm       | Giá trị chuẩn (VOM)| Giá trị đo hệ thống| Sai số (%) |
+----------------------+--------------------+--------------------+------------+
| Điện áp lưới 220V    | 220.4 V            | 218.8 V            | 0.72%      |
| Bóng đèn sợi đốt 60W | 0.272 A            | 0.265 A            | 2.57%      |
| Bếp điện từ 1000W    | 4.545 A            | 4.630 A            | 1.87%      |
| Bình đun siêu tốc    | 8.180 A            | 8.020 A            | 1.95%      |
| Lưu lượng nước 5L    | 5.000 Lít          | 4.860 Lít          | 2.80%      |
| Lưu lượng nước 20L   | 20.000 Lít         | 19.520 Lít         | 2.40%      |
+----------------------+--------------------+--------------------+------------+
  • Độ chính xác đo điện áp: Sai số trung bình dưới $1.0%$.
  • Độ chính xác đo dòng điện: Sai số trung bình dao động từ $1.8% - 2.6%$ trên toàn dải đo $0 - 10\text{A}$ (đáp ứng tiêu chuẩn giám sát dân dụng).
  • Độ chính xác đo lưu lượng nước: Sai số trung bình khoảng $2.6%$, nguyên nhân do độ trễ cơ học quán tính của cánh quạt khi đóng/mở van nước tức thời.
  • Hiệu năng truyền thông:
    • Thời gian trễ đẩy dữ liệu Firebase (Latency): Trung bình $250\text{ ms} - 450\text{ ms}$ qua kết nối Wi-Fi chuẩn g/n.
    • Tỷ lệ gói tin thành công (Packet Delivery Ratio): Đạt $99.8%$ trong điều kiện mạng ổn định.

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

  1. Kiến trúc nhúng phân tách chức năng (Dual-MCU Architecture):

    • Thay vì dồn toàn bộ tác vụ lên một vi điều khiển đơn lẻ, hệ thống phân tách rõ ràng: Arduino Mega 2560 chuyên trách các tác vụ thời gian thực cứng (lấy mẫu sóng AC chu kỳ ngắn, phục vụ ngắt xung dòng chảy tần số cao không bị bỏ sót xung), trong khi NodeMCU ESP8266 đảm nhận tác vụ mạng, mã hóa SSL/TLS khi giao tiếp Firebase và điều khiển hiển thị LCD qua I2C.
    • Hiệu quả: Loại bỏ $100%$ hiện tượng tràn bộ đệm hoặc mất xung cảm biến nước khi ESP8266 thực hiện các tác vụ TCP/IP chặn dòng.
  2. Cơ chế đồng bộ 2 tầng và phục hồi trạng thái mất nguồn (Power-Failure State Recovery):

    • Tích hợp giải thuật lưu vết tự động: Khi mất điện, chỉ số năng lượng và thể tích nước đã được ghi định kỳ 120s lên Firebase. Khi có điện trở lại, NodeMCU tự động kéo giá trị này về làm điểm tích lũy tiếp theo, giải quyết triệt để nhược điểm mất số liệu trên các dòng máy đo tự chế không có pin nuôi RTC/EEPROM.
  3. Mô hình Cloud Serverless chi phí 0 đồng:

    • Khai thác hoàn toàn hệ sinh thái Firebase (Realtime Database, Authentication, Hosting) thay vì thuê VPS hoặc Web Server truyền thống. Giúp giảm chi phí duy trì hệ thống về mức 0 VNĐ cho các đồ án nghiên cứu hoặc triển khai thử nghiệm với quy mô lên đến 250 thiết bị kết nối đồng thời.

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

Trường hợp sử dụng thực tế (Use Cases)

  • Khu nhà trọ, căn hộ dịch vụ cho thuê: Tự động chốt số điện nước minh bạch cuối tháng. Chủ nhà trọ theo dõi chỉ số tất cả phòng trên cùng giao diện Admin, loại bỏ xung đột về số liệu với khách thuê.
  • Hộ gia đình thông minh (Smart Home): Giúp người dùng nhận biết thói quen tiêu thụ năng lượng theo từng khung giờ trong ngày, phát hiện sớm các sự cố rò rỉ đường ống nước ngầm hoặc thiết bị điện bị rò rỉ dòng qua vỏ.
  • Ban quản lý tòa nhà văn phòng, chung cư: Tích hợp dữ liệu để phân bổ chi phí vận hành cho từng tầng hoặc từng phân khu chức năng.
gantt
    title Kế hoạch triển khai thương mại hóa thiết bị (6 Tháng)
    dateFormat  YYYY-MM-DD
    section Phần cứng
    Thiết kế lại PCB công nghiệp (SMD 2 lớp) :2026-09-01, 45d
    Tích hợp biến dòng cách ly CT ngàm kẹp   :2026-10-15, 30d
    Chứng nhận an toàn điện lưới & chống cháy :2026-11-15, 45d
    section Phần mềm
    Phát triển Mobile App Flutter (iOS/Android) :2026-09-15, 60d
    Tích hợp cảnh báo vượt ngưỡng qua Push/Zalo  :2026-11-15, 30d
    Triển khai thử nghiệm 50 hộ dân             :2026-12-15, 45d

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

  • Chi phí phần cứng BOM (Bill of Materials): ~750.000 VNĐ / bộ hoàn chỉnh (Arduino Mega, NodeMCU, ACS712, S201, LCD, vỏ hộp Mica, phụ kiện nguồn).
  • Thời gian hoàn vốn (ROI): Ước tính từ 4 - 6 tháng thông qua việc cắt giảm 10% - 15% lượng điện nước lãng phí nhờ cảnh báo và theo dõi biểu đồ tiêu thụ liên tục.

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

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

  • Cảm biến dòng ACS712 tiếp xúc trực tiếp dạng nối tiếp với dây nguồn pha, tiềm ẩn nguy cơ sinh nhiệt nếu tải vượt quá 20A trong thời gian dài.
  • Hệ thống đo điện áp dạng cầu phân áp biến áp có kích thước cơ khí còn cồng kềnh, độ phi tuyến nhất định ở dải điện áp thấp ($< 150\text{V}$).
  • Cơ chế xác thực tài khoản mới hiện phụ thuộc vào việc Admin kích hoạt thủ công trên bảng điều khiển.

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

  • Thay thế cảm biến: Nâng cấp sang máy biến dòng kiểu ngàm kẹp không tiếp xúc (Non-invasive Current Transformer SCT-013) để nâng cao độ an toàn điện lưới và dải đo lên 100A; sử dụng cảm biến lưu lượng nước siêu âm không cánh quạt để tránh bám cặn phèn.
  • Tích hợp tính năng điều khiển: Bổ sung rơ-le bán dẫn (Solid State Relay - SSR) hoặc van từ để tự động ngắt điện/nước từ xa qua Web khi phát hiện dòng rò hoặc vượt ngưỡng cài đặt.
  • Nâng cấp giao diện & Nền tảng: Chuyển đổi màn hình hiển thị sang màn hình cảm ứng Nextion HMI; phát triển ứng dụng di động đa nền tảng (Flutter/React Native) và tích hợp các kênh thông báo qua Telegram Bot/Zalo ZNS API.

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

  • Sinh viên & Giảng viên ngành Điện tử - Viễn thông / IoT: Tài liệu tham khảo toàn diện về kỹ thuật phối ghép giữa 2 vi điều khiển (Dual-MCU Architecture), giao tiếp ngoại vi I2C/UART và phương pháp tích hợp thiết bị nhúng với Google Firebase.
  • Kỹ sư nhúng & IoT Developer: Bộ code mẫu về xử lý tín hiệu ADC thời gian thực, thuật toán lấy mẫu không khóa (millis()), phục vụ ngắt ngoài và kiến trúc cơ sở dữ liệu thời gian thực không đồng bộ.
  • Chủ hộ gia đình & Quản lý bất động sản: Giải pháp công nghệ giá rẻ, tin cậy để số hóa hoàn toàn quy trình giám sát năng lượng, tăng tính minh bạch và tiết kiệm chi phí vận hành hàng tháng lên đến $15%$.

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

1. Yêu cầu kỹ thuật tối thiểu để triển khai thiết bị là gì?

Hệ thống yêu cầu nguồn điện lưới xoay chiều $220\text{V}_{\text{AC}}/50\text{Hz}$ cấp trực tiếp, đường ống nước sinh hoạt tiêu chuẩn phi 21 (ren G1/2") và mạng Wi-Fi phát sóng băng tần 2.4GHz có kết nối Internet ổn định.

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

Thiết bị vẫn hoạt động bình thường. Arduino Mega vẫn tiếp tục lấy mẫu, tính toán liên tục và gửi dữ liệu sang NodeMCU để hiển thị trực tiếp lên màn hình LCD 16x2. Khi có kết nối Wi-Fi trở lại, dữ liệu cập nhật mới nhất sẽ tự động được đồng bộ lên Firebase.

3. Có thể mở rộng để đo hệ thống điện 3 pha hoặc tải công suất lớn hơn không?

Hoàn toàn có thể. Cần thay thế module cảm biến dòng ACS712 bằng 3 module biến dòng rời CT (Current Transformer như SCT-013-000 dải đo 100A) gắn vào 3 cổng ADC của Arduino Mega để tính toán công suất tổng cho cả 3 pha.

4. Hệ thống đảm bảo tính bảo mật của dữ liệu người dùng như thế nào?

Dữ liệu trên Firebase Realtime Database được bảo vệ qua các quy tắc bảo mật (Firebase Security Rules). Mỗi người dùng chỉ có quyền đọc/ghi (read/write) trên nhánh dữ liệu tương ứng với mã định danh duy nhất (auth.uid) sau khi đăng nhập thành công qua Google OAuth 2.0.

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

Với gói miễn phí (Spark Plan) của Google Firebase, hệ thống hỗ trợ 100 kết nối đồng thời, 1GB dung lượng lưu trữ Realtime Database và 10GB băng thông/tháng. Mức này hoàn toàn miễn phí (0 VNĐ) cho quy mô thử nghiệm và hộ gia đình thông thường.


Kết luận

Đồ án "Ứng dụng công nghệ IoT giám sát mức tiêu thụ điện – nước" của tác giả Nguyễn Thanh Ti (ĐH Sư phạm Kỹ thuật TP.HCM) đã giải quyết trọn vẹn bài toán tích hợp đo lường đa năng lượng trên một hệ thống phần cứng duy nhất. Thông qua kiến trúc kết hợp tối ưu giữa Arduino Mega 2560, NodeMCU ESP8266 và nền tảng đám mây Google Firebase, hệ thống đã chứng minh được tính khả thi kỹ thuật cao, độ tin cậy trong thu thập dữ liệu với sai số dưới $3%$, cùng khả năng ứng dụng thực tiễn vượt trội so với các phương pháp đo đếm truyền thống. Đây là nền tảng vững chắc cho các nghiên cứu mở rộng hướng tới các giải pháp quản trị năng lượng thông minh và bền vững trong tương lai.