창의과학

자율주행 로봇 키트에 레이저 포인터 모듈 연결하기: 단계별 가이드

생활정보알람 2024. 10. 16. 11:18

자율주행 로봇 프로젝트를 진행하면서 다양한 센서와 모듈을 통합해 로봇의 기능을 확장할 수 있습니다. 그중에서도 레이저 포인터 모듈 연결에 대하여 이전 글(2024.10.14 - [학교 과제] - 자율주행 로봇 프로젝트의 첫 걸음! 로봇 만들기 준비하기-1)을 보시고 조금더 상세히 내용을 원하는 분들이 있어 이번 포스팅에서는 레이저 포인터 모듈을 자율주행 로봇 키트에 연결하고, Arduino 코드를 통해 레이저를 제어하는 방법을 자세히 다루겠습니다. 이 글은 레이저 포인터 모듈을 로봇에 처음 연결하는 분들뿐만 아니라 프로젝트에 새로운 기능을 추가하려는 분들에게도 유용할 것입니다.


1. 준비물

먼저, 하드웨어 연결을 위해 필요한 부품들을 확인해 봅시다. 여러분이 준비해야 할 것은 다음과 같습니다:

  • Arduino Uno: 로봇의 중앙 제어 유닛으로, 레이저 포인터 모듈을 제어합니다. 저의 경우 자율주행로봇 키트의 보드를 활용하였습니다. 포트가 넉넉하여 여러 모듈을 추가 사용하는데 무리 없었습니다. 해당 로봇 키트의 안내는 비피랩에서 쉽게 안내되어 있으며 구매도 가능합니다.
  • 레이저 포인터 모듈: VCC, GND, 그리고 제어 핀을 가지고 있습니다. 해당 핀을 와이어 연결하여 보드에 연결합니다. 구매는 인터넷에 레이저센서 모듈이라고 검색하시면 쉽게 구매 가능하세요. 아래 사진과 같이 생겼어요.
  • 점퍼 와이어: 연결을 간편하게 하기 위한 필수 도구입니다. 아두이노 점퍼 와이어라고 검색하시면 쉽게 찾을 수 있어요. 암수, 수수, 암암 이렇게 핀 구분이 있으니 구매하실 때 설명 잘보시고 구매하세요.

아두이노 자율주행로봇 키트

2. 하드웨어 연결

(1) 레이저 포인터 모듈의 기본 구조

대부분의 레이저 포인터 모듈은 세 개의 핀을 가지고 있습니다:

  • VCC: 전원을 공급하는 핀입니다. Arduino의 5V 핀에 연결해야 합니다.
  • GND: 접지 핀입니다. Arduino의 GND 핀에 연결됩니다.
  • 제어 핀: 디지털 신호로 레이저 포인터를 켜고 끌 수 있는 핀입니다. 이 핀을 Arduino의 디지털 핀 중 하나에 연결하여 제어합니다.

(2) 연결 방법

  1. 전원 및 접지 연결: 레이저 포인터 모듈의 VCC 핀을 Arduino의 5V 핀에 연결하고, GND 핀은 Arduino의 GND 핀에 연결합니다. 아래 이미지 보시면 11,10,9,8,7,6,5,.. 이렇게 번호가 있고, g,v,s 글자가 세로로 되어 있는 곳이 보이실거예요. v=vcc, g=gnd, s=signal 이며 그 문자에 맞추어 레이저 포인터를 연결하시면 되요. 사용하지 않는 핀에 연결하시면 되고요. 예를 들어 아래에서는 6,5,4를 사용하지 않으니 그 중에 하나에 연결하시면 되요. 그리고 코드에서 해당 숫자를 선택하시면 되고요. 
  2. 제어 핀(s) 연결: 레이저 포인터의 제어 핀을 Arduino의 디지털 핀 중 하나에 연결합니다. 

아두이노 우노 센서쉴드
비피랩 교육자료 참조_아두이노 우노 센서쉴드 구성도

이제 하드웨어 연결은 완료되었습니다. 하지만 이 상태로는 레이저를 켜고 끌 수 없으니, Arduino 코드를 작성해 레이저를 제어해야 합니다.

3. 소프트웨어 구현

(1) 기본적인 레이저 제어 코드

Arduino를 이용해 레이저 포인터를 제어하려면 간단한 디지털 출력 제어 코드를 작성할 수 있습니다. 다음은 레이저 포인터를 1초 간격으로 켜고 끄는 기본 코드입니다. 레이저포인터를 6번 연결라인에 연결했다는 것을 가정했습니다.

int laserPin = 6;  // 레이저 포인터가 연결된 핀

void setup() {
  pinMode(laserPin, OUTPUT);  // 레이저 포인터 핀을 출력 모드로 설정
}

void loop() {
  digitalWrite(laserPin, HIGH);  // 레이저 켜기
  delay(1000);                   // 1초 동안 켜기
  digitalWrite(laserPin, LOW);   // 레이저 끄기
  delay(1000);                   // 1초 동안 끄기
}

이 코드에서는 laserPin으로 설정한 6번 핀을 통해 레이저 포인터를 제어합니다. digitalWrite 함수로 핀에 HIGH 값을 전달하면 레이저가 켜지고, LOW 값을 전달하면 레이저가 꺼집니다. 간단한 지연 시간 delay()을 추가해, 레이저가 1초 동안 켜지고 1초 동안 꺼지도록 반복적으로 동작합니다.

(2) 바코드 스캔 후 레이저 활성화

이제 자율주행 로봇 프로젝트의 맥락에서 레이저 포인터를 어떻게 통합할지 생각해 봅시다. 바코드 스캔 모듈을 사용하고 있다면, 바코드를 성공적으로 스캔한 후 레이저 포인터를 켜서 해당 바코드를 시각적으로 강조할 수 있습니다.

bool barcodeScanned = false;  // 바코드 스캔 상태 확인 변수

void loop() {
  if (barcodeScanned) {  // 바코드를 성공적으로 스캔한 경우
    activateLaserPointer();  // 레이저 포인터 켜기
  }
}

void activateLaserPointer() {
  digitalWrite(laserPin, HIGH);  // 레이저 켜기
  delay(2000);                   // 2초 동안 유지
  digitalWrite(laserPin, LOW);   // 레이저 끄기
}

위 코드는 바코드 스캔이 성공적으로 완료되었을 때 레이저 포인터가 2초 동안 켜졌다가 자동으로 꺼지도록 설계되었습니다. barcodeScanned 변수를 통해 바코드 스캔 상태를 확인하고, 해당 상태에 따라 레이저 포인터가 활성화됩니다.

4. 안전 고려 사항

레이저 포인터는 매우 유용한 모듈이지만, 아이들이 있을 경우 장난을 할 경우 위험할 수 있습니다. 특히 눈에 닿을 경우 시력 손상을 유발할 수 있으므로, 아이들이 서로를 향해 레이저를 비추지 않도록 주의하세요.

5. 프로젝트에 응용하기

여기까지 설명한 내용을 바탕으로, 여러분의 자율주행 로봇 프로젝트에 레이저 포인터 모듈을 통합할 수 있습니다. 바코드 스캔뿐만 아니라 다양한 상황에서 레이저 포인터를 활용할 수 있으며, 예를 들어 장애물을 감지한 후 경고로 레이저를 켜는 식으로도 응용 가능합니다.

또한, 레이저 포인터의 동작을 더 세밀하게 제어하기 위해 PWM 신호를 사용할 수도 있습니다. 이를 통해 레이저 포인터의 밝기를 제어하거나, 빠르게 깜빡이게 만들어 다양한 시각적 신호를 표현할 수 있습니다. 이 부분은 아직 저도 시도해보지는 못하였습니다.

 

이번 글에서는 자율주행 로봇에 레이저 포인터 모듈을 연결하고 제어하는 과정을 상세히 다루었습니다. 하드웨어 연결부터 소프트웨어 구현까지 전반적인 과정을 설명하였는데 그래도 부족해보이네요. 저도 직접해 볼때 소소한 것이 문제되어 작동을 하지 않았는데 막상 글을 쓸때는 그러한 세세한 부분까지 다루지 않게 되네요. 재미있게 도전해보세요~~

2024.10.14 - [학교 과제] - 자율주행 로봇 프로젝트의 첫 걸음! 로봇 만들기 준비하기-1

2024.10.14 - [학교 과제] - 자율주행 로봇이 스스로 길을 찾다! 라인 트래킹과 장애물 감지 구현

2024.10.14 - [학교 과제] - 책을 찾아내다! 바코드 스캔과 레이저 포인터로 책을 정확하게 가리키는 로봇

2024.10.14 - [학교 과제] - 로봇의 똑똑한 주행, 책장에서 책을 찾아내는 전체 시나리오

반응형