Gesten-Sensor APDS-9960 Arduino anschließen & verwenden

Der GY-9960 APDS-9960 Arduino Gestenerkennungssensor ist ein Modul mit einem integrierten Sensor, der Licht- und Farberkennung, Näherungserkennung und berührungslose Gestenerkennung bietet. Mit einer einfachen Handbewegung können Sie Roboter, Lichter und mehr steuern. Schauen wir uns an, wie man das Sensor SparkFun APDS9960 Gestenerkennungsmodul an ein Arduino-Mikrocontroller anschließt.




Bestandteile:

Der Gestensensor GY-9960 APDS hat einen eingebauten Umgebungslichtsensor, einen Ultraviolett- und Infrarotfilter, vier separate Fotodioden (Empfänger, die von einem Objekt reflektierte IR-Strahlung erkennen) und eine IR-LED (Sender). Wenn wir eine Handbewegung machen, empfängt der Gesten-Sensor-Modul APDS-9960 (Gesture Sensor) das reflektierte IR-Licht und der Arduino-Mikrocontroller errechnet die Richtung der Handbewegung.

Gesten-Sensor APDS-9960 Arduino pinout, datasheet

Gesten-Sensor APDS-9960 Arduino pinout, datasheet

Merkmale des Gesten-Sensor-Modul APDS-9960 (datasheet)

  • Versorgungsspannung: 3.3 V
  • I2C-Adresse: 0x39
  • Annäherungserkennung
  • Gestenerkennung
  • Erkennung von Umgebungslicht und RGB-Farben
  • Betriebsreichweite: 10 bis 20 cm

An der Vorderseite des Moduls befinden sich 2 Jumper für PS und I2C PU:

PS – der Jumper verbindet die Stromversorgung des Moduls und der IR-LED. Wenn der Jumper geschlossen ist, sollte nur der VCC-Pin mit Strom versorgt werden. Wenn der Jumper offen ist, muss der SparkFun VL-Pin separat mit Strom versorgt werden, um die IR-LED zu betreiben. Standardmäßig ist dieser Jumper geschlossen.

I2C PU – der Jumper wird verwendet, um Pull-up-Widerstände an SDA und SCL anzuschließen. Wenn die Widerstände nicht benötigt werden, öffnen Sie den Jumper.

Wie man einen APDS-9960 an einen Arduino anschließt

Wie man einen APDS-9960 an einen Arduino anschließt

APDS-9960 I2C Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VDD 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Der Sensor ist in der Lage, die Gesamtlichtstärke in Lux oder die Lichtstärke in den drei Kanälen des Spektrums – rot, grün, blau (RGB) – zu erfassen. Er erkennt die Nähe und Entfernung eines Objekts vom Sensor, einfache Handgesten (Bewegung nach links, rechts, oben, unten). Um mit dem Modul zu arbeiten, installieren Sie die Bibliothek APDS9960.h, und nachdem Sie die Schaltung gebaut haben, laden Sie das Programm in das Arduino.

Programm für Gesten-Sensor-Modul APDS-9960 Arduino




#include "Wire.h"
#include "SparkFun_APDS9960.h"
 
#define APDS9960_INT 2
SparkFun_APDS9960 apds = SparkFun_APDS9960();
 
int isr_flag;
 
void setup() {
  Serial.begin(9600);                        
  attachInterrupt(0, interruptRoutine, FALLING);
 
  if ( apds.init() ) {
    Serial.println(F("APDS-9960 initialization complete"));
  } else {
    Serial.println(F("Something went wrong during APDS-9960 init!"));
  }
 
  if ( apds.enableGestureSensor(true) ) {
    Serial.println(F("Gesture sensor is now running"));
  } else {
    Serial.println(F("Something went wrong during gesture sensor init!"));
  }
}
 
void loop() {
  if( isr_flag == 1 ) {
    detachInterrupt(0);
    handleGesture();
    isr_flag = 0;
    attachInterrupt(0, interruptRoutine, FALLING);
  }
}
 
void interruptRoutine() {
  isr_flag = 1;
}
 
void handleGesture() {
    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_UP:
        Serial.println("UP");
        break;
      case DIR_DOWN:
        Serial.println("DOWN");
        break;
      case DIR_LEFT:
        Serial.println("LEFT");
        break;
      case DIR_RIGHT:
        Serial.println("RIGHT");
        break;
      case DIR_NEAR:
        Serial.println("NEAR");
        break;
      case DIR_FAR:
        Serial.println("FAR");
        break;
      default:
        Serial.println("NONE");
    }
  }
}
  1. Halten Sie Ihre Hand vor den GY-9960-LLC-Sensor – der Monitor des IDE-Ports des Arduino Uno / Arduino Nano zeigt Ihnen an, welche Geste erkannt wurde.

Wie man einen Gesten-Sensor APDS-9960 und LCD-Display

>Wie man einen Gesten-Sensor APDS-9960 und LCD-Display

LCD 1602 i2c Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VDD 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Programm für Gestenerkennung mit Arduino und APDS-9960

#include "Wire.h"
#include "SparkFun_APDS9960.h"
 
#define APDS9960_INT 2
SparkFun_APDS9960 apds = SparkFun_APDS9960();

#include "Wire.h"
#include "LiquidCrystal_I2C.h"

LiquidCrystal_I2C LCD(0x27,16,2);
 
int isr_flag;
 
void setup() {
  LCD.init();
  LCD.backlight();

  Serial.begin(9600);                        
  attachInterrupt(0, interruptRoutine, FALLING);
 
  if ( apds.init() ) {
    Serial.println(F("APDS-9960 initialization complete"));
  } else {
    Serial.println(F("Something went wrong during APDS-9960 init!"));
  }
 
  if ( apds.enableGestureSensor(true) ) {
    Serial.println(F("Gesture sensor is now running"));
  } else {
    Serial.println(F("Something went wrong during gesture sensor init!"));
  }
}
 
void loop() {
  LCD.setCursor(0, 0);

  if( isr_flag == 1 ) {
    detachInterrupt(0);
    handleGesture();
    isr_flag = 0;
    attachInterrupt(0, interruptRoutine, FALLING);
  }
}
 
void interruptRoutine() {
  isr_flag = 1;
}
 
void handleGesture() {
    if ( apds.isGestureAvailable() ) {
    switch ( apds.readGesture() ) {
      case DIR_UP:
        Serial.println("UP"); LCD.clear(); LCD.print("UP");
        break;
      case DIR_DOWN:
        Serial.println("DOWN"); LCD.clear(); LCD.print("DOWN");
        break;
      case DIR_LEFT:
        Serial.println("LEFT"); LCD.clear(); LCD.print("LEFT");
        break;
      case DIR_RIGHT:
        Serial.println("RIGHT"); LCD.clear(); LCD.print("RIGHT");
        break;
      case DIR_NEAR:
        Serial.println("NEAR"); LCD.clear(); LCD.print("NEAR");
        break;
      case DIR_FAR:
        Serial.println("FAR"); LCD.clear(); LCD.print("FAR");
        break;
      default:
        Serial.println("NONE"); LCD.clear(); LCD.print("NONE");
    }
  }
}
  1. Wenn keine Geste erkannt wurde, erscheint NONE auf dem Monitor des Ports.

Schlussfolgerung. Der Sensor GY 9960 LLC kann problemlos die Nähe eines Objekts, einfache Gesten, Licht und Farben (Helligkeit der RGB-Farbwerte) erkennen. Es gibt weitere Beispiele in der Bibliothek SparkFun_APDS9960.h, um die Fähigkeiten des Sensors zu demonstrieren. Mit AmbientLightInterrupt können Sie zum Beispiel das Umgebungslicht messen und das Beispiel ColorSensor liest die Werte für rotes, grünes und blaues Licht.

5/5 - (1 vote)


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert