Trạm Thời Tiết IoT cho Trang Trại: Đo nhiệt độ, độ ẩm, ánh sáng, mưa và độ ẩm đất bằng ESP32
Trung cấp✦ Nổi bật20/4/2024

Trạm Thời Tiết IoT cho Trang Trại: Đo nhiệt độ, độ ẩm, ánh sáng, mưa và độ ẩm đất bằng ESP32

Xây dựng trạm thời tiết IoT cho trang trại sử dụng ESP32-S3 Due-core để đo nhiệt độ, độ ẩm không khí, độ ẩm đất, ánh sáng và mưa. Dữ liệu được gửi lên Cloud qua MQTT để theo dõi từ xa, phân tích điều kiện môi trường và cảnh báo khi có bất thường.

WeatherESP32Sensors
834 lượt thích314 người đã làm4 giờ6 bước6 linh kiện
← Quay lại dự án
Hướng dẫn chi tiết

Phần 5: Thiết lập cảnh báo và phân tích dữ liệu

1. Giới thiệu về tính năng cảnh báo trong IoTLabs Cloud, 2. Cấu hình ngưỡng cảnh báo cho từng cảm biến, 3. Viết mã xử lý dữ liệu để phân tích và đưa ra cảnh báo, 4. Thực hiện kiểm tra và tối ưu hóa hệ thống cảnh báo, 5. Tích hợp tính năng gửi thông báo đến điện thoại hoặc email.

Cập nhật 01/06/2026

Phần 5: Thiết lập cảnh báo và phân tích dữ liệu

Trong phần này, chúng ta sẽ tìm hiểu cách thiết lập tính năng cảnh báo cho trạm thời tiết IoT sử dụng ESP32-S3. Tính năng này rất quan trọng để theo dõi các yếu tố môi trường trong trang trại và đưa ra cảnh báo kịp thời khi có bất thường.

1. Giới thiệu về tính năng cảnh báo trong IoTLabs Cloud

Tính năng cảnh báo trong IoTLabs Cloud cho phép người dùng theo dõi và nhận thông báo khi các thông số môi trường vượt quá ngưỡng an toàn. Điều này giúp người quản lý trang trại có thể can thiệp kịp thời, tránh thiệt hại do thời tiết hoặc điều kiện môi trường không thuận lợi.

Người dùng có thể nhận thông báo qua email hoặc điện thoại, tùy theo cấu hình mà họ đã thiết lập. Tính năng này không chỉ giúp theo dõi mà còn hỗ trợ phân tích dữ liệu lịch sử để đưa ra quyết định hợp lý cho việc canh tác.

2. Cấu hình ngưỡng cảnh báo cho từng cảm biến

Để thiết lập cảnh báo cho các cảm biến, trước tiên bạn cần xác định ngưỡng cảnh báo cho từng loại cảm biến. Dưới đây là một số ngưỡng cảnh báo mẫu:

  • Nhiệt độ: Cảnh báo khi nhiệt độ vượt quá 35°C hoặc dưới 5°C.
  • Độ ẩm không khí: Cảnh báo khi độ ẩm dưới 30% hoặc trên 80%.
  • Độ ẩm đất: Cảnh báo khi độ ẩm dưới 20%.
  • Ánh sáng: Cảnh báo khi ánh sáng vượt quá 1000 Lux.
  • Mưa: Cảnh báo khi lượng mưa vượt quá 10mm trong 1 giờ.

Người dùng có thể vào giao diện IoTLabs Cloud để cấu hình các ngưỡng này cho từng cảm biến theo nhu cầu cụ thể của trang trại.

3. Viết mã xử lý dữ liệu để phân tích và đưa ra cảnh báo

Tiếp theo, chúng ta sẽ viết mã để xử lý dữ liệu từ các cảm biến và kiểm tra xem các giá trị có vượt quá ngưỡng cảnh báo hay không. Dưới đây là một mã mẫu để thực hiện điều này:


#include <WiFi.h>
#include <PubSubClient.h>

// Khai báo các thông số kết nối Wi-Fi và MQTT
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
const char* mqtt_server = "mqtt.iotlabs.com";
const char* mqtt_topic = "farm/weather";

// Khai báo các ngưỡng cảnh báo
const float temp_threshold_high = 35.0;
const float temp_threshold_low = 5.0;
const float humidity_threshold_high = 80.0;
const float humidity_threshold_low = 30.0;
// Thêm các ngưỡng khác tương tự...

void setup() {
    Serial.begin(115200);
    WiFi.begin(ssid, password);
    // Kết nối đến MQTT server
    client.setServer(mqtt_server, 1883);
}

void loop() {
    // Đọc dữ liệu từ cảm biến
    float temperature = readTemperature();
    float humidity = readHumidity();
    // Thêm các cảm biến khác...

    // Kiểm tra ngưỡng cảnh báo
    if (temperature > temp_threshold_high || temperature < temp_threshold_low) {
        sendAlert("Cảnh báo: Nhiệt độ không bình thường!");
    }
    if (humidity > humidity_threshold_high || humidity < humidity_threshold_low) {
        sendAlert("Cảnh báo: Độ ẩm không bình thường!");
    }
    // Thêm kiểm tra cho các cảm biến khác...

    delay(5000); // Delay 5 giây trước khi đọc lại
}

void sendAlert(String message) {
    client.publish(mqtt_topic, message.c_str());
    Serial.println(message);
}

float readTemperature() {
    // Đo nhiệt độ từ cảm biến
    return random(0, 40); // Giả lập giá trị
}

float readHumidity() {
    // Đo độ ẩm từ cảm biến
    return random(0, 100); // Giả lập giá trị
}

4. Thực hiện kiểm tra và tối ưu hóa hệ thống cảnh báo

Sau khi đã viết mã và cấu hình ngưỡng cảnh báo, bạn cần thực hiện kiểm tra hệ thống để đảm bảo nó hoạt động đúng cách. Dưới đây là một số bước cần thực hiện:

  1. Chạy mã để kiểm tra các giá trị cảm biến.
  2. Giả lập các tình huống khác nhau (nhiệt độ cao, độ ẩm thấp, v.v.) để xem hệ thống có gửi cảnh báo hay không.
  3. Nếu cần, điều chỉnh ngưỡng cảnh báo cho phù hợp với thực tế trong trang trại.

Tip: Hãy thường xuyên kiểm tra và cập nhật ngưỡng cảnh báo để đảm bảo hệ thống luôn hoạt động hiệu quả và chính xác.

5. Tích hợp tính năng gửi thông báo đến điện thoại hoặc email

Cuối cùng, để nhận được thông báo khi có cảnh báo, bạn cần tích hợp tính năng gửi thông báo qua email hoặc điện thoại. Dưới đây là một ví dụ về cách gửi thông báo qua email khi có cảnh báo:


#include <SMTPClient.h>

// Thông tin email
const char* email_to = "recipient@example.com";
const char* email_from = "your_email@example.com";
const char* smtp_server = "smtp.example.com";
const char* smtp_user = "your_email@example.com";
const char* smtp_password = "YOUR_PASSWORD";

void sendEmailAlert(String message) {
    SMTPClient smtp;
    smtp.setServer(smtp_server, 587);
    smtp.setCredentials(smtp_user, smtp_password);
    smtp.setFrom(email_from);
    smtp.setTo(email_to);
    smtp.setSubject("Cảnh báo trang trại");
    smtp.setMessage(message);
    smtp.send();
}

// Gọi hàm sendEmailAlert trong hàm sendAlert
void sendAlert(String message) {
    client.publish(mqtt_topic, message.c_str());
    sendEmailAlert(message);
    Serial.println(message);
}

Bằng cách này, mỗi khi hệ thống phát hiện bất thường, nó sẽ gửi thông báo đến email của bạn, giúp bạn không bỏ lỡ bất kỳ cảnh báo nào.

Tóm lại, việc thiết lập cảnh báo cho trạm thời tiết IoT là một bước quan trọng trong việc quản lý trang trại hiệu quả. Bằng cách theo dõi các thông số môi trường và nhận thông báo kịp thời, bạn có thể bảo vệ cây trồng và tối ưu hóa sản xuất.