Contrôle de la position du servo avec des gestes de la main pour Arduino

Contrôle de la position du servo avec des gestes de la main pour Arduino

Dans ce tutoriel, nous allons apprendre à contrôler un moteur servo à l'aide de gestes de la main. En déplaçant votre main à gauche ou à droite, vous pouvez faire réagir le moteur servo en conséquence. Ce projet utilise le capteur de gestes APDS-9960 pour détecter les mouvements de la main et les traduire en positions de servo. Pour une explication visuelle détaillée, assurez-vous de consulter la vidéo à (dans la vidéo à 00:30).

APDS-9960 gesture sensor module -1

Les composants principaux que nous utiliserons incluent un moteur servo et le capteur de gestes APDS-9960. Le moteur servo tournera à des angles spécifiques en fonction des gestes détectés, tandis que le capteur APDS-9960 interprétera les mouvements de la main. Cette configuration permet un moyen intuitif de contrôler le servo sans contact physique.

Matériel expliqué

Le moteur servo est un petit dispositif qui peut tourner à des angles spécifiques, ce qui le rend idéal pour des applications nécessitant un positionnement précis. Il a généralement trois fils : alimentation (rouge), masse (noir) et signal (orange). Le fil de signal reçoit des commandes pour déplacer le servo à un angle spécifié.

Le APDS-9960 est un capteur polyvalent qui peut détecter des gestes, la lumière ambiante et la couleur. Il communique avec l'Arduino via I2C et nécessite quelques broches pour l'alimentation et le transfert de données. Le capteur peut détecter des mouvements tels que haut, bas, gauche et droite, que nous utiliserons pour contrôler le servo.

Détails de la fiche technique

FabricantBroadcom
Numéro de pièceAPDS-9960
Tension logique/IO2,4 - 3,6 V
Tension d'alimentation2,4 - 3,6 V
Courant de sortie (par canal)20 mA max
Directives sur la fréquence PWMNon applicable
Seuils de logique d'entrée0,3 V (bas), 0,7 V (haut)
Chute de tension / RDS(on)/ saturationNon applicable
Limites thermiques-40 à 85 °C
Paquet6,0 x 3,0 mm
Remarques / variantesDétection de gestes, détection de lumière RGB
  • Assurez-vous que le servo est alimenté avec une tension adéquate (généralement 5V).
  • Connectez l'APDS-9960 à l'Arduino en utilisant la communication I2C.
  • Faites attention à la broche d'interruption du capteur de geste.
  • Utilisez des résistances de tirage si nécessaire pour une détection de signal stable.
  • Assurez-vous de calibrer le capteur dans différentes conditions d'éclairage pour une meilleure précision.
Arduino wiring of APDS9960 to control Servo motor using hand gesture

Pour câbler les composants, commencez par le servomoteur. Connectez le fil rouge à la broche 5V de l'Arduino, le fil noir à la masse (GND) et le fil de signal orange à la broche.9Cela permettra à l'Arduino de contrôler la position du servo.

Ensuite, câblez le capteur de geste APDS-9960. Connectez leV_Npincez au 3,3V de l'Arduino, et leGNDpincer au sol. LeINTla broche doit être connectée à la broche2sur l'Arduino, tandis que leSDAetSCLles broches vont aux brochesA4etA5, respectivement. Cette configuration permet au capteur de communiquer efficacement avec l'Arduino.

Exemples de code et guide étape par étape

Dans la fonction de configuration, nous initialisons le servo et le capteur de gestes. La lignemyservo.attach(9);lie le servo à la broche 9, que nous avons précédemment connectée. Cela permet au servo de recevoir des commandes de l'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);
}

Ensuite, nous définissons comment le système gère les gestes dans la fonction de boucle. La méthodehandleGesture();vérifie les gestes disponibles et exécute les actions correspondantes. Par exemple, si le geste détecté est à gauche, le servo se déplacera à 180 degrés.

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

Enfin, la boucle vérifie en continu les gestes et met à jour la position du servo en fonction du geste détecté. Assurez-vous de tester la configuration dans différentes conditions d'éclairage pour obtenir une reconnaissance précise des gestes.

Démonstration / À quoi s'attendre

Une fois que tout est câblé et que le code est téléchargé, vous devriez pouvoir contrôler le servo en déplaçant votre main à gauche ou à droite. Le servo tournera à 180 degrés pour un geste à gauche et reviendra à 0 degré pour un geste à droite. Si les gestes ne sont pas détectés, vérifiez le positionnement du capteur et les conditions d'éclairage environnantes (dans la vidéo à 05:30).

Chapitres

  • Introduction - 00:00
  • Aperçu du matériel - 01:30
  • Instructions de câblage - 03:00
  • Explication du code - 04:30
  • Démonstration - 06:00

Images

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
Langue: C++
Copié !

Ressources et références

Aucune ressource pour le moment.

Fichiers📁

Aucun fichier disponible.