ESP8266 Cảm biến độ ẩm đất

Hướng dẫn này sẽ hướng dẫn bạn cách sử dụng cảm biến độ ẩm với ESP8266. Cụ thể, chúng ta sẽ xem xét:

Phần cứng cần chuẩn bị

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (for USB-C PC)
1×Capacitive Soil Moisture Sensor
1×dây jumper
1×(Khuyến nghị) Screw Terminal Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

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

Giới thiệu về Cảm biến Độ ẩm Đất

cảm biến độ ẩm cảm ứng điện dung so với cảm biến độ ẩm điện trở

Có hai loại cảm biến độ ẩm: cảm biến độ ẩm điện trở và cảm biến độ ẩm tụ điện.

Cả hai cảm biến đều cung cấp thông tin về độ ẩm đất. Tuy nhiên, cách hoạt động của chúng khác nhau. Chúng tôi đề xuất sử dụng cảm biến độ ẩm điện dung do các lý do sau:

  • Cảm biến độ ẩm đất điện trở dễ bị ăn mòn theo thời gian khi dòng điện chạy giữa các điện cực của nó, dẫn đến ăn mòn điện hóa.
  • Ngược lại, cảm biến độ ẩm đất điện dung ăn mòn chậm hơn nhiều so với cảm biến độ ẩm đất điện trở. Đó là vì các điện cực của nó không bị phơi ra ngoài và do đó tương đối chống ăn mòn.

Đây là một hình minh họa cho cảm biến độ ẩm đất điện trở đã bị ăn mòn.

cảm biến độ ẩm đất điện trở đã bị ăn mòn.

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

Sơ đồ chân của cảm biến độ ẩm đất điện dung

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

  • Chân GND: Chân này phải được kết nối với GND (0V).
  • Chân VCC: Chân này phải được kết nối với VCC (5V hoặc 3.3V).
  • Chân AOUT: Đây là chân đầu ra tín hiệu analog, tạo ra một điện áp tỉ lệ thuận với độ ẩm của đất. Chân này nên được kết nối với một chân đầu vào analog trên ESP8266.
sơ đồ chân của cảm biến độ ẩm đất cảm ứng

Cách hoạt động

Lượng nước có trong đất tỷ lệ nghịch với mức điện áp của chân AOUT.

Sơ đồ đấu dây

sơ đồ nối dây cảm biến độ ẩm đất ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

Mã ESP8266 để đọc giá trị từ cảm biến độ ẩm đất

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-soil-moisture-sensor */ #define AOUT_PIN A0 // The ESP8266 pin ADC0 that connects to AOUT pin of moisture sensor void setup() { Serial.begin(9600); } void loop() { int value = analogRead(AOUT_PIN); // read the analog value from sensor Serial.print("Moisture: "); Serial.println(value); delay(500); }

Hướng dẫn từng bước

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Nếu đây là lần đầu bạn sử dụng ESP8266, hãy xem hướng dẫn ESP8266 - Cài đặt phần mềm.
  • Kết nối các thành phần như được hiển thị trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, ví dụ như (ví dụ: NodeMCU 1.0 (ESP-12E Module)), và cổng COM tương ứng của nó.
  • Sao chép mã và mở nó bằng Arduino IDE.
  • Nhấp nút Upload trên Arduino IDE để biên dịch và tải mã lên ESP8266.
  • Chôn cảm biến vào đất, sau đó tưới nước lên đất. Hoặc từ từ nhúng nó vào một ly nước muối.
  • Kiểm tra kết quả trên Serial Monitor. Nó hiển thị như sau:
COM6
Send
Moisture: 581 Moisture: 581 Moisture: 575 Moisture: 566 Moisture: 556 Moisture: 547 Moisture: 539 Moisture: 530 Moisture: 521 Moisture: 513 Moisture: 506 Moisture: 500 Moisture: 495 Moisture: 492 Moisture: 490 Moisture: 489 Moisture: 488
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

  • Đừng dùng nước tinh khiết để thử nghiệm vì nước đó không dẫn điện, nên sẽ không làm thay đổi các giá trị cảm biến.
  • Giá trị đo được từ cảm biến sẽ không bao giờ bằng 0. Thông thường giá trị nằm trong khoảng từ 500 đến 600, mặc dù có thể thay đổi tùy thuộc vào các yếu tố như độ sâu lắp đặt cảm biến, loại đất hoặc nước và điện áp của nguồn cấp.
  • Tránh chôn phần mạch (nằm ở trên cùng của cảm biến) vào đất hoặc nước, vì nó có thể làm hỏng cảm biến.

Hiệu chuẩn cho cảm biến độ ẩm đất điện dung

Giá trị thu được từ cảm biến độ ẩm không phải là tuyệt đối. Nó dựa trên thành phần của đất và hàm lượng nước. Để xác định chính xác ranh giới giữa ướt và khô, chúng ta phải hiệu chuẩn.

Hướng dẫn hiệu chuẩn:

  • Thực thi mã trên ESP8266
  • Đặt cảm biến độ ẩm vào trong đất
  • Từ từ thêm nước vào đất
  • Theo dõi Serial Monitor
  • Ghi nhận giá trị khi đất chuyển từ khô sang ướt. Điều này được gọi là ngưỡng.

Mã ESP8266 xác định xem đất có độ ẩm hay khô

Sau khi hiệu chuẩn xong, hãy cập nhật giá trị THRESHOLD mà bạn đã ghi lại trong đoạn mã dưới đây. Đoạn mã này sẽ được dùng để xác định đất ẩm hay khô.

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-soil-moisture-sensor */ #define AOUT_PIN A0 // The ESP8266 pin ADC0 that connects to AOUT pin of moisture sensor #define THRESHOLD 530 // CHANGE YOUR THRESHOLD HERE void setup() { Serial.begin(9600); } 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ả hiển thị trên Serial Monitor.

COM6
Send
The soil is DRY (581) The soil is DRY (575) The soil is DRY (566) The soil is DRY (547) The soil is DRY (539) The soil is WET (521) The soil is WET (513) The soil is WET (492) The soil is WET (488)
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

Hướng dẫn này sử dụng hàm analogRead() để lấy dữ liệu từ một ADC (Bộ chuyển đổi tín hiệu tương tự sang số) được kết nối với một cảm biến hoặc một thành phần khác. ADC của ESP8266 hoạt động tốt cho các dự án mà bạn không cần các phép đo quá chính xác. Tuy nhiên, hãy nhớ, ADC của ESP8266 không quá chính xác cho các phép đo chi tiết. Nếu dự án của bạn cần độ chính xác cao, bạn có thể muốn sử dụng một ADC riêng như ADS1115 với ESP8266, hoặc sử dụng Arduino như Arduino Uno R4 WiFi, loại có ADC đáng tin cậy hơn.

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 chiếu hàm

Bài hướng dẫn liên quan