Giới thiệu dự án
Trong bối cảnh công nghiệp hóa, hiện đại hóa và xu hướng chuyển đổi số trong nông nghiệp công nghệ cao (Smart Agriculture) cũng như tự động hóa tòa nhà (Smart Building), việc giám sát liên tục các thông số môi trường đóng vai trò then chốt. Theo báo cáo từ IoT Analytics, thị trường giám sát môi trường và nông nghiệp thông minh dựa trên IoT đạt tốc độ tăng trưởng kép hàng năm (CAGR) trên 14.2%, phản ánh nhu cầu cấp thiết về các giải pháp thu thập dữ liệu phân tán với chi phí tối ưu.
Đề tài "Nghiên cứu một số cảm biến đo thông số môi trường và giám sát qua mạng Internet" thuộc chuyên ngành Điện Tự Động Công Nghiệp (thực hiện bởi sinh viên Phạm Ngọc Hiếu, dưới sự hướng dẫn của TS. Đoàn Hữu Chức tại Trường Đại học Quản lý và Công nghệ Hải Phòng) tập trung giải quyết các bài toán đo lường và truyền thông dữ liệu môi trường thực tế.
+-----------------------------------+
| KHỐI CẢM BIẾN ĐẦU VÀO |
| - DHT11 (Nhiệt độ, Độ ẩm KK) |
| - Cảm biến độ ẩm đất (Analog) |
| - Cảm biến mưa (Digital/Analog) |
| - MQ-2 (Khí gas/Khói) |
+-----------------+-----------------+
|
v
+-----------------------------------+
| KHỐI XỬ LÝ & ĐIỀU KHIỂN TẬP TRUNG |
| - Arduino Uno R3 (ATmega328P) |
| - Hiển thị tại chỗ: LCD 16x2 I2C |
+-----------------+-----------------+
| Giao tiếp UART / I/O
v
+-----------------------------------+
| KHỐI TRUYỀN THÔNG INTERNET |
| - NodeMCU ESP8266 (ESP-12E SoC) |
| - Wi-Fi 2.4 GHz 802.11 b/g/n |
+-----------------+-----------------+
| TCP/IP (Auth Token)
v
+-----------------------------------+
| NỀN TẢNG ĐÁM MÂY & GIÁM SÁT |
| - Blynk Cloud Server (cloud.vn) |
| - App di động (iOS / Android) |
+-----------------------------------+
Vấn đề thực tiễn (Problem Statement)
Các hệ thống quan trắc truyền thống tại các nhà xưởng, kho bãi hoặc nhà kính quy mô vừa và nhỏ đang đối mặt với nhiều hạn chế:
- Chi phí đầu tư cao: Các thiết bị đo lường công nghiệp tiêu chuẩn PLC/SCADA có giá thành từ vài trăm đến hàng nghìn USD, khó tiếp cận cho các mô hình sản xuất nông nghiệp vừa và nhỏ.
- Thiếu tính linh hoạt và giám sát thời gian thực: Dữ liệu môi trường chủ yếu được ghi chép thủ công hoặc hiển thị cục bộ tại chỗ, dẫn đến độ trễ lớn trong việc phát hiện các biến động nguy hiểm (rò rỉ khí gas, ngập úng đất, mưa đột ngột).
- Phức tạp trong hạ tầng kéo dây: Việc lắp đặt cáp truyền thông tín hiệu analog/RS-485 trên diện rộng tốn kém chi phí bảo trì và dễ suy hao tín hiệu do nhiễu môi trường công nghiệp.
Mục tiêu đề tài
- Nghiên cứu nguyên lý hoạt động và đặc tính kỹ thuật của các dòng cảm biến môi trường phổ biến: cảm biến nhiệt độ - độ ẩm không khí (DHT11), cảm biến độ ẩm đất (điện cực điện trở/điện dung), cảm biến cảnh báo mưa, và cảm biến khí gas/khói (MQ-2).
- Thiết kế phần cứng tối ưu kết hợp giữa vi điều khiển ATmega328P (Arduino Uno R3) đảm nhiệm thu thập tín hiệu ngoại vi và SoC ESP8266 (NodeMCU) đảm nhiệm truyền thông mạng.
- Phát triển giao diện giám sát đa kênh: Hiển thị trực quan tại chỗ qua màn hình LCD 16×2 (chuẩn giao tiếp I2C) và giám sát từ xa thời gian thực trên thiết bị di động thông qua nền tảng Blynk IoT Cloud.
- Thực nghiệm, đánh giá sai số và độ tin cậy của toàn bộ hệ thống trong điều kiện vận hành liên tục.
Phạm vi và giới hạn đề tài
- Phạm vi ứng dụng: Triển khai mô hình thử nghiệm ứng dụng cho nhà ở thông minh (Smarthome), nhà kính nông nghiệp và phòng máy/kho bao bì tại Công ty Cổ phần Bao bì Thuận Phát (Hải Phòng).
- Giới hạn kỹ thuật: Hệ thống hoạt động tại dải nhiệt độ 0–50°C, độ ẩm 20–90% RH (theo giới hạn phần cứng DHT11); sử dụng mạng Wi-Fi cục bộ 2.4 GHz để đẩy dữ liệu lên máy chủ đám mây.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
Đo lường thủ công / Đồng hồ cơ |
Hệ thống SCADA / PLC công nghiệp |
Giải pháp IoT vi điều khiển nhúng (Đề tài) |
| Chi phí triển khai |
Rất thấp (< $20) |
Rất cao ($500 - $3,000) |
Tối ưu ($35 - $50) |
| Thời gian đáp ứng |
Chậm (chu kỳ tính bằng giờ) |
Tức thời (< 100ms) |
Thời gian thực (1 - 2s qua Internet) |
| Khả năng giám sát từ xa |
Không hỗ trợ |
Có (yêu cầu cấu hình VPN/Static IP) |
Toàn cầu qua Cloud/Smartphone App |
| Độ phức tạp lắp đặt |
Đơn giản |
Phức tạp, đòi hỏi kỹ sư chuyên môn |
Dễ dàng lắp ráp dạng module |
| Khả năng mở rộng |
Kém |
Tốt nhưng tốn kém license |
Rất linh hoạt qua mã nguồn mở |
Yêu cầu hệ thống theo mô hình MoSCoW
- Must have (Bắt buộc): Đo chính xác các đại lượng nhiệt độ, độ ẩm không khí, độ ẩm đất, trạng thái mưa; hiển thị lên màn hình LCD 16×2; kết nối Wi-Fi truyền dữ liệu lên Blynk Cloud.
- Should have (Nên có): Cơ chế định thời lấy mẫu bằng phần mềm (BlynkTimer) nhằm tránh nghẽn luồng truyền dữ liệu (Flood Error); tích hợp cảm biến khí gas MQ-2 báo cháy.
- Could have (Có thể mở rộng): Tự động đóng ngắt relay điều khiển máy bơm hoặc rèm che khi vượt ngưỡng cài đặt.
- Won't have (Chưa thực hiện đợt này): Lưu trữ dữ liệu lớn vào cơ sở dữ liệu phân tán SQL chuyên sâu hay học máy dự báo thời tiết cục bộ.
Thiết kế kiến trúc hệ thống
graph TD
subgraph KHOI_CAM_BIEN [1. Khối Cảm Biến Thu Thập]
A1[DHT11 - Nhiệt độ/Độ ẩm KK] -->|1-Wire Digital| B1
A2[Cảm biến độ ẩm đất] -->|Analog Signal 0-5V| B1
A3[Cảm biến mưa LM393] -->|Digital Output D0| B1
A4[Cảm biến Gas MQ-2] -->|Analog Output A0| B1
end
subgraph KHOI_XU_LY [2. Khối Xử Lý & Hiển Thị]
B1[Arduino Uno R3 - ATmega328P]
B1 -->|I2C Protocol - SDA/SCL| B2[Module PCF8574T + LCD 16x2]
end
subgraph KHOI_TRUYEN_THONG [3. Khối Truyền Thông Không Dây]
B1 -->|UART Serial - Tx/Rx| C1[NodeMCU ESP8266EX]
C1 -->|Wi-Fi 2.4GHz 802.11 b/g/n| C2((Internet Gateway))
end
subgraph KHOI_UNG_DUNG [4. Khối Ứng Dụng Đám Mây]
C2 -->|TCP/IP Port 8442/8443| D1[Blynk Cloud Server]
D1 -->|Virtual Pins V0-V10| D2[Blynk Dashboard App Mobile]
end
Thông số kỹ thuật chi tiết của Stack công nghệ
- Bộ vi điều khiển trung tâm (Arduino Uno R3):
- Vi điều khiển: ATmega328P họ 8-bit RISC, tần số dao động 16 MHz.
- Bộ nhớ: 32 KB Flash Memory, 2 KB SRAM, 1 KB EEPROM.
- I/O: 14 chân Digital I/O (6 chân hỗ trợ PWM phần cứng), 6 kênh ADC 10-bit độ phân giải cao (0–1023 tương ứng 0–5V).
- Khối truyền thông mạng (NodeMCU ESP8266 V1.0):
- Vi xử lý: Tensilica Xtensa Dual-Core 32-bit L106, xung nhịp 80/160 MHz.
- Wi-Fi: Tích hợp chuẩn 802.11 b/g/n, hỗ trợ các chế độ STA/AP/STA+AP, bảo mật WPA/WPA2.
- Giao tiếp nạp/truyền: Chip chuyển đổi USB-UART CP2102/CH340G.
- Mô-đun hiển thị LCD 16×2 kết hợp giao tiếp I2C:
- Bộ điều khiển hiển thị chuẩn HD44780 tích hợp IC mở rộng I/O PCF8574.
- Chuẩn truyền thông 2 dây: SDA (chân A4 trên Uno) và SCL (chân A5 trên Uno), tiết kiệm từ 8 chân I/O xuống còn 2 chân tín hiệu.
- Ngăn xếp phần mềm (Software Stack):
- Trình biên dịch: Arduino IDE v1.8.15.
- Ngôn ngữ: C/C++ nhúng kết hợp hệ thống thư viện mở (
DHT.h, LiquidCrystal_I2C.h, BlynkSimpleEsp8266.h).
- Nền tảng IoT: Blynk IoT Framework (giao thức trao đổi nhị phân qua Virtual Pin).
Implementation và kết quả
Quy trình phát triển phần mềm và triển khai phần cứng
Hệ thống được phát triển qua 4 giai đoạn hoàn chỉnh:
- Thiết kế mạch nguyên lý và sơ đồ chân: Phân bổ chân I/O logic cho từng cảm biến nhằm triệt tiêu hiện tượng xung đột tài nguyên bus.
- Xử lý tín hiệu cảm biến: Viết driver phần mềm giải mã chuỗi bit dữ liệu 1-wire từ DHT11 và lọc số trung bình cho tín hiệu Analog từ chân ADC.
- Tích hợp truyền thông I2C & UART: Thiết lập địa chỉ phần cứng I2C (0x27) cho LCD và định dạng gói tin truyền dữ liệu giữa các khối xử lý.
- Cấu hình giao diện đám mây Blynk: Ánh xạ các cổng ảo (Virtual Pins) từ chương trình lên các Widget trực quan trên App.
Sơ đồ kết nối chân tổng thể
| Cảm biến / Ngoại vi |
Loại tín hiệu |
Chân Arduino Uno R3 |
Chân NodeMCU ESP8266 |
| DHT11 (Data Pin) |
Digital (1-Wire) |
Chân D7 |
- |
| Cảm biến độ ẩm đất |
Analog (AO) |
Chân A0 |
- |
| Cảm biến mưa (DO) |
Digital (DO) |
Chân D6 |
- |
| LCD 16×2 (I2C Adapter) |
Serial Bus |
A4 (SDA), A5 (SCL) |
- |
| Giao tiếp liên mạch |
UART Serial |
D1 (Tx), D0 (Rx) |
D8 (Rx), D7 (Tx) |
| Cấp nguồn hệ thống |
5V DC / GND |
5V, GND |
Vin (5V), GND |
Thuật toán và phân tích mã nguồn tiêu biểu
Thuật toán thu thập dữ liệu và xử lý hiển thị cục bộ (Arduino Uno R3)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define DHTPIN 7 // Chân Data của DHT11 kết nối D7
#define DHTTYPE DHT11 // Loại cảm biến DHT11
#define SOIL_PIN A0 // Chân Analog cảm biến độ ẩm đất
#define RAIN_PIN 6 // Chân Digital cảm biến mưa
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Địa chỉ I2C 0x27, màn hình 16 ký tự 2 dòng
void setup() {
Serial.begin(9600); // Khởi tạo UART kết nối ESP8266/Máy tính
dht.begin();
lcd.init();
lcd.backlight();
pinMode(RAIN_PIN, INPUT);
lcd.setCursor(0, 0);
lcd.print("HE THONG GIAM SAT");
lcd.setCursor(0, 1);
lcd.print("MOI TRUONG IOT");
delay(1500);
lcd.clear();
}
void loop() {
// 1. Đọc thông số nhiệt độ, độ ẩm không khí
float h = dht.readHumidity();
float t = dht.readTemperature();
// 2. Đọc độ ẩm đất (chuyển đổi thang đo ADC 10-bit sang %)
int soilRaw = analogRead(SOIL_PIN);
int soilMoisture = map(soilRaw, 1023, 0, 0, 100); // 1023: khô (0%), 0: bão hòa (100%)
// 3. Đọc trạng thái mưa (0: Có mưa, 1: Không mưa)
int rainStatus = digitalRead(RAIN_PIN);
// Kiểm tra tính hợp lệ của dữ liệu cảm biến
if (isnan(h) || isnan(t)) {
lcd.setCursor(0, 0);
lcd.print("Loi cam bien DHT");
return;
}
// 4. Hiển thị LCD 16x2
lcd.setCursor(0, 0);
lcd.print("T:"); lcd.print((int)t); lcd.print("C H:"); lcd.print((int)h); lcd.print("%");
lcd.setCursor(0, 1);
lcd.print("Dat:"); lcd.print(soilMoisture); lcd.print("% ");
if (rainStatus == LOW) {
lcd.print("Mua:CO");
} else {
lcd.print("Mua:KO");
}
// 5. Đóng gói dữ liệu gửi qua cổng Serial lên ESP8266
// Định dạng: [Nhiệt_độ],[Độ_ẩm],[Độ_ẩm_đất],[Mưa]
Serial.print(t); Serial.print(",");
Serial.print(h); Serial.print(",");
Serial.print(soilMoisture); Serial.print(",");
Serial.println(rainStatus == LOW ? 1 : 0);
delay(2000); // Chu kỳ lấy mẫu 2 giây (đáp ứng tần số giới hạn của DHT11)
}
Thuật toán đồng bộ hóa dữ liệu lên đám mây Blynk (NodeMCU ESP8266)
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "53e4da8793764b6197fc44a673ce4e21"; // Auth Token từ ứng dụng Blynk
char ssid[] = "ThuanPhat_Office_WiFi"; // Tên mạng Wi-Fi
char pass[] = "BaoBiThuanPhat2021"; // Mật khẩu Wi-Fi
BlynkTimer timer;
void sendSensorData() {
if (Serial.available() > 0) {
String data = Serial.readStringUntil('\n');
data.trim();
// Tách chuỗi dữ liệu nhận được qua UART
int idx1 = data.indexOf(',');
int idx2 = data.indexOf(',', idx1 + 1);
int idx3 = data.indexOf(',', idx2 + 1);
if (idx1 > 0 && idx2 > 0 && idx3 > 0) {
float temp = data.substring(0, idx1).toFloat();
float hum = data.substring(idx1 + 1, idx2).toFloat();
int soil = data.substring(idx2 + 1, idx3).toInt();
int rain = data.substring(idx3 + 1).toInt();
// Đẩy dữ liệu lên các Virtual Pin trên Blynk Server
Blynk.virtualWrite(V0, temp); // Virtual Pin V0: Nhiệt độ
Blynk.virtualWrite(V1, hum); // Virtual Pin V1: Độ ẩm KK
Blynk.virtualWrite(V2, soil); // Virtual Pin V2: Độ ẩm đất
Blynk.virtualWrite(V3, rain); // Virtual Pin V3: Cảnh báo mưa (LED Widget)
}
}
}
void setup() {
Serial.begin(9600);
// Kết nối tới Blynk Server (hỗ trợ Private/Custom Cloud Server IP: cloud.vn, Port: 8442)
Blynk.begin(auth, ssid, pass, "cloud.vn", 8442);
// Thiết lập hàm định thời gửi dữ liệu 2 giây/lần nhằm chống lỗi Flood Error
timer.setInterval(2000L, sendSensorData);
}
void loop() {
Blynk.run();
timer.run();
}
Kết quả đo lường và đánh giá thực nghiệm
Hệ thống đã trải qua quá trình chạy thử nghiệm liên tục trong 72 giờ tại môi trường kho xưởng sản xuất của Công ty Cổ phần Bao bì Thuận Phát (Hải Phòng), cho ra các kết quả kiểm chứng cụ thể:
[Báo cáo Benchmark Kết nối Mạng ESP8266 -> Blynk Server]
------------------------------------------------------------
[5001] Connecting to cloud.vn:8442
[5329] Connected to WiFi: ThuanPhat_Office_WiFi (RSSI: -58 dBm)
[5330] IP Allocated: 192.168.1.145
[5332] Ready (ping: 1ms)
[5335] Heartbeat: 10s | Flood Threshold: 100 msgs/sec
------------------------------------------------------------
Bảng thông số hiệu năng thực tế
| Đại lượng / Tham số kiểm thử |
Dải đo thiết kế |
Sai số đo kiểm thực nghiệm |
Thời gian trễ trung bình |
| Nhiệt độ không khí |
$0^\circ\text{C} - 50^\circ\text{C}$ |
$\pm 1.2^\circ\text{C}$ (Chuẩn tham chiếu Fluke 51 II) |
$\approx 1.8\text{ s}$ |
| Độ ẩm không khí |
$20% - 90%\text{ RH}$ |
$\pm 4.1%\text{ RH}$ |
$\approx 1.8\text{ s}$ |
| Độ ẩm của đất |
$0% - 100%$ |
$\pm 3.5%$ (Hiệu chuẩn trên mẫu đất cát) |
$\approx 250\text{ ms}$ |
| Thời gian kích hoạt báo mưa |
Trạng thái $0/1$ |
Chính xác $100%$ khi có giọt nước |
$\approx 120\text{ ms}$ |
| Độ trễ cập nhật lên Cloud App |
Mạng Wi-Fi nội bộ |
Tỷ lệ thành công $99.4%$ |
$1.2\text{ s} - 1.5\text{ s}$ |
Đổi mới và đóng góp
- Cấu trúc phần cứng phân tầng độc lập (Master-Slave Architecture):
Thay vì dồn toàn bộ tác vụ đọc ngoại vi analog và quản lý TCP/IP stack vào một vi điều khiển duy nhất gây sụt nguồn hoặc treo vi xử lý khi mất Wi-Fi, đề tài tách rời nhiệm vụ: Arduino Uno R3 chuyên tâm thu thập dữ liệu cảm biến đa kênh với độ chính xác chu kỳ thời gian thực (Real-time determinism), trong khi NodeMCU ESP8266 đóng vai trò Gateway không dây xử lý giao thức mạng.
+------------------------------------------------------------------------------------+
| SO SÁNH CÁC PHƯƠNG ÁN GIÁM SÁT MÔI TRƯỜNG |
+----------------------+--------------------+-------------------+--------------------+
| Tiêu chí | PLC Siemens S7-200 | Sonoff/Tuya COTS | Đề tài nghiên cứu |
+----------------------+--------------------+-------------------+--------------------+
| Chi phí phần cứng | ~$400 - $800 | ~$70 - $120 | ~$35 - $45 |
| Khả năng tùy biến | Trung bình (Ladder)| Rất thấp (App kín)| Tuyệt đối (C/C++) |
| Môi trường vận hành | Công nghiệp nặng | Gia dụng trong nhà| Linh hoạt đa vùng |
| Độc lập đám mây | Yêu cầu Server SCADA| Đám mây hãng thứ 3| Tùy biến Server |
| Giảm chi phí (%) | Gốc (100%) | Giảm 70% | Giảm 90% |
+----------------------+--------------------+-------------------+--------------------+
- Tối ưu hóa bus truyền thông tại chỗ bằng chuẩn I2C:
Sử dụng IC điều khiển PCF8574T kết nối màn hình LCD 16×2, giải phóng tới 6 chân GPIO quan trọng trên Arduino Uno R3, tạo dư địa phần cứng để mở rộng thêm các cảm biến nồng độ bụi mịn PM2.5, cảm biến cường độ ánh sáng quang trở LDR hoặc mô-đun rơ-le điều khiển phụ tải.
- Thuật toán ngăn ngừa lỗi tràn luồng (Flood Error Mitigation):
Ứng dụng cơ chế
BlynkTimer với kiến trúc xử lý hướng sự kiện phi tuần tự (Non-blocking delay), loại bỏ hoàn toàn các hàm dừng delay() truyền thống. Nhờ đó, chip Wi-Fi duy trì liên tục gói tin nhịp tim (Heartbeat ping ~1ms) tới máy chủ đám mây mà không bị ngắt kết nối đột ngột.
Ứng dụng thực tế và triển khai
Kịch bản triển khai trong thực tế (Use Cases)
+--------------------------+
| MÔ HÌNH NHÀ KÍNH THỰC TẾ |
+------------+-------------+
|
+----------------------------+----------------------------+
| |
v v
+--------------------------+ +--------------------------+
| KHU VỰC VƯỜN ƯƠM / ĐẤT | | KHU VỰC KHÔNG KHÍ & MÁI |
| - Đo độ ẩm đất cục bộ | | - Đo nhiệt độ/độ ẩm KK |
| - Tự động bơm tưới ẩm | | - Cảm biến mưa kéo rèm |
+--------------------------+ +--------------------------+
- Giám sát nhà kính nông nghiệp công nghệ cao:
Hệ thống liên tục thu thập độ ẩm tầng đất canh tác và vi khí hậu xung quanh thân cây. Khi đất bị khô (độ ẩm $< 40%$), thông số lập tức cảnh báo về điện thoại người quản lý để chủ động bật hệ thống tưới nhỏ giọt.
- Hệ thống tự động hóa mái che và bảo quản kho bao bì:
Tại Công ty Cổ phần Bao bì Thuận Phát, cảm biến mưa đặt tại sân phơi/kho nguyên liệu phát hiện nước mưa trong vòng 120ms, truyền tín hiệu số kích hoạt còi báo động và đẩy cảnh báo khẩn cấp lên ứng dụng di động để công nhân kịp thời đóng cửa thông gió.
- Cảnh báo sớm rò rỉ khí gas và nguy cơ cháy nổ:
Cảm biến MQ-2 giám sát liên tục nồng độ các hợp chất hữu cơ dễ bay hơi, khí gas LPG và khói trong phòng kỹ thuật. Khi nồng độ vượt ngưỡng an toàn, hệ thống lập tức xuất tín hiệu bảo vệ.
Phân tích hiệu quả kinh tế (Cost-Benefit & ROI)
- Tổng chi phí linh kiện BOM (Bill of Materials): Khoảng 850.000 VNĐ (~37 USD) cho toàn bộ phần cứng (Arduino, ESP8266, DHT11, Cảm biến đất, Cảm biến mưa, LCD I2C, nguồn xung 5V/2A và vỏ hộp bảo vệ IP54).
- Chi phí vận hành: 0 VNĐ chi phí phần mềm thông qua việc ứng dụng máy chủ đám mây Blynk và nền tảng nguồn mở.
- Thời gian hoàn vốn (ROI): Ước tính dưới 4 tháng thông qua việc giảm thiểu 100% rủi ro ẩm mốc hỏng hóc nguyên vật liệu bao bì giấy tại kho bãi và tiết kiệm 30% lượng nước tưới tiêu trong nhà kính.
Hạn chế và hướng phát triển
Các hạn chế kỹ thuật hiện hữu
- Độ bền cảm biến độ ẩm đất: Loại cảm biến điện cực điện trở trực tiếp dễ bị hiện tượng điện phân mạ mòn chân đồng sau 3–6 tháng cắm liên tục trong đất ẩm giàu ion khoáng.
- Tốc độ lấy mẫu của DHT11: Thời gian phản hồi nhiệt - ẩm tương đối chậm (tần số lấy mẫu tối đa 1Hz - 1 giây/lần), dải đo nhiệt độ hẹp ($0 - 50^\circ\text{C}$), không phù hợp cho các môi trường nhiệt độ cao công nghiệp như buồng sấy nhiệt.
- Phụ thuộc vào đường truyền Internet: Khi mất kết nối Wi-Fi, hệ thống chỉ hiển thị được tại chỗ qua LCD, mất tính năng cảnh báo từ xa.
Hướng nâng cấp mở rộng
- Nâng cấp cảm biến chuẩn công nghiệp: Thay thế cảm biến điện trở bằng cảm biến độ ẩm đất dạng điện dung (Capacitive Soil Moisture Sensor v1.2) chống ăn mòn; chuyển đổi DHT11 sang Sensirion SHT30 hoặc Bosch BME280 giao tiếp I2C với độ chính xác $\pm 0.3^\circ\text{C}$.
- Chuyển dịch giao thức sang MQTT tiêu chuẩn: Xây dựng Broker MQTT riêng (sử dụng Mosquitto trên Raspberry Pi) kết hợp Node-RED và cơ sở dữ liệu InfluxDB + Grafana để tự chủ hoàn toàn hạ tầng mà không phụ thuộc vào chính sách năng lượng (Energy Point) của Blynk.
- Tích hợp module nguồn dự phòng: Bổ sung mạch sạc pin Lithium 18650 tích hợp quản lý nguồn sạc pin mặt trời (Solar Power harvesting) cho phép trạm quan trắc hoạt động độc lập ngoài trời.
Đối tượng hưởng lợi
- Sinh viên ngành Điện - Tự động hóa & IoT: Tài liệu tham khảo toàn diện về cách kết nối liên vi điều khiển (Master-Slave giữa AVR và ESP8266), xử lý giao thức 1-Wire, I2C và lập trình Cloud IoT thực tế.
- Kỹ sư phát triển hệ thống nhúng: Bộ khung mã nguồn (Firmware template) xử lý dữ liệu cảm biến đa luồng với cơ chế định thời phần mềm không nghẽn luồng.
- Chủ hộ sản xuất nông nghiệp & Nhà xưởng: Giải pháp đo lường môi trường chi phí thấp, triển khai nhanh, nâng cao năng suất quản lý kho vận và chất lượng cây trồng.
- Nhà nghiên cứu ứng dụng: Cung cấp dữ liệu thực nghiệm về độ ổn định và độ trễ của các dòng cảm biến phổ thông khi làm việc trong môi trường công nghiệp thực tế.
Câu hỏi thường gặp
1. Yêu cầu nguồn cấp tối ưu cho toàn bộ hệ thống là bao nhiêu để tránh reset vi điều khiển?
Hệ thống yêu cầu nguồn cấp ổn định 5V DC với dòng tối thiểu là 2A. Mặc dù Arduino và ESP8266 có thể nhận nguồn qua cổng USB máy tính, nhưng khi module ESP8266 phát sóng Wi-Fi (giai đoạn RF Transmit burst), dòng điện tiêu thụ có thể tăng đột biến lên tới 250–300mA. Do đó, cần sử dụng nguồn Adapter ngoài cắm qua Jack DC hoặc chân Vin để tránh sụt áp gây hiện tượng vi điều khiển tự khởi động lại (Brown-out Reset).
2. Làm thế nào để khắc phục hiện tượng mất kết nối Wi-Fi trên module ESP8266?
Trong firmware NodeMCU, cần triển khai thuật toán tự động phục hồi kết nối (Auto-reconnect routine) thông qua việc kiểm tra trạng thái WiFi.status(). Nếu mất mạng, hệ thống không gọi hàm chặn tuần tự mà tiếp tục cho phép vi điều khiển Arduino đo đạc hiển thị LCD, đồng thời ESP8266 sẽ kích hoạt ngắt định thời định kỳ 30 giây để quét và tái thiết lập kết nối tới Access Point.
3. Có thể thay thế màn hình LCD 16×2 bằng màn hình OLED 0.96 inch hoặc hiển thị lớn hơn không?
Hoàn toàn có thể. Do hệ thống sử dụng bus I2C chuẩn (chân SDA/SCL), người lập trình chỉ cần thay đổi địa chỉ I2C trong mã nguồn (ví dụ màn hình OLED I2C thường dùng địa chỉ 0x3C) và nạp thư viện đồ họa tương ứng như Adafruit_SSD1306.h mà không cần thay đổi bất kỳ dây nối phần cứng nào trên bo mạch.
4. Chi phí duy trì hệ thống trên nền tảng đám mây Blynk có phát sinh định kỳ không?
Với phiên bản Blynk Legacy sử dụng máy chủ tùy biến (Custom Server như cloud.vn hoặc Local Blynk Server tự dựng), người dùng hoàn toàn được miễn phí tài nguyên Energy Point. Đối với phiên bản thương mại Blynk 2.0 Cloud, người dùng được cung cấp gói Free Tier hỗ trợ tối đa 2 thiết bị và đầy đủ tính năng giám sát cơ bản.
5. Giải pháp nào nâng cao tuổi thọ cho cảm biến đo độ ẩm đất trong đất ẩm liên tục?
Để triệt tiêu hiện tượng điện phân gây ăn mòn chân đo đồng, người dùng có thể cấp nguồn VCC cho cảm biến độ ẩm đất thông qua một chân Digital I/O trên Arduino thay vì cắm cố định chân 5V. Vi điều khiển chỉ bật chân Digital lên mức HIGH (cấp nguồn) ngay trước thời điểm đọc tín hiệu Analog 50ms, sau đó lập tức kéo xuống mức LOW (ngắt nguồn), giúp tăng tuổi thọ cảm biến lên gấp 10 lần.
Kết luận
Đồ án tốt nghiệp "Nghiên cứu một số cảm biến đo thông số môi trường và giám sát qua mạng Internet" của sinh viên Phạm Ngọc Hiếu đã hoàn thành xuất sắc các mục tiêu đề ra từ khảo sát lý thuyết, thiết kế phần cứng, lập trình điều khiển đến thử nghiệm thực tế tại doanh nghiệp.
Hệ thống chứng minh tính khả thi vượt trội khi kết hợp linh hoạt giữa vi điều khiển ATmega328P và vi xử lý Wi-Fi ESP8266, tạo ra một trạm quan trắc môi trường nhỏ gọn, tin cậy với độ trễ truyền dữ liệu chỉ từ 1.2 – 1.5 giây và chi phí chế tạo tiết kiệm hơn 85% so với các thiết bị công nghiệp cùng tính năng.
Công trình không chỉ là tài liệu học thuật giá trị cho sinh viên ngành Điện Tự Động Công Nghiệp mà còn mở ra tiềm năng thương mại hóa rộng rãi trong các mô hình Nông nghiệp 4.0 và Nhà xưởng thông minh tại Việt Nam.