ESP32 Cảm Biến Độ Ẩm Đất

Hướng dẫn này sẽ chỉ bạn cách sử dụng ESP32 để đọc độ ẩm đất từ cảm biến. Chi tiết, chúng ta sẽ học:

Phần Cứng Cần Thiết

1×mô-đun phát triển ESP-WROOM-32
1×Alternatively, ESP32 Uno-form board
1×Alternatively, ESP32 S3 Uno-form board
1×Cáp USB Type-C
1×Cảm Biến Độ Ẩm Đất Điện Dung
1×breadboard
1×Dây Jumper
1×DC Power Jack (Tùy chọn)
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP32
1×(Khuyến nghị) Breakout Expansion Board for ESP32
1×(Khuyến nghị) Power Splitter for ESP32

Or you can buy the following kits:

1×DIYables ESP32 Starter Kit (ESP32 included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về Cảm Biến Độ Ẩm Đất

capacitive moisture sensor vs resistive moisture sensor

Có hai loại cảm biến độ ẩm:

  • Cảm biến độ ẩm điện trở
  • Cảm biến độ ẩm điện dung.

Cả hai cảm biến đều xuất ra giá trị độ ẩm đất. Tuy nhiên, nguyên lý hoạt động của chúng khác nhau. Chúng tôi đặc biệt khuyên dùng cảm biến độ ẩm điện dung, vì những lý do sau:

  • Cảm biến độ ẩm đất điện trở bị ăn mòn theo thời gian. Dòng điện chạy giữa các đầu dò của cảm biến gây ra sự ăn mòn điện hóa.
  • Cảm biến độ ẩm đất điện dung KHÔNG bị ăn mòn theo thời gian. Các điện cực của cảm biến không bị lộ ra và không có dòng điện chạy giữa chúng.

Hình ảnh dưới đây cho thấy sự ăn mòn trên cảm biến độ ẩm đất điện trở.

resistive cảm biến độ ẩm đất corrosion

Phần còn lại của hướng dẫn này sử dụng cảm biến độ ẩm đất điện dung.

Sơ Đồ Chân Cảm Biến Độ Ẩm Đất Điện Dung

Cảm biến độ ẩm đất điện dung có ba chân:

  • Chân GND: kết nối chân này với GND (0V)
  • Chân VCC: kết nối chân này với VCC (5V hoặc 3.3v)
  • Chân AOUT: Chân xuất tín hiệu analog xuất ra điện áp tỉ lệ nghịch với mức độ ẩm đất. Kết nối chân này với chân đầu vào analog của ESP32.
capacitive cảm biến độ ẩm đất sơ đồ chân

Nguyên Lý Hoạt Động

Càng nhiều nước có trong đất, điện áp ở chân AOUT càng thấp

Sơ Đồ Kết Nối

  • Cách kết nối ESP32 và cảm biến độ ẩm đất sử dụng breadboard
ESP32 cảm biến độ ẩm đất sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.

how to connect ESP32 and cảm biến độ ẩm đất

Code ESP32

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-soil-moisture-sensor */ #define AOUT_PIN 36 // ESP32 pin GPIO36 (ADC0) that connects to AOUT pin of moisture sensor void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { int value = analogRead(AOUT_PIN); // read the analog value from sensor Serial.print("Moisture value: "); Serial.println(value); delay(500); }

Các Bước Nhanh

  • Sao chép code trên và dán vào Arduino IDE
  • Nhấp nút Upload trên Arduino IDE để upload code lên bo mạch ESP32
  • Chôn cảm biến xuống đất, sau đó tưới nước vào đất. Hoặc từ từ nhúng nó vào cốc nước muối.
  • Kiểm tra kết quả trên Serial Monitor. Nó sẽ trông như thế này:
COM6
Send
Moisture value: 2383 Moisture value: 2395 Moisture value: 1260 Moisture value: 1325 Moisture value: 1271 Moisture value: 1261 Moisture value: 1254 Moisture value: 1241 Moisture value: 1244 Moisture value: 1380 Moisture value: 1368 Moisture value: 1279 Moisture value: 1268 Moisture value: 1259 Moisture value: 1243 Moisture value: 1265 Moisture value: 1308 Moisture value: 1487 Moisture value: 1646
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

  • Tránh sử dụng nước tinh khiết để thử nghiệm, vì nó không dẫn điện, do đó sẽ không ảnh hưởng đến kết quả đọc của cảm biến.
  • Kết quả đọc từ cảm biến không bao giờ về 0. Bình thường các giá trị sẽ dao động từ 3100 đến 2600, mặc dù điều này có thể khác nhau tùy thuộc vào một số yếu tố: độ sâu chôn cảm biến, thành phần của đất hoặc nước, điện áp nguồn cung cấp.
  • Không chôn phần mạch điện (nằm ở đỉnh cảm biến) trong đất hoặc nước, vì điều này có thể làm hỏng cảm biến.

Hiệu Chỉnh Cảm Biến Độ Ẩm Đất Điện Dung

Giá trị đo được từ cảm biến độ ẩm là tương đối. Nó phụ thuộc vào thành phần đất và nước. Trong thực tế, chúng ta cần hiệu chỉnh để xác định ngưỡng là ranh giới giữa ướt và khô.

Cách thực hiện hiệu chỉnh:

  • Chạy code trên ESP32
  • Cắm cảm biến độ ẩm xuống đất
  • Cắm cảm biến độ ẩm xuống đất
  • Tưới nước từ từ vào đất
  • Quan sát Serial Monitor.
  • Ghi lại giá trị tại thời điểm bạn cảm thấy đất thay đổi độ ẩm từ khô sang ướt. Giá trị này được gọi là THRESHOLD (NGƯỠNG).

Xác Định Đất Ướt Hay Khô

Sau khi hiệu chỉnh, cập nhật giá trị THRESHOLD bạn đã ghi lại vào code dưới đây. Code dưới đây xác định đất ướt hay khô

/* * Mã ESP32 này được phát triển bởi newbiely.vn * Mã ESP32 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/esp32/esp32-soil-moisture-sensor */ #define AOUT_PIN 36 // ESP32 pin GPIO36 (ADC0) that connects to AOUT pin of moisture sensor #define THRESHOLD 1488 // CHANGE YOUR THRESHOLD HERE void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); } void loop() { int value = analogRead(AOUT_PIN); // read the analog value from sensor if (value > THRESHOLD) Serial.print("The soil is DRY ("); else Serial.print("The soil is WET ("); Serial.print(value); Serial.println(")"); delay(500); }

Kết quả trên Serial Monitor.

COM6
Send
The soil is DRY (2126) The soil is DRY (1841) The soil is DRY (1667) The soil is DRY (1540) The soil is WET (1481) The soil is WET (1419) The soil is WET (1357) The soil is WET (1243) The soil is WET (1224)
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

Hướng dẫn này sử dụng hàm analogRead() để đọc giá trị từ ADC (Analog-to-Digital Converter) kết nối với cảm biến độ ẩm đất. ADC của ESP32 phù hợp cho các dự án KHÔNG cần độ chính xác cao. Tuy nhiên, đối với các dự án cần phép đo chính xác, hãy lưu ý:

  • ADC của ESP32 không hoàn toàn chính xác và có thể cần hiệu chỉnh để có kết quả đúng. Mỗi bo mạch ESP32 có thể hơi khác nhau, vì vậy bạn cần hiệu chỉnh ADC cho từng bo mạch riêng lẻ.
  • Việc hiệu chỉnh có thể khó khăn, đặc biệt đối với người mới bắt đầu, và có thể không luôn cho kết quả chính xác như bạn muốn.

Đối với các dự án cần độ chính xác cao, hãy cân nhắc sử dụng ADC ngoài (ví dụ ADS1115) với ESP32 hoặc sử dụng Arduino, có ADC đáng tin cậy hơn. Nếu bạn vẫn muốn hiệu chỉnh ADC ESP32, hãy tham khảo ESP32 ADC Calibration Driver

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Tham Khảo Hàm

Bình Luận