ESP32 Cảm Biến Nước Máy Bơm

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng ESP32 để kích hoạt máy bơm thoát nước khi phát hiện có nước bằng cảm biến nước. Nói cách khác, chúng ta sẽ khám phá cách tạo ra một hệ thống thoát nước tự động sử dụng ESP32, cảm biến nước và máy bơm.

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ực nước
1×Relay
1×Máy bơm 12V
1×Ống nhựa
1×Adapter nguồn 12V
1×(Tùy chọn) Jack cắm nguồn DC
1×breadboard
1×Dây nối
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 Nước và Máy Bơm

Nếu bạn chưa biết về cảm biến nước và máy bơm (sơ đồ chân, cách hoạt động, cách lập trình...), hãy tìm hiểu trong các hướng dẫn sau:

Cách Hoạt Động của Hệ Thống Thoát Nước Tự Động

ESP32 sẽ định kỳ đọc giá trị từ cảm biến nước, sau đó:

  • Nếu giá trị lớn hơn ngưỡng đã định trước, ESP32 sẽ bật relay để kích hoạt máy bơm.
  • Ngược lại, ESP32 sẽ tắt máy bơm.

Sơ Đồ Đấu Nối

sơ đồ đấu nối ESP32 cảm biến nước điều khiển máy bơm

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.

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-water-sensor-pump */ #define RELAY_PIN 13 // The ESP32 pin GPIO13 that connects to the relay to control the pump #define POWER_PIN 32 // The ESP32 pin GPIO32 that provides the power to the water sensor #define SIGNAL_PIN 36 // The ESP32 pin GPIO36 that reads the value from the water sensor #define THRESHOLD 1000 // The threshold for water detectiion void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); pinMode(RELAY_PIN, OUTPUT); // configure D2 pin as an OUTPUT pinMode(POWER_PIN, OUTPUT); // configure D7 pin as an OUTPUT digitalWrite(POWER_PIN, LOW); // turn the water sensor OFF digitalWrite(RELAY_PIN, LOW); // turn the pump OFF } void loop() { digitalWrite(POWER_PIN, HIGH); // turn the water sensor's power ON delay(10); // wait 10 milliseconds int value = analogRead(SIGNAL_PIN); // read the analog value from sensor digitalWrite(POWER_PIN, LOW); // turn the water sensor's power OFF if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(RELAY_PIN, HIGH); // turn the pump ON } else { digitalWrite(RELAY_PIN, LOW); // turn the pump OFF } delay(1000); // pause for 1 sec to avoid reading sensors frequently to prolong the sensor lifetime }

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.
  • Thực hiện đấu nối theo sơ đồ trên.
  • Kết nối board ESP32 với PC qua cáp micro USB
  • Mở Arduino IDE trên PC của bạn.
  • Chọn đúng board ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
  • Sao chép code ở trên và mở bằng Arduino IDE
  • Nhấn nút Upload trên Arduino IDE để tải code lên ESP32
tải mã lên Arduino IDE
  • Đặt cảm biến nước vào trong nước
  • Quan sát trạng thái của máy bơm

Giải Thích Code

Đọc phần giải thích từng dòng trong các comment của source code nhé!

※ 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 nước. ADC của ESP32 phù hợp với các dự án KHÔNG cần độ chính xác cao. Tuy nhiên, đối với những 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ể khác nhau một chút, vì vậy bạn cần hiệu chuẩn ADC cho từng board riêng biệt.
  • Việc hiệu chuẩn có thể khó khăn, đặc biệt là 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 mong muốn.

Đối với những dự án cần độ chính xác cao, hãy cân nhắc sử dụng ADC bên 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, 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.

Bình Luận