본문 바로가기

프로그래밍/아두이노[Arduino]&라즈베리파이[Raspberry Pi]

[아두이노] 빗물감지센서 모듈을 사용하여 LCD에 센서값을 표시하기 + LED 제어



안녕하세요 이번에는 빗물감지센서 모듈 LCD(I2C LCD)에 대해서 알아보도록 하겠습니다.

 

간단소개

1. 빗물감지 센서모듈로 종이컵으로 물을 뿌릴때 값을 측정
2. 임의로 정한 값을 넘으면 LED에 점등상태로 변경
3. LCD에는 빗물감지 센서모듈에서 측정한 값을 지속적으로 표시

 

 

핵심부품

전원 전압: DC 3V ~ 5V
사용전류: 20mA 전후
표시장치: LED
감지출력: TTL Level("H", "L")
크기: 50mm * 40mm(센서)/32mm * 14mm(감지회로)


※ 아날로그로 연결하는경우  → 센서에 빗물의 양을 판단
※ 디지털로 연결하는경우 → 센서에 빗물의 유무를 판단(유무 확인만 가능)

 

I2C LCD


작동 전압: 2.5V~ 6V
I2C 프로토콜 지원
I2C 주소값: 0x27
기존의 핀 대신 4개의 핀으로 제어가 가능




부품 목록

 

 

 

브레드보드

 

 



회로도

 

 


소스코드



라이브러리 설치

스케치 - 라이브러리 포함하기 - 라이브러리 관리 

 


LiquidCrystal 
를 검색하여 설치

 

 

 

// I2C LCD를 쉽게 제어하기 위한 라이브러리를 추가해줍니다.
#include <LiquidCrystal_I2C.h>

// 16X2 크기의 LCD 객체를 생성합니다.
// 만약 LCD 화면이 나오지 않으면 0x3F 대신 0x27를 넣어주세요.
LiquidCrystal_I2C lcd(0x27, 16, 2);

int analogPin = A0;   // 빗물감지센서 analog in A0 연결 선언
int led = 13;         // LED 디지털 13번 포트 연결 선언
int data = 0;         // 센서값의 변수 연결 선언


void setup(){
  pinMode(led, OUTPUT);          // 디지털 13번 포트를 LED OUTPUT 으로 설정
  Serial.begin (9600);          // 시리얼모니터 설정
  lcd.init();                    // LCD를 초기화 합니다.
  lcd.backlight();               // LCD의 백라이트를 켜줍니다.
}


void loop(){
  int data = analogRead(analogPin);   // analogPin 의 변화값(전류값)을 읽음

  if(isnan(data)){
    Serial.println("Failed to read from rain_drop sensor!");
  }
 
  else if(data < 800){           // val 값이 800미만 (전류가 800 미만이면)                               
      digitalWrite(led, HIGH);   // LED ON
  }
  else{                          // val 값이 800이상 (전류가 800 이상이면)
      digitalWrite(led, LOW);    // LED OFF
  }
  show(data);
  delay (500);
}

void show(int val){
  // LCD를 초기화 합니다.
  lcd.init(); 
  
  // 센서값을 시리얼 모니터에 출력해 줍니다.
  Serial.println((int)val);
 
  // LCD에 출력할 메세지를 만듭니다.
  String text = "Rain Value";

  // 첫번째 줄, 첫번째 칸에 text 출력
  lcd.setCursor(0, 0);
  lcd.print(text);
 
  // 두번째 줄, 첫번째 칸부터 출력
  lcd.setCursor(0, 1);
  lcd.print(val);
}

 

결과 확인

 

아래처럼 시리얼 모니터를 확인하시면 수위센서위치를 변경함에 따라서 측정된 값이 표시 됩니다.


참고로 기본적으로 1023의 값을 가지고 있다가 빗물을 감지하면 수치가 감소하게 됩니다.