Arduino Cảm biến mưa

Cảm biến mưa có khả năng nhận diện và đo mức độ mưa hoặc tuyết. Cảm biến mưa cung cấp hai đầu ra: một đầu ra kỹ thuật số (LOW/HIGH) và một đầu ra tương tự.

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng Arduino và một cảm biến mưa để phát hiện và đo lượng mưa. Cụ thể, chúng ta sẽ đề cập đến những nội dung sau:

cảm biến mưa Arduino

Sau đó, bạn có thể sửa đổi mã để kích hoạt động cơ hoặc cảnh báo khi nó phát hiện mưa hoặc tuyết.

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

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×cảm biến mưa
1×dây jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về cảm biến mưa

Cảm biến mưa có thể được sử dụng để phát hiện sự có mặt của mưa hoặc đo mức nước do mưa rơi xuống. Cảm biến mưa cung cấp hai tùy chọn thông qua chân đầu ra số và chân đầu ra tương tự.

Cảm biến mưa gồm hai phần:

  • Bàn cảm biến
  • Mô-đun điện tử
cấu hình chân cảm biến mưa
image source: diyables.io

Bề mặt cảm biến

Pad cảm biến được đặt ở ngoài trời, có thể đối mặt với mưa và tuyết (ví dụ như mái nhà). Pad cảm biến có một chuỗi các đường mạch đồng trần, được chia thành hai nhóm: đường mạch nguồn và đường mạch cảm biến. Các đường mạch nguồn và đường mạch cảm biến không được nối với nhau trừ khi chúng được nước hoặc tuyết làm cầu nối. Không có sự khác biệt giữa đường mạch nguồn và đường mạch cảm biến. Bạn có thể chọn một đường làm đường mạch nguồn và đường còn lại sẽ trở thành đường mạch cảm biến.

Mô-đun điện tử

Mô-đun điện tử của cảm biến mưa chuyển đổi tín hiệu từ bề mặt cảm biến thành giá trị tương tự (analog) hoặc số (digital) có thể đọc được bởi Arduino. Nó có bốn chân.

  • Chân VCC: Cần được kết nối với VCC (3.3V đến 5V).
  • Chân GND: Cần được kết nối với GND (0V).
  • Chân DO: Đây là một chân đầu ra số. Nó ở mức HIGH khi mưa không được phát hiện và ở mức LOW khi mưa được phát hiện. Giá trị ngưỡng để phát hiện mưa có thể điều chỉnh bằng một potentiometer tích hợp.
  • Chân AO: Đây là một chân đầu ra analog. Giá trị đầu ra giảm khi lượng nước ở trên miếng cảm biến tăng lên, và tăng khi lượng nước ở trên miếng cảm biến giảm xuống.

Hơn nữa, nó có hai đèn LED chỉ báo:

  • Một đèn LED PWR cho nguồn.
  • Một đèn LED DO cho trạng thái mưa trên chân DO: nó sáng khi có mưa.

Cách hoạt động

Đối với chân DO:

  • Module có một biến trở tích hợp để thiết lập ngưỡng (độ nhạy).
  • Khi cường độ vượt quá ngưỡng đã cho, mưa được phát hiện, chân đầu ra của cảm biến ở mức LOW, và đèn DO-LED sáng.
  • Khi cường độ dưới ngưỡng đã cho, mưa KHÔNG được phát hiện, chân đầu ra của cảm biến ở mức HIGH, và đèn DO-LED tắt.

Đối với chân AO:

  • Nhiều nước hơn trên miếng cảm biến, giá trị đọc được từ chân AO sẽ thấp hơn.
  • Ít nước hơn trên miếng cảm biến, giá trị đọc được từ chân AO sẽ cao hơn.

Lưu ý rằng biến trở không ảnh hưởng đến giá trị trên chân AO.

Sơ đồ đấu dây

Như đã đề cập ở trên, chân VCC của cảm biến nên được kết nối với nguồn 3.3V hoặc 5V. Nếu ta kết nối chân này trực tiếp với chân 3.3V hoặc 5V của Arduino, tuổi thọ của cảm biến sẽ bị giảm do ăn mòn điện hóa. Cách tối ưu là kết nối chân VCC của cảm biến mưa với một chân xuất ra của Arduino; chúng ta có thể lập trình để chân đó cấp nguồn cho cảm biến mưa chỉ khi đang đọc dữ liệu. Điều này có thể giảm thiểu tác động của ăn mòn điện hóa.

Vì mô-đun cảm biến mưa có hai đầu ra, bạn có thể chọn sử dụng một trong số chúng hoặc cả hai, tùy thuộc vào nhu cầu của bạn.

  • Sơ đồ đấu dây giữa Arduino và cảm biến mưa khi chỉ dùng DO.
sơ đồ nối dây cảm biến mưa Arduino

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ đấu dây giữa Arduino và cảm biến mưa khi chỉ sử dụng AO.
sơ đồ kết nối cảm biến mưa cho Arduino

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ đấu nối giữa Arduino và cảm biến mưa khi sử dụng cả AO và DO.
sơ đồ đấu dây cảm biến mưa Arduino

This image is created using Fritzing. Click to enlarge image

Mã Arduino - Đọc giá trị từ chân DO

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino 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/arduino-rain-sensor */ #define POWER_PIN 3 // The Arduino pin that provides the power to the rain sensor #define DO_PIN 4 // The Arduino's pin connected to DO pin of the rain sensor void setup() { // initialize serial communication Serial.begin(9600); // initialize the Arduino's pin as an input pinMode(POWER_PIN, OUTPUT); // configure the power pin pin as an OUTPUT pinMode(DO_PIN, INPUT); } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the rain sensor's power ON delay(10); // wait 10 milliseconds int rain_state = digitalRead(DO_PIN); digitalWrite(POWER_PIN, LOW); // turn the rain sensor's power OFF if (rain_state == HIGH) Serial.println("The rain is NOT detected"); else Serial.println("The rain is detected"); delay(1000); // pause for 1 sec to avoid reading sensors frequently to prolong the sensor lifetime }

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

  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấn nút Tải lên trên Arduino IDE để tải mã lên Arduino
  • Nhỏ vài giọt nước lên cảm biến mưa
  • Xem kết quả trên Serial Monitor.
COM6
Send
The rain is NOT detected The rain is NOT detected The rain is NOT detected The rain is detected The rain is detected The rain is detected The rain is detected The rain is detected The rain is NOT detected The rain is NOT detected The rain is NOT detected
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Xin lưu ý rằng nếu bạn nhận thấy đèn LED luôn sáng hoặc bị tắt ngay cả khi cảm biến đối mặt với mưa, bạn có thể điều chỉnh biến trở để tinh chỉnh độ nhạy của cảm biến.

Mã Arduino - Đọc giá trị từ chân AO

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino 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/arduino-rain-sensor */ #define POWER_PIN 3 // The Arduino pin that provides the power to the rain sensor #define AO_PIN A0 // Arduino's pin connected to AO pin of the rain sensor void setup() { // initialize serial communication Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // configure the power pin pin as an OUTPUT } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the rain sensor's power ON delay(10); // wait 10 milliseconds int rainValue = analogRead(AO_PIN); digitalWrite(POWER_PIN, LOW); // turn the rain sensor's power OFF Serial.println(rainValue); // print out the analog value delay(1000); // pause for 1 sec to avoid reading sensors frequently to prolong the sensor lifetime }

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

  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấp vào Tải lên trên Arduino IDE để tải mã lên Arduino
  • Nhỏ vài giọt nước lên cảm biến mưa
  • Xem kết quả trên Serial Monitor.
COM6
Send
225 2426 236 563 687 959 975 1009 1017 1053 1078 841 743 440 279
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.