코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2017-11-01 10:51:18
[이전 학습가이드] 조도센서(모듈)로 어두워지면 켜지는 LED 만들기
1) 적외선이란 무엇인가?
적외선은 가시광선이 빨,주,노,초,파,남,보로 프리즘을 통해 나타날 때, 빨강색 바깥쪽에 나타난다고 해서 적외선이라고 부르게 되었습니다.
태양이나 물체가 내는 복사열의 대부분은 이 적외선으로 이루어져있으므로 적외선을 열선이라고 합니다.
적외선의 파장범위는 가시광선의 장파장 끝의 0.76∼0.8㎛를 하단으로 하고, 상단은 1mm정도까지입니다.
<적외선의 범위> 출처: http://www.itechone.co.kr/product/pde-E.asp
2) 적외선센서 사용방법
적외선도 빛의 한 종류이기 때문에 빛의 성질을 가지고 있습니다. 적외선은 직진하며 물체에 닿으면 반사하는 성질을 가지고 있습니다.
적외선 장애물 감지 센서는 적외선을 보내는 부분과 반사된 적외선을 감지하는 감지 부분으로 구성되어 있습니다.
적외선 LED에서 적외선을 보내게 되고, 물체에 닿아 반사되는 빛은 포토 트랜지스터에서 감지하게 됩니다.
적외선 장애물 감지 센서는 앞에 장애물이 놓이게 되면 센서에서 보낸 적외선이 장애물에 반사되어 수신부에 들어가게 되고, 이를 통해 센서가 장애물을 인식하게 됩니다.
10cm부근에서 최대의 전압값을 갖다가 거리가 멀어질수록 다시 전압이 감소하는 형태를 띄고 있습니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지 보드 | 1 | |
2 | 적외선 장애물 감지 센서 | 1 | FC-51 |
3 | LED | 1 | LED(RED) |
4 | 330Ω 저항 | 1 | |
5 | 브레드 보드 | 1 | |
6 | 점퍼 케이블 | 7 |
부품명 | 오렌지 보드 | 적외선 장애물 감지 센서 | LED |
파트 |
부품명 | 330Ω 저항 | 브레드 보드 | 점퍼 케이블 |
파트 |
1. 오렌지보드의 5V핀을 브레드보드의 +버스에 연결합니다.
2. 오렌지보드의 GND핀을 브레드보드의 -버스에 연결합니다.
3. 장애물 감지 센서 모듈을 아래 그림과 같이 꽂습니다.
4. 장애물 감지 센서 모듈 위에 OUT로 표시된 핀을 3번핀에 연결합니다.
5. 장애물 감지 센서 모듈의 가운데 핀을 브레드보드의 -버스에 연결합니다.
6. 장애물 감지 센서 모듈의 남은 핀(VCC로 표시된 핀)을 브레드보드의 +버스에 연결합니다.
7. LED를 긴 다리가 아래쪽으로 향하게하여 꽂습니다.
8. LED의 긴 다리에 330Ω 저항을 연결합니다.
9. LED의 긴 다리와 연결된 저항의 반대 쪽을 오렌지보드 6번핀에 연결합니다.
10. LED의 짧은 다리를 브레드보드 -버스에 연결합니다.
※ 적외선 장애물 감지 센서의 장애물 인식 여부 확인 방법
적외선 장애물 감지 센서의 경우 모듈에 붙어 있는 가변저항 조절을 통해 감도를 조절할 수 있습니다.
아래 사진 빨간박스 안의 LED를 확인하면서 십자드라이버를 사용하여 감도를 조절합니다.
감도조절을 하다보면 아래의 LED의 상태가 변하는 지점이 있습니다. (꺼짐 → 켜짐 or 켜짐 → 꺼짐)
변하는 지점 부근에서 테스트를 통해 장애물을 인식하는 지점을 쉽게 찾을 수 있습니다.
1. 장애물이 인식되었을 경우
2. 장애물이 인식되지 않았을 경우
// 적외선 장애물 감지 센서는 적외선을 이용해서 앞에 장애물이 있는지 확인하는 센서입니다.
// 적외선 장애물 감지 센서는 디지털 3번 핀으로 설정합니다.
int infrared = 3;
// LED는 디지털 6번핀으로 설정합니다.
int led = 6;
// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
// 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
void setup() {
// 적외선 장애물 감지 센서 핀을 INPUT으로 설정합니다.
pinMode(infrared, INPUT);
// LED 핀을 OUTPUT으로 설정합니다.
pinMode(led, OUTPUT);
// 적외선 장애물 감지 센서의 상태를 확인하기 위하여 시리얼 통신의 속도를 설정합니다.
Serial.begin(9600);
}
// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행됩니다.
void loop() {
// 적외선 감지 센서 부터 센서값을 읽습니다.
// 감지되면 0, 감지되지 않으면 1이 나옵니다.
int state = digitalRead(infrared);
// 측정된 센서값을 시리얼 모니터에 출력합니다.
Serial.print("Infrared = ");
Serial.println(state);
// 측정된 센서값이 0(감지)면 아래 블록을 실행합니다.
if(state == 0){
// LED를 켜지도록 합니다.
digitalWrite(led, HIGH);
// 경보 메세지를 시리얼 모니터에 출력합니다.
Serial.println("Warning");
}
/// 측정된 센서값이 0 이외(감지되지 않음) 이면 아래 블록을 실행합니다.
else{
// LED를 꺼지도록 합니다.
digitalWrite(led, LOW);
// 안전 메세지를 시리얼 모니터에 출력합니다.
Serial.println("Safe");
}
}
소프트웨어 코드 설명
위 알림 LED를 보면서 가운데 감도조절부를 드라이버로 돌려서 센서가 적당한 거리의 장애물을 인식하게 만든 다음에 위 예제 코드를 실행하시면 됩니다.
// 적외선 장애물 감지 센서는 적외선을 이용해서 앞에 장애물이 있는지 확인하는 센서입니다.
// 적외선 장애물 감지 센서는 디지털 3번 핀으로 설정합니다.
int infrared = A0;
// 부저는 디지털 8번핀으로 설정합니다.
int piezo = 8;
// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
// 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
void setup() {
// 부저 핀을 OUTPUT으로 설정합니다.
pinMode(piezo, OUTPUT);
// 적외선 장애물 감지 센서의 상태를 확인하기 위하여 시리얼 통신의 속도를 설정합니다.
Serial.begin(9600);
}
void loop() {
// 적외선 감지 센서 부터 센서값을 읽습니다.
// 감지되면 0, 감지되지 않으면 1이 나옵니다.
int state = analogRead(infrared);
// 측정된 센서값을 시리얼 모니터에 출력합니다.
Serial.print("Infrared = ");
Serial.println(state);
// 장애물이 감지되었다면(센서값이 100이하라면)
if(state < 100){
// 경보를 출력합니다.
tone(piezo, 2093);
delay(10);
tone(piezo, 523);
delay(10);
// 경보 메세지를 시리얼 모니터에 출력합니다.
Serial.println("Warring");
}
/// 장애물이 감지 되지 않았다면
else{
// 부저를 출력하지 않습니다.
noTone(piezo);
// 안전 메세지를 시리얼 모니터에 출력합니다.
Serial.println("Safe");
}
}
적외선 장애물 센서는 장애물 뿐만 아니라 흑 백을 구분할 수 있는 적외선의 특성을 이용해 라인을 추적할 수도 있습니다.
적외선 센서를 이용해 바닥에 그려진 라인(선)이 있는지 없는지를 판단하여, 선을 따라 자동차가 이동하도록 제작한 프로젝트입니다.
영상 출처 : https://youtu.be/Cf-V-giXiRw
[다음 학습가이드] 서보모터 움직이기
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!