1.概述
该模块基于PAJ7620U2手势识别传感器,它可识别9种不同方向的手势,包括上、下、左、右、前、后、顺时针、逆时针、摇摆。手势识别模块使用i2c接口,使用相应arduino库函数即可编程控制,手势识别模块返回的信号可用作为机器人接收的控制信号,从而实现对机器人的控制。内置的识别算法相当智能,能够把双手从生硬的按键中解放出来。手势识别传感器可用于非接触式控制场景,如非接触式鼠标,智能家居,汽车点击设备控制,机器人交互等。
2.规格参数
工作电压:3.3-5V(DC)
电流:50MA
最大功率:0.25W
工作温度:-10摄氏度 到 +50摄氏度
接口:4PIN接口,IIC接口通讯协议
9种手势识别
环境光免疫力:<100K Lux
工作电流:3~10mA
定位孔:4.8mm
原理
接线图
5.测试代码(测试软件版本:arduino-1.8.12)
#include <Wire.h>
#include “paj7620.h”
/*
Notice: When you want to recognize the Forward/Backward gestures, your gestures’ reaction time must less than GES_ENTRY_TIME(0.8s).
You also can adjust the reaction time according to the actual circumstance.
*/
#define GES_REACTION_TIME 500 // You can adjust the reaction time according to the actual circumstance.
#define GES_ENTRY_TIME 800 // When you want to recognize the Forward/Backward gestures, your gestures’ reaction time must less than GES_ENTRY_TIME(0.8s).
#define GES_QUIT_TIME 1000
void setup()
{
uint8_t error = 0;
Serial.begin(9600);
Serial.println(“\nPAJ7620U2 TEST DEMO: Recognize 9 gestures.”);
error = paj7620Init(); // initialize Paj7620 registers
if (error)
{
Serial.print(“INIT ERROR,CODE:”);
Serial.println(error);
}
else
{
Serial.println(“INIT OK”);
}
Serial.println(“Please input your gestures:\n”);
}
void loop()
{
uint8_t data = 0, data1 = 0, error;
error = paj7620ReadReg(0x43, 1, &data); // Read Bank_0_Reg_0x43/0x44 for gesture result.
if (!error)
{
switch (data) // When different gestures be detected, the variable ‘data’ will be set to different values by paj7620ReadReg(0x43, 1, &data).
{
case GES_RIGHT_FLAG:
delay(GES_ENTRY_TIME);
paj7620ReadReg(0x43, 1, &data);
if(data == GES_FORWARD_FLAG)
{
Serial.println(“Forward”);
delay(GES_QUIT_TIME);
}
else if(data == GES_BACKWARD_FLAG)
{
Serial.println(“Backward”);
delay(GES_QUIT_TIME);
}
else
{
Serial.println(“Right”);
}
break;
case GES_LEFT_FLAG:
delay(GES_ENTRY_TIME);
paj7620ReadReg(0x43, 1, &data);
if(data == GES_FORWARD_FLAG)
{
Serial.println(“Forward”);
delay(GES_QUIT_TIME);
}
else if(data == GES_BACKWARD_FLAG)
{
Serial.println(“Backward”);
delay(GES_QUIT_TIME);
}
else
{
Serial.println(“Left”);
}
break;
case GES_UP_FLAG:
delay(GES_ENTRY_TIME);
paj7620ReadReg(0x43, 1, &data);
if(data == GES_FORWARD_FLAG)
{
Serial.println(“Forward”);
delay(GES_QUIT_TIME);
}
else if(data == GES_BACKWARD_FLAG)
{
Serial.println(“Backward”);
delay(GES_QUIT_TIME);
}
else
{
Serial.println(“Up”);
}
break;
case GES_DOWN_FLAG:
delay(GES_ENTRY_TIME);
paj7620ReadReg(0x43, 1, &data);
if(data == GES_FORWARD_FLAG)
{
Serial.println(“Forward”);
delay(GES_QUIT_TIME);
}
else if(data == GES_BACKWARD_FLAG)
{
Serial.println(“Backward”);
delay(GES_QUIT_TIME);
}
else
{
Serial.println(“Down”);
}
break;
case GES_FORWARD_FLAG:
Serial.println(“Forward”);
delay(GES_QUIT_TIME);
break;
case GES_BACKWARD_FLAG:
Serial.println(“Backward”);
delay(GES_QUIT_TIME);
break;
case GES_CLOCKWISE_FLAG:
Serial.println(“Clockwise”);
break;
case GES_COUNT_CLOCKWISE_FLAG:
Serial.println(“anti-clockwise”);
break;
default:
paj7620ReadReg(0x44, 1, &data1);
if (data1 == GES_WAVE_FLAG)
{
Serial.println(“wave”);
}
break;
}
}
delay(100);
}
6.代码说明
在Arduino编辑器的项目—加载库—库管理里找到Paj7620并下载安装,装好之后就能在示例里找到“Gesture PAJ7620”这个东西,然后安装就好了。里面有两个示例脚本,一个是9种手势检测,一个是15种手势检测。注意:在我们测试手势时会有0.8秒的延迟。
7.测试结果
按照上图接线,烧录好程序,上电后,打开串口监视器并设置波特率为9600,当我们在模块前方摆动手势时,串口监视器上将显示我们对应的手势,如下图。
8.资料下载链接
链接:https://pan.baidu.com/s/1umJdGXvqi1Fod5PZa0O-PQ
提取码:keye