Arduino Tutorials

Gesten erkennen mit dem Sensor APDS9960

gesten erkennen mit dem 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 Nano 33 BLE Sense with Headers [ABX00035]
Uhr 64MHz, Flask 1MB, RAM 256KB.; Zwei 15-polige Steckverbinder eine auf jeder Seite der...
42,00 EUR

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 28.09.2020 / Affiliate Links / Bilder von der Amazon Product Advertising API

Vielleicht interessiert dich das auch

Kommentare sind nicht verfügbar