코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-08-05 15:16:54
1) 적외선 인체감지 센서란 무엇인가?
적외선 인체감지 센서(PIR센서, Passive Infrated Sensor)는 적외선을 통해 사람의 움직임을 감지하는 센서입니다.
일반 건물의 복도나 현관문 천장에 있는 조명 등에 설치되어 사람의 움직임이 감지되면 자동으로 조명을 켜주는데 이용되는 센서입니다.
일정한 양의 적외선을 방출하는 물체가 움직이면 감지하기 때문에 움직임이 없을 경우 감지하지 못합니다.
2) 적외선 인체감지 센서 원리
사람의 몸에서는 적은 양의 적외선을 방출합니다.
이 사람에 몸에서 나온 적외선이 적외선 인체감지센서의 집광렌즈 부분인 F-Lens(Fresnel Lends)를 통과하여 적외선 센서 부분에 닿게 됩니다. 적외선 센서에 닿은 적외선이 전압으로 출력되어 최종적으로 센서가 인체를 인식하게 됩니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지 보드 (BLE) | 1 | |
2 | 적외선 인체감지 센서 | 1 | |
3 | 케이블 | 7 | |
4 | LED | 1 | |
5 | 330Ω 저항 | 1 |
부품명
|
오렌지 보드 (BLE)
|
적외선 인체감지 센서
|
점퍼 케이블
|
LED | 330Ω 저항 |
부품사진 |
적외선 인체 감지 센서
1. 인체감지센서의 GND핀을 오렌지보드의 GND핀에 연결합니다.
2. 인체감지센서의 VCC핀을 오렌지보드의 5V핀에 연결합니다.
3. 인체감지센서의 OUT핀을 오렌지보드의 2번핀에 연결합니다.
4. LED를 브레드보드에 꽂습니다.
5. LED의 +극에 330Ω 저항의 한쪽 핀을 연결합니다.
6. 330Ω 저항의 반대편 핀을 오렌지보드의 13번핀에 연결 합니다.
7. LED의 -극을 오렌지보드의 GND핀에 연결합니다.
/*
제목 : 인체감지센서 사용하기
내용 : 인체감지센서를 오렌지보드에 연결하여 사람의 움직임이 인식되면 내장LED를 켜고, 아니면 내장 LED를 꺼지도록 만들어봅시다.
*/
// 인체감지센서를 2번핀으로 설정합니다.
int motion = 2;
// 사용할 LED를 13번 핀으로 설정합니다.
int light = 13;
// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
// 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
void setup() {
// 인체감지센서의 핀을 INPUT으로 설정합니다.
pinMode(motion, INPUT);
// LED의 핀을 OUTPUT으로 설정합니다.
pinMode(light, OUTPUT);
// 시리얼 통신 속도 설정
Serial.begin(9600);
}
// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행됩니다.
void loop() {
// 적외선 인체감지 센서에서 값을 읽는다
int sensor = digitalRead(motion);
// 센서값을 시리얼 모니터에 출력
Serial.println(sensor);
// 센서값이 HIGH(1)일 경우 13번 LED를 한번 깜빡인다
if (sensor == HIGH) {
// 내장된 LED가 연결된 핀의 로직레벨을 HIGH (5V)로 설정하여, LED가 켜지도록 합니다.
digitalWrite(light, HIGH);
// 0.5초 동안 대기합니다.
delay(500);
// 내장된 LED가 연결된 핀의 로직레벨을 LOW (0V)로 설정하여, LED가 꺼지도록 합니다.
digitalWrite(light, LOW);
// 0.5초 동안 대기합니다.
delay(500);
}
}
loop위에서는 핀번호의 선언과 setup()에서는 각각의 핀에 대한 Mode를 설정한다. 13번핀에서는 LED를 출력하기에 OUTPUT모드로 설정하고 적외선 센서가 연결된 2번핀에서는 센서값을 읽어야 하기 때문에 INPUT모드로 설정한다. 통신 속도는 기본9600으로 설정해준다.
void loop() { digitalWrite(light,LOW); // 13번 LED off delay(1000); int sensor = digitalRead(motion); //적외선 인체감지 센서에서 값을 읽는다 Serial.println(sensor); //센서값을 시리얼 모니터에 출력 if(sensor == HIGH) { //센서값이 HIGH(1)일 경우 13번 LED를 한번 깜빡인다 digitalWrite(light, HIGH); delay(500); digitalWrite(light,LOW); delay(500); } }
loop에서는 센서값에 따라 13번 LED를 깜빡이게 되는데 센서값을 읽어 1이 출력될 경우에는 if문을 통해 13번 LED를 한번 깜빡이게 되고 센서값이 0일 경우에는 if문을 무시한채 loop문을 반복하게 된다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!