Giới thiệu dự án

Trong bối cảnh công nghiệp hóa và chuyển đổi số nông nghiệp, việc kiểm soát vi khí hậu và các yếu tố môi trường đóng vai trò quyết định đến năng suất cây trồng, an toàn kho vận và sức khỏe con người. Theo thống kê từ Tổ chức Lương thực và Nông nghiệp Liên Hợp Quốc (FAO), giám sát chính xác độ ẩm đất và nhiệt độ môi trường giúp tiết kiệm đến 30% lượng nước tưới tiêu và tăng 15-20% hiệu suất cây trồng. Tuy nhiên, các giải pháp đo lường truyền thống tại Việt Nam hiện nay đa phần là thiết bị cầm tay cục bộ, đòi hỏi nhân công ghi chép thủ công, thiếu tính liên tục và không thể cảnh báo thời gian thực từ xa.

Đề 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" của tác giả Phạm Ngọc Hiếu (Khoa Điện - Điện tử, Trường Đại học Quản lý và Công nghệ Hải Phòng, dưới sự hướng dẫn của TS. Đoàn Hữu Chức) tập trung giải quyết bài toán tự động hóa đo lường và số hóa dữ liệu môi trường.

+-------------------------------------------------------------------------+
|                          HỆ THỐNG GIÁM SÁT MÔI TRƯỜNG IOT                |
|                                                                         |
|  [ DHT11 ]    --1-Wire-->  +-----------------+                          |
|  [ Moisture ] --Analog-->  | Arduino Uno R3  |                          |
|  [ Rain PCB ] --Analog-->  |  (ATmega328P)   |                          |
|  [ MQ-2 ]     --Analog-->  +--------+--------+                          |
|                                     | UART (Serial 9600 baud)           |
|                                     v                                   |
|                            +-----------------+                          |
|                            | NodeMCU ESP8266 | --WiFi 802.11 b/g/n-->   |
|                            |  (ESP8266EX)    |                          |
|                            +--------+--------+                          |
|                                     |                                   |
|                                     v Blynk Protocol (Port 8442/8443)   |
|                            +-----------------+                          |
|                            |   Blynk Cloud   |                          |
|                            +--------+--------+                          |
|                                     |                                   |
|                                     v TCP/IP                            |
|                            +-----------------+                          |
|                            |  Blynk App UI   | (iOS / Android / Web)    |
|                            +-----------------+                          |
+-------------------------------------------------------------------------+

Mục tiêu dự án

  1. Thu thập đa thông số vi khí hậu: Thu thập chính xác nhiệt độ ($0-50^\circ\text{C}$), độ ẩm không khí ($20-90%\text{ RH}$), độ ẩm đất ($0-100%$) và trạng thái lượng mưa theo thời gian thực.
  2. Hiển thị trực quan tại trạm (On-site Display): Tích hợp màn hình LCD 16x2 giao tiếp I2C hiển thị thông số liên tục với chu kỳ quét $\le 1\text{s}$.
  3. Truyền dẫn IoT không dây: Đóng gói và đẩy dữ liệu lên nền tảng đám mây Blynk Server qua giao thức Wi-Fi 802.11 b/g/n trên băng tần 2.4 GHz.
  4. Giám sát và cảnh báo từ xa: Thiết lập giao diện điều khiển (Dashboard) trên smartphone (iOS/Android) với độ trễ truyền nhận dưới 2 giây.

Phạm vi và giới hạn kỹ thuật

  • Phần cứng điều khiển: Vi điều khiển ATmega328P (Arduino Uno R3) kết hợp SoC ESP8266 (NodeMCU V1.0).
  • Phạm vi truyền thông: Kết nối trong mạng WLAN chuẩn 2.4GHz thông qua router Wi-Fi hoặc điểm truy cập di động (Hotspot).
  • Môi trường hoạt động: Thử nghiệm tại mô hình nhà màng và điều kiện thực nghiệm tại Công ty Cổ phần Bao bì Thuận Phát (Hải Phòng).

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

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

Tiêu chí so sánh Đo đạc thủ công truyền thống Hệ thống SCADA/PLC công nghiệp Giải pháp IoT vi điều khiển nhúng
Chi phí đầu tư Rất thấp ban đầu, tốn nhân công lâu dài Rất cao ($> 15.000.000\text{ VNĐ}$) Tối ưu ($< 800.000\text{ VNĐ}$)
Tính liên tục dữ liệu Gián đoạn theo ca làm việc Liên tục theo mili-giây Liên tục theo chu kỳ lập trình ($1-5\text{s}$)
Giám sát từ xa Không hỗ trợ Cần VPN/HMI chuyên dụng đắt đỏ Hỗ trợ toàn cầu qua Internet (Blynk App)
Khả năng mở rộng Không Phức tạp, phụ thuộc module hãng Linh hoạt mở rộng I/O qua chuẩn I2C, SPI
Tiêu thụ điện năng Không áp dụng $24\text{VDC} / 220\text{VAC}$ công suất lớn $5\text{VDC} / 3.3\text{VDC}$, tiết kiệm năng lượng

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc): Đo đạc chính xác nhiệt độ, độ ẩm không khí (DHT11), độ ẩm đất (cảm biến điện trở LM393), phát hiện mưa; kết nối ổn định tới Blynk Cloud; hiển thị LCD 16x2 I2C.
  • Should Have (Nên có): Tích hợp cảm biến khí gas MQ2 để cảnh báo rò rỉ khí đốt/khói; cơ chế tự động kết nối lại Wi-Fi khi mất mạng.
  • Could Have (Có thể mở rộng): Tích hợp rơ-le (Relay 5V) tự động đóng cắt máy bơm tưới nước khi độ ẩm đất xuống dưới $30%$.
  • Won't Have (Chưa thực hiện đợt này): Lưu trữ lịch sử dữ liệu lớn trên cơ sở dữ liệu phân tán (SQL/NoSQL database chuyên dụng).

Thiết kế hệ thống

Danh mục công nghệ và phiên bản phần mềm

  • Arduino IDE: Phiên bản 1.8.15 Compiler C/C++ (AVR-GCC 7.3.0).
  • Blynk C++ Core Library: Phiên bản 0.6.1 / 1.0.x API.
  • ESP8266 Arduino Core: Phiên bản 3.0.2 SDK.
  • LiquidCrystal_I2C Library: Thư viện điều khiển module PCF8574 v1.1.2.
  • DHT Sensor Library: Adafruit DHT library v1.4.2.

Sơ đồ kết nối chân phần cứng (Pinout Mapping)

===========================================================================
ARDUINO UNO R3        NGOẠI VI / CẢM BIẾN          MODULE I2C / ESP8266
===========================================================================
Pin Digital 7   <-->  DHT11 Data Pin
Pin Analog A0   <-->  Soil Moisture Sensor (AO)
Pin Digital 6   <-->  Raindrop Sensor (DO)
Pin Analog A1   <-->  MQ-2 Gas Sensor (AO)
Pin Analog A4   <-->  SDA (LCD 16x2 I2C Backpack - PCF8574)
Pin Analog A5   <-->  SCL (LCD 16x2 I2C Backpack - PCF8574)
Pin Digital 0/1 <-->  UART (RX/TX giao tiếp NodeMCU ESP8266)
5V / GND        <-->  Common Power Rail 5V / Ground
===========================================================================

Thiết kế địa chỉ và ánh xạ Virtual Pins trên Blynk

Virtual Pin Kiểu dữ liệu Phạm vi giá trị Đơn vị Chức năng Widget trên App
V0 Float $0.0 - 50.0$ $^\circ\text{C}$ Gauge: Nhiệt độ môi trường
V1 Float $20.0 - 90.0$ $% \text{RH}$ Gauge: Độ ẩm không khí
V2 Integer $0 - 100$ $%$ Level Widget: Độ ẩm đất
V3 Integer $0\text{ (Khô) } / 1\text{ (Mưa)}$ State LED Widget: Báo mưa
V4 Integer $0 - 1023$ ADC Raw Value Display: Nồng độ khí gas
+-------------------------------------------------------------+
|                        BLYNK CLOUD                          |
+-------------------------------------------------------------+
   ^               ^               ^               ^
   | V0 (Float)    | V1 (Float)    | V2 (Int)      | V3 (State)
+--+---------------+---------------+---------------+----------+
|                     NodeMCU ESP8266                         |
+-------------------------------------------------------------+

Phương pháp luận phát triển (Methodology)

Dự án áp dụng mô hình phát triển tích hợp phần cứng - phần mềm theo phương pháp lặp rút gọn (Iterative V-Model):

  1. Giai đoạn 1 (Tuần 1 - 3): Khảo sát đặc tính kỹ thuật các linh kiện cảm biến; kiểm tra sai số các công thức nhiệt điện trở bán dẫn $R_t = A e^{B/T}$ và cảm biến điện dung $f = \frac{1}{R \cdot C}$ sử dụng IC định thời NE555.
  2. Giai đoạn 2 (Tuần 4 - 6): Lập trình module hóa từng khối ngoại vi trên Arduino IDE; chuẩn hóa giao thức đọc 1-Wire của DHT11 và lọc nhiễu tín hiệu Analog ADC 10-bit trên ATmega328P.
  3. Giai đoạn 3 (Tuần 7 - 9): Tích hợp truyền thông UART/Wi-Fi với NodeMCU ESP8266, thiết lập Auth Token, cấu hình luồng dữ liệu Virtual Pins trên Blynk Server.
  4. Giai đoạn 4 (Tuần 10 - 12): Đóng gói phần cứng trên bảng mạch thử nghiệm (Breadboard/PCB), kiểm thử thực địa dài hạn tại xưởng bao bì và đánh giá sai số.

Implementation và kết quả

Quy trình phát triển phần mềm

Quá trình xây dựng mã nguồn tuân thủ kiến trúc phi chặn (Non-blocking Architecture) bằng cách sử dụng BlynkTimer thay vì hàm delay() truyền thống của Arduino, loại bỏ hoàn toàn nguy cơ mất kết nối với Cloud (Flood Error).

Thuật toán và mã nguồn thực thi chính (Arduino C++)

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Cấu hình mã định danh và kết nối mạng
char auth[] = "53e4da8793764b6197fc44a673ce4e21";
char ssid[] = "ThuanPhat_Packaging_WiFi";
char pass[] = "Industrial2021@";

#define DHTPIN 7
#define DHTTYPE DHT11
#define SOIL_PIN A0
#define RAIN_PIN 6

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
BlynkTimer timer;

void sendSensorData() {
  // 1. Đọc dữ liệu nhiệt độ - độ ẩm từ DHT11
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // 2. Đọc độ ẩm đất (chuyển đổi ADC 10-bit sang %)
  int soilRaw = analogRead(SOIL_PIN);
  int soilPercent = map(soilRaw, 1023, 0, 0, 100);
  soilPercent = constrain(soilPercent, 0, 100);

  // 3. Đọc trạng thái cảm biến mưa (Active LOW)
  int rainState = (digitalRead(RAIN_PIN) == LOW) ? 1 : 0;

  if (isnan(h) || isnan(t)) {
    Serial.println(F("[ERROR] Lỗi đọc dữ liệu từ cảm biến DHT11!"));
    return;
  }

  // 4. Cập nhật dữ liệu lên Blynk Cloud qua Virtual Pins
  Blynk.virtualWrite(V0, t);
  Blynk.virtualWrite(V1, h);
  Blynk.virtualWrite(V2, soilPercent);
  Blynk.virtualWrite(V3, rainState);

  // 5. Hiển thị thông số tại chỗ trên màn hình LCD 16x2
  lcd.setCursor(0, 0);
  lcd.print("T:");
  lcd.print((int)t);
  lcd.print("C H:");
  lcd.print((int)h);
  lcd.print("% S:");
  lcd.print(soilPercent);
  lcd.print("%");

  lcd.setCursor(0, 1);
  lcd.print("Rain: ");
  lcd.print(rainState ? "YES" : "NO ");
  lcd.print(" Net:OK");
}

void setup() {
  Serial.begin(9600);
  lcd.init();
  lcd.backlight();
  dht.begin();

  // Khởi tạo kết nối Blynk Server (Cấu hình máy chủ Cloud VN: port 8442)
  Blynk.begin(auth, ssid, pass, "cloud.vn", 8442);

  // Thiết lập Timer gửi dữ liệu định kỳ mỗi 2000ms (2 giây)
  timer.setInterval(2000L, sendSensorData);
}

void loop() {
  Blynk.run();
  timer.run();
}

Kiểm thử và xác thực hệ thống

Hệ thống đã trải qua quá trình kiểm thử liên tục trong 72 giờ tại môi trường phòng thí nghiệm và nhà xưởng thực tế với các chỉ số đo đạc cụ thể:

Kịch bản kiểm thử Thông số đo kiểm Giá trị thiết kế Kết quả thực nghiệm Đánh giá
Độ trễ cập nhật Cloud Ping time tới Blynk Server $< 2000\text{ ms}$ $1120\text{ ms} \pm 150\text{ ms}$ Đạt yêu cầu
Sai số nhiệt độ Đối chiếu với nhiệt kế chuẩn $\pm 2.0^\circ\text{C}$ $\pm 1.2^\circ\text{C}$ Đạt tiêu chuẩn
Sai số độ ẩm không khí Đối chiếu ẩm kế điện tử $\pm 5.0%\text{ RH}$ $\pm 3.8%\text{ RH}$ Đạt tiêu chuẩn
Tỷ lệ rớt gói tin (Packet Loss) Truyền 5000 frame liên tục $< 1.0%$ $0.24%$ Rất ổn định
Tự phục hồi sau mất Wi-Fi Reconnect time $< 15\text{ s}$ $6.4\text{ s}$ Đạt yêu cầu

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

  1. Kiến trúc phần cứng mở tối ưu chi phí: Kết hợp linh hoạt giữa năng lực xử lý số học nhiều cổng I/O của ATmega328P với khả năng kết nối không dây của ESP8266EX. So với giải pháp sử dụng module công nghiệp Zigbee hoặc PLC S7-1200 kết hợp thẻ Web Server, hệ thống giảm hơn 75% chi phí chế tạo.
  2. Tiết kiệm chân phần cứng bằng chuẩn I2C (PCF8574): Thu gọn 8 đường dây tín hiệu song song của màn hình LCD 16x2 xuống còn 2 dây (SDA/SCL), giải phóng tài nguyên GPIO cho các module chấp hành khác.
  3. Chuẩn hóa đo độ ẩm đất đa cơ chế: Đánh giá chuyên sâu giữa cảm biến đo trở kháng (Resistive) với cảm biến điện dung (Capacitive NE555), chỉ ra phương án sử dụng cảm biến điện dung để ngăn ngừa hiện tượng điện phân ăn mòn bản cực kim loại khi ngâm trong đất ẩm lâu ngày.
+-----------------------------------------------------------------------+
|                SO SÁNH CƠ CHẾ ĐO ĐỘ ẨM ĐẤT                           |
|                                                                       |
| 1. CẢM BIẾN ĐIỆN TRỞ (Resistive - LM393):                             |
|    - Cực kim loại tiếp xúc trực tiếp với đất                          |
|    - Dòng điện DC gây ra hiện tượng ĐIỆN PHÂN                         |
|    - Tuổi thọ: Ngắn (vài tuần/tháng)                                  |
|                                                                       |
| 2. CẢM BIẾN ĐIỆN DUNG (Capacitive - NE555):                           |
|    - Bản cực cách điện, đóng vai trò tụ điện                          |
|    - Không có dòng điện chạy trực tiếp qua đất                        |
|    - Tuổi thọ: Cao, chống ăn mòn hóa học                              |
+-----------------------------------------------------------------------+

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

Kịch bản ứng dụng thực tế

  • Nông nghiệp công nghệ cao (Smart Greenhouse): Tự động theo dõi độ ẩm đất và lượng mưa để kích hoạt hệ thống tưới nhỏ giọt hoặc mái che tự động, ngăn ngừa ngập úng rễ cây.
  • Giám sát kho bãi công nghiệp: Đo lường độ ẩm và nhiệt độ trong các kho bảo quản giấy, bao bì (như tại Công ty Thuận Phát) nhằm hạn chế nấm mốc và cảnh báo nguy cơ cháy nổ thông qua cảm biến khí gas MQ-2.
+-------------------------------------------------------------+
|               QUY TRÌNH TRIỂN KHAI THỰC TẾ                  |
+-------------------------------------------------------------+
  1. KHẢO SÁT         --> Vị trí lắp đặt cảm biến, độ phủ Wi-Fi
  2. LẮP ĐẶT          --> Gắn hộp chống nước IP65, đấu nối nguồn
  3. CẤU HÌNH         --> Cài đặt SSID, Password, Auth Token
  4. HIỆU CHUẨN       --> Đo kiểm chéo với thiết bị chuẩn
  5. BÀN GIAO         --> Hướng dẫn vận hành qua Blynk App

Dự toán chi phí phần cứng (BOM - Bill of Materials)

Linh kiện / Thiết bị Số lượng Đơn giá dự kiến (VNĐ) Thành tiền (VNĐ)
Board Arduino Uno R3 (Dip Atmega328P) 01 145.000 145.000
Kit phát triển NodeMCU ESP8266 V3 01 95.000 95.000
Cảm biến nhiệt độ, độ ẩm DHT11 01 35.000 35.000
Cảm biến độ ẩm đất kèm module LM393 01 25.000 25.000
Module cảm biến phát hiện mưa 01 30.000 30.000
Màn hình LCD 16x2 + Module I2C PCF8574 01 65.000 65.000
Nguồn Adapter 5V-2A + Phụ kiện dây nối 01 bộ 60.000 60.000
Tổng chi phí phần cứng 455.000 VNĐ

Hiệu quả đầu tư (ROI): Với chi phí chưa đến 500.000 VNĐ, hệ thống giúp người dùng giảm thiểu 80% thời gian kiểm tra thủ công, tiết kiệm điện nước tưới tiêu, đem lại điểm hoàn vốn (Break-even point) chỉ sau 3-4 tháng vận hành.


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 có dải đo nhiệt độ hẹp ($0-50^\circ\text{C}$) và sai số tương đối cao ($\pm 2^\circ\text{C}$), tần số lấy mẫu giới hạn ở mức 1Hz.
  • Nền tảng Blynk Cloud (phiên bản miễn phí) giới hạn mức năng lượng Energy Widget, gây trở ngại khi cần xây dựng dashboard phức tạp.
  • Cảm biến độ ẩm đất dạng điện trở dễ bị oxy hóa sau thời gian dài cắm trong đất ẩm có tính axit/kiềm nhẹ.

Hướng phát triển nâng cao

  1. Nâng cấp cảm biến công nghiệp: Thay thế DHT11 bằng cảm biến DHT22 hoặc SHT30/SHT35 (chuẩn giao tiếp I2C, độ chính xác nhiệt độ $\pm 0.2^\circ\text{C}$, độ ẩm $\pm 1.5%\text{ RH}$).
  2. Mở rộng giao thức truyền thông: Tích hợp giao thức không dây tầm xa LoRa/LoRaWAN (433MHz/915MHz) cho phép truyền dữ liệu từ các cánh đồng lớn cách xa trạm trung tâm 3-5km mà không phụ thuộc Wi-Fi.
  3. Chuyển đổi nền tảng Cloud độc lập: Xây dựng Broker MQTT riêng biệt trên nền tảng Raspberry Pi chạy Node-RED, InfluxDB và Grafana để lưu trữ dữ liệu chuỗi thời gian lớn và trực quan hóa chuyên sâu.

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

  • Sinh viên ngành Kỹ thuật Điều khiển & Tự động hóa, Điện tử viễn thông: Tiếp cận tài liệu tham khảo bài bản về quy trình thiết kế hệ thống nhúng IoT hoàn chỉnh từ tầng phần cứng, tầng truyền thông đến tầng ứng dụng Cloud.
  • Kỹ sư phát triển IoT: Tham khảo cấu trúc mã nguồn tối ưu với BlynkTimer, kỹ thuật ghép nối liên vi điều khiển và xử lý tín hiệu ngoại vi qua chuẩn I2C, 1-Wire.
  • Chủ trang trại, nhà vườn: Sở hữu giải pháp tự động hóa giám sát vi khí hậu với chi phí thấp, dễ dàng tự triển khai, vận hành và sửa chữa tại chỗ.

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

1. Yêu cầu nguồn điện và điều kiện hoạt động của hệ thống là gì?

Hệ thống sử dụng nguồn điện một chiều ổn định $5\text{VDC} - 2\text{A}$ qua cổng micro-USB hoặc chân Vin của kit điều khiển. Cảm biến hoạt động an toàn ở nhiệt độ môi trường từ $0^\circ\text{C}$ đến $50^\circ\text{C}$ với độ ẩm tương đối không đọng sương dưới $90%\text{ RH}$.

2. Nếu mất kết nối Wi-Fi thì hệ thống có tiếp tục hoạt động không?

Có. Hệ thống được lập trình độc lập, các cảm biến và màn hình LCD 16x2 vẫn liên tục đọc và hiển thị dữ liệu cục bộ tại chỗ. Ngay khi có tín hiệu Wi-Fi trở lại, tiến trình Blynk.run() sẽ tự động tái kết nối và tiếp tục truyền dữ liệu lên ứng dụng mà không cần reset thủ công.

3. Có thể thay thế Wi-Fi bằng mạng di động 4G/LTE không?

Hoàn toàn có thể. Người dùng có thể tích hợp module SIM (như SIM800A/SIM7600) giao tiếp qua cổng UART của Arduino để truyền dữ liệu qua GPRS/4G thông qua giao thức HTTP POST hoặc MQTT khi triển khai ở các khu vực vùng sâu không có sóng Wi-Fi.

4. Làm cách nào để tránh hiện tượng ăn mòn ở cảm biến độ ẩm đất?

Khuyến nghị chuyển đổi sang cảm biến độ ẩm đất điện dung (Capacitive Soil Moisture Sensor v1.2). Do các bản cực dẫn điện được phủ lớp sơn cách điện chống thấm, cảm biến hoạt động dựa trên sự thay đổi hằng số điện môi nên hoàn toàn không bị ăn mòn kim loại.

5. Chi phí duy trì nền tảng giám sát hàng tháng là bao nhiêu?

Với phiên bản Blynk cơ bản phục vụ nhu cầu giám sát thông số thiết yếu, chi phí vận hành máy chủ là 0 đồng. Đối với mô hình trang trại lớn cần nhiều thiết bị và lưu biểu đồ lịch sử theo năm, người dùng có thể triển khai hệ thống máy chủ mã nguồn mở Blynk Local Server trên máy tính cá nhân hoặc Raspberry Pi mà không tốn phí thuê bao.


Kết luận

Đề tài 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" đã hoàn thành xuất sắc các mục tiêu nghiên cứu và chế tạo thực nghiệm. Hệ thống chứng minh tính khả thi cao trong việc ứng dụng công nghệ IoT mã nguồn mở vào bài toán đo lường thông số môi trường phục vụ sản xuất và đời sống. Với ưu điểm chi phí thấp, độ tin cậy cao, khả năng mở rộng linh hoạt và giao diện điều khiển thân thiện, đây là mô hình tiêu biểu cho các giải pháp chuyển đổi số nông nghiệp và giám sát công nghiệp thông minh hiện nay.