Giới thiệu dự án

Trong bối cảnh công nghiệp 4.0 và quá trình chuyển đổi số nông nghiệp diễn ra mạnh mẽ, việc tự động hóa thu thập và giám sát dữ liệu môi trường đóng vai trò sống còn. Theo các báo cáo về nông nghiệp chính xác (Precision Agriculture), việc kiểm soát sai lệch vi khí hậu (nhiệt độ, độ ẩm không khí và độ ẩm đất) có thể gây sụt giảm từ 20% đến 40% năng suất cây trồng và gia tăng 35% chi phí vận hành do lãng phí tài nguyên nước và nhân lực.

Vấn đề thực tiễn (Problem Statement)

Các phương pháp giám sát vi khí hậu truyền thống tại các nhà kính vừa và nhỏ hoặc các nhà kho bảo quản hiện nay đang đối mặt với những nút thắt lớn:

  • Ghi chép thủ công (Manual Logging): Tốn nhiều thời gian, nhân lực, dữ liệu rời rạc và không có khả năng phản ứng kịp thời trước các biến động thời tiết bất thường.
  • Hệ thống điều khiển cục bộ (Standalone Systems): Chỉ hiển thị tại chỗ qua màn hình LED/LCD, thiếu khả năng cảnh báo sớm từ xa qua mạng diện rộng.
  • Chi phí triển khai PLC/SCADA công nghiệp quá cao: Các giải pháp công nghiệp tiêu chuẩn có giá thành dao động từ hàng chục đến hàng trăm triệu đồng, không khả thi đối với các mô hình sản xuất quy mô vừa, nhỏ và hộ gia đình.

Mục tiêu đề tài (Project Objectives)

Đề tài "Đo, giám sát nhiệt độ và độ ẩm sử dụng Arduino kết nối qua mạng Internet" được thực hiện bởi sinh viên Phạm Thị Nhung dưới sự hướng dẫn của TS. Đoàn Hữu Chức (Trường Đại học Quản lý và Công nghệ Hải Phòng) nhằm giải quyết triệt để bài toán trên với 4 mục tiêu cụ thể:

  1. Thiết kế khối thu thập dữ liệu phần cứng: Tích hợp đa cảm biến gồm cảm biến nhiệt độ - độ ẩm không khí DHT11, cảm biến độ ẩm đất và cảm biến nước mưa.
  2. Xây dựng khối xử lý và truyền thông không dây: Tận dụng năng lực xử lý và kết nối Wi-Fi chuẩn IEEE 802.11 b/g/n của vi điều khiển ESP8266 NodeMCU kết hợp nền tảng Arduino.
  3. Phát triển giao diện giám sát và điều khiển qua Internet: Đồng bộ hóa dữ liệu thời gian thực lên nền tảng IoT Blynk Cloud, cho phép hiển thị trực quan trên ứng dụng di động và kích hoạt cơ chế điều khiển máy bơm tưới tiêu tự động khép kín.
  4. Tối ưu hóa chi phí và tính ứng dụng: Hiện thực hóa mô hình phần cứng dạng module nhỏ gọn, độ bền cao, dễ lắp đặt và mở rộng trong thực tế đào tạo STEM/STEAM cũng như sản xuất nông nghiệp.

Phạm vi và giới hạn (Scope & Limitations)

  • Phạm vi: Giám sát nhiệt độ không khí ($0^\circ\text{C} - 50^\circ\text{C}$), độ ẩm không khí ($20% - 90%\text{ RH}$) và độ ẩm đất ($0% - 100%$) trong khuôn viên nhà kính hoặc trang trại có hạ tầng mạng Wi-Fi 2.4GHz.
  • Giới hạn: Hệ thống phụ thuộc vào tính sẵn sàng của đường truyền Internet và nguồn điện lưới/nguồn Adapter 5V-9V DC tại điểm triển khai.

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

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

Để lựa chọn kiến trúc tối ưu, đồ án đã tiến hành so sánh đối chiếu giữa các giải pháp giám sát môi trường phổ biến trên thị trường:

Tiêu chí Đo ghi dữ liệu truyền thống (Data Logger) Mạng cảm biến không dây ZigBee/LoRa Giải pháp IoT dựa trên ESP8266 + Blynk (Đề tài)
Chi phí đầu tư Trung bình ($50 - $150) Cao ($100 - $300, cần Gateway) Rất thấp (< $25)
Khả năng giám sát từ xa Không (phải rút thẻ nhớ/cắm cáp) Có (thông qua trạm Gateway trung tâm) Có (kết nối trực tiếp Internet qua Wi-Fi)
Thời gian đáp ứng Trễ cao (dữ liệu offline) Thời gian thực (độ trễ 1s - 5s) Thời gian thực (độ trễ < 1s)
Khả năng điều khiển ngược Không hỗ trợ Phức tạp, cần lập trình Gateway Dễ dàng qua Widget trên Blynk App
Độ phức tạp bảo trì Thấp Cao (cần chuyên môn về giao thức mạng) Rất thấp (dễ thay thế linh kiện module)

Phân tích yêu cầu chức năng (MoSCoW Prioritization)

  • Must Have (Bắt buộc có): Đo chính xác các thông số nhiệt độ, độ ẩm không khí qua DHT11; đo độ ẩm đất qua kênh ADC; truyền dữ liệu qua Wi-Fi lên Blynk Server; tự động bật/tắt máy bơm qua Relay khi đất thiếu nước.
  • Should Have (Nên có): Hiển thị dữ liệu song song tại hiện trường qua màn hình LCD 16x2; gửi thông báo đẩy (Push Notification) về smartphone khi độ ẩm chạm ngưỡng nguy hiểm.
  • Could Have (Có thể có): Mở rộng cảm biến cảnh báo trời mưa để tự động đóng/ngắt hệ thống rèm che hoặc ngừng tưới.
  • Won't Have (Chưa thực hiện ở giai đoạn này): Phân tích dữ liệu lớn bằng AI/Machine Learning để dự đoán sâu bệnh trên nền tảng Cloud.

Thiết kế kiến trúc hệ thống

Kiến trúc hệ thống được thiết kế theo mô hình phân lớp chuẩn IoT (Perception Layer, Network Layer, Application Layer):

graph TD
    subgraph Perception_Layer ["Tầng Cảm Biến & Chấp Hành"]
        DHT11["Cảm biến DHT11 (Nhiệt độ & Độ ẩm KK)"]
        SOIL["Cảm biến Độ ẩm đất (Analog)"]
        RAIN["Cảm biến Nước mưa"]
        RELAY["Module Relay 5V"]
        PUMP["Máy bơm nước mini"]
        LCD["Màn hình LCD 16x2"]
        RELAY --> PUMP
    end

    subgraph Processing_Layer ["Tầng Xử Lý Trung Tâm"]
        ESP["Vi điều khiển ESP8266 NodeMCU"]
        ARDUINO["Bo mạch Arduino Uno"]
    end

    subgraph Network_Layer ["Tầng Truyền Dẫn & Mạng"]
        WIFI["Wi-Fi Access Point (IEEE 802.11 b/g/n)"]
        INTERNET["Internet Gateway"]
    end

    subgraph Cloud_App_Layer ["Tầng Ứng Dụng & Điều Khiển"]
        BLYNK_SRV["Blynk Cloud Server"]
        SMARTPHONE["Ứng dụng Blynk trên Smartphone"]
    end

    DHT11 -->|One-Wire Pin D2| ARDUINO
    ARDUINO -->|Parallel Bus 4-bit| LCD
    SOIL -->|Tín hiệu Analog A0| ESP
    RAIN -->|Tín hiệu Digital D7| ESP
    ESP -->|Kích đóng/ngắt Pin D0| RELAY
    ESP <-->|Giao thức TCP/IP Wi-Fi| WIFI
    WIFI <--> INTERNET
    INTERNET <--> BLYNK_SRV
    BLYNK_SRV <--> SMARTPHONE

Thông số công nghệ và ngăn xếp kỹ thuật (Technology Stack)

  • Vi xử lý & Vi điều khiển:
    • ESP8266 NodeMCU (Tensilica Xtensa 32-bit L106, xung nhịp 80MHz, tích hợp Wi-Fi SoC IEEE 802.11 b/g/n băng tần 2.4GHz).
    • ATmega328P trên Arduino Uno Rev3 (8-bit AVR, xung nhịp 16MHz).
  • Cảm biến và cơ cấu chấp hành:
    • DHT11 (Dải nhiệt $0 - 50^\circ\text{C} \pm 2^\circ\text{C}$, dải ẩm $20 - 90%\text{ RH} \pm 5%\text{ RH}$, chu kỳ lấy mẫu 1Hz).
    • Cảm biến độ ẩm đất dạng điện trở (Điện áp hoạt động 3.3V - 5V, xuất tín hiệu Analog $0 - 1023$ và Digital qua biến trở so sánh LM393).
    • Module Relay 1 kênh Opto cách ly quang 5VDC, chịu tải 10A/250VAC.
  • Nền tảng phần mềm & Giao thức:
    • Arduino IDE v1.8.19 / v2.0.x với trình biên dịch AVR-GCC và ESP8266 Core v3.0.2.
    • Blynk IoT Platform v1.0+ (Giao thức truyền nhận TCP/IP qua Token xác thực Auth Token).
    • Thư viện lập trình: DHT.h (v1.4.4), LiquidCrystal.h (v1.0.7), ESP8266WiFi.h, BlynkSimpleEsp8266.h.

Quy trình phát triển (Methodology)

Dự án áp dụng mô hình phát triển linh hoạt (Agile-based Prototyping) qua 4 mốc tiến độ:

  1. Milestone 1 (Tuần 1 - Tuần 3): Nghiên cứu lý thuyết truyền dẫn sóng vô tuyến IEEE 802.11, khảo sát nguyên lý chuyển đổi điện trở - điện áp của các loại cảm biến.
  2. Milestone 2 (Tuần 4 - Tuần 7): Thiết kế mạch nguyên lý, phân bổ chân GPIO, kiểm tra khả năng tương thích điện áp giữa mức logic 5V (Arduino) và 3.3V (ESP8266).
  3. Milestone 3 (Tuần 8 - Tuần 10): Viết firmware nạp cho vi điều khiển, thiết lập cấu hình Auth Token trên Cloud Server và thiết kế Dashboard điều khiển trên Blynk Mobile App.
  4. Milestone 4 (Tuần 11 - Tuần 12): Thử nghiệm thực tế trong môi trường đất trồng cây, đánh giá sai số cảm biến, tinh chỉnh thuật toán tưới tự động và tối ưu hóa thời gian truyền gói tin.

Implementation và kết quả

Quá trình phát triển và thuật toán cốt lõi

Hệ thống triển khai hai khối xử lý phần mềm chính: Khối hiển thị đo đạc vi khí hậu cục bộ trên Arduino Uno và khối xử lý trung tâm - điều khiển chấp hành kết nối Cloud trên ESP8266 NodeMCU.

1. Thuật toán thu thập dữ liệu DHT11 và hiển thị LCD

Chương trình khởi tạo giao tiếp đơn tuyến (One-Wire communication) với chân dữ liệu của cảm biến DHT11 tại chân Digital 2 của Arduino. Cứ sau mỗi 1000ms, hàm lấy mẫu sẽ đọc giá trị nhiệt độ và độ ẩm không khí, lọc lỗi bằng hàm isnan() trước khi xuất dữ liệu ra màn hình LCD 16x2.

// Trích xuất từ source code đồ án - Khối hiển thị cục bộ Arduino
#include <DHT.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
const int DHTPIN = 2;
const int DHTTYPE = DHT11;
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  lcd.begin(16, 2);
  dht.begin();
}

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  
  if (isnan(t) || isnan(h)) {
    lcd.setCursor(0, 0);
    lcd.print("Loi cam bien!");
  } else {
    lcd.setCursor(0, 0);
    lcd.print("Nhiet do: ");
    lcd.print(t, 1);
    lcd.print((char)223);
    lcd.print("C");
    
    lcd.setCursor(0, 1);
    lcd.print("Do am: ");
    lcd.print(h, 1);
    lcd.print(" %");
  }
  delay(1000);
}

2. Thuật toán xử lý tín hiệu tương tự (ADC) và đồng bộ Blynk Cloud

Giá trị điện áp thu được từ hai cực đo độ ẩm đất được đưa vào chân Analog A0 của ESP8266 (bộ chuyển đổi ADC 10-bit với dải giá trị $0 - 1023$). Do đất càng ẩm thì điện trở càng giảm (dẫn điện tốt, điện áp A0 giảm dần), thuật toán cần thực hiện hàm ánh xạ tuyến tính ngược để quy đổi giá trị về thang đo phần trăm thực tế ($0% - 100%$):

$$\text{Do_am} = 100 - \text{map}(\text{gia_tri_adc}, 0, 1023, 0, 100)$$

// Trích xuất từ source code đồ án - Khối IoT ESP8266 & Blynk
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

#define do_am_pin D7
#define adc_pin A0
#define RELAY_PUMP_PIN D0

char auth[] = "TL7A7vnE5uz5Omo2uJhRExNWwMJf5St7";
char ssid[] = "Cong Ty HTC";
char pass[] = "88888888";

int do_am, gia_tri_adc;
const int NGUONG_DO_AM_THAP = 40; // Ngưỡng kích hoạt tưới 40%

void setup() {
  Serial.begin(9600);
  pinMode(RELAY_PUMP_PIN, OUTPUT);
  digitalWrite(RELAY_PUMP_PIN, HIGH); // Tắt Relay ban đầu (Active Low)
  Blynk.begin(auth, ssid, pass);
}

void loop() {
  Blynk.run();
  
  gia_tri_adc = analogRead(adc_pin);
  // Ánh xạ dải ADC 10-bit sang % và nghịch đảo giá trị
  do_am = map(gia_tri_adc, 0, 1023, 0, 100);
  do_am = 100 - do_am; 
  
  // Đẩy dữ liệu lên Blynk Virtual Pin V1
  Blynk.virtualWrite(V1, do_am);
  
  // Logic tự động kích hoạt máy bơm tưới tiêu
  if (do_am < NGUONG_DO_AM_THAP) {
    digitalWrite(RELAY_PUMP_PIN, LOW); // Đóng tiếp điểm Relay để bật bơm
    Serial.println("Do am thap: Dang kich hoat may bom!");
  } else {
    digitalWrite(RELAY_PUMP_PIN, HIGH); // Mở tiếp điểm Relay để tắt bơm
    Serial.println("Do am dat toi uu: Dung may bom.");
  }
  
  delay(1000);
}

Đo kiểm và đánh giá hiệu năng (Testing & Benchmarks)

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 thực tế để thu thập dữ liệu độ tin cậy:

  • Độ trễ truyền nhận tín hiệu (Network Latency): Thời gian trung bình từ lúc cảm biến thay đổi trạng thái đến khi biểu đồ trên ứng dụng Blynk cập nhật là $185\text{ ms}$ (trong điều kiện mạng Wi-Fi $2.4\text{ GHz}$, RSSI từ $-55\text{ dBm}$ đến $-68\text{ dBm}$).
  • Tỷ lệ mất gói tin (Packet Loss): Đạt mức cực thấp $0.28%$ qua 259,200 chu kỳ gửi dữ liệu.
  • Thời gian phản hồi cơ cấu chấp hành: Relay đóng ngắt máy bơm nước chính xác trong vòng $< 50\text{ ms}$ ngay khi vi điều khiển phát hiện độ ẩm đất tụt xuống dưới mức cài đặt ($40%$).
  • Mức tiêu thụ năng lượng: Toàn bộ mạch điều khiển tiêu thụ dòng định mức trung bình $75\text{ mA} - 120\text{ mA}$ ở chế độ phát Wi-Fi liên tục tại điện áp 5VDC (công suất $\approx 0.6\text{ W}$).

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

  1. Kiến trúc phân tán tối ưu chi phí (Edge-to-Cloud Architecture): Thay vì sử dụng các module GSM đắt đỏ tính cước viễn thông hoặc các cổng Gateway đắt tiền, đồ án đã tích hợp trực tiếp SoC ESP8266 vừa thực hiện chức năng tính toán tại biên (Edge Computing: lọc tín hiệu, ánh xạ ADC, ra quyết định kích bơm), vừa đóng vai trò trạm phát thông tin lên Cloud.
  2. Cải thiện 85% chi phí đầu tư ban đầu: Giảm tổng mức chi phí linh kiện từ khoảng $150 - $200 (ở các hệ thống SCADA thu nhỏ) xuống còn dưới $20 - $25/nút giám sát.
  3. Thuật toán điều khiển vòng kín (Closed-loop Feedback): Tự động điều tiết nước tưới dựa trên giá trị độ ẩm đất đo thực tế, giảm thiểu tới $32%$ lượng nước tiêu thụ so với phương pháp tưới hẹn giờ định kỳ không theo dõi độ ẩm đất.
  4. Đóng góp vào phương pháp đào tạo ứng dụng: Cung cấp bộ khung mã nguồn mẫu, tài liệu phần cứng và sơ đồ kết nối chuẩn hóa, phục vụ đắc lực cho các hoạt động nghiên cứu, giảng dạy liên ngành STEM/STEAM trong các trường kỹ thuật.

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

Kịch bản triển khai thực tế (Use Cases)

  • Nông nghiệp công nghệ cao (Smart Agriculture): Triển khai tại các nhà kính trồng rau thủy canh, vườn ươm hoa lan hoặc mô hình dưa lưới, nơi yêu cầu nghiêm ngặt về độ ẩm đất và không khí.
  • Giám sát kho bãi, dược phẩm và thực phẩm: Đảm bảo điều kiện lưu trữ hạt giống, nông sản hoặc dược liệu không bị ẩm mốc nhờ cảnh báo tức thời qua điện thoại.
  • Hệ thống sân vườn Smart Home: Tự động chăm sóc cây cảnh sân thượng hoặc khuôn viên biệt thự mà không cần sự can thiệp của gia chủ khi vắng nhà.

Lộ trình triển khai (Implementation Roadmap)

gantt
    title Lộ trình 4 giai đoạn triển khai ứng dụng thực tế
    dateFormat  YYYY-MM-DD
    section Giai đoạn 1: Chuẩn bị
    Khảo sát vị trí và nguồn cấp Wi-Fi         :a1, 2026-10-01, 7d
    Đóng vỏ bảo vệ chuẩn chống nước IP65      :a2, after a1, 7d
    section Giai đoạn 2: Lắp đặt
    Bố trí đầu dò cảm biến độ ẩm đất sâu 10-15cm :a3, after a2, 5d
    Đấu nối nguồn Adapter và van điện từ/bơm   :a4, after a3, 4d
    section Giai đoạn 3: Cấu hình
    Nạp firmware, kết nối Wi-Fi & Blynk Auth   :a5, after a4, 3d
    Hiệu chuẩn ngưỡng ẩm đất theo loại cây trồng:a6, after a5, 5d
    section Giai đoạn 4: Vận hành
    Bàn giao người dùng, theo dõi và bảo trì   :a7, after a6, 14d

Phân tích hiệu quả kinh tế (ROI Analysis)

  • Chi phí thiết bị ban đầu: ~500.000 VNĐ/bộ thiết bị.
  • Chi phí nhân công tiết kiệm: Giảm 1 giờ công lao động tưới tiêu mỗi ngày ($\approx 30.000\text{ VNĐ/ngày}$).
  • Thời gian hoàn vốn (Payback Period): Chưa đầy 1 tháng đối với mô hình sản xuất nông nghiệp hộ gia đình quy mô $100\text{ m}^2$.

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

Hạn chế kỹ thuật

  • Độ bền cảm biến độ ẩm đất: Cảm biến sử dụng điện cực kim loại tiếp xúc trực tiếp với đất nên dễ bị hiện tượng điện phân và oxy hóa ăn mòn sau $3 - 6$ tháng vận hành liên tục.
  • Dải đo DHT11: Độ phân giải và dải đo của DHT11 ($0 - 50^\circ\text{C}$) còn hạn chế, chưa thích hợp cho các môi trường công nghiệp có nhiệt độ khắc nghiệt.
  • Phụ thuộc hạ tầng Wi-Fi: Hệ thống mất khả năng đồng bộ Cloud khi tín hiệu mạng Wi-Fi tại hiện trường bị gián đoạn.

Hướng nâng cấp đề xuất

  • Thay thế cảm biến điện trở bằng Cảm biến độ ẩm đất điện dung (Capacitive Soil Moisture Sensor v1.2) chống ăn mòn hóa học.
  • Nâng cấp cảm biến khí hậu lên DHT22 (AM2302) hoặc dòng công nghiệp SHT30 / SHT35 với giao tiếp I2C cho độ chính xác cao ($\pm 0.3^\circ\text{C}$, $\pm 2%\text{ RH}$).
  • Bổ sung giao thức MQTT (Message Queuing Telemetry Transport) có mã hóa TLS/SSL để tăng cường bảo mật và kết nối về nền tảng Home Assistant/ThingsBoard.
  • Thiết kế mạch tích hợp nguồn năng lượng mặt trời (Solar Panel + Pin 18650 Li-ion + IC sạc TP4056) và lập trình chế độ ngủ sâu (Deep Sleep) cho ESP8266 để vận hành độc lập không cần điện lưới.

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

  • Sinh viên & Học viên kỹ thuật: Nắm vững cấu trúc phần cứng nhúng, phương pháp xử lý tín hiệu cảm biến và giao thức kết nối vi điều khiển với Cloud.
  • Kỹ sư & Lập trình viên IoT: Tham khảo mô hình phân lớp, kiến trúc code C/C++ phi chặn (non-blocking) và kỹ thuật map tín hiệu ADC cho các dự án IoT thực tế.
  • Nhà nông & Doanh nghiệp nông nghiệp: Sở hữu giải pháp giám sát tự động hóa chi phí thấp, kiểm soát năng suất và tiết kiệm tài nguyên bền vững.
  • Giảng viên & Nhà nghiên cứu: Bộ tài liệu tham khảo hoàn chỉnh phục vụ xây dựng giáo trình thực hành các môn học Điện - Điện tử, Đo lường cảm biến, Hệ thống nhúng và IoT.

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

1. Yêu cầu phần cứng tối thiểu để triển khai hệ thống là gì?

Cần 01 kit ESP8266 NodeMCU, 01 cảm biến DHT11 (hoặc DHT22), 01 module cảm biến độ ẩm đất, 01 module Relay 5V, 01 nguồn cấp 5V/2A Micro-USB hoặc Adapter DC, và điểm phát Wi-Fi 2.4GHz có kết nối Internet.

2. Khi mất kết nối Wi-Fi/Internet, hệ thống có tiếp tục tự động tưới nước không?

Có. Thuật toán đọc giá trị ADC từ cảm biến độ ẩm đất và kích hoạt chân điều khiển Relay D0 chạy độc lập trên bộ nhớ Flash của vi điều khiển ESP8266. Khi mất kết nối Internet, chỉ có tính năng hiển thị từ xa trên smartphone bị tạm ngắt, hệ thống vẫn duy trì logic tự động tưới tại chỗ.

3. Có thể mở rộng số lượng cảm biến trên cùng một bo mạch ESP8266 không?

Do ESP8266 chỉ có duy nhất 01 chân Analog (A0), nếu muốn mở rộng nhiều cảm biến đo độ ẩm đất ở các luống khác nhau, cần sử dụng thêm IC giải mã ghép kênh analog như CD74HC4067 (16 kênh) hoặc ADS1115 (ADC 16-bit 4 kênh qua I2C).

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

Nền tảng Blynk IoT cung cấp gói dịch vụ Free Plan cho phép kết nối thiết bị với các Datastream và Widget cơ bản mà không phát sinh chi phí duy trì hàng tháng, rất phù hợp cho quy mô hộ gia đình và nghiên cứu thử nghiệm.

5. Tại sao phải sử dụng công thức 100 - do_am trong thuật toán đọc độ ẩm đất?

Cảm biến độ ẩm đất hoạt động dựa trên nguyên lý dẫn điện: đất càng khô thì điện trở càng cao, điện áp rơi trên chân A0 càng lớn (tiệm cận mức 1023); đất càng ướt thì điện áp càng thấp (tiệm cận mức 0). Do đó, cần lấy $100$ trừ đi giá trị sau khi map để chuyển đổi sang đúng tỷ lệ phần trăm độ ẩm thực tế.


Kết luận

Đồ án tốt nghiệp "Đo, giám sát nhiệt độ và độ ẩm sử dụng Arduino kết nối qua mạng Internet" của tác giả Phạm Thị Nhung đã giải quyết trọn vẹn bài toán tích hợp giữa kỹ thuật đo lường cảm biến, kỹ thuật vi điều khiển và công nghệ Internet vạn vật (IoT). Hệ thống đạt độ ổn định cao, tốc độ phản hồi thời gian thực với chi phí tối ưu, chứng minh tính khả thi vượt trội khi ứng dụng vào mô hình nông nghiệp thông minh và giáo dục kỹ thuật hiện đại.