본문 바로가기

개발자/Arduino

Adafruit APDS-9960 Proximity, Light, RGB, and Gesture Sensor

반응형

 

 

근접, 빛, RGB, 제스처 센서 Adafruit APDS-9960 Proximity, Light, RGB, and Gesture Sensor 

 

APDS9960 제품 설명

 

이 브레이크 아웃은 꽉 찬 센서입니다! Adafruit APDS9960 근접, 조명, RGB 및 제스처 센서를 사용하여 기본 제스처 감지, RGB 색상 감지, 근접 감지 또는 주변 광 감지를 프로젝트에 추가하십시오. 마이크로 컨트롤러 (라이브러리 코드 실행)에 연결하면 간단한 제스처 (왼쪽에서 오른쪽, 오른쪽에서 왼쪽, 위에서 아래, 아래에서 위로가 현재 지원됨)를 감지하고 빨간색, 파란색, 녹색 및 맑은 빛의 양을 반환할 수 있습니다. , 또는 물체가 센서 전면에 얼마나 가까이 있는지 반환합니다. 이 장치는 I2C 인터페이스를 사용하므로 배선 및 사용이 쉽습니다.

 

Avago Technologies의 APDS9960에는 IR LED 및 드라이버가 통합되어 있으며 LED에서 반사 된 IR 에너지를 감지하는 4 개의 방향성 포토 다이오드가 있습니다. 근접 감지 기능을 사용하면 8 비트 분해능으로 센서 전면에서 물체까지의 거리 (최대 몇 센티미터)를 측정할 수 있습니다.

 

4 개의 IR 센서가 있기 때문에 시간에 따른 각 기본 위치에서 빛 반사율의 변화를 측정하고 이러한 변화를 제스처로 바꿀 수 있습니다. 우리의 인터페이스 라이브러리는 방향 제스처 (왼쪽에서 오른쪽, 오른쪽에서 왼쪽, 위에서 아래, 아래에서 위로)를 감지 할 수 있지만 이론적으로는 지그재그, 시계 방향 또는 시계 반대 방향 원, 근거리에서 원거리 등과 같은 더 복잡한 제스처도 가능합니다. 추가 코드로 감지되었습니다.

 

APDS9960에는 특정 근접 임계 값이 깨졌을 때 또는 컬러 센서가 특정 임계 값을 넘어갈 때 발생하는 구성 가능한 인터럽트가 있습니다.

 

편의를 위해 3.3V 레귤레이터와 약간의 레벨 시프 팅이있는 PCB의 센서를 선택하여 배치하여 선호하는 3.3V 또는 5V 마이크로 컨트롤러와 함께 쉽게 사용할 수 있습니다.

 

또한 몇 줄의 코드만으로 Arduino IDE를 시작하고 실행할 수 있도록 가이드와 소프트웨어 라이브러리를 준비했습니다! 

 

제품 이미지

 

apds9960

 

 

제품사양

 

RGB 컬러, 제스처, 근접 센싱을 할 수 있는 APDS-9960 센서 모듈입니다. I2C 통신을 사용하며, µA 단위의 초저전력으로도 작동합니다. 아두이노 정품 개발 보드인 Arduino NANO 33 BLE Sense에 장착된 센서와 동일한 센서로, 작동 방식은 동일합니다. 

 

- 작동 전압: 3.3 V

- 작동 전류: 790µA(근접센싱), 790µA(제스처센싱), 38µA(대기)

- 통신 방법: I2C

- RGB 컬러 감지, 거리 감지, 제스처 감지 

 

 

회로 연결도

 

 

 

 

샘플 코드 <라이브러리 추가> 라이브러리 매니저에서 "Arduino_APDS9960" 라이브러리를 추가해줍니다. 

 

RGB 컬러 인식 예제

#include <Arduino_APDS9960.h>
void setup() {
  Serial.begin(9600);
  while (!Serial); // 시리얼 모니터가 켜졌을때만 작동합니다.

  if (!APDS.begin()) { // APDS9960센서를 초기화합니다. 초기화중 문제가 발생하면 오류를 발생시킵니다.
    Serial.println("APDS9960센서 오류!");
    while (1);
  }
}

void loop() {
  if (APDS.colorAvailable()) { // 센서의 RGB색상 출력값이 존재할때만 작동합니다.
    int RGB[3] = {0}; // RGB색상 데이터를 저장할 변수입니다.
    APDS.readColor(RGB[0], RGB[1], RGB[2]); // RGB색상 데이터를 함수의 인자에 저장합니다. 저장되는 데이터는 각각 R, G, B 입니다.
    // 데이터를 전송합니다.
    Serial.print("R = ");
    Serial.println(RGB[0]);
    Serial.print("G = ");
    Serial.println(RGB[1]);
    Serial.print("B = ");
    Serial.println(RGB[2]);
    Serial.println();
    delay(1000);
  }
}

 

제스처 인식 예제

#include <Arduino_APDS9960.h>
void setup() {
  Serial.begin(9600);
  if (!APDS.begin()) { // 센서 초기화가 실패하면 오류를 발생시킵니다.
    Serial.println("APDS9960센서 오류!");
    while (1)
      ;
  }
  Serial.println("제스처 인식 시작!");
}
void loop() {
  if (APDS.gestureAvailable()) { // 제스처가 인식되면 true를 반환합니다.
    Serial.println("Gesture!");
    int gesture = APDS.readGesture(); // 인식된 제스처를 gesture 변수에 저장
    switch (gesture) { // 각 제스처에 맞는 항으로 이동
      case GESTURE_UP: // 상승 제스처
        Serial.println("윗쪽!");
        delay(1000);
        break;
      case GESTURE_DOWN: // 하강 제스처
        Serial.println("아랫쪽!");
        delay(1000);
        break;
      case GESTURE_LEFT: // 왼쪽 제스처
        Serial.println("왼쪽!");
        delay(1000);
        break;
      case GESTURE_RIGHT: // 오른쪽 제스처
        Serial.println("오른쪽!");
        delay(1000);
        break;
      default:
        break;
    }
  }
}

제스처 인식 Test 시리얼 모니터 화면

 

제스처 인식 Test 시리얼 모니터 화면

 

 

거리 측정 예제

 

#include <Arduino_APDS9960.h>
void setup() {
  Serial.begin(9600);
  while (!Serial); // 시리얼 모니터가 켜졌을때만 작동합니다.
  if (!APDS.begin()) { // 센서 초기화가 실패하면 오류를 발생시킵니다.
    Serial.println("APDS9960센서 오류!");
    while (1);
  }
}
void loop() {
  if (APDS.proximityAvailable()) { // 센서의 값이 읽혔을 때 작동합니다.
    // - 0   => close
    // - 255 => far
    // - -1  => 오류
    int proximity = APDS.readProximity(); // 센서의 값을 변수에 저장합니다.
    Serial.println(proximity);
  }
  delay(100);
}

 

 

Datasheet를 참고하세요

 

adafruit-apds9960-breakout.pdf
1.95MB

 

 

참고 문서

디바이스 마트 제품 설명

메카솔루션 오픈 랩 

Adafruit APDS9960 breakout

 

 

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

귀사가 성공하기까지의 긴 고난의 시간을 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩