Deteksi Gesture Tangan dengan Sensor APDS9960

Deteksi Gesture Tangan dengan Sensor APDS9960

Gunakan sensor APDS9960 untuk mendeteksi gesture tangan seperti up, down, left, dan right menggunakan Arduino Uno. Lengkap dengan wiring dan programnya.

Sensor APDS9960 merupakan salah satu sensor pintar yang mampu mendeteksi gerakan tangan (gesture), warna, jarak (proximity), dan intensitas cahaya sekitar. Pada tutorial kali ini, kita akan memfokuskan pada fitur gesture recognition, yaitu mendeteksi gerakan tangan ke arah atas, bawah, kiri, kanan, dekat, dan jauh.

Sensor ini sangat cocok digunakan dalam proyek tanpa sentuhan (touchless) seperti kontrol menu, smart home, atau perangkat wearable berbasis Arduino Uno.

Alat dan Bahan

KomponenJumlahKeterangan
Arduino Uno1Mikrokontroler utama
Sensor APDS99601Sensor gesture + proximity + light
Kabel Jumper5Untuk koneksi ke pin I2C dan INT

Wiring Diagram APDS9960

  • VCC (Merah) → 3.3V Arduino
  • GND (Hitam) → GND Arduino
  • SDA  → A4 Arduino
  • SCL → A5 Arduino
  • INT  → Pin 2

Pastikan sensor menghadap ke atas atau ke arah tangan kamu akan digerakkan.

Kode Program Gesture APDS9960

#include <Arduino.h>
#include <Wire.h>
#include <SparkFun_APDS9960.h>

#define APDS9960_INT 2
SparkFun_APDS9960 apds = SparkFun_APDS9960();
volatile int isr_flag = 0;

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

void setup() {
  Serial.begin(9600);
  pinMode(APDS9960_INT, INPUT);
  
  Serial.println(F("--------------------------------"));
  Serial.println(F("SparkFun APDS-9960 - GestureTest"));
  Serial.println(F("--------------------------------"));

  attachInterrupt(digitalPinToInterrupt(APDS9960_INT), 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(APDS9960_INT);
    handleGesture();
    isr_flag = 0;
    attachInterrupt(digitalPinToInterrupt(APDS9960_INT), interruptRoutine, FALLING);
  }
}

Penjelasan Kode

  • SparkFun_APDS9960 Library digunakan untuk memudahkan komunikasi dengan sensor.
  • Pin INT (Interrupt) akan LOW saat gesture terdeteksi, dan memicu interruptRoutine().
  • Fungsi handleGesture() digunakan untuk membaca arah gesture.
  • Output gerakan akan muncul di Serial Monitor, misalnya: UPDOWNLEFTRIGHTNEARFAR.

Untuk menggunakan library ini, install melalui Library Manager Arduino IDE → cari SparkFun APDS9960.

Referensi cepat:

Langkah Pengujian

  1. Sambungkan sensor seperti pada wiring diagram.
  2. Upload kode ke board Arduino Uno.
  3. Buka Serial Monitor dengan baudrate 9600.
  4. Lakukan gerakan tangan ke atas, bawah, kiri, kanan, atau dekat/jauh dari sensor.
  5. Amati hasil gesture di Serial Monitor.

Kesimpulan

Sensor APDS9960 menawarkan solusi praktis untuk proyek tanpa sentuhan. Dengan kemampuannya membaca gesture, kita dapat membuat kontrol gerakan seperti navigasi menusaklar otomatis, atau interaksi cerdas pada perangkat elektronik. Penggunaan dengan Arduino Uno juga sangat sederhana dan terbuka untuk dikembangkan lebih lanjut.

Cobalah kombinasikan sensor ini dengan LED, buzzer, atau bahkan layar OLED untuk hasil lebih interaktif!

Diskusi lebih lanjut kontak di bawah :

Media sosial lainnya :

Baca juga :

Cara Menggunakan Sensor Barcode GM77 dengan Arduino Uno

Detak Jantung & Oksigen Darah MAX30102 Arduino Uno