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

Arduino Uno 로 APDS-9960 제스쳐 센서를 사용해 방향별 제스쳐 감지시 LED 제어해 보기

by 오마이엔지니어 2018. 12. 15.
반응형

Arduino Uno 로 APDS-9960 제스쳐 센서를 사용해서 방향별로 제스쳐 감지시

방향에 따른 4색상의 LED를 제어해 보는 프로젝트 입니다

먼저 Arduino Uno 로 APDS-9960 제스쳐 센서를 사용해 제스쳐 감지시 시리얼 모니터로 출력값을 확인해 보는 프로젝트 입니다

<제스쳐 센서 이미지>

제스쳐센서 소개
APDS-9930  APDS-9930 Datasheet.pdf APDS-9960  APDS-9960 Datasheet.pdf 기반의 비접촉 제스쳐 센서 모듈

(Non Contact Gesture Sensor Module) 입니다

(다양한 제조사의 제스쳐 센서가 판매되고 있습니다 본 테스트에서는 위의 두가지 제품을 사용하였습니다)
I2C 인터페이스 구성의 ALS(ambient light sensor) 와 적외선 IR LED 가 포함된 센서로 제스쳐 감지가 가능하며
또한 근접센서로도 사용할수 있습니다 (APDS-9930 은 근접센서 100mm , APDS-9960 은 100mm~200mm 거리까지 플러그 앤 플레이 감지 기능을 제공합니다)
APDS-9930은 제스쳐 센서로 활용이 가능하나 제스쳐 센서 라기보다는 주변 광 센서 또는 근접센서라고 볼수 있습니다
APDS-9960은 제스쳐 센서, RGB 컬리인식 센서, 주변 광 센서, 근접센서 로 사용 가능합니다
아두이노와 호환 가능하며 마이크로 컨트롤러, 로봇 제어, 동작감지 등 다양하게 활용 가능합니다

아래 이미지에서 확인할수 있듯이 다양한 제조사의 제스쳐 센서가 제작되고 판매되고 있습니다

<제스쳐 센서 배선도 및 회로도>


사용된 부품
APDS-9960 제스쳐 센서
Arduino Uno R3
미니 브래드 보드

점퍼케이블
3mm LED (Blue) , (Red) , (Green) , (Yellow)
막대저항 220 Ohm - 4개

구성배선도 (APDS-9960 제스쳐 감지시 시리얼 모니터로 출력값 확인해 보기)

 

구성배선도 (APDS-9960 주변 광 차단시 배선된 LED 점등시켜 보기)

사용된 라이브러리

APDS9960.zip
APDS9960 라이브러리를 첨부하였습니다
라이브러리 추가 방법은 Arduino IDE 설치하기 포스팅을 참조해 주세요


사용된 예제코드

apds9960_gesture.zip


테스트 방법
첨부된 APDS9960 라이브러리를 추가해 준 후 위 사용된 예제코드에 첨부된 apds9960_gesture.ino 파일을 불러와서
스케치 컴파일 및 업로드를 해주고 시리얼 모니터를 실행시킵니다


시리얼 모니터를 실행 시키면 위와 같은 화면이 출력되는것을 확인할수 있습니다
주의해야 할것은 APDS-9960 initialization complete 메세지가 나와야 정상적으로 센서가 인식된 것입니다
에러 메세지가 나오면 센서에 문제가 있거나 예제나 라이브러리와 센서가 맞지 않는것 입니다

본 테스트에 사용한 제스쳐 센서는 첨부된 라이브러리(Sparkfun의 라이브러리 입니다)의 제스쳐 예제를 사용하면 컴파일 에러는 없으나 지속적으로 센서가 인식이 되질 않는 에러가 발생했습니다
때문에 꼭 사용된 예제코드에 첨부된 apds9960_gesture.ino 예제를 사용해서 테스트 하기를 바랍니다


센서위를 손으로 좌,우,위,아래로 움직여 보면 방향을 감지해서 시리얼 모니터로 출력해 주는것을 확인할 수 있습니다

드라이버나 철자 같은 금속성 또는 자성을 띄는 물체로 테스트 하면 더 정확하게 테스트 가능합니다

일부 생산 버전에 따라 제스쳐가 인식이 안 될수 있습니다
이경우 아래 첨부파일을 사용해서 테스트 가능합니다, LED BOOST 와 GGAIN 값을 수정한 파일입니다

GGAIN 수정 라이브러리.zip
0.03MB


위 첨부파일을 다운로드 해서 SparkFun_APDS-9960_Sensor_Arduino_Library-V_1.4.2 를 설치해 주고
apds-9960 제스쳐.txt 파일의 예제를 복사해서 붙여놓고 테스트 하면 됩니다



프로젝트 동영상 (APDS-9960 제스쳐 감지시 시리얼 모니터로 출력값 확인해 보기)



프로젝트 동영상 (APDS-9960 주변 광 차단시 배선된 LED 점등시켜 보기)


주변 광 차단시 배선된 LED가 점등되는 테스트는 위에 첨부된 APDS9960 라이브러리(
Sparkfun의 라이브러리 입니다)의 AmbientLightInterrupt 예제를 불러와서 컴파일 및 업로드를 해주면 됩니다
센서를 손이나 물체로 가려서 주변 광을 차단해 주면 LED가 점등되는것을 확인할수 있습니다

이어서 Arduino Uno 로 APDS-9960 제스쳐 센서를 사용해서 방향별로 제스쳐 감지시

방향에 따른 4색상의 LED를 제어해 보는 프로젝트를 진행해 보겠습니다

구성배선도 (APDS-9960 방향별 제스쳐 감지시 LED 제어해 보기)

테스트 방법

(테스트 방법은 위 첫번째 제스쳐 테스트 하고 동일합니다, 4~7번까지 핀에 LED만 추가로 배선해주면 됩니다)
포스팅 상단에 첨부된 APDS9960 라이브러리를 추가해 준 후 위 사용된 예제코드에 첨부된 apds9960_gesture.ino 파일을 불러와서 스케치 컴파일 및 업로드를 해주고 시리얼 모니터를 실행시킵니다


시리얼 모니터를 실행 시키면 위와 같은 화면이 출력되는것을 확인할수 있습니다
주의해야 할것은 APDS-9960 initialization complete 메세지가 나와야 정상적으로 센서가 인식된 것입니다
에러 메세지가 나오면 센서에 문제가 있거나 예제나 라이브러리와 센서가 맞지 않는것 입니다

본 테스트에 사용한 제스쳐 센서는 첨부된 라이브러리(Sparkfun의 라이브러리 입니다)의 제스쳐 예제를 사용하면 컴파일 에러는 없으나 지속적으로 센서가 인식이 되질 않는 에러가 발생했습니다
때문에 꼭 사용된 예제코드에 첨부된 apds9960_gesture.ino 예제를 사용해서 테스트 하기를 바랍니다


센서위를 손으로 좌,우,위,아래로 움직여 보면 방향을 감지해서 시리얼 모니터로 출력해 주는것을 확인할 수 있습니다

일부 생산 버전에 따라 제스쳐가 인식이 안 될수 있습니다
이경우 아래 첨부파일을 사용해서 테스트 가능합니다, LED BOOST 와 GGAIN 값을 수정한 파일입니다

GGAIN 수정 라이브러리.zip
0.03MB


위 첨부파일을 다운로드 해서 SparkFun_APDS-9960_Sensor_Arduino_Library-V_1.4.2 를 설치해 주고
apds-9960 제스쳐.txt 파일의 예제를 복사해서 붙여놓고 테스트 하면 됩니다



예제코드를 살펴보면
// Global Variables
APDS9960 apds = APDS9960();
int isr_flag = 0;
int led1;
int led2;
int led3;
int led4;
void setup() {

  // Set interrupt pin as input
  pinMode(APDS9960_INT, INPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
위 처럼 4~7번 핀까지 LED가 배선되었기 때문에 좌,우,상,하 방향에 따라서 4번~7번까지 LED를 제어할 수 있습니다

#define DEFAULT_GGAIN           GGAIN_1X
GGAIN 값이 원래 4X 인데 1X 로 수정한 것을 확인 할 수 있습니다

SparkFun_APDS9960.cpp 파일과 SparkFun_APDS9960.h 파일도 수정하였는데
자세한 수정 방법은 https://rockjjy.tistory.com/2569 포스팅을 참조해 주세요


프로젝트 동영상 (APDS-9960 방향별 제스쳐 감지시 LED 제어해 보기)

 

반응형

댓글