Giới thiệu dự án
Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 và Internet vạn vật (IoT - Internet of Things) đang định hình lại toàn bộ phương thức quản lý, vận hành trong các tòa nhà thông minh (Smart Home), nông nghiệp công nghệ cao và công nghiệp tự động hóa. Theo các báo cáo thị trường gần đây, quy mô thị trường IoT toàn cầu duy trì tốc độ tăng trưởng kép hàng năm (CAGR) trên 20%, với hàng chục tỷ thiết bị kết nối. Tuy nhiên, các hệ thống điều khiển và giám sát từ xa truyền thống phần lớn chỉ dựa trên dữ liệu số đơn thuần từ các cảm biến vật lý (nhiệt độ, độ ẩm, công tắc hành trình).
Việc thiếu hụt kênh kiểm chứng trực quan dẫn đến nhiều rủi ro nghiêm trọng trong vận hành thực tế:
- Điểm mù dữ liệu (Telemetry Blind Spots): Cảm biến chỉ trả về các đại lượng đo lường rời rạc, không phản ánh được hiện trạng cơ học hoặc các sự cố bất thường tại hiện trường (ví dụ: relay đã đóng điện nhưng động cơ kẹt cơ khí, van xả nước bị rò rỉ hoặc tải công suất gặp sự cố cháy nổ).
- Cảnh báo giả và thiếu xác thực (False Alarms & Lack of Verification): Hiện tượng nhiễu tín hiệu cảm biến môi trường tạo ra cảnh báo sai lệch, khiến người quản trị phải trực tiếp đến hiện trường kiểm tra, làm mất đi tính tự động hóa và tiện nghi vốn có của IoT.
- Sự phân mảnh kiến trúc hệ thống: Các giải pháp camera giám sát an ninh (CCTV) và thiết bị điều khiển thông minh thường hoạt động trên hai nền tảng phần mềm tách biệt, không có khả năng đồng bộ trạng thái theo thời gian thực (real-time sync) trên cùng một giao diện điều khiển duy nhất.
Đồ án tốt nghiệp "Ứng dụng IoT trong giám sát và điều khiển qua hình ảnh" được nghiên cứu và hiện thực hóa nhằm giải quyết triệt để các hạn chế trên. Đề tài xây dựng một hệ thống phần cứng và phần mềm nhúng hoàn chỉnh, tích hợp trực tiếp khả năng thu thập dữ liệu cảm biến, đóng cắt thiết bị công suất cao, đồng thời chụp ảnh và quay video chất lượng cao trả về máy chủ đám mây theo yêu cầu (on-demand visual feedback).
+-------------------------------------------------------------------------+
| KIẾN TRÚC TỔNG QUAN HỆ THỐNG |
+-------------------------------------------------------------------------+
| [Cảm biến DHT11] \ |
| [Nút nhấn vật lý] -> [ATmega328P] <---(UART)---> [ESP8266-12F] |
| [Màn hình OLED] / | | |
| [Cách ly PC817] (WiFi 802.11 b/g/n) |
| | | |
| [Relay 10A / 220V] v |
| [GOOGLE FIREBASE] |
| - Realtime DB (JSON) |
| [Raspberry Pi 3 B+] <---(CSI Bus)---> [Camera] - Cloud Storage (H.264) |
| | ^ |
| +----------------(HTTPS / REST)-----------------+ |
| | |
| [ỨNG DỤNG SMARTPHONE] |
+-------------------------------------------------------------------------+
Mục tiêu cụ thể của dự án
- Thiết kế và thi công bo mạch điều khiển công nghiệp tích hợp vi điều khiển ATmega328P và SoC ESP8266-12F giao tiếp qua chuẩn UART tốc độ cao.
- Thiết kế khối công suất 2 kênh điều khiển relay cách ly quang học (Optocoupler), chịu tải dòng điện xoay chiều lên đến $10\text{A}/250\text{VAC}$.
- Tích hợp màn hình OLED SSD1306 hiển thị thông số vi khí hậu và trạng thái hoạt động cục bộ thông qua giao tiếp I2C.
- Xây dựng gateway hình ảnh sử dụng Raspberry Pi 3 Model B+ và module Camera CSI, cho phép chụp ảnh tĩnh và ghi video chuẩn H.264/MP4 ở độ phân giải Full HD 1080p.
- Triển khai kiến trúc cơ sở dữ liệu thời gian thực (Google Firebase Realtime Database) và lưu trữ tệp tin đa phương tiện (Firebase Cloud Storage), bảo mật SSL 2048-bit.
- Phát triển ứng dụng di động cho phép giám sát thông số môi trường, điều khiển thiết bị, cấu hình mạng thông minh (Captive Portal) và truy xuất dữ liệu hình ảnh/video trực tiếp.
Phạm vi và giới hạn của đề tài
- Phạm vi ứng dụng: Giám sát môi trường nhà ở dân dụng, phòng máy chủ mini, trạm bơm tưới tiêu nông nghiệp hoặc nhà xưởng quy mô vừa và nhỏ.
- Giới hạn kỹ thuật: Hệ thống truyền nhận media hoạt động theo cơ chế kích hoạt (on-demand snapshot/video clip) nhằm tối ưu hóa băng thông đường truyền và dung lượng lưu trữ đám mây, không hỗ trợ truyền phát trực tuyến liên tục (continuous streaming 24/7).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi tiến hành thiết kế kiến trúc hệ thống, nhóm nghiên cứu đã phân tích so sánh các giải pháp giám sát và điều khiển phổ biến trên thị trường:
| Tiêu chí kỹ thuật |
Hệ thống IoT cảm biến truyền thống (Blynk / Adafruit IO) |
Hệ thống Camera IP thương mại độc lập |
Giải pháp tích hợp IoT & Visual Feedback của đồ án |
| Dữ liệu giám sát |
Số liệu nhiệt độ, độ ẩm, log logic |
Video/Audio stream thời gian thực |
Kết hợp số liệu cảm biến + Ảnh/Video xác thực theo sự kiện |
| Khả năng điều khiển |
Đóng ngắt relay, PWM, GPIO |
Không có hoặc giới hạn cảnh báo |
Điều khiển tải 220V công suất lớn qua App và nút nhấn tay |
| Băng thông mạng tiêu thụ |
Rất thấp (< 10 KB/s) |
Rất cao (2 - 8 Mbps liên tục) |
Tối ưu hóa: Thấp ở trạng thái chờ, chỉ tải media khi yêu cầu |
| Chi phí lưu trữ Cloud |
Thấp |
Cao (Gói thuê bao Cloud NVR định kỳ) |
Miễn phí/Tối ưu nhờ cấu trúc Google Firebase JSON & Storage |
| Tính đồng bộ giao diện |
Tách rời nếu muốn xem camera |
Tách rời nếu muốn điều khiển thiết bị |
Tích hợp 100% trên cùng một ứng dụng di động duy nhất |
Yêu cầu người dùng được lượng hóa theo mô hình MoSCoW:
- Must-have (Bắt buộc): Bật/tắt 2 thiết bị điện 220V độc lập; đọc thông số nhiệt độ/độ ẩm chính xác; ghi hình xác thực gửi lên Cloud; cơ chế cấu hình WiFi mềm (Captive Portal).
- Should-have (Nên có): Hiển thị OLED tại chỗ; cơ chế bảo vệ cách ly quang chống nhiễu; nút bấm cơ học hoạt động độc lập khi mất kết nối Internet.
- Could-have (Có thể có): Chuyển đổi định dạng video H.264 sang MP4 tự động trước khi tải lên Cloud.
- Won't-have (Chưa triển khai): Nhận diện khuôn mặt hoặc phân tích chuyển động bằng thuật toán AI cục bộ (dành cho hướng phát triển nâng cao).
Thiết kế hệ thống
Kiến trúc hệ thống bao gồm 4 tầng xử lý chính:
- Tầng thiết bị chấp hành & Cảm biến (Field Layer):
- Vi điều khiển ATmega328P (8-bit AVR, xung nhịp $16\text{MHz}$) chịu trách nhiệm xử lý các tác vụ thời gian thực nghiêm ngặt (Real-time critical tasks): đọc tín hiệu 1-Wire từ cảm biến DHT11, quét nút nhấn chống dội phím (debouncing), điều khiển chân kích relay và xuất dữ liệu ra màn hình OLED $1.3\text{ inch}$ (Driver SSD1306, độ phân giải $128 \times 64\text{ pixels}$).
- Tầng truyền thông & Điều phối mạng (Communication Layer):
- Module ESP8266-12F (Lõi 32-bit Tensilica L106, xung nhịp $80\text{MHz}$) đóng vai trò làm cầu nối mạng (Network Bridge). ESP8266 quản lý kết nối Wi-Fi chuẩn $802.11\text{ b/g/n}$, thực hiện giao thức HTTP REST Client đồng bộ dữ liệu hai chiều với Google Firebase Realtime Database.
- Giao tiếp giữa ATmega328P và ESP8266 thực hiện qua chuẩn UART phần cứng với tốc độ baudrate định cấu hình $9600\text{ bps}$ hoặc $115200\text{ bps}$, đảm bảo không gây treo vi điều khiển khi ESP8266 bận xử lý gói tin mạng.
- Tầng cổng thu thập hình ảnh (Edge Vision Gateway):
- Single Board Computer (SBC) Raspberry Pi 3 Model B+ (Broadcom BCM2837B0, Quad-Core 64-bit ARM Cortex-A53 @ $1.4\text{GHz}$, 1GB RAM) kết hợp với module Camera 5MP thông qua bus MIPI CSI. Thiết bị chạy hệ điều hành Linux (Raspbian) và tiến trình nền Python chịu trách nhiệm lắng nghe tín hiệu chụp ảnh/quay video từ Firebase.
- Tầng đám mây & Ứng dụng người dùng (Cloud & Application Layer):
- Google Firebase Realtime Database quản lý trạng thái thiết bị dưới định dạng cây JSON phân cấp.
- Firebase Cloud Storage lưu trữ tệp hình ảnh (.jpg) và video clip (.mp4) bảo mật với URL có token xác thực.
+------------------------------------------------------------------------+
| SƠ ĐỒ CẤU TRÚC DỮ LIỆU JSON |
+------------------------------------------------------------------------+
{
"Devices": {
"Relay_1": 1,
"Relay_2": 0,
"DHT11": {
"Temperature": 29.5,
"Humidity": 68.0
}
},
"Camera_Control": {
"Capture_Trigger": 0,
"Record_Trigger": 1,
"Latest_Image_URL": "https://firebasestorage.googleapis.com/.../img.jpg",
"Latest_Video_URL": "https://firebasestorage.googleapis.com/.../vid.mp4",
"Status": "Online"
}
}
+------------------------------------------------------------------------+
Thiết kế mạch điện tử và tính toán kỹ thuật
+-----------------------------------------------------------------------+
| SƠ ĐỒ NGUYÊN LÝ KHỐI ĐIỀU KHIỂN RELAY |
+-----------------------------------------------------------------------+
| VCC (5V) |
| | |
| +-----+------------+ |
| | | | |
| [R] [Relay Coil] [Diode 1N4007] |
| | | (5VDC) | (Cathode lên VCC, Anode vào Collector) |
| (Led) +-----+------+ |
| | | |
| | Collector |
| +---------[NPN Transistor C1815] |
| | Emitter |
| | | |
| GND GND |
| |
| MCU Pin (5V) ---> [R_in 160 Ohm] ---> [PC817 Pin 1 (Anode)] |
| [PC817 Pin 2 (Cathode)] -> GND |
| |
| VCC (5V) -------> [PC817 Pin 4 (Collector)] |
| [PC817 Pin 3 (Emitter)] ---> [R_base 1k] -> Base |
| [R_down 10k] -> GND |
+-----------------------------------------------------------------------+
- Khối công suất & Cách ly: Để bảo vệ vi điều khiển ATmega328P khỏi hiện tượng quá áp, sốc điện và nhiễu điện từ từ cuộn cảm relay khi đóng cắt, opto quang PC817 được sử dụng.
- Điện trở hạn dòng qua LED phát quang của PC817:
$$R_{limit} = \frac{V_{CC} - V_F}{I_{LED}} = \frac{5\text{V} - 1.2\text{V}}{20\text{mA}} = 190,\Omega \quad \Rightarrow \text{Chọn } R = 160,\Omega \text{ đến } 220,\Omega$$
- Tính toán phân cực cho Transistor lưỡng cực C1815 (NPN): Dòng kích hoạt cuộn dây relay 5VDC là $I_{coil} \approx 90\text{mA}$. Chọn dòng bão hòa $I_C = 150\text{mA}$. Hệ số khuếch đại bão hòa chọn $\beta_{sat} = 30$.
$$I_B = \frac{I_{Cmax}}{\beta_{sat}} = \frac{150\text{mA}}{30} = 5\text{mA}$$
Điện trở cực Base được tính toán:
$$R_B = \frac{V_{out} - V_{BE}}{I_B} = \frac{5\text{V} - 0.7\text{V}}{5\text{mA}} = 860,\Omega \quad \Rightarrow \text{Chọn } R = 1\text{k}\Omega$$
- Diode dập xung ngược (Flyback Diode) 1N4007 được mắc song song ngược cực với cuộn dây relay để triệt tiêu dòng điện tự cảm $e = -L\frac{di}{dt}$ sinh ra khi ngắt transistor, chống đánh thủng tiếp giáp C-E của C1815.
- Khối chuyển đổi nguồn (Power Supply): Module nguồn AC-DC Hi-Link HLK-PM01 hạ áp từ điện lưới dân dụng $85 \sim 265\text{VAC}$ ($50/60\text{Hz}$) xuống $5\text{VDC}$ cách ly an toàn, cung cấp dòng tối đa $1\text{A}$. Bảng cân bằng năng lượng toàn mạch điều khiển:
| Tên linh kiện / Khối chức năng |
Điện áp danh định ($V$) |
Dòng tiêu thụ cực đại ($mA$) |
Số lượng |
Tổng dòng tiêu thụ ($mA$) |
| Vi điều khiển ATmega328P |
5.0 |
63.3 |
1 |
63.3 |
| Module WiFi ESP8266-12F |
3.3 |
170.0 |
1 |
170.0 |
| Khối Relay 5V |
5.0 |
80.0 |
2 |
160.0 |
| Transistor C1815 |
5.0 |
50.0 |
2 |
100.0 |
| Optocoupler PC817 |
5.0 |
30.0 |
2 |
60.0 |
| LED chỉ thị trạng thái |
5.0 |
20.0 |
4 |
80.0 |
| Cảm biến nhiệt - ẩm DHT11 |
3.5 |
4.0 |
1 |
4.0 |
| Màn hình OLED SSD1306 |
5.0 |
8.0 |
1 |
8.0 |
| Tổng cộng toàn mạch điều khiển |
— |
— |
— |
645.3 mA |
(Ghi chú: Raspberry Pi 3 Model B+ sử dụng bộ cấp nguồn adapter riêng biệt $5.1\text{V} / 2.5\text{A}$ để đảm bảo dòng khởi động và tính ổn định khi camera xử lý video).
Implementation và kết quả
Development process
Quá trình phát triển hệ thống được triển khai qua các phân đoạn phần mềm độc lập nhưng đồng bộ chặt chẽ:
1. Firmware cho vi điều khiển ATmega328P (Arduino Framework)
Chương trình định kỳ đọc dữ liệu nhiệt độ - độ ẩm từ cảm biến DHT11 mỗi $2000\text{ms}$ thông qua bộ định thời (Non-blocking timer), quét tín hiệu nút nhấn cơ học để đảo trạng thái relay và truyền dữ liệu qua UART lên ESP8266.
#include <DHT.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#define DHTPIN A0
#define DHTTYPE DHT11
#define RELAY1_PIN 5
#define RELAY2_PIN 6
#define BTN1_PIN 3
#define BTN2_PIN 4
DHT dht(DHTPIN, DHTTYPE);
Adafruit_SSD1306 display(128, 64, &Wire, -1);
unsigned long previousMillis = 0;
const long interval = 2000;
bool r1_state = false, r2_state = false;
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(RELAY1_PIN, OUTPUT);
pinMode(RELAY2_PIN, OUTPUT);
pinMode(BTN1_PIN, INPUT_PULLUP);
pinMode(BTN2_PIN, INPUT_PULLUP);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
}
void loop() {
// Xu ly doc nut nhan vat ly
if (digitalRead(BTN1_PIN) == LOW) {
delay(50); // Chong rung phim
if (digitalRead(BTN1_PIN) == LOW) {
r1_state = !r1_state;
digitalWrite(RELAY1_PIN, r1_state ? HIGH : LOW);
Serial.print("STATE:R1:"); Serial.println(r1_state ? "1" : "0");
while(digitalRead(BTN1_PIN) == LOW);
}
}
// Chu ky 2 giay doc cam bien DHT11
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
float h = dht.readHumidity();
float t = dht.readTemperature();
if (!isnan(h) && !isnan(t)) {
Serial.print("DATA:"); Serial.print(t); Serial.print(":"); Serial.println(h);
updateDisplay(t, h);
}
}
// Nhan lenh dieu khien tu ESP8266 qua UART
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
if (cmd.startsWith("SET:R1:1")) { r1_state = true; digitalWrite(RELAY1_PIN, HIGH); }
else if (cmd.startsWith("SET:R1:0")) { r1_state = false; digitalWrite(RELAY1_PIN, LOW); }
else if (cmd.startsWith("SET:R2:1")) { r2_state = true; digitalWrite(RELAY2_PIN, HIGH); }
else if (cmd.startsWith("SET:R2:0")) { r2_state = false; digitalWrite(RELAY2_PIN, LOW); }
}
}
void updateDisplay(float temp, float hum) {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 10);
display.print("Nhiet do: "); display.print(temp); display.println(" C");
display.setCursor(0, 30);
display.print("Do am: "); display.print(hum); display.println(" %");
display.display();
}
2. Firmware cho SoC ESP8266 (WiFi & Firebase Realtime Client)
ESP8266 khởi động dưới chế độ Captive Portal (tạo Access Point phát sóng SSID nội bộ, IP 192.168.4.1 để người dùng nhập SSID/Password của router nhà ga). Sau khi kết nối Internet thành công, ESP8266 lắng nghe các thay đổi trạng thái trên Firebase Realtime DB và bắn lệnh xuống ATmega328P.
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
#define FIREBASE_HOST "iot-vision-system.firebaseio.com"
#define FIREBASE_AUTH "AIzaSyD-EXAMPLE_TOKEN_2019_SECRET"
void setup() {
Serial.begin(9600);
WiFi.begin("Home_Network", "Password123");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}
void loop() {
// Doc trang thai dieu khien tu Cloud
int r1 = Firebase.getInt("Devices/Relay_1");
if (Firebase.success()) {
Serial.print("SET:R1:"); Serial.println(r1);
}
// Doc du lieu tu ATmega328P gui len Cloud
if (Serial.available()) {
String incoming = Serial.readStringUntil('\n');
if (incoming.startsWith("DATA:")) {
int firstColon = incoming.indexOf(':');
int secondColon = incoming.indexOf(':', firstColon + 1);
float temp = incoming.substring(firstColon + 1, secondColon).toFloat();
float hum = incoming.substring(secondColon + 1).toFloat();
Firebase.setFloat("Devices/DHT11/Temperature", temp);
Firebase.setFloat("Devices/DHT11/Humidity", hum);
}
}
delay(200);
}
3. Xử lý hình ảnh và video trên Raspberry Pi 3 (Python Edge Script)
Tiến trình Python chạy trên Raspbian sử dụng thư viện picamera để kiểm soát module camera CSI. Khi cờ Capture_Trigger hoặc Record_Trigger trên Firebase chuyển sang mức tích cực ($1$), tiến trình sẽ thực hiện tác vụ chụp/quay, chuyển mã video H.264 sang container MP4 thông qua tiện ích MP4Box và đẩy tệp tin lên Firebase Cloud Storage.
import time
import os
import subprocess
import picamera
import pyrebase
config = {
"apiKey": "AIzaSyD-EXAMPLE_TOKEN",
"authDomain": "iot-vision-system.firebaseapp.com",
"databaseURL": "https://iot-vision-system.firebaseio.com",
"storageBucket": "iot-vision-system.appspot.com"
}
firebase = pyrebase.initialize_app(config)
db = firebase.database()
storage = firebase.storage()
camera = picamera.PiCamera()
print("[EDGE GATEWAY] Camera Listener Initialized...")
while True:
try:
triggers = db.child("Camera_Control").get().val()
if triggers:
# Xu ly chup anh tinh
if triggers.get("Capture_Trigger") == 1:
img_path = "/home/pi/snapshot.jpg"
camera.resolution = (1920, 1080)
camera.capture(img_path)
storage.child("images/snapshot.jpg").put(img_path)
img_url = storage.child("images/snapshot.jpg").get_url(None)
db.child("Camera_Control").update({"Capture_Trigger": 0, "Latest_Image_URL": img_url})
print("[SUCCESS] Snapshot uploaded:", img_url)
# Xu ly quay video clip 5 giay
if triggers.get("Record_Trigger") == 1:
raw_vid = "/home/pi/clip.h264"
mp4_vid = "/home/pi/clip.mp4"
camera.resolution = (1280, 720)
camera.start_recording(raw_vid)
camera.wait_recording(5)
camera.stop_recording()
# Chuyen doi H.264 sang MP4 bang MP4Box
subprocess.call(f"MP4Box -add {raw_vid} {mp4_vid} -fps 30", shell=True)
storage.child("videos/clip.mp4").put(mp4_vid)
vid_url = storage.child("videos/clip.mp4").get_url(None)
db.child("Camera_Control").update({"Record_Trigger": 0, "Latest_Video_URL": vid_url})
os.remove(raw_vid)
os.remove(mp4_vid)
print("[SUCCESS] Video converted and uploaded:", vid_url)
except Exception as e:
print("[ERROR]", str(e))
time.sleep(1)
Testing và validation
Hệ thống đã trải qua quá trình đo kiểm thực nghiệm tại phòng thí nghiệm Bộ môn Kỹ thuật Máy tính - Điện tử Truyền thông với các kịch bản nghiêm ngặt:
+-------------------------------------------------------------------------+
| BIỂU ĐỒ BĂNG THÔNG VÀ ĐỘ TRỄ HỆ THỐNG |
+-------------------------------------------------------------------------+
| Độ trễ điều khiển Relay: [====] 280 ms |
| Độ trễ cập nhật DHT11: [======] 450 ms |
| Thời gian chụp & đẩy ảnh: [========================] 1.8 s |
| Thời gian quay & đóng gói: [====================================] 6.2 s|
| |
| Băng thông trung bình: 1.5 KB/s (Idle) ---> 2.4 MB/s (Video Sync) |
+-------------------------------------------------------------------------+
- Hiệu năng truyền thông & Độ trễ (Latency Benchmarks):
- Độ trễ đóng cắt Relay từ App qua Firebase đến phần cứng: $280 \pm 45\text{ms}$.
- Độ trễ gửi dữ liệu cảm biến DHT11 lên Cloud: $450 \pm 60\text{ms}$.
- Thời gian hoàn tất chụp ảnh độ phân giải $1080\text{p}$, upload và hiển thị trên App: $1.8\text{s}$.
- Thời gian hoàn tất quay video clip $5\text{s}$ ($720\text{p}@30\text{fps}$), chuyển mã container H.264 sang MP4 bằng MP4Box và upload: $6.2\text{s}$.
- Độ chính xác cảm biến môi trường:
- Dải nhiệt độ đo kiểm $20^\circ\text{C} \sim 45^\circ\text{C}$ đạt sai số $\pm 1.5^\circ\text{C}$.
- Dải độ ẩm đo kiểm $30% \sim 85%\text{RH}$ đạt sai số $\pm 4%\text{RH}$.
- Kiểm thử chịu tải và cách ly an toàn:
- Thử nghiệm đóng cắt tải công nghiệp (đèn halogen $500\text{W}$, quạt công nghiệp $220\text{VAC}$) liên tục $1000$ lần chu kỳ bật/tắt. Không xuất hiện hiện tượng sụt áp trên đường $5\text{V}$ logic hoặc treo CPU ATmega328P nhờ cơ chế cách ly của PC817.
Kết quả đạt được
- Hoàn thành $100%$ mục tiêu đề tài: Chế tạo thành công mạch in điều khiển 2 lớp nhỏ gọn bằng phần mềm Altium Designer; lắp ráp hoàn chỉnh cụm Edge Gateway Raspberry Pi Camera.
- Ứng dụng điều khiển trên Smartphone hoạt động ổn định trên các kết nối mạng $3\text{G}/4\text{G}$ và WiFi ngoài mạng nội bộ mà không cần cấu hình NAT Port Forwarding phức tạp trên router gia đình.
Đổi mới và đóng góp
- Cơ chế xác thực hình ảnh theo sự kiện (Event-driven On-Demand Visual Verification): Thay vì duy trì luồng truyền video $24/7$ gây tiêu tốn băng thông và năng lượng, hệ thống chỉ kích hoạt camera khi có yêu cầu từ người dùng hoặc khi phát hiện giá trị cảm biến vượt ngưỡng nguy hiểm. Giải pháp này giúp tiết kiệm hơn $88%$ băng thông mạng và giảm đáng kể tải xử lý cho máy chủ lưu trữ.
- Kiến trúc xử lý lai phân tầng (Multi-tier Hybrid Processing): Phân định ranh giới rõ ràng giữa vi điều khiển thời gian thực (ATmega328P quản lý I/O cơ sở, độc lập với kết nối mạng) và bộ xử lý truyền thông (ESP8266/Raspberry Pi). Nếu mạng Internet bị gián đoạn, các rơ-le và nút bấm tại chỗ vẫn hoạt động bình thường, không gây mất an toàn tải điện.
- Cấu hình mạng không dây linh hoạt (Captive Portal Provisioning): Loại bỏ hoàn toàn việc nạp cứng (hardcode) tài khoản WiFi trong mã nguồn firmware. Người dùng dễ dàng cấu hình kết nối mạng thông qua giao diện Web cục bộ trực quan khi mang thiết bị đến bất kỳ môi trường lắp đặt mới nào.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Hệ thống tưới tiêu nông nghiệp thông minh: Nông dân điều khiển hệ thống máy bơm nước từ xa qua điện thoại. Sau khi nhấn nút "Bật tưới", người dùng bấm nút "Chụp ảnh" để camera giám sát trả về hình ảnh trực quan luống rau đã được tưới nước hay chưa, phát hiện kịp thời các sự cố đường ống bục vỡ hoặc vòi phun bị nghẹt rác.
- Nhà xưởng và phòng máy chủ (Server Room Monitoring): Giám sát nhiệt độ phòng server. Khi phát hiện nhiệt độ tăng đột biến trên $35^\circ\text{C}$, hệ thống tự động kích hoạt điều hòa phụ và gửi cảnh báo kèm clip ghi hình hiện trường về smartphone của quản trị viên.
Phân tích chi phí và hiệu quả đầu tư (BOM & ROI Analysis)
| Hạng mục linh kiện |
Đơn giá ước tính (VND) |
Tỷ trọng chi phí |
| Mạch điều khiển trung tâm (ATmega328P + ESP8266 + Bo mạch PCB) |
180.000 |
14.5% |
| Cụm nguồn Hi-Link HLK-PM01 + Phụ kiện công suất (Relay, Opto, Diode) |
120.000 |
9.7% |
| Màn hình OLED SSD1306 + Cảm biến DHT11 |
95.000 |
7.7% |
| Khối Gateway (Raspberry Pi 3 Model B+ qua sử dụng / Module tương đương) |
750.000 |
60.5% |
| Module Camera CSI 5MP + Cáp kết nối |
95.000 |
7.6% |
| Tổng chi phí phần cứng (BOM Cost) |
1.240.000 VND |
100% |
Với chi phí phần cứng hoàn thiện dưới $1.3\text{ triệu VND}$, giải pháp rẻ hơn $60%$ so với việc trang bị đồng thời một hệ thống nhà thông minh cao cấp và cụm camera IP chuyên dụng độc lập, đồng thời đem lại tính tùy biến phần mềm cao cho doanh nghiệp.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Cảm biến DHT11: Dải đo giới hạn ($0 \sim 50^\circ\text{C}$, $20 \sim 90%\text{RH}$) và tốc độ lấy mẫu thấp ($1\text{Hz}$), độ chính xác chưa đáp ứng được các tiêu chuẩn phòng thí nghiệm chuyên dụng.
- Tách rời phần cứng: Việc sử dụng hai cụm phần cứng riêng biệt (Bo mạch MCU điều khiển + Cụm Raspberry Pi) khiến kích thước tổng thể của thiết bị còn cồng kềnh, cần 2 đường cấp nguồn độc lập.
Hướng phát triển trong tương lai
- Nâng cấp cảm biến: Thay thế DHT11 bằng các dòng cảm biến chất lượng cao như SHT30 hoặc DHT22 (chuẩn công nghiệp), hỗ trợ giao tiếp I2C với độ phân giải cao hơn.
- Tối ưu hóa kiến trúc vi xử lý: Nghiên cứu tích hợp SoC đơn tích hợp camera và Wi-Fi như ESP32-CAM, giúp giảm giá thành phần cứng xuống dưới $300.000\text{ VND}$ cho một node hoàn chỉnh.
- Ứng dụng Trí tuệ nhân tạo biên (Edge AI): Nhúng các mô hình mạng nơ-ron tích chập rút gọn (Tiny-YOLOv4, MobileNet) lên Raspberry Pi để tự động phân tích hình ảnh, phát hiện người lạ đột nhập hoặc cảnh báo khói lửa sớm mà không cần thao tác bấm xem thủ công từ người dùng.
Đối tượng hưởng lợi
- Sinh viên chuyên ngành Điện tử - Viễn thông, Kỹ thuật Máy tính: Nguồn tài liệu học tập thực tế về thiết kế mạch in chuẩn công nghiệp trên Altium, kỹ thuật giao tiếp liên vi điều khiển (UART/I2C/1-Wire) và lập trình nhúng Linux trên Raspberry Pi.
- Kỹ sư phát triển hệ thống IoT (IoT Developers): Tham khảo kiến trúc kết nối thời gian thực với Google Firebase, mô hình kết hợp telemetry và video on-demand tối ưu băng thông.
- Hộ gia đình và Doanh nghiệp vừa & nhỏ (SMEs): Tiếp cận giải pháp tự động hóa chi phí thấp, tin cậy cao, dễ dàng mở rộng và tùy biến theo nhu cầu đặc thù của nhà xưởng hoặc trang trại.
- Cộng đồng nghiên cứu nông nghiệp thông minh: Cung cấp mô hình giám sát trực quan đáng tin cậy phục vụ nghiên cứu tự động hóa tưới tiêu và theo dõi sinh trưởng cây trồng từ xa.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật phần cứng và môi trường để triển khai hệ thống là gì?
Hệ thống yêu cầu nguồn điện lưới $220\text{VAC}$ ($50\text{Hz}$) cho khối điều khiển relay và adapter $5\text{V}/2.5\text{A}$ cho Raspberry Pi. Môi trường triển khai cần có vùng phủ sóng WiFi băng tần $2.4\text{GHz}$ kết nối Internet.
2. Giới hạn mở rộng thiết bị (Scalability) của hệ thống như thế nào?
Kiến trúc Firebase Realtime Database phân cấp JSON cho phép mở rộng hàng ngàn node điều khiển độc lập thông qua việc gán ID thiết bị riêng biệt (Device_01, Device_02,...). Khi mở rộng số lượng relay trên một bo mạch, vi điều khiển ATmega328P có thể kết nối thêm IC ghi dịch $74\text{HC}595$ qua chuẩn SPI để điều khiển lên đến $16 - 32$ kênh tải.
3. Hệ thống có thể tích hợp với các nền tảng nhà thông minh hiện có không?
Có. Nhờ việc quản lý trạng thái bằng Firebase JSON API và RESTful Web Service, hệ thống hoàn toàn có thể tích hợp trực tiếp vào các nền tảng mở như Home Assistant, OpenHAB hoặc Node-RED thông qua các plugin giao tiếp HTTP/MQTT.
4. Quy trình bảo trì và khắc phục sự cố khi mất kết nối mạng?
Khi mất kết nối Wi-Fi, bo mạch ATmega328P vẫn duy trì kiểm soát các nút bấm cơ học tại chỗ và hiển thị thông số lên OLED. Khi có mạng trở lại, ESP8266 tự động tái kết nối và đồng bộ trạng thái mới nhất lên máy chủ đám mây mà không cần khởi động lại nguồn.
5. Chi phí đầu tư chi tiết và thời gian hoàn vốn (ROI) ước tính?
Với chi phí sản xuất thử nghiệm khoảng $1.240.000\text{ VND}$/hệ thống, đối với các ứng dụng như giám sát trang trại hoặc nhà xưởng, việc ngăn ngừa được $1$ sự cố chập cháy hoặc hỏng hóc máy bơm nhờ kiểm chứng hình ảnh kịp thời có thể giúp người dùng hoàn vốn đầu tư ngay trong $1 - 3$ tháng đầu vận hành.
Kết luận
Đồ án tốt nghiệp "Ứng dụng IoT trong giám sát và điều khiển qua hình ảnh" của nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM đã hoàn thành xuất sắc các mục tiêu nghiên cứu đề ra. Đề tài không chỉ dừng lại ở mặt lý thuyết mà đã chế tạo thành công sản phẩm phần cứng thực tế hoạt động ổn định, giải quyết triệt để bài toán xác thực trực quan trong điều khiển IoT từ xa.
Sự kết hợp đồng bộ giữa vi điều khiển ATmega328P, module WiFi ESP8266, gateway Raspberry Pi Camera và hạ tầng đám mây Google Firebase mang lại một giải pháp công nghệ toàn diện, tin cậy, chi phí hợp lý và có tính ứng dụng thực tiễn cao trong kỷ nguyên chuyển đổi số và tự động hóa thông minh.