ESP32 Cảm Biến Mưa
Cảm biến mưa có khả năng phát hiện và đo mức độ mưa/tuyết. Cảm biến mưa cung cấp hai đầu ra: đầu ra số (LOW/HIGH) và đầu ra analog.
Trong hướng dẫn này, chúng ta sẽ học cách sử dụng ESP32 và 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:
- Cách kết nối cảm biến mưa với ESP32.
- Cách lập trình ESP32 để phát hiện mưa bằng cách đọc tín hiệu số từ cảm biến mưa.
- Cách lập trình ESP32 để đo mức độ mưa bằng cách đọc tín hiệu analog từ cảm biến mưa.

Sau đó, bạn có thể sửa đổi code để kích hoạt motor hoặc cảnh báo khi phát hiện mưa/tuyết.
Linh Kiện 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ưa | ||
| 1 | × | breadboard | ||
| 1 | × | Dây Nối Jumper | ||
| 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ưa
Cảm biến mưa có thể được sử dụng để phát hiện sự hiện diện của mưa hoặc đo mức độ nước rơi từ mưa. 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 analog.
Cảm biến mưa bao gồm hai phần:
- Tấm cảm biến
- Module điện tử

Tấm cảm biến
Tấm cảm biến được đặt bên ngoài có thể tiếp xúc với mưa/tuyết (ví dụ: trên mái nhà). Tấm cảm biến có một loạt các vạch đồng lộ thiên, được chia thành hai nhóm: vạch nguồn và vạch cảm biến. Các vạch nguồn và vạch cảm biến này không được kết nối trừ khi chúng được nối bằng nước hoặc tuyết. Không có sự khác biệt giữa vạch nguồn và vạch cảm biến. Bạn có thể chọn một làm vạch nguồn và cái kia sẽ trở thành vạch cảm biến.
Module điện tử
Module điện tử của cảm biến mưa chuyển đổi tín hiệu từ tấm cảm biến thành giá trị analog hoặc số có thể được đọc bởi ESP32. Nó bao gồm 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: Là chân đầu ra số. Nó ở mức HIGH nếu không phát hiện mưa và LOW nếu phát hiện được. Giá trị ngưỡng để phát hiện mưa có thể được điều chỉnh bằng potentiometer tích hợp.
- Chân AO: Là chân đầu ra analog. Giá trị đầu ra giảm khi lượng nước trong tấm cảm biến tăng, và tăng khi lượng nước trong tấm cảm biến giảm.
Hơn nữa, nó có hai đèn LED chỉ báo:
- Một đèn LED PWR để báo nguồn.
- Một đèn LED DO để báo 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ó potentiometer tích hợp để thiết lập ngưỡng (độ nhạy).
- Khi cường độ cao hơn giá trị ngưỡng, mưa được phát hiện, chân đầu ra của cảm biến ở mức LOW, và LED DO sáng.
- Khi cường độ thấp hơn giá trị ngưỡng, mưa KHÔNG được phát hiện, chân đầu ra của cảm biến ở mức HIGH, và LED DO tắt.
Đối với chân AO:
- Càng nhiều nước trong tấm cảm biến, giá trị đọc từ chân AO càng thấp.
- Càng ít nước trong tấm cảm biến, giá trị đọc từ chân AO càng cao.
Lưu ý rằng potentiometer không ảnh hưởng đến giá trị trên chân AO.
Sơ Đồ Đấu Nối
Như đã đề cập ở trên, chân VCC của cảm biến nên được kết nối với 3.3V hoặc 5V. Nếu chúng ta kết nối chân này trực tiếp với chân 3.3V hoặc 5V của ESP32, tuổi thọ của cảm biến sẽ bị rút ngắn do ăn mòn điện hóa. Cách tốt nhất là kết nối chân VCC của cảm biến mưa với một chân đầu ra của ESP32. Chúng ta có thể lập trình chân đó để cấp nguồn cho cảm biến mưa chỉ khi đọc. Điều này có thể giảm thiểu tác động của ăn mòn điện hóa.
Vì module cảm biến mưa có hai đầu ra, bạn có thể chọn sử dụng một hoặc cả hai, tùy thuộc vào nhu cầu của bạn.
- Cách kết nối ESP32 và cảm biến mưa bằng breadboard
Module cảm biến mưa cung cấp hai đầu ra. Bạn có thể sử dụng một hoặc cả hai tùy theo yêu cầu.

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.
- Cách kết nối ESP32 và cảm biến mưa bằng screw terminal block breakout board

ESP32 Code - Đọc giá trị từ chân DO
Các Bước Thực Hiện
- Nếu đây là lần đầu tiên bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm
- Copy đoạn code trên và mở bằng Arduino IDE
- Click nút Upload trên Arduino IDE để upload code lên ESP32
- Nhỏ một ít nước lên cảm biến mưa
- Xem kết quả trên Serial Monitor.
Hãy nhớ rằng nếu bạn nhận thấy đèn LED luôn sáng hoặc tắt ngay cả khi cảm biến tiếp xúc với mưa, bạn có thể điều chỉnh potentiometer để tinh chỉnh độ nhạy của cảm biến.
ESP32 Code - Đọc giá trị từ chân AO
Các Bước Thực Hiện
- Copy đoạn code trên và mở bằng Arduino IDE
- Click nút Upload trên Arduino IDE để upload code lên ESP32
- Nhỏ một ít nước lên cảm biến mưa
- Xem kết quả trên Serial Monitor.
※ 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ưa. 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 đo lường 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 chuẩn để có kết quả đúng. Mỗi board ESP32 có thể hơi khác nhau, vì vậy bạn cần hiệu chuẩn ADC cho từng board riêng lẻ.
- Việc hiệu chuẩn 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 chuẩn ADC của ESP32, 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.