KE4042 DIY电子积木 PAJ7620手势识别传感器

1.概述

该模块基于PAJ7620U2手势识别传感器,它可识别9种不同方向的手势,包括上、下、左、右、前、后、顺时针、逆时针、摇摆。手势识别模块使用i2c接口,使用相应arduino库函数即可编程控制,手势识别模块返回的信号可用作为机器人接收的控制信号,从而实现对机器人的控制。内置的识别算法相当智能,能够把双手从生硬的按键中解放出来。手势识别传感器可用于非接触式控制场景,如非接触式鼠标,智能家居,汽车点击设备控制,机器人交互等。

2.规格参数

工作电压:3.3-5V(DC)

电流:50MA

最大功率:0.25W

工作温度:-10摄氏度 到 +50摄氏度

尺寸:31.6mmx23.7mm

接口:4PIN接口,IIC接口通讯协议

9种手势识别

环境光免疫力:<100K Lux

工作电流:3~10mA

定位孔:4.8mm

原理

原理图

接线图

QQ截图20211201165431

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