Pular para o conteúdo principal

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

GestoDescriçãoObservaçã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
Pinch2 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árioMover 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 esquerdaDeslizar 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
TapClique 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
GrabDe 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 UpDedão no topo do punho
Distância de operação de 15 a 25 cm
Thumb DownDedã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.

ModoConexão padrãoTipos de gestos
2Modo de polegarThumb Up/Down
4Modo cursorDedo estático
Push
Rotação
Tap
Pinch
Grab
5Modo 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.

1234
I2C ModeONOFFONON
SPI ModeONONONON
USB ModeOFFOFFOFFOFF
nota

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.

dica

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

dica

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.

  1. bool init() —— Esta função inicializa o Grove Gesture Sensor e retorna True se a inicialização for bem-sucedida e False se falhar.

  2. 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.

dica

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.

dica

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

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.

Loading Comments...