본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 레이저 송수신 모듈을 사용해서 광학효과 만들어 보기

by 오마이엔지니어 2019. 12. 27.
반응형

 

Arduino Uno 로 레이저 송수신 모듈의 사용방법을 알아보고 간단하게 레이저 송수신 광학효과를
만들어 보는 프로젝트 입니다

 


레이저 송수신 모듈을 사용해서 아두이노로 간단하게 트립 와이어, 또는 광학 효과를 만들어 볼 수 있습니다

레이저 송수신 모듈은 5V 전원으로 동작하며 수신 모듈은 레이저 신호가 수신되면 High를 출력하고, 그렇지 않으면 Low를 출력합니다
레이저 수신 모듈은 비 변조(non-modulated) 모듈 이므로 태양광이나 주변광 간섭이 없는 어두운 실내 환경에서 테스트 가능합니다

 

 

 

사용된 부품

Arduino Uno R3 (Italy)
KY-008 레이저 센서 (레이저 송신모듈)
레이저 수신 모듈

미니브래드보드

점퍼케이블(숫놈-암놈)
점퍼케이블(숫놈-숫놈)
능동 부저 모듈 (Active Buzzer) 

구성 배선도-레이저 감지시 부저 울리고 시리얼 모니터로 출력값 변화 확인해 보기
구성 배선도-레이저 차단시 부저 울리고 시리얼 모니터로 출력값 변화 확인해 보기


사용된 예제소스

레이저 감지시 부저 울리기.txt
0.00MB
레이저 차단시 부저 울리기.txt
0.00MB


주의사항
별도 라이브러리 설치는 필요 없으며 위 예제소스를 다운로드해서 스케치 업로드 해주고 테스트 하면 됩니다
첫번째 예제코드가 레이저 송신모듈에서 레이저를 송신하고 수신모듈에서 레이저를 수신하여 레이저 송수신이 될때 부저가 울리는 예제 입니다
두번째 예제코드가 레이저 송수신을 하면 부저가 울리지 않고 레이저가 차단되어 레이저 송수신이 되지 않을때 부저가 울리는 예제입니다

첫번째 예제코드를 살펴보면

#define DETECT 2 // pin 2 for  sensor
#define ACTION 8 // pin 8 for action to do someting
센서핀 (레이저 수신모듈 출력핀)은 아두이노 2번핀에 연결, 액션핀 부저는 아두이노 8번핀에 연결
을 확인할 수 있습니다 (부저 대신 LED 등 다른 모듈을 장착해서 테스트 할 수도 있습니다)


void setup() {
  Serial.begin(9600);
  Serial.println("Laser Module Test");
  pinMode(DETECT, INPUT);//define detect input pin
  pinMode(ACTION, OUTPUT);//define ACTION output pin


}

시리얼 통신속도는 9600이고 시리얼 모니터로 'Laser Module Test' 를 출력해 줍니다
센서핀 입력 감지시 액션핀이 출력됩니다



void loop() {
   

  int detected = digitalRead(DETECT);// read Laser sensor
 
  if( detected == HIGH)
  {
    digitalWrite(ACTION,HIGH);// set the buzzer on
    Serial.println("Detected!");

  }else{
    digitalWrite(ACTION,LOW); // Set the buzzer OFF
    Serial.println("No laser");
    

  }
  delay(200);
}
액션 센서감지시 부저가 울리고(HIGH), 시리얼 모니터로 'Detected' 를 출력해 줍니다
센서감지되지 않을시 부저가 울리지 않고(LOW), 시리얼 모니터로 'No laser' 를 출력해 줍니다
delay(200); 딜레이 타임입니다

두번째 예제코드를 살펴보면

첫번째 예제코드와 모두 동일하지만 레이저 송수신 차단시 부저가 울려야 하므로 void loop() 부분에서
  if( detected == HIGH)
  {
    digitalWrite(ACTION,LOW);// set the buzzer on
    Serial.println("Detected!");

  }else{
    digitalWrite(ACTION,HIGH); // Set the buzzer OFF
    Serial.println("No laser");

액션 센서감지가 되지 않을 시 부저가 울리고(HIGH), 액션 센서감지시 부저가 울리지 않도록(LOW) 변경 하였습니다
때문에 하단 동영상에서도 확인할 수 있듯이 레이저 송수신 모듈 가운데 장애물을 만들어 주어 레이저 송수신을 차단하면 부저가 울립니다



프로젝트 동영상 - 레이저 감지시 부저 울리고 시리얼 모니터로 출력값 변화 확인해 보기


프로젝트 동영상 - 레이저 차단시 부저 울리고 시리얼 모니터로 출력값 변화 확인해 보기

 

위 처럼 레이저 송수신 모듈을 사용해서 아두이노로 간단하게 트립 와이어, 또는 광학 효과를 만들어 볼 수 있습니다
첫번째 예제코드를 사용해서 동일하게 부저 대신 LED 또는 릴레이 모듈등을 배선해서 활용 할 수 있습니다



구성 배선도-레이저 감지시 LED 점등시키고 시리얼 모니터로 출력값 변화 확인해 보기

프로젝트 동영상 - 레이저 차단시 부저 울리고 시리얼 모니터로 출력값 변화 확인해 보기



추가로 레이저 감지 또는 차단시 서보모터를 제어해 보는 프로젝트입니다
동작전압 5V의 회전각 180도 사양의 SG90 마이크로 서보모터를 사용해서 테스트 합니다
마이크로 서보모터를 원활하게 동작시키기 위해서는 5V 단일전원이 필요하므로 KY-008 레이저 센서에

별도 5V 전원을 공급할수 있는 브래드보드 전원공급 모듈을 사용해서 테스트 합니다 

구성배선도-레이저 감지 또는 차단시 LED와 서보모터를 제어해 보기

사용된 예제소스

레이저 감지시 LED점등시키고 서보모터 회전.txt
0.00MB
레이저 차단시 LED점등시키고 서보모터 회전.txt
0.00MB


주의사항

레이저 수신 모듈은 비 변조(non-modulated) 모듈 이므로 태양광이나 주변광 간섭이 없는 어두운 실내 환경에서 테스트 가능합니다
어두운 환경을 만들어 주고 테스트 해야 하며 그래도 레이저 수신모듈이 제대로 동작이 안된다면 아래 프로젝트 동영상 처럼 레이저 수신모듈의 뒤쪽을 적당한 것들을 사용해서 어둡게 만들어 주고 테스트 하면 됩니다 

SG90 마이크로 서보모터는 A(전류)를 많이 소모하기 때문에 다른 모듈과는 별도로 꼭 5V로 연결해 줍니다
(이때문에 추가로 브래드보드 전원공급 모듈을 사용해서 KY-008 레이저 센서 모듈은 별도 5V로 전원을 공급해 주었습니다)

첫번째 레이저 감지시 LED점등시키고 서보모터 회전 예제코드를 살펴보면
 
#include <Servo.h>
Servo.h 라이브러리를 사용합니다
아두이노 IDE를 설치하면 기본 설치되는 라이브러리 입니다

int pinLaser=5; //Laser Receive Module digital pin
int pinServo=3; //servo motor pin
int pinLED=2;
int val=0;
레이저 수신모듈은 아두이노 5번핀, 서보모터는 3번핀, LED는 2번 핀에 배선합니다

void setup(){
    Serv.attach(pinServo);
    pinMode(pinLED,OUTPUT);
  }
셋업에서 센서값을 받아서 서보모터와 LED를 출력해 줍니다

void loop(){
    val = digitalRead(pinLaser);
  
    if (val ==0) { 
      Serv.write(10);
      digitalWrite(pinLED,LOW);
      delay(100);
    }
    else{
      Serv.write(150);
      digitalWrite(pinLED,HIGH);
      delay(100);
    }
루프에서 if문을 사용해서 레이저가 감지되지 않았을때 LED는 LOW로 꺼지고 서보모터는 10도로 움직입니다
else 그밖의 레이저가 감지되었을 경우는 LED가 HIGH로 켜지고 서보모터는 150도로 움직입니다

Serv.write(150); 150을 180까지 원하는 수치로 수정후 테스트 합니다

delay(100); 딜레이 타임 역시 원하는 수치로 수정후 테스트 합니다

두번째 레이저 차단시 LED점등시키고 서보모터 회전 예제는 첫번째 예제코드의 HIGH 와 LOW 부분만

변경해 주었고 나머지 부분은 동일합니다

프로젝트 동영상-레이저 감지 또는 차단시 LED와 서보모터를 제어해 보기

반응형

댓글