인체감지 센서(PIR Sensor) 제어(아두이노)

in #kr-newbie6 years ago

인체감지 센서(PIR Sensor) 제어(아두이노)



오늘은 좀 난이도 낮춰서 쉬운 인체감지 센서(PIR Sensor) 작동원리를 배워 보도록 하겠습니다. 흔히 아파트 통로나 현관문에 저녁때 들어서면 잠시 조명에 불이 들어오는걸 많이 경험해 보셨을 꺼에요. 그리고 자세히 보면 둥근 모양의 물체가 부착되어 있는 것을 아마 한번쯤은 보셨을 거라 생각됩니다. PIR Sensor는 사람이나 동물의 움직임을 감지하는 센서입니다. 이 감지된 신호를 가지고 아두이노에서 실험를 해보겠습니다.

1. 인체감지 센서(PIR Sensor)



가상시뮬레이터에서 제공되는 PIR Sensor에는 총 3개의 핀이 있습니다. 어떤 센서이든 전원을 담당하는 Vcc, Gnd핀과 출력을 담당하는 Signal 핀으로 대부분 구성되어 있습니다. 여기서 PIR Sensor에서 인체의 움직임을 감지하면 전기신호로 Signal핀을 통해 출력된다는 것을 기억해 두세요. 인체의 움직임 감지되면 전기신호값은 하나의 전류값으로 가상시뮬레이터에서 거의 5V의 가까운 신호값이 발생하고 움직임이 없으면 0V로 고정됩니다. 즉, 인체가 감지되면 전류가 흐르고 인체가 감지되지 않으면 전류가 흐르지 않는 2가지 상태값이 Signal에서 발생하는 것이죠.

2. 인체감지 센서(PIR Sensor) 동작 모습


작동중움직임감지

그림에서 보는 것 처럼 움직임이 감지 되면은 Red Led에 불이 들어오게 됩니다. 계속 들어오는게 아니라 일정시간동안 들어왔다가 다시 꺼지게 됩니다.

1. 회로도 구성


  • 준비물 : LED 1개, 저항 220옴 1개, PIR Sensor 1개, 아두이노우노
  • 내용 : PIR Sensor를 통해 움직임이 감지되면 그 결과를 LED로 출력

최대한 원리 실험을 목적으로 단축표현한 회로도 입니다. 위에서 인체 감지 센서 동작과 같은 표현입니다. 구지 아두이노를 사용할 필요는 없지만 중요한것은 이 신호값을 받으면 아두이노에서 LED로 특정 동작을 수행하게 했다는 것에 실험의 목적입니다. 즉, A라는 신호를 받아서 B라는 동작을 지시한다란 개념을 머리속에 넣어 두세요.

3. 코딩


  • 사용함수 : pinMode(), digitalWirte(), analogRead()
  • 내용 : PIR Seneor를 통해 움직임을 감지되면 Red LED에 불이 잠시 들어오게 한다.
  • 참고 : LED 제어(아두이노)

복습

  • pinMode(사용핀, OUTPUT) : 사용핀은 출력모드
  • digitalWrite(사용핀, 상태) : 디지털출력핀에 상태가 HIGH(5V) or LOW(0V)를 선택한다.
  • analogRead(사용핀) : 아날로그신호를 입력받는다.
  • delay(시간) : 1000은 1초

설계

  1. PIR Sensor에 움직임이 감지되면 아두이노에서 그 신호 값을 읽는다.
  2. 그 신호값이 입력되면 Red LED에 불이 들어오게 한다.

코딩을 전체적으로 하면

void setup()
{
  pinMode(13, OUTPUT);  
}

void loop()
{
  digitalWrite(13, analogRead(A0)); 
  delay(10); 
}

디지털핀은 입력/출력모드를 선언해야하지만 아날로그 입력은 구지 선언 안해도 됩니다. 입력전용으로 쓰기 때문에 그렇습니다. 만약에 출력모드로 아날로그 입력핀을 사용할 경우는 pinMode()에서 선언하여 디지털핀처럼 사용이 가능합니다.

여기서,

digitalWrite(13, analogRead(A0)); 

이렇게 표현한 이유는 digitalWrite(13,1) or (digitalWrite(13,1023) 이든 상관없이 0이 아닌 정수로 참임으로 전부다 5V가 출력이 됩니다. digitalWirte(13,0)이여야만 0V가 출력되고 그 외는 다 5V만 출력된다는 점을 이용해 코딩량을 대폭 줄였습니다. 즉, digitalWirte()출력은 0이 아니면 모든 숫자는 참으로 5V가 출력되고 0만 0V가 출력됩니다.
원래 이렇게 코딩하면 안됩니다. 그냥 억지로 끼워 맞춘 코딩입니다. 원래는 입력된 값을 기준으로 해서 if 조건문을 세우고 그 조건문을 기준으로 Red LED를 일정시간 동안 딜레이를 줘서 아파트 복도나 현관문처럼 좀 긴 시간을 줘서 비슷한 효과를 부여할 수 있지만 오늘 포스팅은 PIR Sensor의 원리를 이해하는게 목적임으로 최대한 줄여서 그 의미만 전달하고자 표현한 코딩이라는 점을 참고하세요.

5. 결과


이 실험을 할 당시 가상시뮬레이터 사이트에 아두이노 컴파일러가 버그가 발생해서 동영상 촬영을 포기했는데 올리기전에 다행히 사이트 복구가 되어 정상적으로 간단히 실험했네요. 최대한 코딩을 줄여서 복잡한 부분을 줄여 이해도를 높였네요. 간단한 코딩과 결과만 쉽게 실험했으니 이번 포스팅 내용은 쉬울꺼에요.

마무리


PIR Sensor의 동작 제어를 해보았습니다. PIR Sensor는 아파트 복도나 현관문에 조명을 제어하는 목적으로 사용할 수 있지만 여기에 피에조부저를 부착하여 소리를 발생시키면 어떻게 될까요. 바로 경보기로도 만들 수 있겠죠. 그렇다면 여러분들은 PIR Sensor로 인체 감지를 할 수 있으면 어떤걸 해보고 싶으신가요.

한번 상상의 나래를 펄쳐보세요.

Sort:  

좋은 정보글 감사합니다 !
보팅, 팔로워 하고 갈게요 ㅎ
괜찮으시면 맞팔 부탁드려요 :)
행복한 하루 보내세요 !

같이 친하게 잘 지내봅시다.

Coin Marketplace

STEEM 0.31
TRX 0.11
JST 0.034
BTC 64852.72
ETH 3178.07
USDT 1.00
SBD 4.20