Phát hiện mưa (Rain Sensor) sử dụng NodeMCU ESP8266

24 Tháng 07 2019 | Đăng bởi: Cao Thanh Hùng

 

Cảm Biến Mưa (Rain Sensor) là một cảm biến được sử dụng khá nhiều trong đời sống hiện nay vì sự tiện lợi của chúng, được sử dụng trong các ứng dụng về thời tiết, các bộ cảnh báo mưa, cảnh báo rò rỉ nước. Trong nội dung bài viết hôm nay mình sẽ hướng dẫn các bạn cách để phát hiện mưa sử dụng NodeMCU ESP8266.

 

Sơ đồ đấu nối

Cảm Biến Mưa (Sensor Rain)

NodeMCU ESP8266

VDD

Vin

GND

GND

A0

A0

 

Các linh kiện cần thiết cho dự án

Tên linh kiện Số lượng
NodeMCU ESP8266 1
Dây cắm 5
Cảm Biến Mưa 1

Code:

#include <ESP8266WiFi.h>
const char* ssid = "Nha Trọ 4"; 
const char* password = "Nguyennam";

WiFiClient client;

int sensorPin = A0;
int enable2 = 13;
int sensorValue2 = 0;

void setup() {
pinMode(enable2, OUTPUT);  
Serial.begin(115200);
delay(10);
WiFi.begin(ssid, password);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
Serial.print("..........");
Serial.println();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
Serial.println("WiFi connected");
Serial.println();
}

void loop() {
delay(500);
sensorValue2 = analogRead(sensorPin);
sensorValue2 = constrain(sensorValue2, 150, 440); 
sensorValue2 = map(sensorValue2, 150, 440, 1023, 0); 
if (sensorValue2>= 20)
{
  Serial.print("rain is detected");
  
digitalWrite(enable2, HIGH);
  }
  else
  
{
  Serial.print("rain not detected");
  digitalWrite(enable2, LOW); 
  }
//Serial.print("Rain value:       ");
//Serial.println(sensorValue2);
Serial.println();
delay(100);
}

 

BÀI VIẾT LIÊN QUAN

 

 

Bình luận
2 bình luận:
binh-luan

An Trần

29/07/2019

Chào anh. Cho em hỏi tại sao phải constrain giá trị sensorValue2 trong khoảng 150 đến 440 ạ (sensorValue2 = constrain(sensorValue2, 150, 440);) ? Hai số 150 và 440 là gì vậy ạ? Cảm biến của em nếu dùng analogRead vẫn ra giá trị từ 0 đến 1023. Mong được anh giải đáp ạ. Cảm ơn anh.

binh-luan

An Trần

29/07/2019

Chào anh. Cho em hỏi tại sao phải constrain giá trị sensorValue2 trong khoảng 150 đến 440 ạ (sensorValue2 = constrain(sensorValue2, 150, 440);) ? Hai số 150 và 440 là gì vậy ạ? Cảm biến của em nếu dùng analogRead vẫn ra giá trị từ 0 đến 1023. Mong được anh giải đáp ạ. Cảm ơn anh.

Viết bình luận: