Skip to main content

Grove Sensor de Gestos IR Inteligente (PAJ7660)

Introducción

El Sensor de Gestos IR Inteligente Grove es un módulo inteligente de reconocimiento de gestos equipado con un sensor de cámara infrarroja y algoritmo de IA aplicado. Puede detectar más de 15 gestos con detección amplia mientras soporta comunicación tanto IIC como SPI. Este módulo también permite conexión directa con Grove, Type-C y Seeed Studio XIAO.

Características

  • Sensor de gestos AI compacto: Equipado con un sensor de cámara infrarroja y aplica algoritmo de IA para lograr detección de gestos, en una placa de tamaño compacto de 4.3cm x 2.1cm
  • Más de 15 gestos con detección amplia: Soporta varios gestos como empuje de N dedos, pellizco, toque, agarre, rotación, pulgar arriba/abajo, estático, etc., con un rango de detección de 5-40cm
  • Alta compatibilidad: Compatible con la interfaz de la serie XIAO y el conector Grove a través de comunicación I2C mientras soporta imágenes mostradas en PC a través de comunicación SPI
  • Selección de Voltaje Flexible: Interfaz Grove Compatible con Sistemas de 3.3V y 5V

Descripción del Hardware

Primeros Pasos

Plano de Operación

La distancia de operación de gestos es de 15 a 30 cm, la más lejana no puede exceder 35 cm. Basado en el FOV del Sensor 78.3° (horizontal) y 62.9°(vertical), y el área de operación es 48 x 36 cm² a 30 cm.

Además de la distancia al sensor, también necesitas prestar atención a dónde se coloca el sensor. En la parte frontal del sensor, en la esquina superior izquierda, hay una pequeña figura humana. Si ves la figura de pie erguida, entonces la has colocado en la posición correcta. Si está al revés, entonces es probable que no obtengas un resultado de reconocimiento preciso.

Interferencia de Fondo

Como el ruido de fondo puede impactar la precisión del reconocimiento de gestos, se recomienda evitar objetos de fondo relativamente más reflectivos detrás de la palma. En condiciones normales de reconocimiento de gestos, se recomienda al menos 35cm de distancia entre la palma y el fondo.

Tipos de Gestos

Todos los tipos de gestos soportados se describen en las siguientes secciones.

Definición de Gestos

GestoDescripciónNota
N Dedos (N=0~5)0 ~ 5 dedos en la parte superior del puño
Distancia de Operación 15 a 30 cm
Estático
Empuje de N Dedos (N=1~5)N dedos se mueven hacia adelante hacia el sensor
Distancia de Operación 15 a 30 cm
Umbral programable
Pellizco2 dedos se acercan para pellizcar, se abren para soltar
Distancia de Operación 15 a 30 cm
Puede usar la coordenada del centro de la palma como cursor y reportar resultado de Pellizco
Rotación CW/CCWMover la muñeca en un patrón circular
Distancia de Operación 15 a 30 cm
El ángulo detectado del gesto se puede configurar, puede reportar valor del ángulo
Deslizamiento de Mano Derecha o IzquierdaDeslizar y mover ambas manos alejándolas una de la otra por cierta distancia
Distancia de Operación 15 a 30 cm
Umbral programable
ToqueClic de 1 dedo (los dedos desaparecen)
Distancia de Operación 15 a 30 cm
Puede usar la coordenada del centro de la palma como cursor
Agarrar5 dedos a 0 dedos
Distancia de Operación 15 a 30 cm
Puede usar la coordenada del centro de la palma como cursor
Reportar resultado de Agarrar
Pulgar ArribaPulgar en la parte superior del puño
Distancia de Operación 15 a 25cm
Pulgar AbajoPulgar en la parte inferior del puño
Distancia de Operación 15 a 25cm

Modo de Operación por Gestos

Hay 3 modos de gestos: pulgar, cursor y modos de gestos. Cada uno de ellos define tipos específicos de gestos para ciertos escenarios de usuario o aplicaciones. El modo combinado predeterminado incluye todos los gestos excepto los pulgares.

ModoConexión PredeterminadaTipos de Gestos
2Modo PulgarPulgar Arriba/Abajo
4Modo CursorDedo Estático
Empujar
Rotar
Tocar
Pellizcar
Agarrar
5Modo Gesto (Predeterminado)Dedo Estático
Empujar
Deslizar
Rotar
Tocar (bandera IS_SELECT = 1)
Pellizcar (bandera IS_SELECT = 1)
Agarrar (bandera IS_SELECT = 1)

Tipos de Hardware

El Sensor de Gestos IR Inteligente Grove soporta una amplia gama de protocolos de comunicación con una opción de IIC, SPI y USB. Los diferentes modos se seleccionan directamente a través de un interruptor DIP de 4 posiciones en la parte posterior.


El diagrama y la tabla a continuación te mostrarán cómo seleccionar el modo que deseas usar con el interruptor DIP de 4 posiciones.

1234
Modo I2CONOFFONON
Modo SPIONONONON
Modo USBOFFOFFOFFOFF
note

El cableado y el código también pueden ser ligeramente diferentes cuando se usan diferentes patrones. Te contaremos más sobre esto en los siguientes ejemplos.

Uso del software de computadora superior

Si quieres conectar el Sensor de Gestos Grove a tu computadora a través de un cable USB y ver el reconocimiento en tiempo real y los resultados, entonces usar el software de computadora superior es lo mejor para ti.

Paso 1. Descargar y abrir el software

Puedes descargar el software como un archivo zip primero haciendo clic aquí. Luego, por favor descomprime el archivo zip descargado, abre la carpeta descomprimida GestureDemo_220620_Customer y haz doble clic para ejecutar el archivo GestureDemo_220620_Customer.exe.

tip

En este punto puede aparecer una ventana de error diciéndonos que el Sensor de Gestos no fue encontrado, simplemente podemos cerrar el mensaje de error.

Paso 2. Conectar el Sensor de Gestos Grove a la PC

A continuación, asegúrate de que el Sensor de Gestos Grove esté en modo USB girando el interruptor DIP de 4 posiciones completamente a OFF.

Luego, usando un cable de datos de alta calidad, conecta el puerto USB-C del Sensor de Gestos Grove al puerto USB de tu computadora.

Paso 3. Ver resultados en el software

Una vez conectado a la computadora, hacemos clic en el botón Run en la esquina superior izquierda del software y luego seleccionamos el modo Gesture para ver los resultados en tiempo real.

Los tipos de gestos y su introducción se pueden encontrar en las secciones anteriores.

Descripción general de la biblioteca de Arduino

tip

Si esta es tu primera vez usando Arduino, te recomendamos encarecidamente que consultes Comenzando con Arduino.

Función

Antes de comenzar a desarrollar un sketch, veamos las funciones disponibles de la biblioteca.

  1. bool init() —— Esta función inicializa el Sensor de Gestos Grove y devuelve True si la inicialización es exitosa y False si falla.

  2. bool getResult(paj7620_gesture_t& res) —— La función sirve para obtener el resultado del reconocimiento del gesto por parte del sensor.

Instalación

Dado que has descargado la biblioteca zip, abre tu Arduino IDE, haz clic en Sketch > Include Library > Add .ZIP Library. Elige el archivo zip que acabas de descargar, y si la biblioteca se instala correctamente, verás Library added to your libraries en la ventana de notificación. Lo que significa que la biblioteca se instaló exitosamente.


Demo 1: Conectar sensores al MCU por IIC

Paso 1. Gira el interruptor DIP de 4 posiciones a la posición IIC

La segunda posición de izquierda a derecha necesita configurarse en OFF, todas las demás están en ON.

Paso 2. Conecta el MCU al Sensor de Gestos Grove mediante el cable Grove

La interfaz IIC es compatible con la serie XIAO y la serie Arduino/Seeeduino. Si estás usando un Arduino/Seeeduino entonces puede que necesites usar un cable Grove para conectar a su interfaz IIC.

Si estás usando XIAO, entonces todo es fácil, solo necesitas conectarlo directamente al conector hembra del Sensor de Gestos Grove y usarlo. Ten en cuenta que el puerto USB-C siempre debe estar orientado hacia afuera.

Paso 3. Subir procedimiento

Copia el siguiente programa en el Arduino IDE, selecciona la placa de desarrollo XIAO que estés usando, compila y sube el programa.

Código 1: Modo Gesto (Predeterminado)

#include "Gesture.h"

pag7660 Gesture; // Combined mode is used by default

void setup() {
Serial.begin(9600);
while(!Serial) {
delay(100);
}
Serial.println("\nPAG7660 TEST DEMO: Gesture combined mode.");

if(Gesture.init()) {
Serial.println("PAG7660 initialization success");
} else {
Serial.println("PAG7660 initialization failed");
}
Serial.println("Please input your gestures:\n");
}

void loop() {
pag7660_gesture_t result;
if (Gesture.getResult(result)) {
printResultCombinedMode(result);
}
delay(100);
}

void printResultCombinedMode(const pag7660_gesture_t& result) {
const char *cursor_str[] = {
NULL,
"Tap",
"Grab",
"Pinch",
};
switch (result.type) {
case 0:
switch (result.cursor.type) {
case 1:
case 2:
case 3:
if (result.cursor.select)
Serial.println(cursor_str[result.cursor.type]);
break;
default:
break;
}
break;
case 1:
case 2:
case 3:
case 4:
case 5:
Serial.print(result.type);
Serial.println("-finger");
break;
case 6:
Serial.print("Rotate Right ");
Serial.println(result.rotate);
break;
case 7:
Serial.print("Rotate Left ");
Serial.println(result.rotate);
break;
case 8:
Serial.println("Swipe Left");
break;
case 9:
Serial.println("Swipe Right");
break;
case 19:
case 20:
case 21:
case 22:
case 23:
Serial.print(result.type - 19 + 1);
Serial.println("-finger push");
break;
default:
break;
}
}

Si todo va bien, haz gestos directamente hacia el Sensor de Gestos Grove y mostrará el resultado en el monitor serie.

Código 2: Modo Pulgar

#include "Gesture.h"

pag7660 Gesture(GESTURE_THUMB_MODE); // Thumb mode is used

void setup() {
Serial.begin(9600);
while(!Serial) {
delay(100);
}
Serial.println("\nPAG7660 TEST DEMO: Gesture thumb mode.");

// initialize with a SPI chip select pin number to use SPI
if(Gesture.init()) {
Serial.println("PAG7660 initialization success");
} else {
Serial.println("PAG7660 initialization failed");
}
Serial.println("Please input your gestures:\n");
}

void loop() {
pag7660_gesture_t result;
if (Gesture.getResult(result)) {
if (result.thumb.up)
Serial.println("Thumb Up");
else if (result.thumb.down)
Serial.println("Thumb Down");
}
delay(100);
}

Si todo va bien, haz gestos directamente hacia el Sensor de Gestos Grove y mostrará el resultado en el monitor serie.

tip

Hay tres modos diferentes del Sensor de Gestos Grove. Hemos completado el desarrollo del programa para los dos modos independientes y los ponemos a disposición aquí, consulta Modo de Operación de Gestos para más información sobre las diferencias entre los diferentes modos.

Demo 2: Conectar sensores a XIAO por SPI

Si deseas usar el enfoque SPI en lugar del IIC, entonces puedes consultar los pasos aquí para completar tu proyecto.

Paso 1. Gira el interruptor DIP de 4 posiciones a la posición SPI

Todos los interruptores necesitan ser cambiados a la posición ON.

Paso 2. Conecta el XIAO al Sensor de Gestos Grove

Conecta XIAO directamente al conector hembra del Sensor de Gestos Grove y úsalo. Ten en cuenta que el puerto USB-C siempre debe estar orientado hacia afuera.

Paso 3. Subir procedimiento

Copia el siguiente programa en el Arduino IDE, selecciona la placa de desarrollo XIAO que estés usando, compila y sube el programa.

Código 1: Modo Gesto (Predeterminado)

#include "Gesture.h"

#define PAG7660_CS D3
pag7660 Gesture; // Combined mode is used by default

void setup() {
Serial.begin(9600);
while(!Serial) {
delay(100);
}
Serial.println("\nPAG7660 TEST DEMO: Gesture combined mode.");

if(Gesture.init(PAG7660_CS)) {
Serial.println("PAG7660 initialization success");
} else {
Serial.println("PAG7660 initialization failed");
}
Serial.println("Please input your gestures:\n");
}

void loop() {
pag7660_gesture_t result;
if (Gesture.getResult(result)) {
printResultCombinedMode(result);
}
delay(100);
}

void printResultCombinedMode(const pag7660_gesture_t& result) {
const char *cursor_str[] = {
NULL,
"Tap",
"Grab",
"Pinch",
};
switch (result.type) {
case 0:
switch (result.cursor.type) {
case 1:
case 2:
case 3:
if (result.cursor.select)
Serial.println(cursor_str[result.cursor.type]);
break;
default:
break;
}
break;
case 1:
case 2:
case 3:
case 4:
case 5:
Serial.print(result.type);
Serial.println("-finger");
break;
case 6:
Serial.print("Rotate Right ");
Serial.println(result.rotate);
break;
case 7:
Serial.print("Rotate Left ");
Serial.println(result.rotate);
break;
case 8:
Serial.println("Swipe Left");
break;
case 9:
Serial.println("Swipe Right");
break;
case 19:
case 20:
case 21:
case 22:
case 23:
Serial.print(result.type - 19 + 1);
Serial.println("-finger push");
break;
default:
break;
}
}

Si todo va bien, haz gestos directamente hacia el Sensor de Gestos Grove y mostrará el resultado en el monitor serie.

Código 2: Modo Pulgar

#include "Gesture.h"

#define PAG7660_CS D3
pag7660 Gesture(GESTURE_THUMB_MODE); // Thumb mode is used

void setup() {
Serial.begin(9600);
while(!Serial) {
delay(100);
}
Serial.println("\nPAG7660 TEST DEMO: Gesture thumb mode.");

// initialize with a SPI chip select pin number to use SPI
if(Gesture.init(PAG7660_CS)) {
Serial.println("PAG7660 initialization success");
} else {
Serial.println("PAG7660 initialization failed");
}
Serial.println("Please input your gestures:\n");
}

void loop() {
pag7660_gesture_t result;
if (Gesture.getResult(result)) {
if (result.thumb.up)
Serial.println("Thumb Up");
else if (result.thumb.down)
Serial.println("Thumb Down");
}
delay(100);
}

Si todo va bien, haz un gesto directamente hacia el Sensor de Gestos Grove y mostrará el resultado en el monitor serie.

tip

Hay tres modos diferentes del Sensor de Gestos Grove. Hemos completado el desarrollo del programa para los dos modos independientes y los ponemos a disposición aquí, consulta Modo de Operación de Gestos para más información sobre las diferencias entre los diferentes modos.

Recursos

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...