Arduino UNO R4 Cảm Biến Độ Ẩm Đất

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng cảm biến độ ẩm với Arduino UNO R4. Cụ thể, chúng ta sẽ tìm hiểu:

Arduino UNO R4 cảm biến độ ẩm đất

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

1×Arduino UNO R4 WiFi hoặc Arduino UNO R4 Minima
1×(Tùy chọn) DIYables STEM V4 IoT, tương thích với Arduino Uno R4 WiFi
1×Arduino UNO R4 Minima (Thay thế)
1×Cáp USB Type-C
1×Cảm Biến Độ Ẩm Đất Tụ Điện
1×Dây Jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4
1×(Khuyến nghị) Breadboard Shield for Arduino UNO R4
1×(Khuyến nghị) Enclosure for Arduino UNO R4
1×(Khuyến nghị) Power Splitter for Arduino UNO R4
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V4 IoT Starter Kit (Arduino 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 tụ điện (capacitive)
  • Cảm biến độ ẩm điện trở (resistive)

Cả hai cảm biến đều cung cấp thông tin về độ ẩm đất, nhưng chúng hoạt động theo những cách khác nhau. Chúng tôi khuyên mạnh bạn nên sử dụng cảm biến độ ẩm tụ điện vì lý do này:

  • Cảm biến độ ẩm đất điện trở bị hỏng dần theo thời gian. Điều này xảy ra vì có dòng điện chạy giữa các đầu dò của nó, dẫn đến một loại hư hỏng gọi là ăn mòn điện hóa.
  • Cảm biến độ ẩm tụ điện không bị hỏng theo thời gian. Lý do là các điện cực của nó được bao phủ và không dễ bị ăn mòn.

Hình ảnh bên dưới hiển thị một cảm biến độ ẩm đất làm từ vật liệu điện trở đã bị ăn mòn theo thời gian.

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

Phần còn lại của hướng dẫn này sẽ tập trung vào việc sử dụng cảm biến độ ẩm tụ điện.

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

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

  • Chân GND: kết nối với GND (0V)
  • Chân VCC: kết nối với VCC (5V hoặc 3.3V)
  • Chân AOUT: gửi tín hiệu analog thay đổi theo độ ẩm đất. Kết nối với chân analog input trên Arduino UNO R4.
capacitive cảm biến độ ẩm đất sơ đồ chân

Nguyên Lý Hoạt Động

Hàm lượng nước trong đất càng cao thì điện áp tại chân AOUT càng thấp.

Sơ Đồ Đấu Nối

Arduino UNO R4 cảm biến độ ẩm đất sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Code Arduino UNO R4

/* * Mã Arduino UNO R4 này được phát triển bởi newbiely.vn * Mã Arduino UNO R4 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/arduino-uno-r4/arduino-uno-r4-soil-moisture-sensor */ #define AOUT_PIN A0 // Defines pin A0 to read from the moisture sensor void setup() { Serial.begin(9600); // Initializes serial communication at 9600 bps } void loop() { int value = analogRead(AOUT_PIN); // Reads the moisture level from the sensor Serial.print("Moisture: "); // Sends the text 'Moisture: ' to the serial monitor Serial.println(value); // Prints the moisture level to the serial monitor delay(500); // Pauses the loop for 500 milliseconds }

Các Bước Thực Hiện

Thực hiện theo các hướng dẫn từng bước sau:

  • Nếu đây là lần đầu tiên bạn sử dụng Arduino Uno R4 WiFi/Minima, hãy tham khảo hướng dẫn về Arduino UNO R4 - Cài Đặt Phần Mềm.
  • Kết nối cảm biến độ ẩm đất với Arduino Uno R4 theo sơ đồ được cung cấp.
  • Kết nối board Arduino Uno R4 với máy tính của bạn bằng cáp USB.
  • Khởi động Arduino IDE trên máy tính của bạn.
  • Chọn board Arduino Uno R4 phù hợp (ví dụ: Arduino Uno R4 WiFi) và cổng COM.
  • Sao chép code ở trên và mở nó trong Arduino IDE.
  • Nhấn nút Upload trong Arduino IDE để tải code lên Arduino UNO R4.
  • Đặt cảm biến vào đất, sau đó thêm nước vào đất. Hoặc bạn có thể nhẹ nhàng đặt nó vào một cốc nước muối.
  • Kiểm tra kết quả trên Serial Monitor. Nó sẽ 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 ý:

  • Không sử dụng nước tinh khiết để kiểm tra vì nó không dẫn điện, nên sẽ không ảnh hưởng đến các giá trị đọc của cảm biến.
  • Thông thường, các giá trị đọc từ cảm biến không xuống đến không. Chúng thường nằm giữa 500 và 600. Tuy nhiên, điều này có thể thay đổi tùy thuộc vào độ sâu của cảm biến trong đất hoặc nước, loại đất hoặc nước, và điện áp nguồn cung cấp.
  • Không đặt phần mạch của cảm biến (nằm ở phía trên) vào đất hoặc nước vì có thể làm hỏng cảm biến.

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

Giá trị đọc từ cảm biến độ ẩm không cố định; nó thay đổi theo loại đất và hàm lượng nước trong đất. Để sử dụng nó một cách chính xác, chúng ta phải hiệu chỉnh nó để tìm ra điểm ngưỡng cho biết khi nào đất ẩm hoặc khô.

Cách Thực Hiện Hiệu Chỉnh:

  • Sử dụng Arduino UNO R4 để thực thi code được cung cấp.
  • Chèn cảm biến độ ẩm vào đất.
  • Từ từ thêm nước vào đất.
  • Quan sát Serial Monitor.
  • Ghi lại giá trị khi bạn nghĩ đất chuyển từ khô sang ẩm. Giá trị này được gọi là NGƯỠNG (THRESHOLD).

Xác Định Xem Đất Có Ẩm Hay Khô

Sau khi bạn hiệu chỉnh, thay đổi giá trị THRESHOLD mà bạn đã ghi chú vào code sau đây. Code này kiểm tra xem đất có ẩm hay khô.

/* * Mã Arduino UNO R4 này được phát triển bởi newbiely.vn * Mã Arduino UNO R4 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/arduino-uno-r4/arduino-uno-r4-soil-moisture-sensor */ #define AOUT_PIN A0 // Pin on Arduino for moisture sensor output #define THRESHOLD 530 // Set threshold value for moisture level void setup() { Serial.begin(9600); // Initialize serial communication at 9600 bps } void loop() { int value = analog_read(AOUT_PIN); // Read value from moisture sensor if (value > THRESHOLD) // Compare sensor reading to threshold Serial.print("The soil is DRY ("); // Print dry status if above threshold else Serial.print("The soil is WET ("); // Print wet status if below threshold Serial.print(value); // Print the sensor reading Serial.println(")"); // Finish the line delay(500); // Wait for half a second before next read }

Kết quả như được thấy 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  

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