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 2: Kết nối và lập trình cảm biến

1. Giới thiệu về các cảm biến cần sử dụng: DHT11/DHT22, cảm biến độ ẩm đất, cảm biến ánh sáng BH1750, cảm biến mưa, 2. Sơ đồ kết nối các cảm biến với ESP32, 3. Lập trình để đọc dữ liệu từ các cảm biến, 4. Kiểm tra và hiển thị dữ liệu cảm biến qua Serial Monitor, 5. Xử lý lỗi và khắc phục sự cố.

Cập nhật 01/06/2026

Phần 2: Kết nối và lập trình cảm biến

1. Giới thiệu về các cảm biến cần sử dụng

Trong dự án trạm thời tiết IoT cho trang trại, chúng ta sẽ sử dụng các cảm biến sau để đo các thông số môi trường:

  • Cảm biến nhiệt độ và độ ẩm DHT11/DHT22: Cảm biến này có khả năng đo nhiệt độ và độ ẩm không khí với độ chính xác cao. DHT22 có độ chính xác tốt hơn và dải đo rộng hơn so với DHT11.
  • Cảm biến độ ẩm đất: Cảm biến này giúp đo độ ẩm của đất, giúp xác định tình trạng ẩm ướt của đất, từ đó có thể điều chỉnh tưới nước cho cây trồng một cách hợp lý.
  • Cảm biến ánh sáng BH1750: Cảm biến này có khả năng đo cường độ ánh sáng với độ chính xác cao, giúp theo dõi điều kiện ánh sáng cho cây trồng.
  • Cảm biến mưa: Cảm biến này giúp phát hiện sự có mặt của nước, từ đó có thể cảnh báo khi trời mưa, giúp bảo vệ trang trại khỏi các tác động bất lợi.

2. Sơ đồ kết nối các cảm biến với ESP32

Dưới đây là sơ đồ kết nối các cảm biến với ESP32-S3:


DHT11/DHT22: 
- VCC -> 3.3V
- GND -> GND
- DATA -> GPIO 23

Cảm biến độ ẩm đất:
- VCC -> 3.3V
- GND -> GND
- SIGNAL -> GPIO 34

BH1750:
- VCC -> 3.3V
- GND -> GND
- SDA -> GPIO 21
- SCL -> GPIO 22

Cảm biến mưa:
- VCC -> 3.3V
- GND -> GND
- SIGNAL -> GPIO 35

Chúng ta sẽ sử dụng các chân GPIO của ESP32 để kết nối các cảm biến này. Hãy chắc chắn rằng bạn đã kết nối đúng các chân trước khi tiến hành lập trình.

3. Lập trình để đọc dữ liệu từ các cảm biến

Để lập trình đọc dữ liệu từ các cảm biến, chúng ta sẽ sử dụng thư viện Arduino cho từng cảm biến. Dưới đây là mã nguồn mẫu để đọc dữ liệu từ các cảm biến:


#include <DHT.h>
#include <Wire.h>
#include <BH1750.h>

#define DHTPIN 23
#define DHTTYPE DHT22
#define SOIL_MOISTURE_PIN 34
#define RAIN_SENSOR_PIN 35

DHT dht(DHTPIN, DHTTYPE);
BH1750 lightSensor;

void setup() {
    Serial.begin(115200);
    dht.begin();
    lightSensor.begin();
}

void loop() {
    // Đọc dữ liệu từ cảm biến DHT
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    // Đọc dữ liệu từ cảm biến độ ẩm đất
    int soilMoisture = analogRead(SOIL_MOISTURE_PIN);

    // Đọc dữ liệu từ cảm biến ánh sáng
    uint16_t lightLevel = lightSensor.readLightLevel();

    // Đọc dữ liệu từ cảm biến mưa
    int rainSensor = digitalRead(RAIN_SENSOR_PIN);

    // Hiển thị dữ liệu lên Serial Monitor
    Serial.print("Nhiệt độ: ");
    Serial.print(t);
    Serial.print(" °C, Độ ẩm: ");
    Serial.print(h);
    Serial.print(" %, Độ ẩm đất: ");
    Serial.print(soilMoisture);
    Serial.print(", Cường độ ánh sáng: ");
    Serial.print(lightLevel);
    Serial.print(", Cảm biến mưa: ");
    Serial.println(rainSensor == HIGH ? "Không mưa" : "Có mưa");

    delay(2000); // Chờ 2 giây trước khi đọc lại
}

4. Kiểm tra và hiển thị dữ liệu cảm biến qua Serial Monitor

Sau khi tải mã nguồn lên ESP32, bạn hãy mở Serial Monitor trong Arduino IDE để kiểm tra dữ liệu từ các cảm biến. Đảm bảo rằng tốc độ truyền dữ liệu (baud rate) được đặt là 115200.

Khi ESP32 chạy, bạn sẽ thấy các giá trị nhiệt độ, độ ẩm, độ ẩm đất, cường độ ánh sáng và trạng thái cảm biến mưa được hiển thị liên tục trên Serial Monitor. Nếu có vấn đề với việc đọc dữ liệu, hãy kiểm tra lại kết nối của các cảm biến.

5. Xử lý lỗi và khắc phục sự cố

Trong quá trình lập trình và kết nối, có thể xảy ra một số lỗi như không đọc được dữ liệu, dữ liệu không chính xác hoặc không hiển thị trên Serial Monitor. Hãy kiểm tra kết nối, đảm bảo các chân GPIO được kết nối đúng và cảm biến được cấp nguồn đầy đủ.

Dưới đây là một số lỗi thường gặp và cách khắc phục:

  • Dữ liệu từ cảm biến DHT không chính xác: Kiểm tra xem cảm biến có được kết nối đúng và có hoạt động không. Có thể thử thay đổi giữa DHT11 và DHT22 nếu có.
  • Cảm biến độ ẩm đất không đọc được: Đảm bảo rằng cảm biến độ ẩm đất được gắn vào đất ẩm và không bị bám bẩn.
  • Cảm biến ánh sáng BH1750 không hoạt động: Kiểm tra kết nối SDA và SCL, đảm bảo rằng chúng được kết nối đúng với ESP32.
  • Cảm biến mưa không phản hồi: Đảm bảo rằng cảm biến mưa được lắp đặt đúng cách và không bị che khuất.

Đến đây, bạn đã hoàn thành việc kết nối và lập trình các cảm biến cho trạm thời tiết IoT của mình. Hãy tiếp tục khám phá và tối ưu hóa hệ thống của bạn để có những dữ liệu chính xác hơn!