본문 바로가기
  • 우당탕탕속의 잔잔함
Programming/Arduino

[Photo Sensor] Arduino에서 포토 센서 사용하는 방법

by zpstls 2023. 1. 5.
반응형

 

 

아두이노를 통해 어떠한 객체가 앞에 위치해있는지 확인하고자 할 때가 있을 것입니다.

이때 적외선 방식으로 구현된 포토 센서를 이용하는데요.

이를 아두이노와 연결해 사용하는 방법에 대해 다룰 것입니다.

 

Photo Sensor

 

Photo Sensor의 경우, 여러가지 제품이 다양하게 있을 것입니다. 그러나 사용해볼 Photo Sensor는 다음과 같습니다.

Model Name : Autoniks BA2M Series - BA2M-DDT-P

 

BA2M-DDT-P

장거리 확산반사형 포토센서

www.autonics.com

 

Photo Sensor는 control Board에 연결되어야 기능하며, control Board로는 Arduino Leonardo를 사용할 것입니다.

Photo Sensor의 동작 전력에 의해 외부 전원을 인가해 주어야 합니다. 외부 전원은 DC 12V/1.5A의 아답터를 사용합니다.

그리고 전압 및 전류를 맞춰주기 위해 저항을 사용해야 하며, 해당 저항은 5% 220옴을 사용합니다.

 

다음과 같이 Arduino, DC전원, 저항, Photo senor를 연결합니다.

단일 Sensor 연결 구조

만일 여러 개의 Photo Sensor를 이용해야 한다면 다음과 같이 회로를 구성합니다.

다중 Sensor 연결 구조

 

 

 

 

 

HW 구성을 완료한 후에 SW를 개발합니다. SW는 Arduino IDE를 설치해 진행합니다.

다음 링크를 통해 Arduino IDE를 설치할 수 있습니다.

URL : https://www.arduino.cc/en/software

 

Software

Open-source electronic prototyping platform enabling users to create interactive electronic objects.

www.arduino.cc

Arduino IDE

전기적 신호가 들어오면 Sensor에서 Object를 Detection 한 것이고 전기적 신호가 들어오지 않았다면 Sensor에서 Object를 Detection 하지 못한 것입니다. 이를 바탕으로 Keyboard Effect만 준다면 Unity 및 그 어떠한 PC Program에서 사용할 수 있습니다.

 

Object가 Detection 되었을 경우에는 숫자 번호를, Detection되었다가 Object가 없어졌을 경우는 알파벳 소문자를 반환하도록 프로그램을 만들어 봅시다. 아두이노 레오나르도 부분 코드는 다음과 같습니다.

#include "Keyboard.h"

int photoSensor0 = 9;  // connected digital pin Number
bool detect_photo0 = false;

void setup() {

  // set sensor 
  pinMode(photoSensor0, INPUT);

  // keyboard event
  Keyboard.begin();
}

void loop() {

  // first photo sensor
  if(digitalRead(photoSensor0) == 1) {
    if(detect_photo0 == false) {
      detect_photo0 = true;
      Keyboard.write('0');
    }
  }
  else if(digitalRead(photoSensor0) == 0) {
    if(detect_photo0 == true) {
      detect_photo0 = false;
      Keyboard.write('a');
    }
  }
}

Digital 신호가 1인 경우는 Detection이 되었음을 의미하고 Digital 신호가 0인 경우는 Detection 되지 않는 상태를 의미합니다. Sensor들의 Pin을 정의해주고 Keyboard Effect도 정의해준 후, Sensor의 전기적 신호를 읽어 1(전기적 신호 O)인 경우에는 Detection이 되었다는 Keyboard Effect를 제공하고 0(= 전기적 신호 X) 일 경우에는 Detection이 되지 않았다는 Keyboard Effect를 제공합니다.

만일, 여러개의 센서가 연결되어야 한다면 위와 같은 코드를 사용할 센서의 개수에 맞게 작성하면 되겠죠.

 

이후 다음과 같이 Arduino에 업로드합니다. 업로드 후에는 전원만 인가되면 코드대로 동작합니다.

Arduino IDE upload

모든 것이 Setting되었으면, 센서의 감도 등을 조절하여 적절하게 이용하기만 하면 됩니다.

 

 

아두이노 부분 코드는 기초적인 센서 제어 코드와 동일합니다.

다만, 포토 센서의 경우 아두이노에서 바로 사용할 수 없는 5V이상의 센서이기에 회로 구성 부분에서 조금 복잡한 편이었습니다.

 

이번 포스트는 여기서 마무리하도록 하겠습니다.

 

 

반응형

댓글