Controllare la posizione del servo con gesti della mano per Arduino

Controllare la posizione del servo con gesti della mano per Arduino

In questo tutorial, impareremo come controllare un servomotore utilizzando gesti della mano. Muovendo la mano a sinistra o a destra, puoi far rispondere il servomotore di conseguenza. Questo progetto utilizza il sensore di gesti APDS-9960 per rilevare i movimenti della mano e tradurli in posizioni del servomotore. Per una spiegazione visiva dettagliata, assicurati di controllare il video (nel video a :30).

APDS-9960 gesture sensor module -1

I componenti principali che utilizzeremo includono un servomotore e il sensore di gesti APDS-9960. Il servomotore ruoterà a angoli specifici in base ai gesti rilevati, mentre il sensore APDS-9960 interpreterà i movimenti della mano. Questa configurazione consente un modo intuitivo per controllare il servomotore senza contatto fisico.

Hardware Spiegato

Il servomotore è un piccolo dispositivo che può ruotare a angoli specifici, rendendolo ideale per applicazioni che richiedono un posizionamento preciso. Ha tipicamente tre fili: alimentazione (rosso), terra (nero) e segnale (arancione). Il filo del segnale riceve comandi per muovere il servomotore a un angolo specificato.

L'APDS-9960 è un sensore versatile in grado di rilevare gesti, luce ambientale e colore. Comunica con l'Arduino tramite I2C e richiede alcuni pin per l'alimentazione e il trasferimento dei dati. Il sensore può rilevare movimenti come su, giù, sinistra e destra, che utilizzeremo per controllare il servo.

Dettagli della scheda tecnica

ProduttoreBroadcom
Numero di parteAPDS-9960
Tensione di logica/IO2,4 - 3,6 V
Tensione di alimentazione2,4 - 3,6 V
Corrente di uscita (per canale)20 mA max
Linee guida sulla frequenza PWMNon applicabile
Soglie logiche di ingresso0,3 V (basso), 0,7 V (alto)
Caduta di tensione / RDS(on)/ saturazioneNon applicabile
Limiti termici-40 a 85 °C
Pacchetto6,0 x 3,0 mm
Note / variantiRilevamento dei gesti, rilevamento della luce RGB
  • Assicurati che il servo sia alimentato con una tensione adeguata (tipicamente 5V).
  • Collegare l'APDS-9960 all'Arduino utilizzando la comunicazione I2C.
  • Fai attenzione al pin di interruzione per il sensore di gesti.
  • Utilizzare resistori di pull-up se necessario per una rilevazione del segnale stabile.
  • Assicurati di calibrare il sensore in diverse condizioni di illuminazione per una maggiore precisione.
Arduino wiring of APDS9960 to control Servo motor using hand gesture

Per cablare i componenti, inizia con il servo motore. Collega il filo rosso al pin 5V dell'Arduino, il filo nero a terra (GND) e il filo di segnale arancione al pin.9Questo permetterà all'Arduino di controllare la posizione del servo.

Successivamente, collega il sensore di gesti APDS-9960. Collega ilV_Ncollegare al 3.3V dell'Arduino, e ilGNDpin to ground. TheINTil pin deve essere collegato al pin2sull'Arduino, mentre ilSDAeSCLi perni vanno ai perniA4eA5, rispettivamente. Questa configurazione consente al sensore di comunicare efficacemente con l'Arduino.

Esempi di codice e guida passo passo

Nella funzione di setup, inizializziamo il servo e il sensore di gesti. La lineamyservo.attach(9);collega il servo al pin 9, che abbiamo precedentemente connesso. Questo consente al servo di ricevere comandi dall'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);
}

Successivamente, definiamo come il sistema gestisce i gesti nella funzione loop. Il metodohandleGesture();controlla i gesti disponibili ed esegue le azioni corrispondenti. Ad esempio, se il gesto rilevato è a sinistra, il servo si muoverà a 180 gradi.

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;
    }
  }
}

Infine, il ciclo controlla continuamente i gesti e aggiorna la posizione del servo in base al gesto rilevato. Assicurati di testare l'impostazione in diverse condizioni di illuminazione per ottenere un riconoscimento dei gesti accurato.

Dimostrazione / Cosa Aspettarsi

Una volta che tutto è cablato e il codice è caricato, dovresti essere in grado di controllare il servo muovendo la mano a sinistra o a destra. Il servo ruoterà di 180 gradi per un gesto a sinistra e tornerà a 0 gradi per un gesto a destra. Se i gesti non vengono rilevati, controlla il posizionamento del sensore e le condizioni di luce circostanti (nel video alle 05:30).

Capitoli

  • Introduzione - 00:00
  • Panoramica dell'hardware - 01:30
  • Istruzioni di cablaggio - 03:00
  • Spiegazione del codice - 04:30
  • Dimostrazione - 06:00

Immagini

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
Lingua: C++
Copia!

Risorse e riferimenti

Nessuna risorsa ancora.

File📁

Nessun file disponibile.