근접, 빛, 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를 시작하고 실행할 수 있도록 가이드와 소프트웨어 라이브러리를 준비했습니다!
제품 이미지
제품사양
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 시리얼 모니터 화면
거리 측정 예제
#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를 참고하세요
참고 문서
'개발자 > Arduino' 카테고리의 다른 글
미세먼지 측정기 오늘 잘 돌아가는 코드 (0) | 2021.04.30 |
---|---|
Nano 33 IoT 보드에서 5V 출력 사용하는 방법 (4) | 2021.04.23 |
아두이노 DS1820 (디지털 온도 센서) 다루기 (0) | 2021.04.19 |
아두이노 나노 PCB 사이즈 (0) | 2021.04.14 |
Beginning Arduino Nano 33 IoT , Agus Kurniawan (0) | 2021.04.07 |
Arduino Nano 업로드할 때 오류 avrdude : stk500_recv( ) 해결 (0) | 2021.04.01 |
BME280 I2C 온도 습도 기압 센서 모듈 사용법 (0) | 2021.03.30 |
LSM6DS3 Breakout Hookup Guide (0) | 2021.03.24 |
더욱 좋은 정보를 제공하겠습니다.~ ^^