Controlando a Posição do Servo com Gestos de Mão para Arduino

Controlando a Posição do Servo com Gestos de Mão para Arduino

Neste tutorial, aprenderemos como controlar um motor servo usando gestos das mãos. Ao mover sua mão para a esquerda ou para a direita, você pode fazer o motor servo responder de acordo. Este projeto utiliza o sensor de gestos APDS-9960 para detectar movimentos das mãos e traduzi-los em posições do servo. Para uma explicação visual detalhada, não deixe de conferir o vídeo (no vídeo em 00:30).

APDS-9960 gesture sensor module -1

Os componentes principais que usaremos incluem um motor servo e o sensor de gestos APDS-9960. O motor servo irá girar para ângulos específicos com base nos gestos detectados, enquanto o sensor APDS-9960 interpretará os movimentos das mãos. Essa configuração permite uma maneira intuitiva de controlar o servo sem toque físico.

Hardware Explicado

O motor servo é um pequeno dispositivo que pode girar em ângulos específicos, tornando-o ideal para aplicações que requerem posicionamento preciso. Ele geralmente possui três fios: alimentação (vermelho), terra (preto) e sinal (laranja). O fio de sinal recebe comandos para mover o servo para um ângulo especificado.

O APDS-9960 é um sensor versátil que pode detectar gestos, luz ambiente e cor. Ele se comunica com o Arduino via I2C e requer alguns pinos para alimentação e transferência de dados. O sensor pode detectar movimentos como para cima, para baixo, para a esquerda e para a direita, que usaremos para controlar o servo.

Detalhes da Ficha Técnica

FabricanteBroadcom
Número da peçaAPDS-9960
Tensão de lógica/IO2,4 - 3,6 V
Tensão de alimentação2,4 - 3,6 V
Corrente de saída (por canal)20 mA máximo
Orientação sobre a frequência PWMNão aplicável
Limiares de lógica de entrada0,3 V (baixo), 0,7 V (alto)
Queda de tensão / RDS(on)/ saturaçãoNão aplicável
Limites térmicos-40 a 85 °C
Pacote6,0 x 3,0 mm
Notas / variantesDetecção de gestos, detecção de luz RGB
  • Certifique-se de que o servo está alimentado com uma voltagem adequada (tipicamente 5V).
  • Conecte o APDS-9960 ao Arduino usando comunicação I2C.
  • Preste atenção ao pino de interrupção do sensor de gestos.
  • Use resistores de pull-up se necessário para uma detecção de sinal estável.
  • Certifique-se de calibrar o sensor em diferentes condições de iluminação para melhor precisão.
Arduino wiring of APDS9960 to control Servo motor using hand gesture

Para conectar os componentes, comece com o motor servo. Conecte o fio vermelho ao pino de 5V do Arduino, o fio preto ao terra (GND) e o fio de sinal laranja ao pino.9. Isso permitirá que o Arduino controle a posição do servo.

Em seguida, conecte o sensor de gestos APDS-9960. Conecte oV_Npino para o 3,3V do Arduino, e oGNDpino ao chão. OINTo pino deve ser conectado ao pino2no Arduino, enquanto oSDAeSCLpinos vão para pinosA4eA5, respectivamente. Esta configuração permite que o sensor se comunique efetivamente com o Arduino.

Exemplos de Código e Passo a Passo

Na função de configuração, inicializamos o servo e o sensor de gestos. A linhamyservo.attach(9);vincula o servo ao pino 9, que conectamos anteriormente. Isso permite que o servo receba comandos do Arduino.

APDS-9960 gesture sensor -3
void setup() {
 myservo.attach(9);  // attaches the servo on pin 9 to the servo object
 // Set interrupt pin as input
 pinMode(APDS9960_INT, INPUT);
 // Initialize Serial port
 Serial.begin(9600);
}

Em seguida, definimos como o sistema lida com gestos na função de loop. O métodohandleGesture();verifica gestos disponíveis e executa ações correspondentes. Por exemplo, se o gesto detectado for à esquerda, o servo se moverá para 180 graus.

void handleGesture() {
    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_LEFT:
        myservo.write(180);  // added by RoboJax
        break;
      case DIR_RIGHT:
        myservo.write(0);   // added by RoboJax
        break;
    }
  }
}

Finalmente, o loop verifica continuamente os gestos e atualiza a posição do servo com base no gesto detectado. Certifique-se de testar a configuração em várias condições de iluminação para obter um reconhecimento de gestos preciso.

Demonstração / O que Esperar

Uma vez que tudo esteja conectado e o código esteja carregado, você deve ser capaz de controlar o servo movendo sua mão para a esquerda ou para a direita. O servo irá girar para 180 graus para um gesto à esquerda e retornar a 0 graus para um gesto à direita. Se os gestos não forem detectados, verifique a posição do sensor e as condições de luz ao redor (no vídeo às 05:30).

Capítulos

  • Introdução - 00:00
  • Visão Geral do Hardware - 01:30
  • Instruções de Fiação - 03:00
  • Explicação do Código - 04:30
  • Demonstração - 06:00

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 of APDS9960 to control Servo motor using hand gesture
Arduino wiring of APDS9960 to control Servo motor using hand gesture
APDS-9960 gesture sensor -3
APDS-9960 gesture sensor -3
12-Source code for controlling a servo with your hand
Idioma: C++
Copiado!

Recursos e referências

Ainda não há recursos.

Arquivos📁

Nenhum arquivo disponível.