Giới thiệu dự án
Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 đã thúc đẩy mạnh mẽ quá trình chuyển đổi số trong đời sống thường nhật, trong đó Internet vạn vật (Internet of Things - IoT) và giải pháp Nhà thông minh (Smart Home) giữ vai trò then chốt. Theo các báo cáo thị trường công nghệ, nhu cầu tự động hóa và an ninh nhà ở đang tăng trưởng với tốc độ trên 25%/năm. Tuy nhiên, rào cản lớn nhất đối với người tiêu dùng phổ thông tại Việt Nam là chi phí triển khai: các giải pháp nhập khẩu hoàn chỉnh từ Âu - Mỹ cho nhà phố hoặc biệt thự dao động từ 1 đến 2 tỷ đồng, trong khi các gói thương mại nội địa vẫn ở mức 30 đến 150 triệu đồng.
Đồ án tốt nghiệp "Thiết kế, thi công mô hình hệ thống điều khiển thiết bị điện và giám sát nhà" của tác giả Nguyễn Ngọc Lực (chuyên ngành Kỹ thuật Điện tử Truyền thông, Khoa Điện - Điện tử, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh; hướng dẫn bởi PGS. Nguyễn Thanh Hải) giải quyết triệt để bài toán tối ưu chi phí nhưng vẫn đảm bảo tính đa nhiệm, khả năng vận hành thời gian thực và an toàn năng lượng.
+-----------------------------------------------------------------------------------+
| KIẾN TRÚC TỔNG THỂ HỆ THỐNG |
+-----------------------------------------------------------------------------------+
| [Cảm biến: DHT11, MQ-2, PIR] ---> [Arduino Mega 2560] <---> [SIM900A (GSM/SMS)] |
| ^ |
| UART | (Giao tiếp dữ liệu kép) |
| v |
| [Relay + Cách ly Opto PC817] <--- [ESP8266 NodeMCU] <---> [Cloud Server (PHP)] |
| | ^ |
| v | HTTP GET |
| [Tải 220VAC (Đèn)] [App Android / Web Browser] |
| |
| [Bộ nguồn kép: Adapter 6VDC + Relay Switch Auto + Pin Ắc quy dự phòng 6V] |
+-----------------------------------------------------------------------------------+
Mục tiêu đề tài
- Thiết kế và chế tạo phần cứng điều khiển nhúng: Tích hợp bộ điều khiển trung tâm Arduino Mega 2560 và vi điều khiển tích hợp Wi-Fi ESP8266 NodeMCU nhằm điều khiển độc lập 4 kênh tải điện xoay chiều (220VAC/5W).
- Xây dựng hệ thống giám sát môi trường và an ninh đa tầng: Thu thập dữ liệu nhiệt độ, độ ẩm qua cảm biến DHT11; phát hiện rò rỉ khí gas/khói qua cảm biến MQ-2; giám sát xâm nhập trái phép qua cảm biến hồng ngoại thụ động (PIR HC-SR501).
- Phát triển giao diện điều khiển đa nền tảng: Lập trình Web Server trung gian bằng PHP/HTML kết nối qua giao thức HTTP GET và xây dựng ứng dụng di động Android chuyên dụng qua Android Studio.
- Cơ chế cảnh báo khẩn cấp độc lập: Tích hợp module GSM SIM900A gửi tin nhắn SMS tức thời khi phát hiện sự cố cháy nổ, trộm đột nhập hoặc mất điện lưới.
- Cơ chế dự phòng nguồn điện tự động (UPS): Thiết kế mạch chuyển nguồn tự động sang ắc quy 6VDC khi mất điện 220VAC, kết hợp lưu trạng thái vào bộ nhớ EEPROM để cảnh báo người dùng.
Phạm vi và giới hạn hệ thống
- Điều khiển tải thực tế: 4 kênh đèn xoay chiều 220VAC, công suất mỗi tải thử nghiệm 5W.
- Khoảng cách quét cảm biến PIR: Hiệu chỉnh tối đa 5m, góc quét 120 độ.
- Phạm vi đo DHT11: 0°C đến 50°C (sai số ±2°C), độ ẩm 20% - 90% RH (sai số ±5% RH).
- Bảo mật: Hoạt động trên giao thức HTTP tiêu chuẩn, xác thực người dùng cấp ứng dụng Web.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
Giải pháp Smart Home Âu - Mỹ |
Giải pháp thương mại Việt Nam |
Mô hình đề tài nghiên cứu |
| Chi phí đầu tư |
Rất cao (1.000.000.000 - 2.000.000.000 VNĐ) |
Trung bình - Cao (30.000.000 - 150.000.000 VNĐ) |
Cực thấp (< 1.500.000 VNĐ cho phần cứng) |
| Kiến trúc mạng |
Đóng (Closed/Proprietary Protocols: Zigbee Pro, Z-Wave Plus) |
Bán mở / Cloud Server riêng (Tuya, Homegy) |
Nguồn mở hoàn toàn (Arduino, ESP8266, PHP Server) |
| Kênh cảnh báo sự cố |
Internet Push Notification, Gọi nội bộ |
Push App, Email, SMS (tùy gói dịch vụ) |
Đa kênh: Còi hú tại chỗ (Buzzer) + Web/App + SMS trực tiếp qua SIM900A |
| Cơ chế khi mất điện lưới |
Cần bộ lưu điện trung tâm UPS công suất lớn |
Ngừng hoạt động hoặc dùng pin khẩn cấp ngắn hạn |
Mạch chuyển tự động sang Ắc quy 6V + Lưu EEPROM + Nhắn tin báo mất điện |
| Khả năng tùy biến |
Khó can thiệp sâu vào tầng logic firmware |
Phụ thuộc vào hãng phát triển |
Tự do chỉnh sửa mã nguồn, mở rộng số chân I/O |
Phân tích yêu cầu chức năng (MoSCoW)
- Must have (Bắt buộc): Điều khiển Bật/Tắt 4 thiết bị qua Web/Android; đọc chính xác thông số DHT11/MQ-2/PIR; phát còi hú và gửi SMS cảnh báo rò rỉ gas, nhiệt độ vượt ngưỡng, trộm; tự động chuyển nguồn khi mất điện lưới.
- Should have (Nên có): Hiển thị trực quan thông số và trạng thái thiết bị lên màn hình LCD 16x2; gửi SMS phản hồi xác nhận trạng thái kích hoạt chế độ chống trộm.
- Could have (Có thể mở rộng): Tích hợp camera giám sát luồng video thời gian thực; liên kết relay điều khiển van gas điện từ ngắt tự động.
- Won't have (Chưa thực hiện): Mã hóa đầu cuối TLS/SSL đa tầng cho luồng truyền tải HTTP.
Thiết kế hệ thống
+-----------------------------------------------------------------------------+
| SƠ ĐỒ NGUYÊN LÝ KHỐI ĐIỀU KHIỂN |
+-----------------------------------------------------------------------------+
| |
| +---------------------+ +-------------------------+ |
| | ESP8266 NodeMCU | UART (Serial)| Arduino Mega 2560 | |
| | (Wi-Fi SoC 802.11) |<------------->| (ATmega2560 @ 16MHz) | |
| | Chân D2,D5,D6,D7 | Tx0/Rx0 | | |
| +----------+----------+ +----+------+--------+----+ |
| | | | | |
| v v v v |
| [Mạch Kích Relay] [MQ-2] [DHT11] [HC-SR501] |
| (Opto PC817 + 2SC1815) (A0) (Pin 2) (A1) |
| | |
| v |
| [4 Tải Đèn 220V] [SIM900A] [LCD 16x2] [Buzzer]|
| (Tx1/Rx1) (4-bit Bus) (Pin 21)|
+-----------------------------------------------------------------------------+
Technology Stack & Linh kiện phần cứng
- Vi xử lý trung tâm 1: ATmega2560 (Arduino Mega 2560), 16MHz Crystal, 256KB Flash, 8KB SRAM, 4KB EEPROM. Đảm nhiệm đọc cảm biến, kích hoạt ngắt, điều khiển LCD và tập lệnh AT module SIM900A.
- Vi xử lý trung tâm 2 (Wi-Fi SoC): ESP8266EX (NodeMCU v1.0 / ESP-12E), 4MB Flash, hỗ trợ chuẩn 802.11 b/g/n băng tần 2.4GHz. Đảm nhiệm kết nối TCP/IP, gửi nhận HTTP Request và xuất tín hiệu kích relay.
- Module viễn thông: SIMCOM SIM900A Dual-band 900/1800MHz, giao tiếp UART (tốc độ Baud: 9600 bps).
- Cảm biến:
- DHT11: Đo nhiệt độ/độ ẩm qua chuẩn giao tiếp Single-Wire.
- MQ-2: Cảm biến khí cháy/khói dựa trên vật liệu bán dẫn $SnO_2$.
- PIR HC-SR501: Cảm biến chuyển động thân nhiệt hồng ngoại thụ động.
- Hiển thị & Cách ly công suất: Màn hình LCD 16x2 ký tự; Optocoupler PC817 (cách ly quang điện thế cao) kết hợp transistor NPN 2SC1815 và diode dập xung ngược 1N4003.
- Phần mềm: Android Studio (Java, Android SDK), PHP 5.6/7.x, HTML/CSS, Arduino IDE v1.8.x.
Thiết kế mạch bảo vệ và kích Relay
Để đảm bảo an toàn tuyệt đối cho vi điều khiển khi đóng ngắt các tải cảm ứng hoặc tải điện xoay chiều $220\text{VAC}$, hệ thống áp dụng mạch cách ly quang thông qua Opto PC817.
NodeMCU (GPIO) ---> [R1: 220 Ohm] ---> (Anode Opto PC817 Cathode) ---> GND
|
v (Quang điện)
VCC (5V) ---> [Cuộn dây Relay + Diode 1N4003 song song ngược]
|
+---> Collector (PC817) ---> Base Transistor (2SC1815)
|
Emitter ---> GND
-
Tính toán điện trở $R_1$ cho Opto PC817:
Khi tín hiệu điều khiển kích ở mức $0\text{V}$, điện áp sụt trên LED phát quang nội bộ của Opto là $V_{LED} \approx 2\text{V}$. Dòng phân cực mong muốn $I_F = 5\text{mA} \div 15\text{mA}$.
$$R_{1(\max)} = \frac{V_{CC} - V_{LED}}{I_{F(\min)}} = \frac{5\text{V} - 2\text{V}}{5\text{mA}} = 600,\Omega$$
$$R_{1(\min)} = \frac{V_{CC} - V_{LED}}{I_{F(\max)}} = \frac{5\text{V} - 2\text{V}}{15\text{mA}} = 200,\Omega$$
$\Rightarrow$ Chuẩn hóa linh kiện: Chọn điện trở $R_1 = 220,\Omega$.
-
Tính toán điện trở cực Base $R_2$ cho Transistor kích Relay:
Điện trở cuộn hút relay $R_{RELAY} = 69,\Omega$. Dòng điện Collector yêu cầu để đóng tiếp điểm: $I_C = \frac{5\text{V}}{69,\Omega} \approx 72.46\text{mA}$. Với hệ số khuếch đại bão hòa $\beta \approx 70$, dòng kích $I_B \ge \frac{I_C}{\beta} = \frac{72.46}{70} \approx 1.03\text{mA}$. Thiết kế chọn dòng định mức an toàn $I_B = 5\text{mA}$:
$$R_2 = \frac{V_{CC} - V_{BE}}{I_B} = \frac{5\text{V} - 0.7\text{V}}{5\text{mA}} = 860,\Omega \quad \Rightarrow \text{Chọn điện trở chuẩn } 1\text{k}\Omega$$
Thiết kế mạch nguồn giám sát mất điện lưới và UPS
Adapter 6VDC ---> [Tiếp điểm thường mở Relay 1] ---+---> LM7805 (5VDC) ---> NodeMCU, SIM900A, Relays
Ắc quy 6VDC ---> [Tiếp điểm thường đóng Relay 1] -+---> Arduino Vin (6VDC)
|
(Cuộn dây Relay) <--- Nguồn Adapter 6VDC
|
v
[Mạch phân áp R1=470, R2=220] ---> Chân Digital Pin 22 (Arduino)
- Nguyên lý chuyển mạch tự động: Khi nguồn Adapter 6VDC (chuyển đổi từ điện lưới 220VAC) có điện, cuộn hút Relay đóng mạch đưa nguồn Adapter vào hệ thống. Khi mất điện lưới, Relay tự ngắt về tiếp điểm thường đóng, kết nối trực tiếp nguồn ắc quy dự phòng 6VDC mà không làm gián đoạn hệ thống.
- Tính toán cầu phân áp đọc tín hiệu mất nguồn:
$$V_{out} = V_{in} \times \frac{R_1}{R_1 + R_2} = 6\text{V} \times \frac{470,\Omega}{470,\Omega + 220,\Omega} = 4.08\text{V}$$
Mức điện áp $4.08\text{V}$ được cấp vào chân Digital Pin 22 của Arduino Mega 2560, đảm bảo nhận diện chính xác mức logic '1' ($>3.0\text{V}$) khi có điện và mức logic '0' ($0\text{V}$) khi mất điện.
Cấu trúc API và thiết kế Web Server
+------------------+ HTTP GET load.php?ND=xx&DA=yy +------------------+
| ESP8266 NodeMCU | --------------------------------------------> | PHP Web Server |
| | <-------------------------------------------- | |
+------------------+ Response Payload: String ("0101", ...) +--------+---------+
|
Ghi/Đọc file |
v
+------------------+ HTTP GET / POST (dkden.php?id=x) +------------------+
| Android App | --------------------------------------------> | Data Flatfiles |
| (MainActivity) | <-------------------------------------------- | (ND.php, den.php,|
+------------------+ Lấy trạng thái hiển thị UI | TT.php) |
+------------------+
Hệ thống triển khai cơ chế Web Server phi trạng thái (Stateless), sử dụng kiến trúc lưu trữ dữ liệu dạng tệp phẳng (Flat-file data storage) giúp giảm tải xử lý I/O tối đa cho server hosting miễn phí:
index.php: Giao diện Dashboard Web cho người dùng điều khiển và theo dõi trạng thái môi trường.
load.php: Endpoint trung gian giao tiếp với ESP8266. Nhận giá trị cảm biến gửi lên từ NodeMCU qua phương thức GET và ghi vào ND.php, đồng thời đọc trạng thái đèn từ các tệp den0.php đến den3.php để phản hồi về NodeMCU.
dkden.php: Endpoint tiếp nhận thao tác điều khiển từ ứng dụng Android, xử lý ghi trạng thái xuống các tệp logic tương ứng.
Implementation và kết quả
Quy trình phát triển phần mềm và thuật toán xử lý
1. Xử lý phía Server (PHP API - Endpoint load.php)
File load.php chịu trách nhiệm phân tích tham số truy vấn HTTP, lưu vết dữ liệu nhiệt độ - độ ẩm và trả về chuỗi điều khiển thiết bị:
<?php
// load.php: Tiếp nhận dữ liệu cảm biến và phản hồi trạng thái relay
if (isset($_GET['ND']) && isset($_GET['DA'])) {
$nhietdo = $_GET['ND'];
$doam = $_GET['DA'];
// Ghi dữ liệu nhiệt độ và độ ẩm vào file lưu trữ ND.php
$fp = fopen("ND.php", "w");
fwrite($fp, "Nhiệt độ: " . $nhietdo . "°C | Độ ẩm: " . $doam . "%");
fclose($fp);
}
// Đọc trạng thái hiện hành của 4 kênh đèn để gửi ngược về NodeMCU
$st0 = trim(file_get_contents("den0.php"));
$st1 = trim(file_get_contents("den1.php"));
$st2 = trim(file_get_contents("den2.php"));
$st3 = trim(file_get_contents("den3.php"));
// Định dạng chuỗi phản hồi (Payload): ví dụ "1010"
echo $st0 . $st1 . $st2 . $st3;
?>
2. Xử lý phía Gateway (ESP8266 NodeMCU)
Vi điều khiển NodeMCU chạy vòng lặp tuần hoàn quét mạng, gửi dữ liệu đo được từ Arduino lên Web Server và nhận lệnh điều khiển tải:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "SmartHome_WiFi";
const char* password = "MatKhauWiFi123";
const char* host = "http://my-smarthome-domain.vn/load.php";
void setup() {
Serial.begin(9600); // Giao tiếp UART với Arduino Mega
pinMode(D2, OUTPUT); // Relay 0
pinMode(D5, OUTPUT); // Relay 1
pinMode(D6, OUTPUT); // Relay 2
pinMode(D7, OUTPUT); // Relay 3
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
// Đọc dữ liệu cảm biến từ Arduino Mega gửi qua UART
if (Serial.available()) {
String sensorData = Serial.readStringUntil('\n'); // Định dạng: "ND=31&DA=75"
HTTPClient http;
String url = String(host) + "?" + sensorData;
http.begin(url);
int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString(); // Chuỗi phản hồi: "1001"
if (payload.length() >= 4) {
digitalWrite(D2, payload[0] == '1' ? LOW : HIGH); // Mức LOW kích Relay
digitalWrite(D5, payload[1] == '1' ? LOW : HIGH);
digitalWrite(D6, payload[2] == '1' ? LOW : HIGH);
digitalWrite(D7, payload[3] == '1' ? LOW : HIGH);
// Gửi chuỗi trạng thái về Arduino để hiển thị lên LCD
Serial.print("ST:" + payload + "\n");
}
}
http.end();
}
}
delay(1000); // Chu kỳ cập nhật 1 giây
}
3. Thuật toán kiểm tra mất điện và cảnh báo GSM (Arduino Mega 2560)
Arduino định kỳ quét chân tín hiệu POWER_CHECK_PIN. Trạng thái nguồn được đối chiếu với ô nhớ trong EEPROM nhằm tránh gửi SMS trùng lặp:
#include <EEPROM.h>
#include <SoftwareSerial.h>
#define POWER_CHECK_PIN 22
#define EEPROM_ADDR_POWER 0
#define EEPROM_ADDR_SECURITY 1
void kiemTraMatDien() {
int currentPowerState = digitalRead(POWER_CHECK_PIN);
byte savedPowerState = EEPROM.read(EEPROM_ADDR_POWER);
// Phát hiện sự kiện mất điện (Từ mức HIGH '1' chuyển sang LOW '0')
if (currentPowerState == LOW && savedPowerState == 1) {
guiTinNhanSMS("090xxxxxxx", "CANH BAO: He thong bi cup dien luoi 220VAC! Dang chay Acqui.");
EEPROM.write(EEPROM_ADDR_POWER, 0);
}
// Phát hiện sự kiện có điện trở lại (Từ mức LOW '0' chuyển sang HIGH '1')
else if (currentPowerState == HIGH && savedPowerState == 0) {
guiTinNhanSMS("090xxxxxxx", "THONG BAO: Da co dien luoi 220VAC tro lai.");
EEPROM.write(EEPROM_ADDR_POWER, 1);
}
}
void guiTinNhanSMS(String sdt, String noiDung) {
Serial1.println("AT+CMGF=1"); // Cấu hình SMS chế độ Text
delay(200);
Serial1.println("AT+CMGS=\"" + sdt + "\"");
delay(200);
Serial1.print(noiDung);
delay(200);
Serial1.write(26); // Ký tự Ctrl+Z để gửi tin
delay(3000);
}
Kết quả kiểm nghiệm và độ trễ vận hành
Sau quá trình thi công và thử nghiệm thực tế tại phòng Lab Khoa Điện - Điện tử, hệ thống đạt được các chỉ số vận hành chi tiết:
+-----------------------------------------------------------------------------+
| ĐỘ TRỄ ĐÁP ỨNG THỰC TẾ CỦA HỆ THỐNG |
+-----------------------------------------------------------------------------+
| Thao tác điều khiển trên App Android (Wi-Fi Local): [###] 0.45s |
| Thao tác điều khiển trên Web Dashboard (3G/4G Mobile): [#####] 1.15s |
| Phát hiện khí Gas (MQ-2) -> Kích còi Buzzer: [##] 0.20s |
| Phát hiện Gas / Đột nhập -> Nhận tin nhắn SMS: [################] 4.2s
| Mất điện 220V -> Chuyển nguồn Ắc quy (UPS Switching): [] 0.015s (<20ms) |
+-----------------------------------------------------------------------------+
- Hiệu năng truyền thông & điều khiển:
- Thời gian trễ trung bình khi điều khiển bật/tắt thiết bị qua Web Hosting: $1.15\text{s}$ (đường truyền 3G/4G) và $0.45\text{s}$ (kết nối mạng Wi-Fi nội bộ).
- Tần suất cập nhật thông số môi trường (Nhiệt độ/Độ ẩm) lên Dashboard: $1.0\text{s/lần}$, đảm bảo hiển thị tức thời mà không gây nghẽn băng thông HTTP Server.
- Độ nhạy an ninh và an toàn:
- Cảm biến khí gas MQ-2 phản hồi chính xác khi nồng độ gas/khói tăng trong khoảng thời gian $\le 8\text{s}$; còi buzzer kích hoạt tức thì ($<0.2\text{s}$).
- Module GSM SIM900A gửi tin nhắn cảnh báo thành công đến số điện thoại chỉ định trong vòng $3.5\text{s} \div 5.0\text{s}$ kể từ thời điểm phát sinh sự cố.
- Cảm biến PIR HC-SR501 nhận diện chuyển động cơ thể người chuẩn xác trong tầm xa $5\text{m}$, góc quét $120^\circ$.
- Cơ chế chuyển đổi năng lượng:
- Thời gian chuyển đổi tiếp điểm relay khi mất điện lưới: $\approx 15\text{ms}$ (nhỏ hơn ngưỡng duy trì tụ lọc của board mạch), giúp vi điều khiển không bị sập nguồn hoặc reset đột ngột.
- Nguồn ắc quy $6\text{VDC}/4.5\text{Ah}$ đảm bảo duy trì toàn bộ hệ thống cảm biến và liên lạc GSM hoạt động liên tục trên 12 giờ khi mất điện hoàn toàn.
Đổi mới và đóng góp
- Kiến trúc phân tầng xử lý kép (Dual-MCU Architecture): Khắc phục triệt để điểm yếu treo hệ thống (blocking) khi vi điều khiển đơn phải xử lý song song các tác vụ truyền thông TCP/IP nặng và quét tín hiệu cảm biến thời gian thực. Bằng cách tách biệt: ESP8266 đảm trách truyền thông mạng, còn ATmega2560 xử lý chuyên sâu tín hiệu an ninh, ngắt ngoại vi và giao tiếp GSM.
- Cơ chế giám sát mất nguồn tích hợp cảnh báo SMS: Đa phần các hệ thống Smart Home giá rẻ bị tê liệt hoàn toàn khi kẻ gian cố tình cắt nguồn điện lưới 220VAC. Giải pháp kết hợp giữa mạch phân áp, Relay UPS và bộ nhớ EEPROM trong đồ án đảm bảo hệ thống duy trì hoạt động và gửi tin nhắn cảnh báo mất điện ngay lập tức.
- Mạch đệm cách ly kép bảo vệ MCU: Việc sử dụng kết hợp Optocoupler PC817 và diode triệt tiêu xung ngược 1N4003 triệt tiêu hoàn toàn hiện tượng xung điện áp cảm ứng từ cuộn hút relay đánh ngược về vi điều khiển, giúp phần cứng hoạt động bền bỉ, không bị nhiễu loạn tín hiệu logic.
- Tối ưu chi phí sản xuất vượt trội: Toàn bộ chi phí linh kiện phần cứng để hiện thực hóa mô hình chỉ dưới 1.500.000 VNĐ, tiết kiệm hơn 95% so với các giải pháp thương mại nhập ngoại nhưng vẫn đáp ứng đầy đủ các tính năng an ninh trọng yếu.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng
- Căn hộ chung cư và nhà phố: Quản lý tự động hệ thống chiếu sáng từ xa, giám sát nguy cơ rò rỉ khí gas tại nhà bếp và cảnh báo cháy sớm khi nhiệt độ phòng tăng bất thường.
- Nhà xưởng, kho bãi nhỏ: Giám sát an ninh, phát hiện đột nhập ngoài giờ làm việc; báo động qua còi công suất lớn kết hợp gửi SMS khẩn cấp tới lực lượng bảo vệ.
- Trang trại nông nghiệp hoặc phòng máy chủ (Server Room): Giám sát liên tục ngưỡng nhiệt độ, độ ẩm; cảnh báo sự cố mất điện lưới để kịp thời kích hoạt máy phát điện dự phòng.
+-----------------------------------------------------------------------------+
| HƯỚNG DẪN TRIỂN KHAI PHẦN CỨNG |
+-----------------------------------------------------------------------------+
| 1. Chuẩn bị: Arduino Mega, NodeMCU, SIM900A, DHT11, MQ-2, PIR, 4 Relays. |
| 2. Mạch in (PCB): Gia công PCB 2 lớp theo layout đồ án; hàn linh kiện. |
| 3. Cấp nguồn: Nối Adapter 6VDC vào mạch chuyển nguồn tự động + Ắc quy 6V. |
| 4. Nạp Firmware: |
| - Nạp code NodeMCU qua cổng Micro USB (ESP8266 Core trên Arduino IDE). |
| - Nạp code Arduino Mega 2560 qua cổng USB Type-B. |
| 5. Triển khai Server: Tải các file PHP (index, load, den, ND) lên Webhost. |
| 6. Cài đặt App: Cài đặt tệp APK lên thiết bị Android (Yêu cầu Android 5.0+) |
+-----------------------------------------------------------------------------+
Hướng dẫn khắc phục sự cố (Troubleshooting Guide)
- NodeMCU không kết nối được Web Server: Kiểm tra lại SSID/Password của Wi-Fi; kiểm tra quyền ghi tệp (chmod 777) của thư mục chứa script PHP trên Web Hosting; quan sát LED báo trạng thái tại chân
D0.
- Module SIM900A không gửi được tin nhắn: Đảm bảo nguồn cấp cho SIM900A có khả năng cấp dòng đỉnh tối thiểu $2\text{A}$ (gắn thêm tụ hóa $1000\mu\text{F}$ song song với đường nguồn 5V); kiểm tra tài khoản và sóng mạng viễn thông của thẻ SIM.
- Relay đóng ngắt không ổn định: Kiểm tra điện áp phân cực tại chân Base transistor 2SC1815 (đảm bảo đạt $>0.7\text{V}$ khi kích); kiểm tra tiếp xúc của diode chống xung 1N4003.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Giao thức truyền tải HTTP GET truyền dữ liệu dưới dạng văn bản thuần (Plaintext), chưa mã hóa TLS/HTTPS nên tiềm ẩn nguy cơ bị nghe lén (Sniffing) trong môi trường mạng công cộng.
- Module GSM SIM900A hoạt động trên nền tảng mạng di động 2G (GSM), vốn đang trong lộ trình cắt sóng tại nhiều quốc gia và nhà mạng viễn thông.
- Cảm biến DHT11 có dải đo và độ chính xác ở mức phổ thông, tần số lấy mẫu giới hạn ($1\text{Hz}$).
Hướng phát triển nâng cao
- Nâng cấp giao thức truyền thông: Chuyển đổi từ giao thức HTTP Polling sang kiến trúc MQTT (Message Queuing Telemetry Transport) kết hợp giao thức WebSocket nhằm giảm tải băng thông mạng, tối ưu độ trễ xuống dưới $100\text{ms}$ và hỗ trợ mã hóa SSL/TLS.
- Hiện đại hóa vi điều khiển và mạng di động: Tích hợp chip vi điều khiển thế hệ mới ESP32 (tích hợp Wi-Fi + Bluetooth BLE) và nâng cấp module truyền thông sang chuẩn 4G LTE Cat-1 (như SIM7600 hoặc A7670C) nhằm đảm bảo hoạt động lâu dài.
- Nâng cấp độ chính xác cảm biến: Thay thế DHT11 bằng DHT22 hoặc cảm biến công nghiệp SHT30/SHT35 (độ sai số nhiệt độ $\pm 0.2^\circ\text{C}$, độ ẩm $\pm 1.5%$ RH).
- Tích hợp trợ lý ảo và nhà thông minh tiêu chuẩn: Mở rộng tích hợp hệ sinh thái Home Assistant, Apple HomeKit hoặc điều khiển qua giọng nói với Google Assistant.
Đối tượng hưởng lợi
- Sinh viên và người tự học kỹ thuật (Makers/Students): Cung cấp tài liệu tham khảo chi tiết từ tính toán mạch công suất, mạch UPS tự động đến mô hình giao tiếp đa vi điều khiển qua UART.
- Kỹ sư phát triển hệ thống nhúng (Embedded Developers): Cung cấp các đoạn code mẫu tối ưu về quản lý bộ nhớ EEPROM, cấu hình tập lệnh AT module GSM và quy trình đóng gói mạch in công nghiệp.
- Hộ gia đình và người dùng có ngân sách hạn chế: Có thể tự lắp ráp hoặc triển khai hệ thống an ninh - tự động hóa nhà ở hoàn chỉnh với chi phí cực thấp, dễ bảo trì và làm chủ công nghệ.
- Nhà nghiên cứu giải pháp IoT: Cung cấp dữ liệu thực nghiệm về độ trễ, hiệu quả năng lượng của mô hình lai giữa mạng không dây cục bộ (Wi-Fi) và mạng viễn thông diện rộng (GSM).
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để triển khai và chạy hệ thống là gì?
Hệ thống yêu cầu nguồn cấp lưới $220\text{VAC}$ (qua Adapter $6\text{VDC} - 2\text{A}$), 01 bình ắc quy dự phòng $6\text{V}/4.5\text{Ah}$, kết nối mạng Wi-Fi băng tần $2.4\text{GHz}$, một tài khoản Web Hosting hỗ trợ PHP 5.6+ và thẻ SIM di động còn hoạt động dịch vụ SMS.
2. Khi mất mạng Wi-Fi/Internet thì các tính năng an ninh có hoạt động không?
Có. Hệ thống an ninh hoạt động trên cơ chế đa tầng độc lập. Khi mất mạng Wi-Fi/Internet, việc điều khiển qua Web/App tạm thời gián đoạn, nhưng hệ thống vi điều khiển trung tâm Arduino Mega vẫn liên tục quét cảm biến, kích hoạt còi báo động tại chỗ và gửi SMS khẩn cấp qua sóng di động GSM/SIM900A.
3. Tại sao hệ thống cần sử dụng cả hai vi điều khiển (Arduino Mega 2560 và ESP8266)?
ESP8266 chuyên biệt xử lý các giao thức mạng phức tạp (Wi-Fi, TCP/IP, HTTP) nhưng có hạn chế về số lượng chân I/O và ngắt phần cứng. Arduino Mega 2560 sở hữu 54 chân Digital, 16 chân Analog, 4 cổng UART phần cứng và 6 chân ngắt ngoài, đảm bảo xử lý đồng thời nhiều cảm biến và module SIM mà không bị trễ nhịp quét dữ liệu.
4. Mạch cách ly Opto PC817 có vai trò sống còn như thế nào trong mạch điều khiển tải?
Opto PC817 cách ly hoàn toàn phần mạch điều khiển điện áp thấp ($3.3\text{V}/5\text{VDC}$) với phần mạch động lực mang điện áp cao xoay chiều ($220\text{VAC}$). Khi relay đóng cắt tạo ra tia lửa điện hoặc xung áp cảm ứng ngược, Opto sẽ ngăn chặn triệt để dòng rò đánh thủng chân GPIO của vi điều khiển.
5. Chi phí duy trì và vận hành hệ thống hàng tháng là bao nhiêu?
Hệ thống sử dụng nền tảng Web Hosting dung lượng thấp (có thể dùng gói Hosting miễn phí hoặc gói cơ bản ~20.000 VNĐ/tháng), SIM điện thoại chỉ tiêu tốn cước phí gửi tin nhắn khi có cảnh báo khẩn cấp phát sinh (trung bình <10.000 VNĐ/tháng). Công suất tiêu thụ của mạch ở chế độ nghỉ chỉ khoảng $3\text{W} \div 5\text{W}$, tiết kiệm điện năng tối đa.
Kết luận
Đồ án tốt nghiệp "Thiết kế, thi công mô hình hệ thống điều khiển thiết bị điện và giám sát nhà" của tác giả Nguyễn Ngọc Lực đã chứng minh tính khả thi vượt trội của một giải pháp Smart Home "Make in Vietnam" có giá thành cạnh tranh, độ tin cậy cao và tính thực tiễn rõ rệt. Bằng việc kết hợp hài hòa giữa bộ điều khiển mạnh mẽ ATmega2560, chip Wi-Fi ESP8266, module viễn thông SIM900A cùng mạch nguồn tự động chuyển đổi thông minh, đề tài đã giải quyết trọn vẹn cả 3 bài toán: Điều khiển tiện ích, Giám sát môi trường và Bảo vệ an ninh đa tầng. Mô hình không chỉ là tài liệu học thuật giá trị cho sinh viên ngành Điện tử - Viễn thông mà còn mở ra tiềm năng thương mại hóa rộng rãi thành các sản phẩm an ninh nhà ở bình dân trong tương lai.