Giới thiệu dự án

Thị trường Internet of Things (IoT) và giải pháp Nhà thông minh (Smart Home) toàn cầu đang chứng kiến mức tăng trưởng kép hàng năm (CAGR) ấn tượng đạt trên 25%, mở ra xu hướng số hóa toàn diện từ không gian gia đình đến các phòng thí nghiệm, giảng đường đại học. Tuy nhiên, các hệ thống thương mại đóng gói sẵn trên thị trường thường có giá thành cao, khó tùy biến và phụ thuộc hoàn toàn vào máy chủ của bên thứ ba, gây rủi ro về quyền riêng tư và bảo mật dữ liệu.

Đồ án tốt nghiệp "Thiết kế và thi công hệ thống nhà thông minh" được thực hiện bởi sinh viên ngành Công nghệ Kỹ thuật Điện tử - Truyền thông (Trường Đại học Sư phạm Kỹ thuật TP.HCM) dưới sự hướng dẫn của GVC. Nguyễn Đình Phú. Đề tài tập trung giải quyết bài toán thiết kế một hệ thống Smart Home tích hợp toàn diện phần cứng và phần mềm với chi phí tối ưu, độ ổn định cao và khả năng phản hồi thời gian thực.

+-----------------------------------------------------------------------------+
|                            KIẾN TRÚC TỔNG THỂ HỆ THỐNG                     |
+-----------------------------------------------------------------------------+
|                                                                             |
|  +--------------------+                     +----------------------------+  |
|  |  Android App       | <--- HTTPS/WSS ---> | Firebase Realtime Database |  |
|  |  (Java / Android)  |                     +-------------+--------------+  |
|  +--------------------+                                   |                 |
|                                                      HTTPS / REST           |
|                                                           v                 |
|  +--------------------------------------------------------+--------------+  |
|  | KHỐI XỬ LÝ TRUYỀN THÔNG: NodeMCU ESP8266EX (Wi-Fi 802.11 b/g/n)        |  |
|  | - Đọc DHT11 (1-Wire)                                                  |  |
|  | - Đồng bộ dữ liệu Cloud Firebase                                      |  |
|  +---------------------------+-------------------------------------------+  |
|                              |                                              |
|                       UART (9600 bps)                                       |
|                              v                                              |
|  +-----------------------------------------------------------------------+  |
|  | KHỐI XỬ LÝ TRUNG TÂM: Arduino Mega 2560 (ATmega2560 @ 16MHz)          |  |
|  +--------------------+-------------------+--------------------+---------+  |
|          |                    |                   |            |            |
|          v                    v                   v            v            |
|   +--------------+    +---------------+    +------------+  +-------------+  |
|   | Cảm biến     |    | Cảm ứng/Phím  |    | Hiển thị   |  | Chấp hành   |  |
|   | - LDR LM393  |    | - TTP224 (4CH)|    | - LCD 1602 |  | - 4x Relay  |  |
|   | - HC-SR501   |    | - Keypad 4x4  |    |   + PCF8574|  |   (PC817)   |  |
|   | - Flame IR   |    |   (Mật mã)    |    |   (I2C)    |  | - MG90S     |  |
|   +--------------+    +---------------+    +------------+  +-------------+  |
+-----------------------------------------------------------------------------+

Vấn đề cụ thể (Problem Statement)

  • Hạn chế phần cứng đơn nhân: Vi điều khiển đơn chip thường bị nghẽn (bottleneck) khi vừa phải duy trì kết nối mạng liên tục vừa xử lý đa ngắt cảm biến thời gian thực.
  • Rủi ro an toàn điện gia dụng: Việc đóng ngắt trực tiếp lưới điện 220VAC gây nhiễu xung điện từ (EMI) ngược về vi điều khiển làm treo vi xử lý (MCU freeze).
  • Trải nghiệm người dùng phân mảnh: Thiếu sự kết hợp mượt mà giữa điều khiển tại chỗ (nút cảm ứng, phím số, tự động hóa cảm biến) và điều khiển từ xa qua Internet (App di động, giọng nói).

Mục tiêu đề tài

  1. Thiết kế và thi công bo mạch điều khiển trung tâm sử dụng kiến trúc vi điều khiển kép: ATmega2560 (xử lý ngoại vi, cảm biến, cơ cấu chấp hành) và ESP8266EX (xử lý truyền thông Wi-Fi và IoT Cloud).
  2. Xây dựng hệ thống khóa cửa điện tử ma trận phím $4\times4$, hiển thị trạng thái trên LCD 16x2 qua giao thức I2C, điều khiển chốt khóa bằng động cơ Servo MG90S.
  3. Tích hợp đa cảm biến thu thập thông số môi trường (Nhiệt độ - Độ ẩm DHT11, Chuyển động HC-SR501, Ánh sáng LDR qua LM393, Cảm biến ngọn lửa Flame Sensor IR).
  4. Thiết kế khối công suất 4 kênh Relay 220VAC/10A có cách ly quang bằng Optocoupler PC817 và mạch dập xung cảm ứng.
  5. Phát triển ứng dụng di động Android Native tương tác trực tiếp với cơ sở dữ liệu thời gian thực Firebase Realtime Database, hỗ trợ điều khiển bằng giọng nói và giám sát lịch sử mở cửa.
  6. Đảm bảo thời gian đáp ứng hệ thống cục bộ dưới 50ms và độ trễ truyền dữ liệu qua Internet dưới 500ms.

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

  • Phạm vi: Mô hình Smart Home hoàn chỉnh tích hợp trong phòng học/căn hộ thử nghiệm; tải điện xoay chiều 220V/5A cho 4 kênh thiết bị độc lập.
  • Giới hạn kỹ thuật: Yêu cầu hạ tầng mạng Wi-Fi 2.4GHz tiêu chuẩn IEEE 802.11 b/g/n; độ ẩm hoạt động từ 20% đến 80% RH; dung sai nhiệt độ $\pm2^\circ\text{C}$.

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

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

Tiêu chí kỹ thuật Giải pháp RF/Zigbee truyền thống Thiết bị thương mại (Tuya/Sonoff) Giải pháp đề xuất của đồ án
Kiến trúc MCU Đơn vi điều khiển (PIC/8051) ESP8266/ESP32 đơn nhân Kép: ATmega2560 + ESP8266EX
Khả năng mở rộng I/O Thấp (8 - 16 chân) Rất hạn chế (4 - 8 GPIO) Rất cao (54 Digital + 16 Analog)
Cách ly nguồn/nhiễu Thô sơ, dễ treo vi xử lý Cách ly cơ bản Cách ly quang Opto PC817 + Diode 1N4007
Giao thức đám mây Không có (hoặc proprietary) Máy chủ hãng (Closed Cloud) Firebase Realtime Database (Bảo mật, mở)
Phương thức điều khiển Remote RF 315/433MHz App di động Đa phương thức: App, Giọng nói, Chạm, Phím ma trận
Chi phí chế tạo Thấp ($15 - $25) Trung bình ($40 - $80/thiết bị) Tối ưu toàn diện ($35 - $45 cho 4 kênh + khóa)

Phân loại yêu cầu người dùng (MoSCoW Prioritization)

  • Must have (Bắt buộc có): Đóng ngắt 4 thiết bị độc lập qua App và nút cảm ứng; khóa cửa số ma trận có mã bảo vệ; tự động báo cháy qua còi và cảnh báo đẩy lên App; tự động bật đèn khi có người lúc trời tối.
  • Should have (Nên có): Điều khiển thiết bị bằng giọng nói tiếng Việt qua Google STT; hiển thị nhiệt độ, độ ẩm thời gian thực trên màn hình di động; lưu trữ nhật ký mở cửa.
  • Could have (Có thể mở rộng): Lập lịch hẹn giờ bật/tắt thiết bị độc lập từng kênh trên App; tự cân chỉnh ngưỡng nhạy cảm biến ánh sáng bằng biến trở.
  • Won't have (Chưa thực hiện đợt này): Nhận diện khuôn mặt bằng camera AI; tích hợp giao thức Zigbee 3.0 Mesh.

Thiết kế hệ thống

+-----------------------------------------------------------------------------+
|                 SƠ ĐỒ NGUYÊN LÝ KHỐI ĐÓNG NGẮT CÁCH LY QUANG               |
+-----------------------------------------------------------------------------+
|                                                                             |
|  MCU 5V Logic           Khối Cách Ly Quang            Khối Động Lực 220VAC  |
|                                                                             |
|  Arduino Pin ---[ R1 ]--->+---------------+   +5V                           |
|                           | Opto PC817    |    |                            |
|                           | 1 (A)   (C) 4 |--->+---[ Relay Coil ]---+       |
|                           |               |    |         |          |       |
|  GND -------------------->| 2 (K)   (E) 3 |----+         +--[1N4007]+       |
|                           +---------------+    |         | (Dập xung)|      |
|                                                |         v          |       |
|                                                +----[ Transistor ]--+       |
|                                                      C1815 (NPN)    |       |
|                                                      Base via R2    |       |
|                                                           |         |       |
|                                                           v         |       |
|                                                          GND        v       |
|                                                                [AC Load 220V]|
+-----------------------------------------------------------------------------+

Ngăn xếp công nghệ (Technology Stack)

  • Vi xử lý trung tâm: Microchip ATmega2560 (16MHz, 256KB Flash, 8KB SRAM, 4KB EEPROM, 54 Digital I/O).
  • Vi xử lý truyền thông: Espressif ESP8266EX NodeMCU V1.0 (Tensilica L106 32-bit, 80MHz, 4MB SPI Flash, Wi-Fi 2.4GHz WPA/WPA2).
  • Môi trường phát triển nhúng: Arduino IDE v1.8.9 (C/C++), Thư viện ESP8266WiFi, FirebaseArduino, LiquidCrystal_I2C, Keypad.
  • Nền tảng di động: Android Studio v3.4 (Java 8, Android SDK 28, Android Architecture Components).
  • Hạ tầng dữ liệu đám mây: Firebase Realtime Database (NoSQL, giao tiếp qua REST API / WebSockets).

Thiết kế cấu trúc dữ liệu NoSQL (Firebase Schema)

{
  "SmartHome_System": {
    "Devices": {
      "Relay1_LivingRoom": 0,
      "Relay2_Bedroom": 1,
      "Relay3_Kitchen": 0,
      "Relay4_Garden": 1
    },
    "Environment": {
      "Temperature": 28.5,
      "Humidity": 65.0,
      "Flame_Alert": 0
    },
    "Door_Lock": {
      "Status": "LOCKED",
      "Last_Access": "2019-07-10 14:32:10",
      "Unlock_Method": "KEYPAD"
    },
    "Schedule": {
      "Device_ID": "Relay1",
      "Turn_On_Time": "18:30",
      "Turn_Off_Time": "22:00"
    }
  }
}

Thiết kế điện tử và tính toán an toàn công suất

Khối đóng ngắt rơ-le được thiết kế để triệt tiêu hoàn toàn khả năng gây sốc điện cho vi điều khiển:

  1. Dòng kích dẫn Transistor C1815: Điện trở cuộn dây Relay SRD-05VDC là $R_{coil} \approx 70\Omega$, dòng cực thu yêu cầu $I_C = \frac{5\text{V}}{70\Omega} \approx 71.4\text{mA}$. Chọn dòng bão hòa thiết kế $I_{C(sat)} = 120\text{mA}$.
  2. Hệ số khuếch đại bão hòa: Chọn $\beta_{sat} = 40$ (với $\beta_{hFE} = 80 - 100$). Dòng cực gốc cần thiết: $$I_B = \frac{I_{C(sat)}}{\beta_{sat}} = \frac{120\text{mA}}{40} = 3\text{mA}$$
  3. Cách ly quang Opto PC817: Đi-ốt phát quang nội có $V_F = 1.2\text{V}$, dòng làm việc an toàn $I_F = 15\text{mA}$. Điện trở hạn dòng từ chân Digital MCU (5V): $$R_1 = \frac{V_{CC} - V_{LED} - V_F}{I_F} = \frac{5\text{V} - 2.1\text{V} (\text{LED đỏ}) - 1.2\text{V}}{15\text{mA}} \approx 113\Omega \implies \text{Chọn } 120\Omega$$
  4. Bảo vệ chống dòng cảm ứng ngược: Mắc song song Diode 1N4007 phân cực ngược với cuộn dây rơ-le để hấp thụ sức điện động tự cảm ($e = -L\frac{di}{dt}$) khi ngắt tiếp điểm, bảo vệ Transistor C1815 không bị đánh thủng điện áp $V_{CEO}$.

Implementation và kết quả

Quy trình phát triển và hiện thực hóa

Quy trình triển khai hệ thống được phân chia theo 4 giai đoạn cụ thể:

+-----------------------------------------------------------------------------+
|                      TIẾN TRÌNH THI CÔNG VÀ KIỂM THỬ                         |
+-----------------------------------------------------------------------------+
|  Giai đoạn 1: Thiết kế mạch in (PCB Design) & Thi công phần cứng            |
|  - Vẽ Schematic & Layout Altium -> Gia công bo 2 lớp -> Hàn linh kiện       |
|  -------------------------------------------------------------------------  |
|  Giai đoạn 2: Lập trình Firmware vi điều khiển (Embedded C/C++)             |
|  - Lập trình UART Non-blocking, quét ma trận phím, đọc I2C LCD, DHT11       |
|  -------------------------------------------------------------------------  |
|  Giai đoạn 3: Phát triển ứng dụng di động & Tích hợp Cloud Firebase         |
|  - Thiết kế XML UI, Service lắng nghe ValueEventListener, Google STT API    |
|  -------------------------------------------------------------------------  |
|  Giai đoạn 4: Thử nghiệm tải thực tế, đo kiểm hiệu năng & Đóng gói mô hình  |
|  - Kiểm thử 500 chu kỳ đóng ngắt tải 220V, đánh giá độ trễ mạng & độ ổn định|
+-----------------------------------------------------------------------------+

Thuật toán và mã nguồn lõi

1. Thuật toán nhận lệnh UART và điều khiển Relay trên Arduino Mega 2560

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Servo.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo doorServo;

const byte RELAY_PINS[4] = {22, 23, 24, 25};
const byte TOUCH_PINS[4] = {2, 3, 4, 5};
const int FLAME_PIN = 12;
const int PIR_PIN = 8;
const int LDR_PIN = 11;
const int SERVO_PIN = 9;

void setup() {
  Serial.begin(9600);    // Serial Monitor
  Serial1.begin(9600);   // UART Giao tiếp ESP8266 (TX1=18, RX1=19)
  
  for (int i = 0; i < 4; i++) {
    pinMode(RELAY_PINS[i], OUTPUT);
    digitalWrite(RELAY_PINS[i], HIGH); // Mức cao là ngắt Relay (Active LOW)
    pinMode(TOUCH_PINS[i], INPUT);
  }
  
  pinMode(FLAME_PIN, INPUT);
  pinMode(PIR_PIN, INPUT);
  pinMode(LDR_PIN, INPUT);
  doorServo.attach(SERVO_PIN);
  doorServo.write(0); // Khóa cửa ban đầu
  
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("SMART HOME 2019");
}

void loop() {
  // 1. Đọc tín hiệu điều khiển từ ESP8266 qua UART
  if (Serial1.available() > 0) {
    char cmd = Serial1.read();
    executeCommand(cmd);
  }
  
  // 2. Quét nút nhấn cảm ứng điện dung TTP224 tại chỗ
  for (int i = 0; i < 4; i++) {
    if (digitalRead(TOUCH_PINS[i]) == HIGH) {
      delay(20); // Chống rung phím cảm ứng
      if (digitalRead(TOUCH_PINS[i]) == HIGH) {
        digitalWrite(RELAY_PINS[i], !digitalRead(RELAY_PINS[i]));
        Serial1.print("DEV_STAT:");
        Serial1.print(i);
        Serial1.println(!digitalRead(RELAY_PINS[i]));
        while (digitalRead(TOUCH_PINS[i]) == HIGH); // Chờ nhả phím
      }
    }
  }
  
  // 3. Xử lý cảm biến tự động bật đèn ngoài cửa
  if (digitalRead(LDR_PIN) == HIGH && digitalRead(PIR_PIN) == HIGH) {
    digitalWrite(RELAY_PINS[3], LOW); // Bật đèn sân/cửa
  }
}

void executeCommand(char cmd) {
  switch (cmd) {
    case '1': digitalWrite(RELAY_PINS[0], LOW); break;
    case 'A': digitalWrite(RELAY_PINS[0], HIGH); break;
    case '2': digitalWrite(RELAY_PINS[1], LOW); break;
    case 'B': digitalWrite(RELAY_PINS[1], HIGH); break;
    case 'O': doorServo.write(90); delay(3000); doorServo.write(0); break; // Mở cửa
  }
}

2. Xử lý đồng bộ Firebase và đọc cảm biến DHT11 trên NodeMCU ESP8266

#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
#include <DHT.h>

#define FIREBASE_HOST "smarthome-spkt-default-rtdb.firebaseio.com"
#define FIREBASE_AUTH "AIzaSyD-EXAMPLE_TOKEN_AUTHENTICATION"
#define WIFI_SSID "LAB_DATN_ELECTRONICS"
#define WIFI_PASSWORD "SPKT2019Pass"

#define DHTPIN D5
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

unsigned long previousMillis = 0;
const long interval = 2000; // Đọc cảm biến mỗi 2 giây

void setup() {
  Serial.begin(9600); // Giao tiếp UART với Arduino Mega 2560
  dht.begin();
  
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
  Firebase.stream("/SmartHome_System/Devices");
}

void loop() {
  // 1. Nhận luồng dữ liệu thời gian thực từ Firebase Stream
  if (Firebase.failed()) {
    Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
    Firebase.stream("/SmartHome_System/Devices");
    return;
  }
  
  if (Firebase.available()) {
    FirebaseObject event = Firebase.readEvent();
    String eventType = event.getString("type");
    String path = event.getString("path");
    int val = event.getInt("data");
    
    if (path == "/Relay1_LivingRoom") {
      Serial.write(val == 1 ? '1' : 'A');
    } else if (path == "/Relay2_Bedroom") {
      Serial.write(val == 1 ? '2' : 'B');
    }
  }
  
  // 2. Định kỳ đọc cảm biến DHT11 và cập nhật lên Firebase
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    
    if (!isnan(h) && !isnan(t)) {
      Firebase.setFloat("SmartHome_System/Environment/Temperature", t);
      Firebase.setFloat("SmartHome_System/Environment/Humidity", h);
    }
  }
}

3. Lắng nghe trạng thái và điều khiển giọng nói trong Android Native (Java)

// Activity điều khiển và nhận diện giọng nói
public class MainActivity extends AppCompatActivity {
    private DatabaseReference mDatabase;
    private Switch switchRelay1, switchRelay2;
    private static final int REQ_CODE_SPEECH_INPUT = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mDatabase = FirebaseDatabase.getInstance().getReference("SmartHome_System");
        switchRelay1 = findViewById(R.id.switchRelay1);

        // Lắng nghe thay đổi thời gian thực từ Cloud
        mDatabase.child("Devices/Relay1_LivingRoom").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                Integer state = dataSnapshot.getValue(Integer.class);
                if (state != null) {
                    switchRelay1.setChecked(state == 1);
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {}
        });
    }

    public void startVoiceRecognition() {
        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "vi-VN");
        startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQ_CODE_SPEECH_INPUT && resultCode == RESULT_OK && data != null) {
            ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            String voiceText = result.get(0).toLowerCase();
            
            if (voiceText.contains("bật đèn phòng khách")) {
                mDatabase.child("Devices/Relay1_LivingRoom").setValue(1);
            } else if (voiceText.contains("tắt đèn phòng khách")) {
                mDatabase.child("Devices/Relay1_LivingRoom").setValue(0);
            } else if (voiceText.contains("mở cửa")) {
                mDatabase.child("Door_Lock/Status").setValue("UNLOCKED");
            }
        }
    }
}

Kết quả thử nghiệm và kiểm chứng hiệu năng

Hệ thống được vận hành thử nghiệm liên tục trong 120 giờ tại phòng thí nghiệm Viễn thông với các kết quả đo kiểm cụ thể:

Kịch bản kiểm thử Thông số đo lường Tiêu chuẩn đặt ra Kết quả thực tế đạt được Đánh giá
Độ trễ điều khiển qua LAN Ping / Command Response $< 100\text{ ms}$ $28 - 45\text{ ms}$ Vượt mục tiêu
Độ trễ điều khiển qua Internet 4G Round-Trip Time (RTT) $< 600\text{ ms}$ $210 - 380\text{ ms}$ Xuất sắc
Phản hồi nút cảm ứng TTP224 Interrupt to Relay Actuation $< 50\text{ ms}$ $< 15\text{ ms}$ Tức thời
Phát hiện lửa (Flame Sensor) Khoảng cách & Góc quét $80\text{ cm}, 60^\circ$ $85\text{ cm}, 62^\circ$ Đạt chuẩn
Cảm biến chuyển động HC-SR501 Bán kính nhận diện $2 - 4.5\text{ m}$ $4.0\text{ m}$ ổn định Đạt yêu cầu
Độ chính xác nhận diện giọng nói Google Speech STT (Tiếng Việt) $> 90%$ $94.5%$ (môi trường phòng) Rất tốt

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

  1. Kiến trúc phân tầng vi điều khiển Kép (Dual-MCU Decoupled Architecture):

    • Thay vì dồn toàn bộ tải xử lý vào một MCU đơn lẻ, hệ thống tách biệt hoàn toàn tầng truyền thông mạng (ESP8266) và tầng chấp hành phần cứng (ATmega2560).
    • Kết quả: Loại bỏ hiện tượng nghẽn ngắt (interrupt starvation), giảm thiểu tỷ lệ treo vi xử lý xuống 0% trong suốt quá trình thử nghiệm 120 giờ liên tục.
  2. Cách ly quang toàn phần với mức an toàn công nghiệp:

    • Tầng điều khiển Logic 5V được cách ly hoàn toàn với tầng công suất 220VAC thông qua hệ thống Optocoupler PC817 và Diode dập xung 1N4007.
    • Hiệu quả: Triệt tiêu 100% các xung điện áp cảm ứng ngược (Back-EMF) và nhiễu sóng hài cao tần khi đóng cắt các tải cảm (như quạt điện, chấn lưu đèn).
  3. Cơ chế điều khiển Đa kênh Dự phòng (Triple-Redundancy Control):

    • Người dùng có thể điều khiển thiết bị qua 3 tầng độc lập: Cloud App/Giọng nói $\rightarrow$ Nút cảm ứng điện dung 1 chạm TTP224 $\rightarrow$ Phím bấm cơ học/Tự động hóa cảm biến. Nếu mất kết nối Wi-Fi, toàn bộ tính năng tại chỗ vẫn duy trì hoạt động bình thường.

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

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

  • Tự động hóa phòng thí nghiệm/giảng đường: Tự động tắt hệ thống quạt, đèn khi phòng không có người sau 15 phút nhờ cảm biến PIR HC-SR501; khóa cửa thông minh quản lý sinh viên ra vào qua mã số.
  • Căn hộ thông minh tiết kiệm năng lượng: Bật đèn ban công tự động khi trời tối kết hợp cảm biến chuyển động; kiểm soát nhiệt độ, độ ẩm và cảnh báo cháy nổ sớm về điện thoại chủ nhà.

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

+-----------------------------------------------------------------------------+
|                BẢNG BÓC TÁCH CHI PHÍ LINH KIỆN (BOM PHẦN CỨNG)             |
+-----------------------------------------------------------------------------+
| STT | Tên module / Linh kiện          | Số lượng | Đơn giá (VND) | Thành tiền|
+-----+---------------------------------+----------+---------------+-----------+
| 1   | Bo mạch Arduino Mega 2560 R3    | 01       | 180,000       | 180,000   |
| 2   | Bo mạch NodeMCU ESP8266 V1.0    | 01       | 75,000        | 75,000    |
| 3   | Module 4 Relay 5V có Opto PC817 | 01       | 45,000        | 45,000    |
| 4   | Cảm biến DHT11, PIR, Flame, LDR | 01 bộ    | 85,000        | 85,000    |
| 5   | Bàn phím ma trận 4x4 + LCD I2C  | 01 bộ    | 90,000        | 90,000    |
| 6   | Động cơ Servo MG90S bánh răng kim| 01      | 55,000        | 55,000    |
| 7   | Mạch nguồn xung 220VAC - 5V/2A  | 01       | 40,000        | 40,000    |
| 8   | PCB gia công 2 lớp + Phụ kiện   | 01 bộ    | 120,000       | 120,000   |
+-----+---------------------------------+----------+---------------+-----------+
|     | TỔNG CHI PHÍ PHẦN CỨNG (BOM)    |          |               | 690,000 đ |
+-----------------------------------------------------------------------------+
  • Đánh giá ROI: Với tổng chi phí vật tư chỉ khoảng 690.000 VNĐ (~$30 USD), giải pháp giúp tiết kiệm tới 75% chi phí so với việc trang bị các gói giải pháp thương mại tương đương ($150 - $200 USD). Nhờ tính năng tự động hóa ngắt điện khi không có người, hệ thống giúp tiết kiệm ước tính 18 - 25% điện năng tiêu thụ hàng tháng cho văn phòng, thu hồi vốn đầu tư trong vòng 6 - 9 tháng.

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

Hạn chế kỹ thuật

  • Cảm biến nhiệt ẩm DHT11 có dải đo hẹp ($0 - 50^\circ\text{C}$) và độ trễ lấy mẫu $1\text{Hz}$ chưa thực sự tối ưu cho môi trường công nghiệp khắc nghiệt.
  • Module Wi-Fi ESP8266EX chỉ hỗ trợ băng tần đơn 2.4GHz, chưa hỗ trợ băng tần 5GHz hoặc chuẩn Wi-Fi 6 thế hệ mới.
  • Chưa có camera giám sát hình ảnh trực tiếp khi khóa cửa bị mở sai mật mã quá 3 lần.

Hướng phát triển mở rộng

  1. Nâng cấp chip xử lý lên dòng ESP32 Dual-Core tích hợp Bluetooth Low Energy (BLE 5.0) để cấu hình mạng không dây nhanh chóng (SmartConfig).
  2. Thay thế cảm biến DHT11 bằng SHT30 / BME280 với giao tiếp I2C cho độ chính xác cao ($\pm0.3^\circ\text{C}, \pm2%\text{ RH}$).
  3. Tích hợp giao thức công nghiệp nhẹ MQTT qua Broker Mosquitto, mã hóa bảo mật toàn bộ luồng truyền dữ liệu bằng chuẩn TLS 1.3.
  4. Ứng dụng mô hình AI biên (TinyML) trực tiếp trên MCU để phát hiện sớm hành vi rò rỉ điện hoặc phân tích thói quen sử dụng điện của người dùng.

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

  • Sinh viên ngành Kỹ thuật Điện tử / IoT: Tài liệu tham khảo chuẩn mực về cách phân tầng kiến trúc phần cứng, kỹ thuật lập trình giao tiếp nối tiếp UART, I2C và kỹ năng thiết kế bo mạch cách ly chống nhiễu.
  • Lập trình viên nhúng & Mobile: Nắm bắt mô hình kiến trúc hoàn chỉnh từ việc lập trình Firmware vi điều khiển đến xây dựng App Android kết nối qua Firebase Realtime Database.
  • Doanh nghiệp vừa và nhỏ (SMEs): Cơ sở nền tảng để tùy biến thành các giải pháp giám sát kho bãi, kiểm soát năng lượng văn phòng tự động với chi phí sản xuất cực thấp.
  • Nhà nghiên cứu học thuật: Cung cấp dữ liệu đo kiểm thực nghiệm về độ ổn định của hệ thống lai ATmega - ESP8266 trong môi trường nhiễu điện từ.

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

1. Yêu cầu nguồn điện để triển khai bo mạch là gì?

Hệ thống sử dụng module nguồn xung hạ áp từ lưới điện dân dụng $220\text{VAC}/50\text{Hz}$ xuống nguồn đôi $5\text{VDC} - 2\text{A}$ cấp cho bo điều khiển và $3.3\text{VDC}$ cấp riêng cho khối Wi-Fi ESP8266 nhằm đảm bảo độ sụt áp không vượt quá $5%$ khi phát sóng công suất cao ($+19.5\text{dBm}$).

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

Có. Nhờ thiết kế tách biệt phần cứng, vi điều khiển ATmega2560 vẫn duy trì toàn bộ khả năng xử lý tại chỗ: mở khóa cửa bằng bàn phím ma trận, bật tắt thiết bị bằng nút cảm ứng TTP224 và tự động kích hoạt cảnh báo cháy qua cảm biến lửa.

3. Giao thức UART giữa hai vi điều khiển có xảy ra nghẽn dữ liệu không?

Giao thức được cấu hình ở tốc độ $9600\text{ bps}$ với khung truyền chuẩn 8-N-1 (8 bit dữ liệu, No Parity, 1 Stop bit). Kích thước gói tin điều khiển chỉ từ $1 - 4\text{ bytes}$ kết hợp với bộ đệm vòng (Ring Buffer) trên thanh ghi UART phần cứng nên hoàn toàn không xảy ra tình trạng tràn bộ đệm (Buffer Overflow).

4. Hệ thống bảo mật khóa cửa như thế nào?

Mật mã được lưu trữ an toàn trong bộ nhớ tĩnh không bay hơi (EEPROM 4KB) của vi điều khiển ATmega2560, không bị mất khi cúp điện. Khi có hành vi nhập sai mật mã liên tiếp, còi cảnh báo sẽ kích hoạt và gửi thông báo khẩn cấp lên Firebase.

5. Chi phí triển khai và thời gian thu hồi vốn (ROI) là bao lâu?

Chi phí linh kiện trọn gói để gia công mô hình là khoảng $690.000\text{ VNĐ}$. Với mức tiết kiệm năng lượng điện trung bình $20%$ cho một phòng học/văn phòng làm việc, thời gian hoàn vốn đầu tư ước tính chỉ từ $6 - 9\text{ tháng}$.


Kết luận

Đồ án tốt nghiệp "Thiết kế và thi công hệ thống nhà thông minh" của sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM đã hoàn thành xuất sắc tất cả các mục tiêu kỹ thuật đề ra. Đề tài không chỉ tạo ra một sản phẩm phần cứng hoàn chỉnh với bo mạch PCB 2 lớp được thi công tinh gọn, hoạt động ổn định, mà còn làm chủ công nghệ điều khiển đa phương thức qua ứng dụng Android, giọng nói và đám mây Firebase.

Thành công của đề tài là minh chứng rõ nét cho tính khả thi của việc ứng dụng các giải pháp phần cứng mã nguồn mở kết hợp công nghệ IoT hiện đại vào bài toán tự động hóa đời sống với chi phí tối ưu, tạo tiền đề vững chắc cho việc thương mại hóa và phát triển các sản phẩm Smart Building trong tương lai.