APDS9960 sensor de gestos, RGB e de proximidade para Arduino

APDS9960 sensor de gestos, RGB e de proximidade para Arduino

Neste tutorial, exploraremos como usar o módulo sensor APDS9960, que combina detecção de gestos, sensoriamento de cor RGB e detecção de proximidade. Este sensor versátil pode detectar movimentos em várias direções e pode ser integrado a projetos para controlar motores, luzes ou outros dispositivos com base em gestos de mão. Ao final deste tutorial, você entenderá como conectar o sensor e implementar a detecção básica de gestos em seus projetos com Arduino.

APDS-9960 gesture sensor module -1

O módulo APDS9960 é compacto e requer fiação mínima, tornando-o uma excelente escolha para projetos interativos. Usaremos a IDE do Arduino para programar o sensor e exibir os gestos detectados no monitor serial. Para um guia visual, consulte o vídeo (em 00:00).

Hardware Explicado

O componente-chave deste projeto é o módulo sensor APDS9960. Este módulo é capaz de detectar gestos como deslizar para a esquerda, deslizar para a direita, deslizar para cima e deslizar para baixo. Ele também mede valores de cor RGB e a proximidade de objetos. O sensor comunica-se com o Arduino usando I2C, o que simplifica o processo de fiação e programação.

O APDS9960 contém múltiplos sensores internos: um sensor de gestos, um sensor de cor RGB e um sensor de luz ambiente. O sensor de gestos usa um LED infravermelho e um fotodetector para detectar movimentos da mão, enquanto o sensor RGB mede as intensidades da luz vermelha, verde e azul para identificar cores. O sensor de proximidade determina quão próximo um objeto está do sensor, o que pode ser útil em várias aplicações.

Detalhes da ficha técnica

FabricanteAvago Technologies
Número da peçaAPDS-9960
Tensão lógica/E/S1.8 V a 3.6 V
Tensão de alimentação3.3 V
Corrente de saída (por canal)20 mA máx.
Corrente de pico (por canal)100 mA
Orientação sobre a frequência PWMNão aplicável
Limiares lógicos de entrada0.3 V (baixo), 0.7 V (alto)
Queda de tensão / RDS(on)/ saturação0.5 V máx.
Limites térmicosde -40 a 85 °C
PacoteLGA de 6 pinos
Notas / variantesNenhum

  • Sempre alimente o APDS9960 com 3,3 V; tensões mais altas podem danificar o sensor.
  • Certifique-se de usar resistores de pull-up adequados nas linhas I2C ao conectar vários dispositivos.
  • Mantenha o sensor afastado da luz solar direta para evitar interferência.
  • Use um capacitor de desacoplamento próximo aos pinos de alimentação para garantir a estabilidade.
  • Esteja ciente do alcance de detecção de proximidade (normalmente cerca de 20 cm).

Instruções de fiação

Arduino wiring for APDS9960 Gesture sensor
Arduino wiring for APDS9960 Gesture sensor

Para conectar o módulo sensor APDS9960 ao seu Arduino, siga estes passos:

  • Conecte oVCCpino do APDS9960 ao pino de 3.3V do Arduino.
  • Conecte oGNDconecte o pino a um dos pinos GND do Arduino.
  • Conecte oSDApino para o ArduinoA4pino (linha de dados I2C).
  • Conecte oSCLpino para o ArduinoA5pino (linha de clock I2C).
  • Conecte oINTpino para pino digital2no Arduino para tratamento de interrupções.

Observe que, se você estiver usando um modelo diferente de Arduino, os pinos SDA e SCL podem variar (por exemplo, em um Arduino Mega, useSDAno pino 20 eSCLno pino 21). Certifique-se de verificar os mapeamentos específicos de pinos da sua placa. Para diferentes configurações, consulte o vídeo em (no vídeo em 02:30).

Exemplos de código e tutorial

Na função setup, inicializamos a comunicação serial e o sensor APDS9960. O pino de interrupção é configurado para escutar eventos de gesto. Aqui está um trecho do código de setup:

void setup() {
  pinMode(APDS9960_INT, INPUT);
  Serial.begin(9600);
  Serial.println(F("APDS-9960 initialization..."));
  if (apds.init()) {
    Serial.println(F("Initialization complete"));
  } else {
    Serial.println(F("Initialization failed"));
  }
}

Este código realiza as configurações necessárias para garantir que o sensor esteja pronto para uso e fornece feedback no monitor serial.

Em seguida, definimos como lidar com os gestos detectados pelo sensor. OhandleGestureA função usa uma instrução switch para determinar a direção do gesto. Aqui está um trecho focado:

void handleGesture() {
  if (apds.isGestureAvailable()) {
    switch (apds.readGesture()) {
      case DIR_UP:
        Serial.println("UP");
        break;
      case DIR_DOWN:
        Serial.println("DOWN");
        break;
      // Additional cases for left, right, near, and far
    }
  }
}

Esta função verifica se um gesto está disponível e lê sua direção, imprimindo o resultado no monitor serial para feedback. Certifique-se de consultar o código completo carregado abaixo do artigo para obter detalhes completos sobre a implementação.

Demonstração / O que esperar

Ao executar o programa, você deve ver os gestos detectados impressos no monitor serial enquanto move a mão em diferentes direções. Por exemplo, deslizar para cima deve exibir UP, enquanto deslizar para baixo mostra DOWN. Certifique-se de manter a mão parada por um segundo ao realizar os gestos de perto e de longe (no vídeo às 10:00).

Tenha cuidado com a detecção de proximidade do sensor; se você mover a mão rápido demais ou muito para longe do sensor, ele pode não registrar o gesto com precisão. Trata-se de um problema comum que pode afetar o desempenho.

Marcas de tempo do vídeo

  • 00:00- Introdução ao sensor APDS9960
  • 02:30- Instruções de fiação
  • 05:15- Explicações de código
  • 10:00- Demonstração do reconhecimento de gestos

Imagens

APDS-9960 gesture sensor module -2
APDS-9960 gesture sensor module -2
APDS-9960 gesture sensor module -1
APDS-9960 gesture sensor module -1
Arduino wiring for APDS9960 Gesture sensor
Arduino wiring for APDS9960 Gesture sensor
87-This is code for an APDS9960 gesture, RGB, and proximity sensor module (6-pin).
Idioma: C++
Copiado!

Coisas que você pode precisar

Recursos e referências

Arquivos📁

Arquivo Fritzing

Outros arquivos

  • Biblioteca de Gestos APDS9960 da Robojax
    Esta biblioteca é usada para o Sensor de Gestos APDS9960 para detectar o movimento da sua mão e identificar a cor presente.
    robojax-gesture-APDS9960-Library.zip