목표
현관등으로 많이 사용되는 동작감지 램프는 움직임이 있을때 자동으로 켜지고 일정시간 이상 움직임이 없으면 자동으로 꺼집니다. 인체감지(PIR)센서를 이용하여 동작감지 램프를 구현하는 예제입니다.
PIR센서에 동작에 감지되면 대시보드 램프 위젯을 켜고, 5초간 아무런 움직임이 없다면 램프 위젯을 끕니다. 만약 5초를 카운트 하는 도중 움직임이 발생하면 카운트는 다시 0 부터 시작합니다.
하드웨어
부품
부품 | 갯수 |
---|---|
PIR센서 | 1 |
연결
아래의 핀을 가로 방향으로 서로 연결합니다.
PIR센서 | GPIO |
---|---|
VCC ¹ | 5V |
GND | GND |
OUT ¹ ² | 23 |
² 임의의 GPIO핀에 연결할 수 있습니다.
I/O장치
PIR센서를 I/O장치에 추가합니다.
변수
움직임 감지 여부와 대시보드 램프 위젯에 사용할 변수를 추가합니다.
- “움직임 감지” (디지털)
- “램프” (디지털)
로직
항상 PIR센서의 값을 읽어와서 움직임이 감지되는 순간 램프를 켭니다. 만약 5초동안 움직임이 감지되지 않으면 램프를 끕니다. 이를 알고리즘 블록으로 나타내면 아래와 같습니다.
[로직]
로직을 추가합니다. 실행주기는 기본값을 사용합니다.
[제어] PIR센서의 값을 읽어오기
제어를 추가합니다. 모든 설정은 기본값을 사용합니다.
[제어] 움직임이 감지되는 순간 램프를 켠다.
제어를 추가합니다. 모든 설정은 기본값을 사용합니다.
[조건] 움직임이 감지되는 순간
앞에서, PIR센서의 움직임 감지여부를 “움직임 감지” 라는 변수에 저장해두었습니다. 그러므로 그 변수의 값이 false에서 true가 되는 순간이 움직임이 감지되는 순간입니다. 이를 검사하는 조건을 추가합니다.
- 타입: 비교
- 변수: “움직임 감지”
- 연산자: =
- 값: true
- 조건 옵션: 참인 순간
[동작] 램프를 켠다.
대시보드 램프 위젯에 연결된 변수의 값이 true가 되면 램프가 켜집니다. 그러므로 “램프” 변수의 값을 true로 쓰는 동작을 추가합니다.
- 타입: 쓰기
- 변수: “램프” 변수 선택
- 값: true
[제어] 움직임이 5초동안 감지되지 않으면 램프를 끈다.
제어를 추가합니다. 모든 설정은 기본값을 사용합니다.
대시보드
대시보드를 생성합니다.
읽기 위젯을 생성합니다.
- 변수: “램프”
- 타입: 램프