[아두이노 강좌] 13. PIR 모션 인식 디지털 센서 사용하기 / 디지털 신호 입력받기 (2)

2dc6cb7277117a02103aaa55ec030085_1462628
 

 

2dc6cb7277117a02103aaa55ec030085_1462628 개요

 

앞에서 배운 내용을 바탕으로 아두이노와 디지털 신호를 사용하는 센서를 연결하여 움직

임을 감지해보도록 하겠습니다.

  

2dc6cb7277117a02103aaa55ec030085_1462628

 

2dc6cb7277117a02103aaa55ec030085_1462628 센서란 무엇일까?

 

센서(Sersor)는 '감지기'라는 의미를 가지며, 움직임이나 소리, 거리, 빛 따위의 물리량을

구한 후 전기 신호로 변환하는 소자 또는 장치를 말합니다. 쉽게 말해 감지하고, 전기신호로

바꿔 알려준다는 겁니다. 여기서 말하는 전기 신호는 디지털 혹은 아날로그 신호를 말하며,

이번에 사용할 PIR 모션 인식 센서는 움직임을 감지한 후 디지털 신호로 변환해줍니다.


2dc6cb7277117a02103aaa55ec030085_1462629

    그림1. 여러가지 센서들 

 

2dc6cb7277117a02103aaa55ec030085_1462628

 


2dc6cb7277117a02103aaa55ec030085_1462628 근적외선 인체 모션 센서

 

 PIR 모션 센서는 적외선(빛)을 통해 움직임을 감지합니다. 감지 각도 내에 빛의 변화가

있을시 HIGH(1)의 신호를 출력하며, 움직임이 없을 경우 LOW(0) 신호를 출력합니다.

모듈의 내부에는 아래 그림과 같은 센서가 내장되어 있으며, 외부 렌즈는 감도 각도를

넓혀주는 역할을 합니다.


2dc6cb7277117a02103aaa55ec030085_1462629

    그림2. PIR 모션 인식센서

 

 

센서는 하단부에 위치한 3개의 핀과 2개의 가변부를 통해 조작할 수 있습니다. 각 핀과

가변부의 기능은 다음과 같습니다.


2dc6cb7277117a02103aaa55ec030085_1462629

            그림3. 센서 조작부

 

2dc6cb7277117a02103aaa55ec030085_1462629

 

 

2dc6cb7277117a02103aaa55ec030085_1462629 아두이노로 디지털 센서 사용하기

 

이제 본격적으로 아두이노와 PIR센서를 사용해보도록 하겠습니다. 결과물을 미리 말씀

드리자면, 움직임이 감지되면 LED가 켜지고, 그렇지 않다면 LED가 꺼지는 예제입니다.

자, 그럼 준비물을 챙겨봅시다. 

 

2dc6cb7277117a02103aaa55ec030085_1462629 준비물

2dc6cb7277117a02103aaa55ec030085_1462629
 

2dc6cb7277117a02103aaa55ec030085_1462629

  

2dc6cb7277117a02103aaa55ec030085_1462629 회로도 연결


2dc6cb7277117a02103aaa55ec030085_1462629

LED는 디지털 3번핀에 연결해줍니다.(GND, 220옴 저항)

PIR센서는 디지털 2번핀에 연결해줍니다. (5V, GND)

 

2dc6cb7277117a02103aaa55ec030085_1462629
 

2dc6cb7277117a02103aaa55ec030085_1462629 프로그램 코드(3) 


int LED = 3;    // 정수형 변수 LED를 생성하고 3을 대입한다.

int PIR = 2;     // 정수형 변수 PIR를 생성하고 2를 대입한다.

int val = 0;      // 정수형 변수 val를 생성하고 0을 대입한다.


void setup() {                     

pinMode(LED, OUTPUT);     // LED(3)핀을 출력모드로 설정

pinMode(PIR, INPUT);         // PIR(2)핀을 입력모드로 설정 

}


void loop() {                                

val = digitalRead(PIR);        // val에 PIR(2)핀의 입력 값을 저장

if (val == HIGH) {                // 만약 val이 HIGH(1)이라면,

digitalWrite(LED,HIGH);   // LED(3)핀에 HIGH 신호를,

} 

else {                                // 그게 아니라면

digitalWrite(LED, LOW);   // LED(3)핀에 LOW 신호를.

}

}

 

프로그램 해석

val라는 변수에 PIR센서에서 출력되는 값을 저장하고, 그 값에 따라 LED에 변화를 주는

프로그램입니다. 결과적으로 움직임이 감지되면 LED가 켜지며, 아무것도 감지되지 않는

다면 LED는 켜지지 않습니다.

 

 


주렁 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2016-09-30 (금) 19:16 2년전
이건 잘 안되네요...
주소
wintergatan 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2019-02-26 (화) 15:56 5개월전
시리얼 보드를 켜서 보니까 계속 1만 뜹니다. led가 꺼지질 않아요 왜그럴까요? 회로랑 코딩은 똑같이 했어요
주소
     
     
브랜든 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 2019-02-27 (수) 01:07 5개월전
pir센서의 흰색 캡 부분을 벗겨보시면 각 핀에 대한 단자가 설명되어 있는데 잘 못 연결되어 있는 부분이 없는지 확인해주시길 바라며,
PIR 센서는 감도 설정을 중요시 하기에, 가변저항을 돌려서 맞춰주셔야 합니다.
흰색 캡을 정면을 바라볼 때, 왼쪽 가변저항을 최대한 왼쪽으로, 오른쪽 가변저항을 가운데 쯤으로 맞춰주면 되며,
센서나 점퍼선을 손으로 잡지 말고 바닥에 둔 상태로 테스트 진행해보시길 바랍니다
주소


 

메이크쉐어 PC버전 로그인
로그인 해주세요.

회원가입

쪽지

포인트

스크랩
기초강좌(배우고)
부품사용법(익히고)
게시판
메이크쉐어 PC버전 로그인