Steuerung der Servoposition mit Handgesten für Arduino

Steuerung der Servoposition mit Handgesten für Arduino

In diesem Tutorial werden wir lernen, wie man einen Servomotor mit Handgesten steuert. Indem Sie Ihre Hand nach links oder rechts bewegen, können Sie den Servomotor entsprechend reagieren lassen. Dieses Projekt nutzt den APDS-9960 Gestensensor, um Handbewegungen zu erkennen und in Servopositionen umzuwandeln. Für eine detaillierte visuelle Erklärung sollten Sie sich das Video bei (im Video bei 00:30) ansehen.

APDS-9960 gesture sensor module -1

Die Kernkomponenten, die wir verwenden werden, umfassen einen Servomotor und den APDS-9960 Gestensensor. Der Servomotor wird sich basierend auf den erkannten Gesten in bestimmte Winkel drehen, während der APDS-9960 Sensor die Handbewegungen interpretiert. Dieses Setup ermöglicht eine intuitive Steuerung des Servos ohne physischen Kontakt.

Hardware erklärt

Der Servomotor ist ein kleines Gerät, das sich auf bestimmte Winkel drehen kann, was ihn ideal für Anwendungen macht, die eine präzise Positionierung erfordern. Er hat typischerweise drei Drähte: Strom (rot), Erde (schwarz) und Signal (orange). Der Signaldraht empfängt Befehle, um den Servomotor auf einen bestimmten Winkel zu bewegen.

Der APDS-9960 ist ein vielseitiger Sensor, der Gesten, Umgebungslicht und Farben erkennen kann. Er kommuniziert über I2C mit dem Arduino und benötigt einige Pins für Stromversorgung und Datenübertragung. Der Sensor kann Bewegungen wie oben, unten, links und rechts erkennen, die wir zur Steuerung des Servos verwenden werden.

Datenblattdetails

HerstellerBroadcom
TeilenummerAPDS-9960
Logik/IO-Spannung2,4 - 3,6 V
Versorgungsspannung2,4 - 3,6 V
Ausgangsstrom (pro Kanal)20 mA max
PWM-FrequenzrichtlinienNicht zutreffend
Eingangslogikschwellen0,3 V (niedrig), 0,7 V (hoch)
Spannungsabfall / RDS(on)/ SättigungNicht zutreffend
Thermische Grenzen-40 bis 85 °C
Paket6,0 x 3,0 mm
Hinweise / VariantenGestenerkennung, RGB-Lichtmessung
  • Stellen Sie sicher, dass der Servomotor mit einer angemessenen Spannung (typischerweise 5V) versorgt wird.
  • Verbinden Sie den APDS-9960 mit dem Arduino über die I2C-Kommunikation.
  • Achten Sie auf den Interrupt-Pin des Gestensensors.
  • Verwenden Sie bei Bedarf Pull-up-Widerstände für eine stabile Signalübertragung.
  • Stellen Sie sicher, dass Sie den Sensor unter verschiedenen Lichtbedingungen kalibrieren, um eine bessere Genauigkeit zu erzielen.
Arduino wiring of APDS9960 to control Servo motor using hand gesture

Um die Komponenten zu verdrahten, beginnen Sie mit dem Servomotor. Schließen Sie den roten Draht an den 5V-Pin des Arduino, den schwarzen Draht an die Masse (GND) und den orangefarbenen Signaldraht an den Pin an.9Dies ermöglicht es dem Arduino, die Position des Servos zu steuern.

Als Nächstes schließen Sie den APDS-9960 Gestensensor an. Verbinden Sie denV_NPin an die 3,3V des Arduino, und dieGNDpin auf Masse. DerINTPin sollte mit Pin verbunden werden.2auf dem Arduino, während derSDAundSCLPins gehen zu PinsA4undA5, beziehungsweise. Diese Konfiguration ermöglicht es dem Sensor, effektiv mit dem Arduino zu kommunizieren.

Codebeispiele und Anleitung

Im Setup-Funktion initialisieren wir den Servo und den Gestensensor. Die Zeilemyservo.attach(9);bindet den Servo an Pin 9, den wir zuvor verbunden haben. Dies ermöglicht es dem Servo, Befehle vom Arduino zu empfangen.

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

Als Nächstes definieren wir, wie das System Gesten in der Schleifenfunktion verarbeitet. Die MethodehandleGesture();Überprüft verfügbare Gesten und führt entsprechende Aktionen aus. Wenn beispielsweise die erkannte Geste nach links ist, bewegt sich der Servo auf 180 Grad.

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

Schließlich überprüft die Schleife kontinuierlich Gesten und aktualisiert die Servo-Position basierend auf der erkannten Geste. Stellen Sie sicher, dass Sie die Einrichtung unter verschiedenen Lichtverhältnissen testen, um eine genaue Gestenerkennung zu erhalten.

Demonstration / Was zu erwarten ist

Sobald alles verkabelt und der Code hochgeladen ist, sollten Sie in der Lage sein, den Servo zu steuern, indem Sie Ihre Hand nach links oder rechts bewegen. Der Servo wird sich für eine linke Geste um 180 Grad drehen und für eine rechte Geste auf 0 Grad zurückkehren. Wenn die Gesten nicht erkannt werden, überprüfen Sie die Positionierung des Sensors und die umgebenden Lichtverhältnisse (im Video bei 05:30).

Kapitel

  • Einführung - 00:00
  • Hardware-Übersicht - 01:30
  • Verdrahtungsanweisungen - 03:00
  • Code-Erklärung - 04:30
  • Demonstration - 06:00

Bilder

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
Sprache: C++
Kopiert!

Ressourcen & Referenzen

Noch keine Ressourcen vorhanden.

Dateien📁

Keine Dateien verfügbar.