Electronics

Gesture RGB GY-APDS9960 3.3V Module Purple

AED 28.35

1

Description

The RGB and Gesture Sensor module utilizes the APDS-9960 sensor's advanced architecture and intelligent functionalities to detect gestures, measure ambient light, and provide RGB color values. Its I2C communication, low power consumption, and noise reduction capabilities make it a reliable and efficient component for various applications that require touchless gesture control and light sensing. The module can be integrated into various applications such as home automation systems, interactive displays, robotics, and gaming interfaces. It provides a futuristic and intuitive way to interact with electronic devices without physical contact.

 

Package Includes:

  • 1x Gesture Sensing Identification Module GY-APDS9960 3.3v 

Features:

  • Ambient light and color measurement: The module accurately measures ambient light levels and can detect and differentiate various colors, providing valuable data for applications that require light sensing and color analysis.
  • Proximity detection: With built-in proximity detection capabilities, the sensor can detect the presence of objects or hands in close proximity, enabling touchless interaction and control.
  • Touchless gesture sensing: The APDS-9960 sensor utilizes advanced gesture recognition algorithms to interpret hand movements and gestures in real time. This allows users to control devices or interfaces without physical contact, simply by waving or swiping their hands.
  • IIC communication protocol: The module communicates using the IIC (Inter-Integrated Circuit) protocol, ensuring efficient and reliable data transmission between the sensor and the connected devices or microcontrollers.
  • 3.3V power supply: The module operates on a 3.3V power supply, making it compatible with a wide range of systems and microcontrollers.
  • Compact size: With dimensions of 20mm x 15.3mm, the module has a small footprint, making it easy to integrate into various projects and applications with limited space.
  • Versatile compatibility: The module can be seamlessly integrated into diverse applications such as home automation systems, interactive displays, robotics, and more. It provides a flexible solution for incorporating gesture control into your projects.

 

Description:

the RGB and Gesture Sensor, an impressive breakout board equipped with the powerful APDS-9960 sensor. This compact module goes beyond conventional sensing capabilities by offering ambient light and color measurement, proximity detection, and touchless gesture sensing. With a simple swipe of your hand, you can effortlessly control a wide range of devices, including computers, microcontrollers, robots, and more. The GY-APDS9960-3.3 model operates on a 3.3V power supply, ensuring compatibility with various systems. The module's key component, the APDS-9960 chip, is responsible for capturing and interpreting data from the surrounding environment. It communicates seamlessly using the IIC communication protocol, allowing for efficient and reliable data transmission. Measuring just 20mm x 15.3mm, this sensor's compact size belies its impressive capabilities. Its eye-catching purple color adds a touch of visual appeal to your projects, making it stand out among other components. With the RGB and Gesture Sensor, you gain access to a whole new level of interactivity and control. Whether you're creating interactive displays, designing intuitive user interfaces, or exploring the realm of robotics, this module offers a seamless and intuitive way to engage with your devices. Unlock the potential of gesture-based control and elevate your projects to new heights with the versatile and feature-rich RGB and Gesture Sensor.

 

Principle of Work:

 

its multifunction capabilities to detect gestures, ambient light, and RGB color values. The sensor consists of four photodiodes that detect the reflected infrared (IR) energy emitted by an onboard LED. When a gesture is performed, the IR energy is obstructed and reflected back to the sensor. The APDS-9960 sensor then captures the velocity and direction information of the reflected IR energy and converts it into digital data. This information allows the sensor to recognize various gestures performed by the user. The detection range of the sensor is between 4 to 8 inches (10 to 20 cm), providing a suitable range for gesture sensing. To facilitate communication with external devices, the module employs the I2C communication protocol. This protocol enables the transfer of data between the sensor and connected devices. The module consumes a minimal amount of current, approximately 1µA, and requires a power supply of 3.3V. It is important to note that the module should not be connected to a 5V pin to avoid potential damage. The gesture engine within the sensor features an intelligent architecture with various functionalities. These include automatic activation based on Proximity engine results, ambient light subtraction, cross-talk cancellation, dual 8-bit data converters, power-saving inter-conversion delay, a 32-dataset First-In, First-Out (FIFO) buffer, and interrupt-driven I2C communication. These features optimize power consumption, reduce noise, and enhance the overall performance of the module. the sensor incorporates adjustable IR LED timing, which helps minimize power consumption and noise levels. This feature allows for fine-tuning the sensor's performance based on specific requirements or environmental conditions.

 

Pinout of the Board:

 

  1. VCC: This pin is used to provide the power supply to the module. It should be connected to a +3.3V power source.
  2. GND: This pin is the ground connection and should be connected to the 0V reference of the power source.
  3. SDA: The Serial Data (SDA) pin is part of the I2C communication protocol. It serves as the bi-directional data line for transmitting and receiving data between the module and the connected microcontroller or device.
  4. SCL: The Serial Clock (SCL) pin is another part of the I2C communication protocol. It provides the clock signal for synchronizing the data transmission between the module and the connected microcontroller or device.
  5. INT: The Interrupt (INT) pin is an output pin used for interrupt-driven I2C communication. It is typically connected to the interrupt pin of the microcontroller or device to signal events or trigger specific actions based on the module's output or status.
  6. VL: The VL pin allows you to provide a different voltage level specifically for the LED, which can be useful in certain situations. It provides flexibility in controlling the LED power independently from the main power supply of the sensor.

 

Applications:

  1. Human-Machine Interaction (HMI): The module enables touchless gesture control, making it suitable for applications where physical contact is not desired or feasible. It can be used in HMI systems for controlling devices, interfaces, or appliances with simple hand gestures.
  2. Robotics: The module can be integrated into robotic systems to enable gesture-based control. It allows users to interact with robots intuitively, issuing commands or triggering specific actions through hand movements.
  3. Home Automation: With its gesture-sensing capabilities, the module can be utilized in home automation systems. Users can control various smart devices such as lights, thermostats, and appliances by waving or swiping their hand, offering a convenient and futuristic control mechanism.
  4. Interactive Displays: The module is well-suited for interactive display applications. It enables touchless interaction with digital signage, kiosks, and interactive exhibits, enhancing user engagement and interactivity.
  5. Gaming Interfaces: The module can be incorporated into gaming interfaces, adding a new level of immersive gameplay. Players can control characters or perform in-game actions using hand gestures, providing a unique and dynamic gaming experience.
  6. Proximity Detection: The module's proximity detection capability makes it suitable for applications such as automatic door systems, object detection, or presence sensing. It can be used to trigger actions or provide proximity-based feedback in various scenarios.
  7. Ambient Light Sensing: The module's ambient light sensing feature allows it to measure and respond to changes in light conditions. It can be utilized in applications that require adaptive lighting control, color adjustment, or light-sensitive functionality.

 

Circuit:

 

  • Connect the VCC pin of the module to the 3.3V power supply of the Arduino.
  • Connect the GND pin of the module to the GND (0V) of the Arduino.
  • Connect the SDA pin of the module to the SDA (data) pin of the Arduino. In most Arduino boards, this is pin A4.
  • Connect the SCL pin of the module to the SCL (clock) pin of the Arduino. In most Arduino boards, this is pin A5.
  • if you want to use the interrupt feature, connect the INT pin of the module to any digital pin of the Arduino. In the example code, pin 2 is used.

 

Library: 

  1. Open the Arduino IDE on your computer.
  2. Go to "Sketch" in the top menu bar and select "Include Library" > "Manage Libraries". The Library Manager window will open.
  3. In the Library Manager, there is a search bar at the top right corner. Type "SparkFun APDS9960" into the search bar and hit Enter.
  4. The search results will display the "SparkFun APDS9960" library by SparkFun Electronics. Click on it.
  5. A new window will open, displaying information about the library, including the version number and compatibility. Click the "Install" button to install the library.
  6. The installation process will begin, and you'll see a progress bar indicating the installation status. Once the installation is complete, you will see a "Installed" status next to the library name.
  7. Close the Library Manager window.

 

Code:

The code allows the Arduino to interact with the APDS-9960 Gesture Sensor by detecting gestures and displaying the corresponding output.

 
#include "Wire.h"
#include "SparkFun_APDS9960.h"

// Create an instance of the APDS9960 sensor
SparkFun_APDS9960 apds;

// Flag to indicate interrupt occurrence
volatile int isr_flag = 0;

// Function prototypes
void interruptRoutine();
void handleGesture();

void setup() {
  // Set interrupt pin as input
  pinMode(2, INPUT);

  // Initialize Serial port
  Serial.begin(9600);
  Serial.println();
  Serial.println(F("--------------------------------"));
  Serial.println(F("SparkFun APDS-9960 - GestureTest"));
  Serial.println(F("--------------------------------"));

  // Initialize interrupt service routine
  attachInterrupt(digitalPinToInterrupt(2), interruptRoutine, FALLING);

  // Initialize APDS-9960 (configure I2C and initial values)
  if (apds.init()) {
    Serial.println(F("APDS-9960 initialization complete"));
  } else {
    Serial.println(F("Something went wrong during APDS-9960 init!"));
  }

  // Start running the APDS-9960 gesture sensor engine
  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) {
    // Disable interrupt to prevent overlapping
    detachInterrupt(digitalPinToInterrupt(2));

    // Process the detected gesture
    handleGesture();

    // Reset the interrupt flag
    isr_flag = 0;

    // Re-enable the interrupt
    attachInterrupt(digitalPinToInterrupt(2), interruptRoutine, FALLING);
  }
}

void interruptRoutine() {
  // Set the interrupt flag to indicate gesture detection
  isr_flag = 1;
}

void handleGesture() {
  if (apds.isGestureAvailable()) {
    // Read and process the detected gesture
    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");
    }
  }
}

  • The required libraries, Wire.h (for I2C communication) and SparkFun_APDS9960.h (for the APDS-9960 sensor), are included.
  • An instance of the SparkFun_APDS9960 class is created to represent the sensor.
  • The isr_flag variable is declared as a flag to indicate the occurrence of an interrupt.
  • Function prototypes for interruptRoutine() and handleGesture() are provided.
  1. In the setup() function:

    • The interrupt pin (2) is set as an input.
    • The Serial port is initialized for communication and some initialization messages are printed.
    • The interrupt service routine is initialized using attachInterrupt() to call interruptRoutine() on a falling edge.
  2. In the loop() function:

    • When isr_flag is set (indicating a gesture interrupt), the interrupt is temporarily disabled to prevent overlapping.
    • The detected gesture is processed by calling handleGesture().
    • The interrupt flag is reset, and the interrupt is re-enabled.
  3. The interruptRoutine() function sets the isr_flag to indicate the detection of a gesture interrupt.

  4. The handleGesture() function is called when a gesture is available, as determined by apds.isGestureAvailable(). It reads and processes the detected gesture using apds.readGesture(), and based on the gesture type, it prints the corresponding direction or "NONE" to the Serial Monitor.

 

Technical Details:

  • Type: GY-APDS9960-3.3
  • Chip: APDS-9960
  • Power Supply Voltage: 3.3V
  • Communication Mode: IIC (Inter-Integrated Circuit) communication protocol
  • Size: 20mm x 15.3mm
  • Gesture Sensing: Yes
  • Ambient Light Sensing: Yes
  • RGB Color Sensing: Yes
  • Proximity Detection: Yes
  • Gesture Detection Range: 4 to 8 inches (10 to 20 cm)
  • Interrupt Pin: Yes (for interrupt-driven I2C communication)
  • Current Consumption: 1µA (ultra-low power)
  • LED Timing: Adjustable for power saving and noise reduction

 

Resources:

 

Comparisons:

The GY-APDS9960-3.3 and APDS9930 modules share similar sensing capabilities, operate at a 3.3V power supply, use the IIC communication protocol, and have a compact size. However, it's important to note that there may be some differences in performance, features, and specific implementation details between the two modules:

  1. Sensing Capabilities:

    • GY-APDS9960-3.3: The GY-APDS9960-3.3 module offers gesture sensing, ambient light sensing, RGB color sensing, and proximity detection.
    • APDS9930: The APDS9930 module also provides gesture sensing, ambient light sensing, RGB color sensing, and proximity detection. Both modules share similar sensing capabilities.
  2. Power Supply:

    • GY-APDS9960-3.3: The GY-APDS9960-3.3 module operates at a power supply voltage of 3.3V.
    • APDS9930: The APDS9930 module typically operates at a power supply voltage of 3.3V, similar to the GY-APDS9960-3.3 module.
  3. Communication Protocol:

    • GY-APDS9960-3.3: The GY-APDS9960-3.3 module communicates using the IIC (Inter-Integrated Circuit) protocol.
    • APDS9930: The APDS9930 module also uses the IIC (Inter-Integrated Circuit) protocol for communication. Both modules have the same communication protocol.
  4. Size:

    • GY-APDS9960-3.3: The GY-APDS9960-3.3 module has a compact size of 20mm x 15.3mm.
    • APDS9930: The APDS9930 module is also relatively small in size. Exact dimensions may vary depending on the specific module design.