Grove Smart IR Gesture Sensor (PAJ7660)

Introdução
O Grove Smart IR Gesture Sensor é um módulo inteligente de reconhecimento de gestos equipado com um sensor de câmera infravermelha e algoritmo de IA aplicado. Ele pode detectar mais de 15 gestos com ampla detecção, enquanto suporta comunicação IIC e SPI. Este módulo também permite conexão direta Grove, Type-C e Seeed Studio XIAO.
Características
- Sensor de gestos com IA compacto: Equipado com um sensor de câmera infravermelha e com algoritmo de IA aplicado para realizar a detecção de gestos, em uma placa compacta de 4,3 cm x 2,1 cm
- Mais de 15 gestos com ampla detecção: Suporta vários gestos, como empurrão com N dedos, pinça, toque, agarrar, rotação, joinha para cima/baixo, estático, etc., com um alcance de detecção de 5–40 cm
- Alta compatibilidade: Compatível com a interface da série XIAO e o conector Grove por meio de comunicação I2C, enquanto suporta imagens exibidas no PC através de comunicação SPI
- Seleção flexível de tensão: Interface Grove compatível com sistemas de 3,3 V e 5 V
Visão geral do hardware

Primeiros passos
Plano de operação
A distância de operação do gesto é de 15 a 30 cm, não podendo exceder 35 cm. Com base no FOV do sensor de 78,3° (horizontal) e 62,9° (vertical), a área de operação é de 48 x 36 cm² a 30 cm.

Além da distância até o sensor, você também precisa prestar atenção aonde o sensor é colocado. Na frente do sensor, no canto superior esquerdo, há uma pequena figura de um ser humano. Se você ver a figura em pé, então você o colocou na posição correta. Se ela estiver de cabeça para baixo, é provável que você não obtenha um resultado de reconhecimento preciso.

Interferência de fundo
Como o ruído de fundo pode impactar a precisão do reconhecimento de gestos, é recomendado evitar objetos de fundo com reflexão relativamente alta atrás da palma. Em condição normal de reconhecimento de gestos, recomenda-se pelo menos 35 cm de distância entre a palma e o fundo.

Tipos de gestos
Todos os tipos de gestos suportados são descritos nas seções a seguir.
Definição de gestos
| Gesto | Descrição | Observação |
|---|---|---|
| N Finger (N=0~5) | 0 ~ 5 dedos sobre o topo do punho ![]() | Distância de operação de 15 a 30 cm Estático |
| N Finger Push (N=1~5) | N dedos se movem para a frente em direção ao sensor ![]() | Distância de operação de 15 a 30 cm Limite programável |
| Pinch | 2 dedos se aproximam para pinçar, se afastam para soltar ![]() | Distância de operação de 15 a 30 cm Pode usar a coordenada do centro da palma como cursor e relatar o resultado de Pinch |
| Rotação horário/anti-horário | Mover o pulso em um padrão circular ![]() | Distância de operação de 15 a 30 cm O ângulo detectado do gesto pode ser definido, pode relatar o valor do ângulo |
| Deslizar a mão para a direita ou esquerda | Deslizar e mover ambas as mãos afastando-as uma da outra por certa distância ![]() | Distância de operação de 15 a 30 cm Limite programável |
| Tap | Clique com 1 dedo (os dedos desaparecem) ![]() | Distância de operação de 15 a 30 cm Pode usar a coordenada do centro da palma como cursor |
| Grab | De 5 dedos para 0 dedo ![]() | Distância de operação de 15 a 30 cm Pode usar a coordenada do centro da palma como cursor Relata o resultado de Grab |
| Thumb Up | Dedão no topo do punho ![]() | Distância de operação de 15 a 25 cm |
| Thumb Down | Dedão na parte de baixo do punho ![]() | Distância de operação de 15 a 25 cm |
Modo de operação de gestos
Existem 3 modos de gestos: modos de polegar, cursor e gesto. Cada um deles define tipos específicos de gestos para determinados cenários de uso ou aplicações. O modo combinado padrão inclui todos os gestos, exceto os de polegar.
| Modo | Conexão padrão | Tipos de gestos |
|---|---|---|
| 2 | Modo de polegar | Thumb Up/Down |
| 4 | Modo cursor | Dedo estático Push Rotação Tap Pinch Grab |
| 5 | Modo gesto (Padrão) | Dedo estático Push Deslizar Rotação Tap (IS_SELECT flag = 1) Pinch (IS_SELECT flag = 1) Grab (IS_SELECT flag = 1) |
Tipos de hardware
O Grove Smart IR Gesture Sensor suporta uma ampla gama de protocolos de comunicação, com opção de IIC, SPI e USB. Os diferentes modos são selecionados diretamente através de uma chave DIP de 4 posições na parte traseira.

O diagrama e a tabela abaixo mostrarão como selecionar o modo que você deseja usar com a chave DIP de 4 posições.

| 1 | 2 | 3 | 4 | |
|---|---|---|---|---|
| I2C Mode | ON | OFF | ON | ON |
| SPI Mode | ON | ON | ON | ON |
| USB Mode | OFF | OFF | OFF | OFF |
A fiação e o código também podem ser ligeiramente diferentes ao usar padrões diferentes. Falaremos mais sobre isso nos exemplos a seguir.
Uso do software de computador superior
Se você quiser conectar o Grove Gesture Sensor ao seu computador por meio de um cabo USB e ver o reconhecimento e os resultados em tempo real, então usar o software de computador superior é a melhor opção para você.
Etapa 1. Baixar e abrir o software
Você pode baixar primeiro o software como um arquivo zip clicando aqui. Em seguida, descompacte o arquivo zip baixado, abra a pasta descompactada GestureDemo_220620_Customer e dê um clique duplo para executar o arquivo GestureDemo_220620_Customer.exe.
Neste ponto, uma janela de erro pode aparecer informando que o Geture Sensor não foi encontrado; podemos simplesmente fechar a mensagem de erro.
Etapa 2. Conectar o Grove Gesture Sensor ao PC
Em seguida, certifique-se de que o Grove Gesture Sensor está no modo USB, colocando a chave DIP de 4 posições toda em OFF.

Então, usando um cabo de dados de alta qualidade, conecte a porta USB-C do Grove Gesture Sensor à porta USB do seu computador.
Etapa 3. Ver resultados no software

Depois de conectado ao computador, clique no botão Run no canto superior esquerdo do software e, em seguida, selecione o modo Gesture para ver os resultados em tempo real.

Os tipos de gestos e sua introdução podem ser encontrados nas seções anteriores.
Visão Geral da Biblioteca Arduino
Se esta é a sua primeira vez usando o Arduino, recomendamos fortemente que você consulte Primeiros Passos com Arduino.
Função
Antes de começarmos a desenvolver um sketch, vamos analisar as funções disponíveis da biblioteca.
-
bool init()—— Esta função inicializa o Grove Gesture Sensor e retorna True se a inicialização for bem-sucedida e False se falhar. -
bool getResult(paj7620_gesture_t& res)—— A função serve para obter o resultado do reconhecimento de gesto pelo sensor.
Instalação
Como você já fez o download da biblioteca em formato zip, abra a Arduino IDE, clique em Sketch > Include Library > Add .ZIP Library. Escolha o arquivo zip que você acabou de baixar e, se a biblioteca for instalada corretamente, você verá Library added to your libraries na janela de aviso. Isso significa que a biblioteca foi instalada com sucesso.

Demo 1: Conectar sensores ao MCU por IIC
Passo 1. Coloque a chave DIP de 4 posições na posição IIC

A segunda posição da esquerda para a direita precisa ser ajustada para OFF, todas as outras devem ficar em ON.
Passo 2. Conecte o MCU ao Grove Gesture Sensor via cabo Grove
A interface IIC é compatível com a série XIAO e a série Arduino/Seeeduino. Se você estiver usando um Arduino/Seeeduino, talvez precise usar um cabo Grove para conectar à interface IIC deles.

Se você estiver usando XIAO, então tudo é fácil, você só precisa conectá-lo diretamente ao conector fêmea do Grove Gesture Sensor e usá-lo. Observe que a porta USB-C deve sempre ficar voltada para fora.

Passo 3. Fazer upload do programa
Copie o programa a seguir para a Arduino IDE, selecione a placa de desenvolvimento XIAO que você está usando, compile e faça o upload do programa.
Código 1: Modo Gesture (Padrão)
#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;
}
}
Se tudo correr bem, faça gestos diretamente para o Grove Gesture Sensor e ele irá exibir o resultado no monitor serial.

Código 2: Modo Thumb
#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);
}
Se tudo correr bem, faça gestos diretamente para o Grove Gesture Sensor e ele irá exibir o resultado no monitor serial.

Existem três modos diferentes do Grove Gesture Sensor. Nós concluímos o desenvolvimento do programa para os dois modos autônomos e os disponibilizamos aqui; consulte Gesture Operation Mode para mais informações sobre as diferenças entre os modos.
Demo 2: Conectar sensores ao XIAO por SPI
Se você deseja usar a abordagem SPI em vez de IIC, então você pode seguir os passos aqui para concluir o seu projeto.
Passo 1. Coloque a chave DIP de 4 posições na posição SPI

Todos os seletores precisam ser alternados para a posição ON.
Passo 2. Conecte o XIAO ao Grove Gesture Sensor
Conecte o XIAO diretamente ao conector fêmea do Grove Gesture Sensor e use-o. Observe que a porta USB-C deve sempre ficar voltada para fora.

Passo 3. Fazer upload do programa
Copie o programa a seguir para a Arduino IDE, selecione a placa de desenvolvimento XIAO que você está usando, compile e faça o upload do programa.
Código 1: Modo Gesture (Padrão)
#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;
}
}
Se tudo correr bem, faça gestos diretamente para o Grove Gesture Sensor e ele exibirá o resultado no monitor serial.

Código 2: Modo Polegar
#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);
}
Se tudo correr bem, faça gestos diretamente para o Grove Gesture Sensor e ele exibirá o resultado no monitor serial.

Existem três modos diferentes do Grove Gesture Sensor. Concluímos o desenvolvimento do programa para os dois modos autônomos e os disponibilizamos aqui; consulte Gesture Operation Mode para mais informações sobre as diferenças entre os diferentes modos.
Recursos
- [ZIP] Grove Gesture Sensor SCH&PCB
- [PDF] Grove Gesture Sensor SCH
- [Datasheet] PAG7661QN_FW-DS_V0.8_05072022_Confidential.pdf
Suporte Técnico e Discussão sobre o Produto
Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.








