Tutorial: Como utilizar o Sensor de Gestos e RGB Sparkfun

Tutorial: Como utilizar o Sensor de Gestos e RGB Sparkfun

Olá pessoal! Hoje vou apresentar um sensor muito bacana para vocês utilizarem em seus projetos que envolvam movimentos, luminosidade e cores: o Sensor de Gestos e RGB Sparkfun!

Sobre o Sensor de Gestos e RGB Sparkfun

vistasuperior01_sensordegesto

Este módulo contém o Sensor APDS-9960, que mede a luminosidade ambiente e cores (níveis de vermelho, verde e azul. Além disto, ele detecta nível de proximidade e sentido de gestos (esquerda, direita, alto e baixo).

Ele faz utilização do protocolo I2C para utilização (pinos SDA e SCL). Também possui pino de interrupção INT e um pino opcional VL para led Infravermelho (IR).

vistatraseira01_sensordegesto

Ele vem sem os pinos Headers, porém vamos iniciar soldando estes pinos para usar o sensor em um protoboard. Os pinos serão soldados para baixo, conforme imagem a seguir:

ferrodesolda_sensordegesto

Após soldar os pinos, faremos as conexões com uma placa Uno R3 conforme esquemático a seguir:

Pinos sensor <-> Pinos Arduino

  • INT <-> Digital 2
  • VCC <-> 3.3V
  • GND <-> GND
  • SDA <-> A4
  • SCL <-> A5

ATENÇÃO: Este sensor tem seu VCC em 3.3V, cuidado para não conectar em 5V, pois poderá danificá-lo!

protoboard-e-arduino_sensordegesto

Baixe a seguinte biblioteca para utilização aqui. Instale conforme os seguintes passos:

  • Na IDE Arduino, vá em SKETCH -> Incluir Biblioteca -> Adicionar Biblioteca .zip
  • Selecione o Arquivo zipado e clique em OK
  • Aparecerá que a biblioteca foi instalada no canto inferior esquerdo: “Biblioteca adicionada às suas Bibliotecas…”

Teste do Sensor de Gestos

Utilizaremos dois exemplos para demonstração. O primeiro encontra-se em Arquivos -> Exemplos -> Sparkfun APDS-9960 RGB and Gesture Sensor -> Gesture Test

Gesture_test

Carregue o sketch para sua placa Uno. Quando carregado, abra o Serial Monitor. Lá veremos as indicações de movimento do sensor (perto/longe, esquerda/direita e alto/baixo:

inicializar_sensordegesto

protoboard-mao-arduino02_sensordegesto

Sensor de luminosidade e cores

Agora utilizaremos o mesmo sensor para medição de cores e luminosidade ambiente. Para isto, acrescentaremos um LED RGB Catodo comum e três resistores 220, conforme circuito abaixo:

Circuito Sensor RGB e Gestos

Os pinos 11, 10 e 9 são para cada cor do LED RGB e possuem função PWM, para que, quando medida a intensidade destas cores, os leds variem seu brilho.

A mesma biblioteca da Sparkfun será usada neste experimento também. O sketch para utilização é o seguinte:

#include <Wire.h>
#include <SparkFun_APDS9960.h>

// variaveis globais
SparkFun_APDS9960 apds = SparkFun_APDS9960();
uint16_t ambient_light = 0;
uint16_t red_light = 0;
uint16_t green_light = 0;
uint16_t blue_light = 0;

int red = 9; // define pino 9 como vermelho do led RGB
int green = 10; // define pino 10 como verde do led RGB
int blue = 11; // define pino 11 como azul do led RGB

void setup() {
  
  // Initialize Serial port
  Serial.begin(9600);
  Serial.println();
  pinMode(red,OUTPUT); // declara red como saida
  pinMode(green,OUTPUT); // declara green como saida
  pinMode(blue,OUTPUT); // declara blue como saida
  Serial.println(F("--------------------------------"));
  Serial.println(F("SparkFun APDS-9960 - ColorSensor"));
  Serial.println(F("--------------------------------"));
  
  // Initialize APDS-9960 (configure I2C and initial values)
  if ( apds.init() ) {
    Serial.println(F("APDS-9960 initialization complete"));
  } else {
    Serial.println(F("Something went wrong during APDS-9960 init!"));
  }
  
  // inicia o sensor de luz APDS-9960
  if ( apds.enableLightSensor(false) ) {
    Serial.println(F("Light sensor is now running"));
  } else {
    Serial.println(F("Something went wrong during light sensor init!"));
  }
  
  // aguarda 500ms para calibraçao
  delay(500);
}

void loop() {
  
  // Leitura de niveis de luz Ambiente, Vermelho, Verde e Azul
  if (  !apds.readAmbientLight(ambient_light) ||
        !apds.readRedLight(red_light) ||
        !apds.readGreenLight(green_light) ||
        !apds.readBlueLight(blue_light) ) {
    Serial.println("Erro de leitura luz ambiente");
  } else {
    Serial.print("Ambiente: ");
    Serial.print(ambient_light);
    Serial.print(" Vermelho: ");
    Serial.print(red_light);
    int red_leitura = map(red_light,0,3500,0,255); // transforma nivel de vermelho para nivel em PWM
    analogWrite(red,red_leitura); // escreve PWM no led
    Serial.print(" Green: ");
    Serial.print(green_light);
    int green_leitura = map(green_light,0,3500,0,255); // transforma nivel de verde para nivel em PWM
    analogWrite(green,green_leitura);// escreve PWM no led
    Serial.print(" Blue: ");
    Serial.println(blue_light);
    int blue_leitura = map(blue_light,0,3500,0,255); // transforma nivel de azul para nivel em PWM
    analogWrite(blue,blue_leitura);// escreve PWM no led
  }
  
  // aguarda 1s
  delay(1000);
}

Carregue o sketch na placa R3 e verifique o brilho do led e seus respectivos valores no Serial Monitor.

protoboard-mao-arduino01_sensordegesto

Verifique os demais exemplos disponíveis e faça suas próprias adaptações. Há uma gama de possibilidades para este pequeno e poderoso sensor. Use a imaginação e criatividade!

Gostou? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo), comente e visite nossa loja FILIPEFLOP !

0
Tutorial: Como utilizar o Sensor de Gestos e RGB Sparkfun
9 votos, 4.44 classificação média (88% pontuação)

Mestranda em Automação e Controle de Processos, Engenheira de Controle e Automação e Técnica em Automação Industrial. Realiza projetos na área de Wearables, palestras e mini cursos em eventos de IoT, Arduino e Tecnologia. Colaboradora do site FILIPEFLOP.

Compartilhe este Post

2 Comentários

  1. Rafael Gehrke - 3 de janeiro de 2017

    Olá Gedeane, muito obrigado por ter postado este tutorial. Você poderia incluir no post qual distância do sensor foi testada o rgb? Seria algo em torno de 2cm ou 3mm a distância ideal para detecção?

Deixe uma resposta