本次实用的是PAJ7620U2 手势传感器 Grove 平台评估扩展板,如下图:

PAJ7620一款光学数组式传感器,内置光源和环境光抑制滤波器集成的 LED,镜头和手势感测器在一个小的立方体模组,能在黑暗或低光环境下工作。同时传感器内置手势识别,支持 9个手势类型和输出的手势中断和结果,还提供接近检测功能,可用于感测物体接近或离开。工作原理是通过内部LED驱动器,驱动红外LED向外发射红外信号,当传感器阵列在有效地距离中探测到物体时,目标信息提取阵列会对探测目标进行特征原始数据地获取,获取数据会存在寄存器中,同时手势识别阵列会对原始数据进行识别处理,最后将手势结果存到寄存器中,用户可根据I2C接口对原始数据和手势数据地结果进行读取。

其中I2C_SCL和 I2C_SDA是连接 MCU的 IIC接口, 本模块没有INT引脚。
在PAJ7620内部有两个BANK 寄存器区域,分别是BANK0,BANK1。进入BANK0区域,往传感器0XEF地址写0X00。进入BANK1区域,往传感器0XEF地址写0x01。这方面的驱动文件还是通多的,这里我们通过改写其中一个驱动文件进行传感器的驱动。
在初始化部分对器件进行基本配置:
IIC1_port_Init();
/* 初始化PAJ7620模块 */
ret = PAJ7620_init();
if (ret != 0)
{
    printf("PAJ7620 init failed!\r\n");
    while (1)
    {
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
        delay_ms(1000);
    }
}
    
/* 配置ATK-MS7620模块为手势检测模式 */
ret = PAJ7620_mode_config(PAJ7620_MODE_GESTURE);
if (ret != 0)
{
    printf("PAJ7620 config failed!\r\n");
    while (1)
    {
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
        delay_ms(1000);
    }
}
printf("PAJ7620 config succedded!\r\n");在tx_app_thread_entry()中添加定时轮询检测程序:
time_cnt++;
if(time_cnt >= 200)
{
    time_cnt = 0;
    /* 获取手势 */
    ret = PAJ7620_get_gesture(&gesture);
    if (ret == PAJ7620_EOK)
    {
        switch (gesture)
        {
         case PAJ7620_GESTURE_UP:
         {
              printf("Gesture: Up\r\n");
              break;
         }
         case PAJ7620_GESTURE_DOWN:
         {
              printf("Gesture: Down\r\n");
              break;
         }
         case PAJ7620_GESTURE_LEFT:
         {
              printf("Gesture: Left\r\n");
              break;
         }
         case PAJ7620_GESTURE_RIGHT:
         {
              printf("Gesture: Right\r\n");
              break;
         }
         case PAJ7620_GESTURE_FORWARD:
         {
              printf("Gesture: Forward\r\n");
              break;
         }
             case PAJ7620_GESTURE_BACKWARD:
         {
              printf("Gesture: Backward\r\n");
              break;
         }
         case PAJ7620_GESTURE_CLOCKWISE:
         {
              printf("Gesture: Clockwise\r\n");
              break;
         }
         case PAJ7620_GESTURE_ANTICLOCKWISE:
         {
              printf("Gesture: Anticlockwise\r\n");
              break;
         }
         case PAJ7620_GESTURE_WAVE:
         {
              printf("Gesture: Wave\r\n");
              break;
         }
         default:
         {
              break;
         }
    }
}下面我们就进行具体功能的测试,检测到对应的手势后通过串口进行报告:


 
					
				
 
			
			
			
						
			 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

