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.

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
| Fabricante | Avago Technologies |
|---|---|
| Número da peça | APDS-9960 |
| Tensão lógica/E/S | 1.8 V a 3.6 V |
| Tensão de alimentação | 3.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 PWM | Não aplicável |
| Limiares lógicos de entrada | 0.3 V (baixo), 0.7 V (alto) |
| Queda de tensão / RDS(on)/ saturação | 0.5 V máx. |
| Limites térmicos | de -40 a 85 °C |
| Pacote | LGA de 6 pinos |
| Notas / variantes | Nenhum |
- 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

Para conectar o módulo sensor APDS9960 ao seu Arduino, siga estes passos:
- Conecte o
VCCpino do APDS9960 ao pino de 3.3V do Arduino. - Conecte o
GNDconecte o pino a um dos pinos GND do Arduino. - Conecte o
SDApino para o ArduinoA4pino (linha de dados I2C). - Conecte o
SCLpino para o ArduinoA5pino (linha de clock I2C). - Conecte o
INTpino 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
Coisas que você pode precisar
-
Amazonas
-
AliExpressPurchase AM2302 or DHT11 or DHT22 sensor from AliExpresss.click.aliexpress.com
Recursos e referências
-
ExternoAdafruit APDS9960 library (from GitHub)github.com
Arquivos📁
Arquivo Fritzing
-
APDS 9960 rgb and gesture sensor
application/zip0.01 MB
Outros arquivos
-
Biblioteca de Gestos APDS9960 da RobojaxEsta 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