一,PAJ7620U2手势传感器介绍
PAJ7620U2 芯片是原相科技(PixArt)公司推出的一款光学数组式传感器,芯片内置集成光源和环境光抑制滤波的 LED、镜头和手势识别传感器,能在黑暗或低光环境下工作,同时内置了支持九种手势的手势识别和物体接近检测功能。可用于感测物体的接近和离开。
原相科技官网地址:
https://www.pixart.com/products-comparison/cn/15/%E6%89%8B%E5%8A%BF%E8%BE%A8%E8%AF%86
手势识别模块使用II2C接口,使用相应的库函数即可编程控制,手势识别模块返回的信号可用作为机器人接收的控制信号,从而实现对机器人的控制。内置的识别算法相当智能,能够把双手从生硬的按键中解放出来。手势识别传感器可用于非接触式控制场景如非接触式鼠标,智能家居,汽车点击设备控制,机器人交互等。
PAJ7620U2 芯片特点:
①IIC 接口支持高达 400Khz 通信速率。
②)内置 9个手势类型(上、下、左、右、前、后、顺时针旋转、逆时针旋转、挥动),支持输出中断。
③支持接近检测功能,检测物体体积大小和亮度。
④待机功耗电流 15uA。
⑤抗灯光干扰。
⑥手势速度在正常模式下为60°/S至600°/S,游戏模式为60°/S至1200°/S。
原理:
PAJ7620U2手势传感器的工作原理是基于红外线反射和类似微软Kinect的深度视觉技术实现的。
它使用一个由红外发光二极管(IR-LED)和一对红外光传感器(IR photodiode)组成的衍射贴片(Diffraction Gratings)矩阵来发射和接收红外光信号,这样可以让传感器从各个角度接收到反射回来的红外线。当用户握手、挥手或移动其他体部,手或者身体会产生细微的变化,这些变化会导致返回传感器的反射光强度和相位发生变化。PAJ7620U2手势传感器通过计算这些光学特征的变化来识别不同的手势并跟踪其运动轨迹。
与此同时,PAJ7620U2还使用类似Kinect的深度视觉技术,来辅助判断物体和用户之间的距离。 它可以通过红外光投射在用户身上产生的影子来获得深度信息。PAJ7620U2将反射和深度信息结合起来进行处理,可以更加精确地识别大量的手势。
因为它不需要用户直接接触设备,所以可以提供更加方便、舒适和卫生的交互方式。同时,PAJ7620U2的应用范围较广,不受环境光、皮肤颜色等因素的干扰,适用于室内、室外等不同场景。
我们使用的是PAJ7620U2 手势传感器 Grove 平台评估扩展板。
模块特点:
详细资料参照wiki:
https://wiki.seeedstudio.com/Grove-Gesture_v1.0/
PAJ7620U2的寄存器非常多,但是看了数据手册,对每个寄存器没有解释,很难看明白。
在PAJ7620U2的内部有两个BANK寄存器区域,分别是BANK0和 BANK1。不同的区域用于访问不同的功能寄存器,但想访问其中的BANK区域下的寄存器,需在访问前发送控制指令进入该寄存器区域。
从表可以看到,进入BANK0区域往传感器0xEF地址写0x00数值,而BANK1区域往传感器0xEF地址写 0x01数值。
芯片ID寄存器:可以用于测试IIC接口是否正常。
手势寄存器:
从数据手册上对寄存器完全没有解释,很难看懂寄存器是干啥的。甚至我都没有在数据手册上看到IIC设备地址说明。尴尬。
二,功能框架图
三,硬件连接
Grove Base Shield扩展板连接到Arduino接口上。IIC接口是连接STM32H503RBT6的PB6和PB7上。
Grove - LCD RGB Backlight是一款16x2的LCD显示器。如果你之前使用过Grove - Serial LCD, 那么你应该对1602的LCD不会陌生,不同的是Grove - LCD RGB Backlight采用了RGB的背光灯. Grove - LCD RGB Backlight内部使用低功耗CMOS技术的AIP31068L作为控制芯片. 整个模块使用I2C的通信方式。
四,cubeMx配置IIC接口
生产代码。
五,用户代码实现
在App_ThreadX_Init中创建i2c任务。
在i2c_app_thread_entry接口中实现PAJ7620U2的驱动及数据读取和LCD的驱动及显示。
编译、下载、运行。
开始测试:
向上(Up)、向下(Dowm)、向左(Left)、向右(Right)、向前(Forward)、向后(Backward)、顺时针(Clockwise)、逆时针(Counterclockwise)、和挥动(Wave)。
顺时针(Clockwise)、逆时针(Counterclockwise)、和挥动(Wave)比较难测试出来,其他还是比较敏感。