ESP8266 Cảm biến nước
Hướng dẫn này sẽ chỉ cho bạn cách sử dụng cảm biến nước với ESP8266. Chúng ta sẽ học:
- Cách kết nối cảm biến nước với ESP8266
- Cách lập trình ESP8266 để đọc trạng thái từ cảm biến nước.
- Cách phát hiện rò rỉ nước, mưa, tràn bình chứa, và đo mức nước.
- Cách hiệu chuẩn cảm biến nước.
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 | × | Water level 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) |
Về cảm biến mực nước
Sơ đồ chân của cảm biến mức nước
Cảm biến mực nước có 3 chân:
- Đầu S (Signal) là một đầu ra tín hiệu tương tự và nên được kết nối với một trong các đầu vào tương tự trên ESP8266 của bạn.
- Đầu + (VCC) cấp nguồn cho cảm biến và được đề xuất sử dụng điện áp từ 3.3V đến 5V.
- Đầu - (GND) là kết nối đất.

Cách hoạt động của cảm biến mức nước
Tóm lại, điện áp đầu ra trên chân tín hiệu tăng lên khi cảm biến tiếp xúc với nhiều nước hơn.
Hãy xem xét kỹ hơn.
Cảm biến có một tập gồm mười đường dẫn bằng đồng lộ ra, trong đó năm đường dẫn là nguồn và năm đường còn lại là đường dẫn cảm biến. Các đường dẫn được bố trí song song, với một đường dẫn cảm biến ở giữa mỗi hai đường dẫn nguồn. Trừ khi bị ngập nước, các đường dẫn này không được kết nối với nhau.
Các đường mạch trên PCB hoạt động như một điện trở biến thiên (giống như một biến trở) có điện trở thay đổi tùy theo mực nước:
- Điện trở của các đường dẫn tỷ lệ nghịch với mực nước.
- Cảm biến được nhúng trong nước càng nhiều, điện dẫn càng tốt, dẫn đến điện trở càng thấp.
- Cảm biến được nhúng trong nước càng ít, điện dẫn càng kém, dẫn đến điện trở càng cao.
- Điện áp đầu ra của cảm biến được xác định bởi điện trở.
Việc đo điện áp có thể được sử dụng để xác định mực nước.
Sơ đồ đấu dây
Về lý thuyết, các chân VCC và GND của cảm biến có thể được nối với các chân 5V và GND của ESP8266, tương ứng, để cấp nguồn cho cảm biến.
Tuy nhiên, không nên áp dụng phương pháp này trong thực tế. Nếu môi trường ẩm ướt, cấp nguồn cho cảm biến liên tục sẽ khiến nó bị ăn mòn điện hóa nhanh hơn, từ đó làm giảm tuổi thọ của nó. Để ngăn ngừa điều này, chúng tôi đề xuất cấp nguồn cho cảm biến chỉ khi bạn cần đọc giá trị của nó. Điều này có thể thực hiện bằng cách kết nối chân VCC của cảm biến với một chân kỹ thuật số của ESP8266 và đặt chân của Arduino ở mức HIGH trước khi đọc và ở LOW sau đó.

This image is created using Fritzing. Click to enlarge image
Xem thêm Sơ đồ chân ESP8266 và Cách cấp nguồn cho ESP8266.
Mã ESP8266 - Đọc Giá trị Từ Cảm Biến Nước
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:
- Hãy tham khảo bài hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu tiên bạn sử dụng ESP8266.
- Kết nối các thành phần như được thể hiện 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 (Mô-đun ESP-12E)), 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.
- Nhẹ nhàng thả cảm biến vào một ly nước.
- Xem kết quả trên Serial Monitor; giá trị nên là 0 khi cảm biến không tiếp xúc với bất kỳ thứ gì.
※ Lưu ý:
Cảm biến không được ngập hoàn toàn; chỉ các đường mạch lộ ra trên bảng mạch in (PCB) mới được tiếp xúc với nước. Vui lòng cẩn thận khi lắp đặt.
Cách Phát Hiện Rò Rỉ Nước
Để nhận diện rò rỉ nước, lượng mưa và tràn bình chứa, chúng ta chỉ cần so sánh giá trị đo được với một ngưỡng đã được xác định trong phần hiệu chuẩn của bài hướng dẫn này.
Hãy xem xét một trường hợp cụ thể. Nếu nước được phát hiện, ESP8266 sẽ bật một đèn LED.
Sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image
Mã ESP8266 - Phát hiện rò rỉ nước
Cách Đo Mực Nước
Nếu bạn muốn đo mức nước hiện tại bằng cách chia chiều cao tối đa thành các mức khác nhau, mã dưới đây có thể được sử dụng. Lưu ý rằng chiều cao tối đa của nước tương đương với chiều cao của cảm biến. Mã này chia chiều cao tối đa thành bốn mức.
※ Lưu ý:
- SENSOR_MIN và SENSOR_MAX được xác định thông qua quá trình hiệu chuẩn.
- Phương pháp ánh xạ được đề cập ở trên không chính xác. Tuy nhiên, nó phù hợp với nhiều ứng dụng. Nếu bạn muốn kết quả chính xác hơn, bạn có thể đo các giá trị ngưỡng cho mỗi cấp độ. Để biết thêm thông tin, vui lòng tham khảo phần hiệu chuẩn ở cuối bài hướng dẫn này.
Hiệu chuẩn cảm biến mức nước
Giá trị đầu ra của cảm biến được xác định bởi hai yếu tố: mực nước và độ dẫn điện của nước. Nước tinh khiết không dẫn điện; tuy nhiên, khi có khoáng chất và tạp chất, nước trở nên dẫn điện. Nước càng dẫn điện thì độ nhạy của cảm biến càng cao. Thêm vào đó, giá trị đầu ra còn bị ảnh hưởng bởi điện áp cấp cho chân VCC của cảm biến.
Để có được kết quả đo chính xác từ cảm biến nước, chúng tôi đề xuất hiệu chuẩn nó cho loại nước cụ thể mà bạn dự định theo dõi.
Trước khi thiết lập ngưỡng để kích hoạt một hành động, cần đo giá trị thực tế thu được từ cảm biến thông qua một bài kiểm tra.
Hướng dẫn cho bài kiểm tra:
- Sử dụng bản phác thảo được cung cấp ở trên để đọc giá trị cảm biến.
- Nhúng cảm biến vào nước, đảm bảo nó ở mức ngưỡng mong muốn.
- Ghi lại giá trị do cảm biến xuất ra trên Serial Monitor.
- Sử dụng giá trị này làm ngưỡng để kích hoạt một hành động cụ thể.
Có thể cần một số thử nghiệm để hoàn thành bài kiểm tra này.
Bài kiểm tra cũng có thể được sử dụng để khám phá:
- Giá trị SENSOR_MIN, khi cảm biến chưa ngập trong chất lỏng
- Giá trị SENSOR_MAX, khi cảm biến được ngập hoàn toàn trong chất lỏng
- Một giá trị giới hạn để phát hiện rò rỉ nước
- Các giá trị biên giới cho từng giai đoạn trên thang đo cấp độ của bạn
※ Lưu ý:
Bài 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 bộ phận khác. Bộ ADC của ESP8266 hoạt động tốt cho các dự án mà bạn không cần độ chính xác cao. Tuy nhiên, hãy nhớ rằng bộ 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 yêu cầu độ 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, có một 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.
Thách thức bản thân
- Khi phát hiện rò rỉ nước,
- Gửi một email,
- Gửi một tin nhắn SMS,
- Và phát ra tiếng chuông báo động.