Arduino UNO R4 Cảm Biến Nước

Hướng dẫn này sẽ dạy chúng ta cách sử dụng cảm biến nước với Arduino UNO R4. Cảm biến nước có thể phát hiện rò rỉ nước, đo lượng mưa, kiểm tra tràn bể chứa, hoặc kiểm tra mức nước. Cụ thể, chúng ta sẽ học:

Arduino UNO R4 and water sensor module

Linh Kiện Cần Thiết

1×Arduino UNO R4 WiFi hoặc Arduino UNO R4 Minima
1×(Tùy chọn) DIYables STEM V4 IoT, tương thích với Arduino Uno R4 WiFi
1×Arduino UNO R4 Minima (Thay thế)
1×Cáp USB Type-C
1×Cảm biến mức nước
1×Dây nối Jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4
1×(Khuyến nghị) Breadboard Shield for Arduino UNO R4
1×(Khuyến nghị) Enclosure for Arduino UNO R4
1×(Khuyến nghị) Power Splitter for Arduino UNO R4
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V4 IoT Starter Kit (Arduino included)
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ảm Biến Mức Nước

Cảm biến mức nước có ba chân:

  • Chân S (Signal): Đây là đầu ra analog. Kết nối nó với một đầu vào analog trên Arduino UNO R4 của bạn.
  • Chân + (VCC): Chân này cấp nguồn cho cảm biến. Sử dụng 3.3V đến 5V để cấp nguồn.
  • Chân - (GND): Đây là kết nối ground (mass).
water sensor sơ đồ chân

※ Lưu ý:

Đầu ra từ chân tín hiệu của cảm biến thay đổi dựa trên điện áp cấp cho chân VCC của nó.

Cách Hoạt Động Của Cảm Biến Mức Nước

Khi cảm biến ở trong nhiều nước hơn, điện áp đầu ra trên chân tín hiệu tăng lên.

Hãy cùng xem xét kỹ hơn.

Phần này chứa thông tin nâng cao có thể gây quá tải. Nếu bạn chưa chắc về nội dung, hãy bỏ qua và chuyển sang phần tiếp theo.

Cảm biến bao gồm mười đường copper mà bạn có thể thấy. Nó có năm đường nguồn và năm đường cảm biến. Những đường này được sắp xếp cạnh nhau, luân phiên một đường cảm biến giữa hai đường nguồn. Thông thường, những đường này không chạm vào nhau, nhưng nếu cảm biến được đặt trong nước, nước sẽ kết nối các đường lại.

Các vạch hoạt động như một điện trở biến đổi (tương tự như potentiometer) thay đổi điện trở dựa trên mức nước.

  • Sự thay đổi điện trở cho biết khoảng cách từ đầu trên của cảm biến đến bề mặt nước.
  • Điện trở giảm khi mức nước tăng lên.
  • Khi cảm biến ngập nhiều hơn trong nước, nó dẫn điện tốt hơn, làm cho điện trở thấp hơn.
  • Khi cảm biến ngập ít hơn trong nước, nó dẫn điện kém hơn, làm cho điện trở cao hơn.
  • Cảm biến cung cấp điện áp đầu ra dựa trên điện trở.

Chúng ta có thể tìm ra mức nước bằng cách đo điện áp.

Sơ Đồ Đấu Nối

Để cung cấp nguồn cho cảm biến, kết nối chân VCC của cảm biến với chân 5V của Arduino UNO R4 và chân GND với chân GND của Arduino.

Tuy nhiên, không nên luôn cấp nguồn cho cảm biến trong môi trường ẩm ướt vì điều này có thể làm cho cảm biến bị ăn mòn nhanh chóng, giảm tuổi thọ. Để tránh điều này, chúng tôi đề xuất chỉ cấp nguồn cho cảm biến khi bạn cần đọc dữ liệu. Bạn có thể làm điều này bằng cách kết nối chân VCC của cảm biến với một chân digital trên Arduino UNO R4. Đặt chân của Arduino thành HIGH để đọc cảm biến, và sau đó đặt thành LOW khi hoàn tất.

Arduino UNO R4 water sensor sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Code Arduino UNO R4 - Đọc Giá Trị Từ Cảm Biến Nước

/* * Mã Arduino UNO R4 này được phát triển bởi newbiely.vn * Mã Arduino UNO R4 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-uno-r4/arduino-uno-r4-water-sensor */ #define POWER_PIN 5 // The Arduino UNO R4 pin connected to the VCC pin of water sensor to control the power #define SIGNAL_PIN A0 // The Arduino UNO R4 pin connected to the signal pin of water sensor int value = 0; // Variable for storing the value read from the sensor void setup() { Serial.begin(9600); // Start serial communication at 9600 baud pinMode(POWER_PIN, OUTPUT); // Set POWER_PIN as an output digitalWrite(POWER_PIN, LOW); // Initially set the POWER_PIN LOW to turn the sensor off } void loop() { digitalWrite(POWER_PIN, HIGH); // Set POWER_PIN HIGH to power the sensor delay(10); // Allow sensor time to stabilize (10ms delay) value = analogRead(SIGNAL_PIN); // Read the value from the sensor digitalWrite(POWER_PIN, LOW); // Set POWER_PIN LOW to turn off the sensor Serial.print("Sensor value: "); // Print the sensor value to Serial Monitor Serial.println(value); // Display the sensor value delay(1000); // Wait for 1 second before reading again }

Các Bước Nhanh

Thực hiện theo hướng dẫn từng bước sau:

  • Nếu đây là lần đầu tiên bạn sử dụng Arduino Uno R4 WiFi/Minima, hãy tham khảo hướng dẫn về Arduino UNO R4 - Cài Đặt Phần Mềm.
  • Kết nối cảm biến nước với Arduino Uno R4 theo sơ đồ được cung cấp.
  • Kết nối bo mạch Arduino Uno R4 với máy tính của bạn bằng cáp USB.
  • Khởi chạy Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch Arduino Uno R4 phù hợp (ví dụ: Arduino Uno R4 WiFi) và cổng COM.
  • Sao chép code được cung cấp và mở trong Arduino IDE.
  • Nhấn nút Upload trong Arduino IDE để gửi code lên Arduino UNO R4.
  • Từ từ hạ cảm biến xuống nước (sử dụng một cốc nước).
  • Kiểm tra kết quả trên Serial Monitor. Nó hiển thị giá trị 0 khi cảm biến không tiếp xúc với bất cứ thứ gì.
COM6
Send
Sensor value: 0 Sensor value: 0 Sensor value: 0 Sensor value: 25 Sensor value: 97 Sensor value: 284 Sensor value: 428 Sensor value: 435 Sensor value: 441 Sensor value: 455 Sensor value: 467 Sensor value: 521 Sensor value: 528 Sensor value: 553
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

Cảm biến không nên được ngâm hoàn toàn trong nước; chỉ những phần lộ ra trên bo mạch mới được chạm vào nước. Vui lòng lắp đặt cẩn thận.

Cách Phát Hiện Rò Rỉ Nước

Để tìm ra xem có rò rỉ nước, mưa, hoặc tràn bể chứa hay không, chúng ta chỉ cần so sánh số đọc với một ngưỡng đã đặt. Chúng ta đặt ngưỡng này trong bước hiệu chuẩn của hướng dẫn này.

Code Arduino UNO R4 - Phát Hiện Rò Rỉ Nước

/* * Mã Arduino UNO R4 này được phát triển bởi newbiely.vn * Mã Arduino UNO R4 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-uno-r4/arduino-uno-r4-water-sensor */ #define POWER_PIN 5 // The Arduino UNO R4 pin connected to the VCC pin of water sensor to control the power #define SIGNAL_PIN A0 // The Arduino UNO R4 pin connected to the signal pin of water sensor #define THRESHOLD 300 int value = 0; // Initialize variable to store the value read from the sensor void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // Set the power pin as an output digitalWrite(POWER_PIN, LOW); // Initially turn off the power } void loop() { digitalWrite(POWER_PIN, HIGH); // Enable power to the sensor delay(10); // Allow some time for the sensor to stabilize value = analogRead(SIGNAL_PIN); // Read the sensor output digitalWrite(POWER_PIN, LOW); // Disable power to the sensor if (value > THRESHOLD) { // Check if the sensor output exceeds the threshold Serial.print("The water is dedected"); // Send a message to the serial monitor } }

Cách Đo Mức Nước

Để chia mức nước cao nhất thành các giai đoạn khác nhau và kiểm tra giai đoạn hiện tại, hãy sử dụng kỹ thuật trong code sau. Nhớ rằng, mức nước cao nhất tương ứng với chiều cao của cảm biến. Code này chia chiều cao tối đa thành 4 giai đoạn.

/* * Mã Arduino UNO R4 này được phát triển bởi newbiely.vn * Mã Arduino UNO R4 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-uno-r4/arduino-uno-r4-water-sensor */ #define POWER_PIN 5 // The Arduino UNO R4 pin connected to the VCC pin of water sensor to control the power #define SIGNAL_PIN A0 // The Arduino UNO R4 pin connected to the signal pin of water sensor #define SENSOR_MIN 0 // Minimum value for sensor #define SENSOR_MAX 521 // Maximum value for sensor int value = 0; // Holds the current sensor value int level = 0; // Holds the water level indicator void setup() { Serial.begin(9600); // Initialize serial communication pinMode(POWER_PIN, OUTPUT); // Set the power pin as output digitalWrite(POWER_PIN, LOW); // Initially turn off the sensor } void loop() { digitalWrite(POWER_PIN, HIGH); // Activate the sensor delay(10); // Wait for the sensor to stabilize value = analogRead(SIGNAL_PIN); // Read the sensor output digitalWrite(POWER_PIN, LOW); // Deactivate the sensor level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // Map sensor values to 0-4 scale Serial.print("Water level: "); // Print the label Serial.println(level); // Print the mapped water level delay(1000); // Wait one second before repeating }

※ Lưu ý:

  • SENSOR_MIN và SENSOR_MAX được đặt trong quá trình hiệu chuẩn.
  • Phương pháp ánh xạ ở trên có thể không chính xác hoàn toàn, nhưng nó hoạt động tốt cho nhiều ứng dụng. Để cải thiện độ chính xác, hãy đo các giá trị ngưỡng cho từng mức như được giải thích trong phần hiệu chuẩn.

Hiệu Chuẩn Cảm Biến Mức Nước

Đầu ra của cảm biến bị ảnh hưởng bởi mức nước và khả năng dẫn điện của nước. Nước tinh khiết không dẫn điện. Tuy nhiên, nước có chứa khoáng chất và tạp chất thì có dẫn điện. Khả năng dẫn điện của nước càng lớn thì cảm biến càng nhạy. Ngoài ra, giá trị đầu ra thay đổi với các điện áp khác nhau được áp dụng cho chân VCC của cảm biến.

Để có được kết quả đọc 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 sẽ theo dõi.

Trước khi bạn đặt ngưỡng cho một hành động, trước tiên hãy đo giá trị thực từ cảm biến bằng cách thực hiện kiểm tra.

Cách thực hiện kiểm tra:

  • Sử dụng sơ đồ được cung cấp để đọc giá trị của cảm biến.
  • Đặt cảm biến trong nước đến mức mong muốn của bạn.
  • Ghi lại giá trị hiển thị trong Serial Monitor.
  • Đặt giá trị này làm ngưỡng để kích hoạt một hành động.

Kiểm tra này có thể cần một số lần thử để có kết quả đúng.

Kiểm tra này cũng có thể giúp khám phá:

  • Giá trị cảm biến tối thiểu khi nó ra khỏi nước.
  • Giá trị cảm biến tối đa khi nó hoàn toàn trong nước.
  • Giá trị ngưỡng để phát hiện rò rỉ nước.
  • Giá trị ngưỡng cho từng mức trên thang đo của bạ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.

Bình Luận