ESP8266 Cảm biến mưa

Cảm biến mưa phát hiện và đo mức mưa hoặc tuyết, cung cấp cả đầu ra kỹ thuật số (LOW/HIGH) và đầu ra tương tự. Hướng dẫn này trình bày cách sử dụng ESP8266 để kết nối và tận dụng cảm biến mưa, bao gồm:

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

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×cảm biến mưa
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ưa

Cảm biến mưa có thể nhận diện sự có mặt của mưa hoặc đo mức nước. Nó cung cấp hai tùy chọn thông qua một chân đầu ra số và một chân đầu ra tương tự.

Cảm biến bao gồm hai thành phần: tấm cảm biến và mô-đun điện tử.

sơ đồ chân của cảm biến mưa
image source: diyables.io

Bề mặt cảm ứng

Tấm cảm biến được đặt ngoài trời để tiếp xúc với mưa và tuyết (ví dụ trên mái nhà), có các đường dẫn bằng đồng lộ diện được phân thành hai nhóm: đường dẫn nguồn và đường dẫn cảm biến. Những đường dẫn này vẫn không được nối với nhau cho đến khi nước hoặc tuyết tạo cầu nối giữa chúng. Cả hai loại đường dẫn nguồn và đường dẫn cảm biến đều giống nhau, cho phép linh hoạt trong việc chỉ định một đường dẫn làm đường dẫn nguồn và đường dẫn kia làm đường dẫn cảm biến.

Mô-đun điện tử

Module đ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 các giá trị tương tự hoặc số có thể đọc được bởi ESP8266 NodeMCU. Nó bao gồm bốn chân:

  • VCC pin: Kết nối với VCC (3.3V đến 5V).
  • GND pin: Kết nối với GND (0V).
  • DO pin: Chân đầu ra số, cho HIGH khi không có mưa và LOW khi có mưa. Ngưỡng phát hiện mưa có thể điều chỉnh bằng một potentiometer tích hợp.
  • AO pin: Chân đầu ra analog, giá trị giảm khi có nhiều nước trên mặt cảm biến và tăng khi nước giảm.

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

  • Chỉ báo LED PWR cho nguồn.
  • Chỉ báo LED DO cho trạng thái mưa trên chân DO, sáng lên khi có mưa.

Cách hoạt động

Về chân DO:

  • Module được trang bị một biến trở tích hợp để thiết lập ngưỡng cảm biến.
  • Khi cường độ vượt quá ngưỡng, mưa được phát hiện, và đầu ra của cảm biến ở mức LOW, kích hoạt đèn DO-LED sáng.
  • Ngược lại, khi cường độ giảm xuống dưới ngưỡng, mưa không được phát hiện, đầu ra ở mức HIGH, và đèn DO-LED tắt.

Về chân AO:

  • Giá́ trị của chân AO giảm khi có nhiều nước hơn trên pad cảm biến.
  • Ngược lại, giá trị của chân AO tăng khi trên pad cảm biến có ít nước hơn.

Cầ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ước đây, việc kết nối chân VCC của cảm biến trực tiếp với các pin 3.3V hoặc 5V trên ESP8266 có thể rút ngắn tuổi thọ của cảm biến do ăn mòn điện hóa. Phương pháp được khuyến nghị là kết nối chân VCC của cảm biến mưa với một chân ra trên ESP8266. Bằng cách lập trình chân đó, cảm biến mưa có thể được cấp nguồn chỉ trong quá trình đo, từ đó giảm thiểu tác động của ăn mòn điện hóa.

Vì 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.

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

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

  • Sơ đồ kết nối giữa ESP8266 và cảm biến mưa khi chỉ sử dụng AO.
sơ đồ kết nối ESP8266 NodeMCU cho phát hiện mưa

This image is created using Fritzing. Click to enlarge image

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

This image is created using Fritzing. Click to enlarge image

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

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-rain-sensor */ #define POWER_PIN D7 // The ESP8266 pin that provides the power to the rain sensor #define DO_PIN D2 // The ESP8266 pin connected to DO pin of the rain sensor void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); // initialize the ESP8266'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

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Xem bài hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu bạn sử dụng ESP8266.
  • Nối các linh kiệ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ư NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • 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 ESP8266.
  • 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  

Hãy lưu ý 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 đang hướng về 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ã nguồn ESP8266 - Đọc giá trị từ chân A0

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-rain-sensor */ #define POWER_PIN D7 // The ESP8266 pin that provides the power to the rain sensor #define AO_PIN A0 // The ESP8266 pin connected to AO pin of the rain sensor void setup() { // Initialize the Serial to communicate with the Serial Monitor. 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

  • Nối các thành phần như được hiển thị 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 board ESP8266 đúng, ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng.
  • Sao chép mã ở trên và mở bằng Arduino IDE.
  • Nhấp vào nút Tải lên trên Arduino IDE để tải mã lên ESP8266.
  • Nhỏ vài giọt nước lên cảm biến mưa.
  • Kiểm tra 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  

※ Lưu ý:

Tutorial này sử dụng hàm analogRead() để lấy dữ liệu từ một ADC (Analog-to-Digital Converter) được kết nối với cảm biến hoặc một bộ phận khác. 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 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 đòi hỏi độ chính xác rất cao, bạn có thể muốn sử dụng một ADC riêng như ADS1115 với ESP8266, hoặc dùng Arduino như Arduino Uno R4 WiFi, có 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.