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

Arduino Uno 로 GP2Y0A02YK0F 적외선 거리측정센서를 사용해서 거리를 측정해 보고 감지 거리에 따라서 LED 제어해 보기

by 오마이엔지니어 2018. 4. 6.
반응형

Arduino Uno 로 GP2Y0A02YK0F 적외선 거리측정센서를 사용해서 거리를 측정해 보고 감지 거리에 따라서
LED를 제어해 보는 프로젝트 입니다

아두이노로 초음파 센서나 적외선 센서 등 다양한 센서를 사용해서 거리를 측정할 수 있습니다
그중에 적외선 거리 측정센서를 사용해서 거리를 측정해 보는 방법에 대해서 알아보겠습니다

적외선 거리측정 센서는 측정하려는 물체로 적외선을 송신하고 수신부에서 이를 받아서 흐르는 전류와 전압을 토대로
물체에 반사되어 돌아오는 시간을 계산하고 이를 통해 거리를 알 수 있는 센서 입니다


GP2Y0A02YK0F  적외선 거리측정센서는 PSD (position sensitive detector), IRED (infrared emitting diode) 및 신호 처리 회로의
통합 된 조합으로 구성된 적외선 거리 측정 센서 모듈입니다
삼각 측량 방법을 사용해 물체의 반사율, 화견 온도 침 작동 시간의 다양성이 거리 검출에 쉽게 영향을 미치지 않습니다
모듈은 감지 거리에 해당하는 전압을 출력합니다, 따라서 근접센서로도 사용할 수 있습니다
IR 송신기(IR LED)와 IR 수신기(트랜지스터)로 구성되어 있으며, 측정 거리는 20~150 cm 입니다



<GP2Y0A02YK0F 적외선 거리측정 센서 이미지>



사용된 부품
아두이노 우노 (Italy)
GP2Y0A02YK0F 적외선 거리측정 센서
점퍼케이블
미니 브래드 보드
막대저항 220 Ohm - 6개
5mm LED - 레드, 옐로우, 블루 - 2개씩


구성 배선도-CM 단위 거리 측정해 보기



구성 배선도-감지 거리에 따라 LED 제어해 보기



사용된 예제파일

GP2Y0A02YK0F.txt

GP2Y0A02YK0F_LEDS.txt


사용된 라이브러리

GP2Y0A02YK0F.zip


라이브러리 추가 방법은 Arduino IDE 설치하기 포스팅을 참조해 주세요

테스트방법
첫번째 첨부된 'GP2Y0A02YK0F' 예제는 아주 간단한 예제이며 아두이노 IDE 시리얼 모니터로 거리측정 센서의 아날로그 출력값을
CM 단위로 변환해서 확인할 수 있습니다


두번째 첨부된 'GP2Y0A02YK0F_LEDS' 예제는 감지 거리에 따라서 LED를 제어해 볼수 있습니다
두번째 프로젝트 동영상을 보면 확인할 수 있듯이 약 20cm 이상은 모든 LED가 켜져 있고
20cm 에서 점점 측정 거리가 줄어들수록 파란색, 노란색, 빨간색 순으로 LED가 켜집니다

--------------------------------------------------------------------------------------------------------------------------------
#include <GP2Y0A02YK0F.h>
--------------------------------------------------------------------------------------------------------------------------------
GP2Y0A02YK0F.h 라이브러리 파일을 사용합니다

--------------------------------------------------------------------------------------------------------------------------------
void loop()
{
  distance = irSensor.getDistanceCentimeter();
  Serial.print("\nDistance in centimeters: ");
  Serial.print(distance); 
  delay(500);
}
--------------------------------------------------------------------------------------------------------------------------------
시리얼 모니터로 CM 단위로 출력값을 출력해 줍니다

--------------------------------------------------------------------------------------------------------------------------------
int LedPin1 = 7;  // 1번 LED의 핀 번호
int LedPin2 = 6;  // 2번 LED의 핀 번호
int LedPin3 = 5;  // 3번 LED의 핀 번호
int LedPin4 = 4;  // 4번 LED의 핀 번호
int LedPin5 = 3;  // 5번 LED의 핀 번호
int LedPin6 = 2;  // 6번 LED의 핀 번호
-------------------------------------------------------------------------------------------------------------------------------
두번째 예제 LED 핀 설정입니다 2번~7번까지 입니다

-------------------------------------------------------------------------------------------------------------------------------
void loop() {

   for(i = 0;i <= num;i++) // 센싱 횟수
   {
    float v = analogRead(readPin0)*(5.0/1023.0); // 측정 전압 변환
    float di = 60.495*pow(v,-1.1904);  // 거리 계산
    total = total + di;
  delay(10);
   }
  average = (int)total/num; // 평균
  if( i >= num){ // 초기화
    i = 0;
    total = 0;
  }
-------------------------------------------------------------------------------------------------------------------------------
두번째 예제 전압에 따른 거리계산 부분입니다
두번째 예제는 예제코드에서 LED HIGH 와 LOW 를 바꿔주면서 원하는 대로 LED를 제어해 볼 수 있습니다

프로젝트 동영상-CM 단위 거리 측정해 보기


프로젝트 동영상-감지 거리에 따라 LED 제어해 보기


GP2Y0A02YK0F.txt
0.0MB
GP2Y0A02YK0F_LEDS.txt
0.0MB
GP2Y0A02YK0F.zip
0.0MB
반응형

댓글