Hoe gebaren te detecteren met Arduino en de APDS-9960-sensor

  • De APDS-9960 detecteert gebaren, nabijheid, kleur en omgevingslicht.
  • Hij communiceert via de I2C-bus en werkt op 3.3V.
  • Het is eenvoudig aan te sluiten en te programmeren op platforms zoals Arduino.
  • Er zijn Adafruit-bibliotheken die de integratie en het gebruik ervan vergemakkelijken.

apds-9960

De sensor APDS-9960, een klein technisch juweeltje, is een verbazingwekkend onderdeel dat bewegings- en nabijheidsdetectie mogelijk maakt en omgevingslicht en kleur meet. Gebruikt in geavanceerde elektronische apparaten zoals de Samsung Galaxy S5, ligt het tegenwoordig binnen het bereik van elke elektronicaliefhebber die met platforms zoals Arduino werkt. Met zijn vermogen om gebaren te detecteren binnen een bereik van 5 tot 20 cm en zijn gemakkelijke integratie met andere apparaten, is het de ideale keuze voor diegenen die gebarenbediening in hun projecten willen integreren.

In dit artikel zullen we diepgaand onderzoeken hoe deze sensor werkt en hoe je hem op een Arduino kunt aansluiten, waarbij we aandacht besteden aan de vele toepassingen die hij kan hebben en codevoorbeelden aanbieden waarmee je er snel mee aan de slag kunt.

Wat is een APDS-9960-sensor?

El APDS-9960 Het is een sensor die vier hoofdfunctionaliteiten combineert: gebarendetectie, nabijheid, kleur en omgevingslicht. Het is een apparaat dat zijn metingen communiceert met behulp van het I2C-communicatieprotocol, wat het gebruik ervan met microcontrollers zoals Arduino. Een van de voordelen is het vermogen om kleur en omgevingslicht te meten en gebaren te detecteren zonder contact, waarbij bewegingen zoals links, rechts, omhoog, omlaag, dichtbij en veraf worden herkend.

Deze sensor werkt dankzij de integratie van een infraroodzender en vier directionele fotodiodes, waarmee de bewegingsrichting van nabijgelegen objecten kan worden gedetecteerd en berekend. Daarnaast heeft het de mogelijkheid om de hoeveelheid omgevingslicht te meten en RGB-kleuren te detecteren.

De APDS-9960-sensor verbinden met Arduino

apds9960

Om de verbinding te maken APDS-9960 met Arduino hoeft u alleen maar de communicatie via de bus tot stand te brengen I2C. Deze sensor werkt op een spanning van 3.3 V, dus het is van cruciaal belang om de juiste aansluitingen te maken om schade te voorkomen, vooral als u met een 5V Arduino. In dit geval is het raadzaam om een logische niveau-adapter om de I2C-busspanning te verlagen.

Pinnen om aan te sluiten:
  • GND naar de GND-pin van Arduino.
  • VCC naar de 3.3V-pin van Arduino.
  • SDA naar de SDA-pin van Arduino.
  • SCL naar de SCL-pin van Arduino.

Als uw Arduino-model 5V is, moeten uiteraard extra voorzorgsmaatregelen worden genomen, hoewel in sommige gevallen is gemeld dat de sensor zou kunnen werken zonder beschadigd te raken. Op de langere termijn is dit echter nog niet helemaal zeker.

Bibliotheken en code voor Arduino

Om de APDS-9960 met Arduino te gebruiken, is een van de gemakkelijkste manieren het gebruik van de bibliotheek die is ontwikkeld door Adafruit, wat het gebruik ervan vereenvoudigt. Je kunt het downloaden van GitHub en installeer het rechtstreeks in de Arduino-ontwikkelomgeving.

Eenvoudig voorbeeld: gebaren weergeven via seriële poort

In dit eerste voorbeeld worden de gedetecteerde gebaren gelezen en weergegeven via de seriële poort. Beweeg eenvoudig uw hand over de sensor op een afstand tussen 5 en 20 cm om de gebaren te detecteren:

#include "Adafruit_APDS9960.h"

Adafruit_APDS9960 apds;

void setup() {
  Serial.begin(115200);
  if (!apds.begin()) {
    Serial.println("Error al inicializar el sensor, comprueba el cableado");
    while (1);
  }
  apds.enableGesture(true);
}

void loop() {
  uint8_t gesture = apds.readGesture();
  if (gesture == APDS9960_DOWN) Serial.println("Abajo");
  if (gesture == APDS9960_UP) Serial.println("Arriba");
  if (gesture == APDS9960_LEFT) Serial.println("Izquierda");
  if (gesture == APDS9960_RIGHT) Serial.println("Derecha");
}

Deze code is slechts een voorbeeld van wat u kunt doen met een gebarensensor zoals de APDS-9960. Wanneer u uw hand over het apparaat beweegt, detecteert het programma het gebaar en geeft het resultaat weer op de seriële poortconsole.

Geavanceerd voorbeeld: Knipperende LED op basis van gebaar

Voor dit tweede voorbeeld combineren we de gedetecteerde gebaren met de LED geïntegreerd in het bord. Afhankelijk van het gedetecteerde gebaar laten we de LED een specifiek aantal keren knipperen:

#include "Adafruit_APDS9960.h"

Adafruit_APDS9960 apds;

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  if (!apds.begin()) {
    Serial.println("Error al inicializar el sensor");
    while (1);
  }
  apds.enableGesture(true);
}

void loop() {
  uint8_t gesture = apds.readGesture();
  if (gesture == APDS9960_DOWN) blink(1);
  if (gesture == APDS9960_UP) blink(2);
  if (gesture == APDS9960_LEFT) blink(3);
  if (gesture == APDS9960_RIGHT) blink(4);
}

void blink(int times) {
  for (int i = 0; i < times; i++) {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(100);
    digitalWrite(LED_BUILTIN, LOW);
    delay(100);
  }
}

Veelvoorkomende problemen en oplossingen

Hoewel de APDS-9960 Het is een redelijk robuuste sensor, wel is het zo dat in omgevingen met veel licht of interferentie de metingen kunnen mislukken. Bovendien kan het, als het in niet-ideale omstandigheden wordt gebruikt, mogelijk geen beweging detecteren of zelfs valse positieven genereren.

Een ander aspect om in gedachten te houden is dat deze sensor behoorlijk afhankelijk is van de juiste omgevingsverlichting en, hoewel hij erg gevoelig is, werkt hij mogelijk niet goed met objecten in omstandigheden zoals glanzende oppervlakken of met handschoenen, omdat deze het licht mogelijk niet correct reflecteren. uitgezonden infrarood licht.

Het I2C-protocol dat dit apparaat gebruikt is vrij eenvoudig, maar toch is het essentieel om ervoor te zorgen dat de aansluitingen correct zijn en dat er geen problemen zijn met de spanning.

De APDS-9960-sensor is een uitstekend hulpmiddel voor projecten die gebaren- en nabijheidsdetectie willen integreren. Het is economisch, eenvoudig te integreren via I2C en beschikt over bibliotheken die het gebruik ervan vereenvoudigen. Hoewel het in sommige omgevingen problemen kan opleveren, maken de instelbare gevoeligheid en de mogelijkheid om achter glas te werken het een veelzijdige keuze. Met de meegeleverde codevoorbeelden kunt u met deze sensor aan de slag en het volledige potentieel ervan in uw projecten ontdekken.


Wees de eerste om te reageren

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.