본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 RCWL-0516 레이더 모션센서를 사용해서 I2C 1602 캐릭터 LCD에 출력값 확인해 보기

by 오마이엔지니어 2019. 10. 13.
반응형

Arduino Uno 로 RCWL-0516 레이더 모션센서의 사용방법을 알아보고 I2C 1602 캐릭터 LCD에

모션 감지시 출력값 변화를 확인해 보고 부저와 LED를 같이 장착해서 테스트 해보는 프로젝트입니다


RCWL-0516 는 PIR 인체감지 센서와 유사한 기능의 마이크로 웨이브 레이더 모션 센서입니다
PIR 인체감지 센서와는 다르게 마이크로 웨이브 도플레 레이더(microwave Doppler radar)기능 으로
움직이는 물체나 인체를 감지할 수 있습니다
CDS 조도센서를 장착후 확장해서 사용 가능합니다 (저항과 같이 사용해 어두운 곳에서만 동작하게 하는 등의 용도로 활용)

RCWL-0516 Datasheet.pdf

RCWL-0516 Datasheet_en.pdf


<RCWL-0516 레이더 모션센서 이미지>


사용된 부품
아두이노 우노
RCWL-0516 마이크로웨이브 레이더 모션 센서
I2C / IIC 1602 캐릭터 LCD 모듈

점퍼케이블
미니 브래드보드
막대저항 220Ohm
5mm LED 블루
Active Buzzer

사용된 키트


구성 배선도-모션 감지시 시리얼 모니터로 출력값 변화 확인해 보기

구성 배선도-모션 감지시 시리얼 LED 점등시켜 보기


구성 배선도-모션 감지시 I2C 1602 LCD에 출력값 표시해 보고 부저와 LED 사용해 보기


사용된 예제파일

example code1.txt

example code2.txt

example code3.txt


사용된 라이브러리

LiquidCrystal_I2C.zip


주의사항
위 첨부된 LiquidCrystal_I2C 라이브러리를 사용해서 테스트 하도록 합니다
PC에 기존에 다른 LiquidCrystal_I2C 라이브러리가 사전에 설치되어 있다면 충돌해서 컴파일 에러가 날수 있으니 주의 하도록 합니다

전압은 꼭 5V를 사용 하도록 합니다, LCD를 사용하기 때문에 A(전류)가 충분히 공급되지 않는다면 화면 출력이 안될수도 있습니다
example code1 예제가 "모션 감지시 시리얼 모니터로 출력값 변화 확인해 보기" 입니다
example code2 예제가 "모션 감지시 시리얼 LED 점등시켜 보기" 입니다
example code3 예제가 "모션 감지시 I2C 1602 LCD에 출력값 표시해 보고 부저와 LED 사용해 보기" 입니다
5mm LED 배선시 다리가 긴쪽이 (+) 짧은쪽이 (-) 입니다
I2C 1602 캐릭터 LCD 배선시 SCL (아두이노 우노 A5에 연결) 과 SDA (아두이노 우노 A4에 연결) 핀이

배선이 정확하게 잘 되어 있는지 주의 하도록 합니다


첫번째 예제코드는 아주 간단합니다


#define Sensor 2

void setup() {

pinMode(Sensor,INPUT);
Serial.begin(9600);

}

void loop() {

bool Detection = digitalRead(Sensor);

if(Detection == HIGH)
Serial.println("Motion detected !!");
if(Detection == LOW)
Serial.println("Clear");

}


센서핀 2번 세팅으로 센서의 측정 반경에 모션이 감지되면 HIGH 로 시리얼 모니터에  Motion detected !! 문구가 출력 됩니다
모션이 감지되지 않으면 LOW 로 시리얼 모니터에 Clear 문구가 출력 됩니다

두번째 예제코드도 역시 간단합니다

#define Sensor 2
#define LED 3

void setup() {

pinMode(Sensor,INPUT);
pinMode(LED,OUTPUT);

}

void loop() {

bool Detection = digitalRead(Sensor);

if(Detection == HIGH)
digitalWrite(LED,HIGH);
if(Detection == LOW)
digitalWrite(LED,LOW);

}

센서핀 2번 세팅 LED핀 3번세팅으로 센서의 측정 반경에 모션이 감지되면 HIGH 로 LED가 점등 됩니다
모션이 감지되지 않으면 LOW 로 LED가 꺼집니다


세번째 예제코드를 살펴 보겠습니다

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

위 두가지 라이브러리를 사용합니다


LiquidCrystal_I2C lcd(0x27, 16, 2);
I2C 1602 캐릭터 LCD의 기본 I2C 주소는 0X27 입니다, 당사는 제품을 출고할때 I2C 주소 0X27 를 확인해서 출고하고 있습니다만
거의 대부분의 무책임한 도매 판매 업체들은 I2C 주소 확인없이 그냥 보내는 경우가 많습니다
이경우 I2C 스캐너 예제로 I2C 주소를 확인해서 맞는 I2C 주소로 수정해 주고 테스트 해야 합니다
만약 I2C 주소가 0X3F 이라면 LiquidCrystal_I2C lcd(0x3F,16,2); 이렇게 수정해 주고 테스트 하면 됩니다 

I2C 스캐너 예제 테스트는 아래 포스팅을 참조해 주세요
Arduino Uno 로 I2C 1602/2004 캐릭터 LCD 를 사용해보고 I2C 주소 확인해 보기

int Sensor = 12;   //Input Pin
int LED = 3;     // Led pin for Indication
int Buzzer =2;

센서핀은 12번 세팅, LED는 3번 세팅, 부저는 2번 세팅입니다

  Serial.begin(9600);
   lcd.init();    // initialize the lcd
     lcd.backlight();

시리얼 통신속도 9600이며 lcd와 백라이트를 동작 시킵니다

void loop() {
 
     int val = digitalRead(Sensor); //Read Pin as input
    
     if((val > 0) && (flg==0))
     {
        digitalWrite(LED, HIGH);
        digitalWrite(Buzzer, HIGH);
       
        lcd.clear();
        Serial.println("Motion Detected");
          lcd.print("Motion Detected");
        flg = 1;
     }
 
     if(val == 0)
     {
        digitalWrite(LED, LOW);
        digitalWrite(Buzzer, LOW);
        lcd.clear();
          Serial.println("NO Motion");
          lcd.print("NO Motion ");
         
        flg = 0;
     } 
     delay(100);
}

void loop 반복 부분에서는
센서로 모션 감지가 되면 if((val > 0) && (flg==0)) LCD에 Motion Detected 문구를 출력하고, HIGH 로 부저와, LED를 사용하게 합니다 
센서로 모션 감지가 되지 않으면 if(val == 0) LCD에 NO Motion 문구를 출력하고, LOW 로 부저와, LED를 사용하지 않게 합니다  


프로젝트 동영상-모션 감지시 시리얼 모니터로 출력값 변화 확인해 보기


프로젝트 동영상-모션 감지시 시리얼 LED 점등시켜 보기


프로젝트 동영상-
모션 감지시 I2C 1602 LCD에 출력값 표시해 보고 부저와 LED 사용해 보기


만약 LCD가 제대로 출력되지 않는다면, 공금전원 A전류가 부족하진 않은지 점검하고, 배선도 점검 후 아두이노의 RST 버튼을 눌러줍니다


example code1.txt
0.0MB
LiquidCrystal_I2C.zip
0.02MB
RCWL-0516 Datasheet_en.pdf
0.26MB
RCWL-0516 Datasheet.pdf
0.27MB
example code2.txt
0.0MB
example code3.txt
0.0MB
반응형

댓글