중급 예제

약간은 익숙하시거나 익숙해지셨나요? 그렇다면 조금더 깊이 다뤄볼까요?

레이저 모듈-장애물 감지 시스템 만들기

2015-01-07 16:04:52

개요

레이저는 일반 빛과는 달리 곧은 직진성을 가지고 있어 빛을 다루려는 유저들에게 매력적으로 다가온다.
아두이노에서도 역시 레이저를 제어할 수 있는 모듈이 있는데 연결방법이나 사용법이 매우 간단하여 누구나 쉽게 제어가 가능하다.




이번에는 레이저모듈을 사용하여 정말 간단하게 장애물 감지 시스템을 만들어 보자.
적외선 장애물 감지 센서가 이미 존재하지만 그 센서를 좀 더 크게 확장한 것이라고 생각하면 편하다.



영화에서 보듯이 레이저가 있고 그 레이저에 물체가 걸리면 피에조부저에서 소리가 울리게 된다. 


부품 목록

NO    

부품명      

수량     

상세설명

1

아두이노 보드

1

오렌지 보드

2

레이저 모듈

1

 

3

피에조 부저

1

 

4

조도 센서

1  
5

저항 10kΩ

1  

6

브레드 보드

1

저항

7

점퍼 케이블

1

 

 

부품명 아두이노 보드 레이저 모듈 피에조 부저 조도 센서
부품
사진
부품명 저항 10kΩ 브레드 보드 점퍼 케이블  
부품
사진
 

 

 

하드웨어 making

브레드보드

 

 

전자회로도

 

 

소프트웨어 coding

const int LIMITVALUE = 900;
//센서별 핀번호 선언
int lasor = 8;
int piezo = 9;          
int cds = A0;

//조도센서의 값을 저장하는 변수 선언
int val;

void setup() {               
  //핀모드 설정 
  pinMode(piezo, OUTPUT); 
  pinMode(cds, INPUT);
  pinMode(lasor, OUTPUT);
  Serial.begin(9600); //시리얼 통신 초기화
}

//피에조 부저에서 소리를 내게 하자
void loop() {
  digitalWrite(lasor, HIGH); //레이저모듈핀에 항상 HIGH값을 입력
  val = analogRead(cds); //조도센서로 부터 값을 읽어들인다
  Serial.println(val); //시리얼 모니터에 출력
  if(val < LIMITVALUE) { //값이 일정값 이하로 떨어질 경우
    analogWrite(piezo, 128); //피에조부저에서 소리가 난다
  }
  else { //그 이외의 경우
    analogWrite(piezo, 0); //소리가 울리지 않는다 
  } 
 
  delay(500);                       // 1초 대기
}

레이저모듈은 3핀을 가지고 있어 vcc, gnd, output핀을 가지고 있다.
loop()에서는 레이저모듈에게 항상 HIGH값을 줌으로 계속 켜져있게 한다.

조도센서는 레이저모듈와 같은 선상에 있어 레이저모듈에서 오는 빛을 항상 받고 있는데 그 값을 아두이노에서 계속 측정하게 된다.
레이저 모듈에서 날라오는 빛을 측정한 값을 위 소스에서는 하한값 900으로 잡고 실행하였는데 그 값은 사용자가 수정하여도 무방하다.

const int LIMITVALUE = 900;

900이하의 값을 받게 되면 아두이노에서는 레이저와 조도 센서 사이에 물체가 있어 빛을 차단한 것으로 인식한다.
그렇게되면 피에조부저에서는 소리가 울리게 되고 조도센서에서 측정되는 값이 다시 900이상으로 올라가지 않을 경우 계속 울리게 된다.
 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

레이저모듈, 아두이노, 오렌지보드