gesten erkennen mit dem APDS9960

Gesten erkennen mit dem Sensor APDS9960

Mit deinem Arduino Gesten erkennen zu können, eröffnet dir die Möglichkeit, ihn und angeschlossene Bauteile berührungslos zu steuern. Der Sensor APDS9960 leistet hierfür gute Dienste: Er erkennt vier Bewegungsrichtungen, wenn du deine Hand unmittelbar vor ihm bewegst – hoch, runter, links & rechts.

Was du mit den erkannten Bewegungen anstellst, ist dabei ganz dir überlassen: LEDs an- und ausschalten oder einen Roboter steuern – alles ist möglich.

Du kannst diesen Sensor einzeln auf einem Breakout-Board kaufen und an deinem Arduino Board anschließen oder – so wie wir es in diesem Tutorial beschreiben – den Arduino Nano 33 BLE Sense verwenden, auf dem dieser Sensor (und ganz viele andere) bereits installiert ist.

Arduino® Board Nano 33 BLE Sense with headers
Arduino® Board Nano 33 BLE Sense with headers
Arduino Board Nano 33 BLE Sense with headers; Inhalt: 1 Stück

Die passende Bibliothek

Für den Sensor APDS9960 gibt es gleich mehrere Bibliotheken, die dir das Leben leichter machen. In diesem Tutorial verwenden wir die die Bibliothek ArduinoAPDS9960. Öffne deinen Bibliotheksverwalter und installiere dir die neueste Version.

Arduino Bibliothek ArduinoAPDS9960 um Gesten zu erkennen.

Mithilfe dieser Bibliothek ist es ein Kinderspiel, Gesten zu erkennen. Und nicht nur das, wie du sicher weißt, kann dieser Sensor auch Farben und physische Nähe erkennen – auch das kannst du mit dieser Bibliothek regeln.

Gesten erkennen leicht gemacht

Wenn du die Bibliothek installiert hast, findest du im Menü unter Datei->Beispiele->APDS_9960 den Sketch GestureSensor. Öffne und lade ihn auf deinen Arduino, um einen ersten Test zu starten.

In deinem Seriellen Monitor (achte auf die Baudrate) kannst du jetzt verfolgen, ob alles funktioniert. Bewege deine Hand direkt vor dem Sensor in eine Richtung und prüfe, ob er die Richtung korrekt erkannt hat. Wenn nicht, drehe ihn (bzw. den Arduino Nano 33 BLE Sense) so, dass deine Geste mit der erkannten Bewegung übereinstimmt.

Ein bisschen wirst du deine Gesten üben müssen, damit der APDS9960 sie zuverlässig erkennt. In unseren Tests kam es relativ häufig vor, dass eine natürliche Bewegung falsch interpretiert wurde.

Ein genauer Blick auf den Code

Schauen wir uns den Sketch einmal genauer an. Es sind nur sehr wenige Funktionen nötig, um den Gestensensor zu verwenden. Zunächst bindest du natürlich die oben erwähnte Bibliothek ein:

#include <Arduino_APDS9960.h>

Anschließend initialisierst du im Setup den Sensor mit

APDS.begin();

Im Loop prüfst du zunächst, ob der Sensor verfügbar ist und arbeitet. Anschließend prüfst du solange das der Fall ist mit APDS.gestureAvailable(), ob er eine Geste erkannt hat. Mit einem switch…case checkst du dann, welche das war, gibst sie im Seriellen Monitor aus und verlässt die Abfrage bis zu ihrem nächsten Aufruf.

  if (APDS.gestureAvailable()) {
    int gesture = APDS.readGesture();

    switch (gesture) {
      case GESTURE_UP:
        Serial.println("Detected UP gesture");
        break;

      case GESTURE_DOWN:
        Serial.println("Detected DOWN gesture");
        break;

      case GESTURE_LEFT:
        Serial.println("Detected LEFT gesture");
        break;

      case GESTURE_RIGHT:
        Serial.println("Detected RIGHT gesture");
        break;

      default:
        break;
    }
  }

Und das war es auch schon mit der grundsätzlichen Funktionalität des APDS9960. Für alle weiteren Einsatzmöglichkeiten ist deine Kreativität gefragt. 🙂

Die Feineinstellungen

Bei deinen Tests wirst du schnell merken, dass der Sensor nicht immer richtig liegt und Gesten auch gerne mal falsch erkennt. Mit der Funktion setGestureSensitivity(sensitivity) kannst du hier nachjustieren.

Das Argument sensitivity kann einen Wert von 0 bis 100 besitzen. Standardmäßig – also wenn du diese Funktion nicht verwendest – liegt der Wert bei 80.

Ein niedrigerer Wert macht die Gestenerkennung zwar genauer, dafür wird jedoch möglicherweise nicht immer erkannt, dass eine Geste ausgeführt wurde. Ein höherer Wert lässt den Sensor zwar besser Gesten erkennen, dafür aber nicht immer richtig.

Wie so oft, ist also Fingerspitzengefühl gefragt, bis du die für dich passende Einstellung gefunden hast.

Deinen Arduino mit Gesten steuern

Natürlich bist du nicht darauf beschränkt, die erkannten Gesten im Seriellen Monitor auszugeben. Du könntest damit das Licht in deiner Wohnung oder auch einfach nur ein simples Jump’n’Run steuern.

Dieses Projekt ist für dich spannend, wenn du komplexere Gesten mit Hilfe von künstlicher Intelligenz erkennen möchtest.

Letzte Aktualisierung am 2024-12-21 / Affiliate Links / Bilder von der Amazon Product Advertising API

Bausätze für dein nächstes Projekt

Alles, was du für dein nächstes Projekt brauchst – Bausätze inklusive Anleitung als E-Book und der benötigten Hardware.

ESP8266 Projekt

Wetterstation & Vorhersage

Miss die aktuelle Temperatur und Luftfeuchtigkeit und zeige dazu die Wettervorhersage auf einem OLED-Display an.

Bausatz anschauen

Arduino Projekt

Pflanzenwächter

Braucht deine Pflanze Wasser? Dieses Arduino Projekt gibt dir Bescheid, wenn es so weit ist.

Bausatz anschauen

ESP8266 Projekt

Webserver

Lerne, wie du mit deinem Webserver Messdaten ausgibst, Geräte steuerst und dir mit HTML und CSS ein Interface erstellst.

Bausatz anschauen

Arduino Projekt

Wetterstation

Baue deine eigene Wetterstation, die dir Temperatur und Luftfeuchtigkeit anzeigt.

Bausatz anschauen

Auch interessant

Mehr Projekte für Arduino, ESP32, Raspi & Co
Werde Mitglied bei Pollux Labs und finde dein nächstes Projekt. Zum Beispiel:
Über 100 Maker sind bereits Mitglied bei Pollux Labs
  • ESP32 Internetradio
  • Arduino Wetterstation
  • ESP8266 & Raspi Webserver
  • Automatische Bewässerung
  • ... und viele mehr!