0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于PAJ7620和STM32手势识别应用案例

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-06-18 16:43 次阅读

基于STM32手势识别应用案例

1.简介

 手势识别是计算机科学和语言技术中的一个主题,目的是通过数学算法来识别人类手势。 手势可以源自任何身体运动或状态,但通常源自面部或手。 本领域中的当前焦点包括来自面部和手势识别的情感识别。 用户可以使用简单的手势来控制或与设备交互,而无需接触他们。姿势,步态和人类行为的识别也是手势识别技术的主题。手势识别可以被视为计算机理解人体语言的方式,从而在机器和人之间搭建比原始文本用户界面或甚至GUI(图形用户界面)更丰富的桥梁。

手势识别使人们能够与机器进行通信,并且无需任何机械设备即可自然交互。 使用手势识别的概念,可以将手指指向计算机屏幕,使得光标将相应地移动。 这可能使常规输入设备(如鼠标,键盘甚至触摸屏)变得冗余。越来越多的电子设备都在使用手势识别功能。顾名思义,手势识别旨在识别人类的物理运动或“手势”。例如,在设备前面以特定模式挥动您的手可能会告诉它启动特定的应用程序,诸如此类的手势识别经常出现在智能手机和平板电脑中。

手势识别被分类为一种非接触式用户界面(TUI)。与触摸屏设备不同,TUI设备无需触摸即可控制。像Google Home和Amazon Alexa这样的语音控制智能扬声器是TUI的主要例子。

手势识别也打开了通向输入可能性的全新世界的大门。用户可以尝试其他基于手势的输入形式,而不是仅限于传统的输入形式。有些设备甚至允许用户设置自己的手势。

除智能手机和平板电脑外,手机识别还可用于汽车信息娱乐中心视频游戏控制台、人机界面等。最重要的是,手势识别技术正变得越来越流行,并且没有任何迹象表明它会很快放慢速度。

2.PAJ7620介绍

PAJ-7620U2是由原相科技公司开发的一款手势识别芯片, 内集成了光学数组式传感器单元,可以快速准确的对输入信号进行感应和输出处理。内置光源和环境光抑制滤波器,能在黑暗或低光环境下工作。它支持上、下、左、右、前、后、顺时针旋转、逆时针旋转和挥动的手势动作识别,以及支持物体接近检测等功能。可大致检测物体体积大小和亮度。使用IIC通信接口可达400KHz通信速率。

⚫可直接识别 9 种基本手势,支持手势中断输出

⚫ 内置红外 LED 和光学镜头,能在低光和黑暗环境下工作

⚫ 支持 I2C 接口通信,仅需两根信号脚即可控制

⚫ 板载电平转换电路,可兼容 3.3V/5V 的逻辑电平

poYBAGKsPrKATaDzAAK_vikK3Ro138.png#pic_center

2.1 通讯方式

  PAJ7620使用IIC通信接口可达400KHz通信速率。
  功能模块框图如下所示:

在这里插入图片描述

其中, I2C_SCL 和 I2C_SDA 是连接 MCU 的 IIC 接口, MCU 通过这个 IIC 接口来控制PAJ7620,在上述框图可以看到,该芯片内部自带 LED 驱动器,传感器感应阵列、目标信息提取阵列和手势识别阵列。 芯片工作时通过内部 LED 驱动器,驱动红外 LED向外发射红外线信号,当传感器阵列在有效的距离中探测到物体时,目标信息提取阵列会对探测目标进行特征原始数据的获取,获取的数据会存在寄存器中,同时手势识别阵列会对原始数据进行识别处理,最后将手势结果存到寄存器中,用户可根据 I2C 接口对原始数据和手势识别的结果进行读取。

2.3 硬件驱动

  1.打开STM32CubeMX软件,配置手势识别引脚PB6(IIC_SCL)、PB7(IIC_SDA)。

在这里插入图片描述

2.设置引脚模式为推挽输出模式,初始化电平为高电平。

在这里插入图片描述

3.软件实现

  1.通过手势实现时间切换、日期切换等;
  2.利用手势实现LED控制、蜂鸣器控制;
  3.实时时间校准,可通过串口校时;

3.1 串口校时

  通过自定义串口协议,通过串口调试助手获取PC端时间,完成RTC时间校准;发送数据格式为:*20220617121220。
  以 *作为起始标志,4字节年+2字节月+2字节日+2字节时+2字节分+2字节秒,字符串方式接收数据处理。

  if(usart1_flag)
  {
    printf("%srn",usart1_buff_rx);
    if(usart1_buff_rx[0]== '*')
    {
      DateToUpdate.Year=(usart1_buff_rx[3]-'0')*10+(usart1_buff_rx[4]-'0')*1;//年
      DateToUpdate.Month=(usart1_buff_rx[5]-'0')*10+(usart1_buff_rx[6]-'0')*1;//月
      DateToUpdate.Date=(usart1_buff_rx[7]-'0')*10+(usart1_buff_rx[8]-'0')*1;//日

      sTime.Hours=(usart1_buff_rx[9]-'0')*10+(usart1_buff_rx[10]-'0')*1;
      sTime.Minutes=(usart1_buff_rx[11]-'0')*10+(usart1_buff_rx[12]-'0')*1;
      sTime.Seconds=(usart1_buff_rx[13]-'0')*10+(usart1_buff_rx[14]-'0')*1;
      printf("time:%d/%d/%d -- %d:%d:%drn",DateToUpdate.Year,DateToUpdate.Month,DateToUpdate.Date,sTime.Hours,sTime.Minutes,sTime.Seconds);
      HAL_RTC_SetDate(&hrtc, &DateToUpdate,RTC_FORMAT_BIN);
      HAL_RTC_SetTime(&hrtc,&sTime,RTC_FORMAT_BIN);       
    }
    usart1_flag=0;
    usart1_count=0;
  }   

3.2 LED呼吸灯

  呼吸灯通过定时器PWM模式实现;设置定时器分频系数为72,周期时间为300us;

  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  TIM_MasterConfigTypeDef sMasterConfig = {0};
  TIM_OC_InitTypeDef sConfigOC = {0};

  /* USER CODE BEGIN TIM4_Init 1 */

  /* USER CODE END TIM4_Init 1 */
  htim4.Instance = TIM4;
  htim4.Init.Prescaler = 72;
  htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim4.Init.Period = 300;
  htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;

通过改变PWM波占空比来实现呼吸灯效果;

  if(flag==0)j++;
  else j--;
  if(j>=300)flag=1;
  if(j==0)flag=0;
  Delay_Ms(2);
  htim4.Instance->CCR3=j;//调节占空比
  htim4.Instance->CCR4=j;

3.3 手势识别检测

  PAJ7620支持上、下、左、右、前、后、顺时针旋转、逆时针旋转和挥动的手势动作识别。用户可根据 I2C 接口对原始数据和手势识别的结果进行读取。

paj7620u2_selectBank(BANK0);//切换BANK0寄存器区域
status = GS_Read_nByte(PAJ_GET_INT_FLAG1,2,&data[0]);//读取手势状态
if(!status)
{
	gesture_data =(u16)data[1]<<8 | data[0];
	if(gesture_data) 
	{
		switch(gesture_data)
		{
			case GES_UP:  //向上  		
				printf("向上 Uprn"); 
          		HAL_GPIO_WritePin(BEEP_GPIO_Port,BEEP_Pin, GPIO_PIN_RESET);//关闭蜂鸣器        
				ledflash=1;     
				break; 
			case GES_DOWM:  //向下
          		HAL_GPIO_WritePin(BEEP_GPIO_Port,BEEP_Pin, GPIO_PIN_SET);//开启蜂鸣器
				printf("向下 Dowmrn");          
				ledflash=1;      
				break; 
			case GES_LEFT: //向左 		
	          	if(rtc_stat==0)
	            {
	              rtc_stat=3;
	            }
	            else rtc_stat--;
            	printf("rtc_stat=%dn",rtc_stat);
				printf("向左 Leftrn");          
				ledflash=1;      
				break; 
			case GES_RIGHT:  //向右	
	            if(rtc_stat==4)
	            {
	              rtc_stat=0;
	            }
	            else rtc_stat++;						      
				printf("向右 Rightrn");      
				ledflash=1;      
				break; 
			case GES_FORWARD:  //向前							     
				printf("向前 Forwardrn");       
				ledflash=1;     
				break; 
			case GES_BACKWARD: //向后 		       
				printf("向后 Backwardrn");     
				ledflash=1;     
				break; 
			case GES_CLOCKWISE:   //顺时针							
				printf("顺时针 Clockwisern");     
				ledflash=1;     
				break;
			case GES_COUNT_CLOCKWISE:  //逆时针 			
				printf("逆时针 AntiClockwisern"); 
				ledflash=1;      
				break; 
			case GES_WAVE: 											
				printf("挥动 Wavern");          
				ledflash=1;     
				break; //挥动
			default:  ledflash=0; break;
		}
	}
}
pYYBAGKsPrSAOQ1-AA1qU3j0f1o432.png#pic_center

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2270

    文章

    10895

    浏览量

    355729
  • 手势识别
    +关注

    关注

    8

    文章

    225

    浏览量

    47786
  • HAL
    HAL
    +关注

    关注

    2

    文章

    70

    浏览量

    12607
收藏 人收藏

    评论

    相关推荐

    STM32开发教程 基于PAJ7620传感器模块的手势识别驱动详解

    PAJ7620是ALIENTEK推出的一款高性能手势识别传感器模块。该模块采用原相科技(Pixart)公司的 PAJ7620U2芯片,芯片内部集成了光学数组式传感器,以使复杂的
    的头像 发表于 06-07 08:56 1.3w次阅读
    <b class='flag-5'>STM32</b>开发教程 基于<b class='flag-5'>PAJ7620</b>传感器模块的<b class='flag-5'>手势</b><b class='flag-5'>识别</b>驱动详解

    PAJ7620手势传感器模块调试

    传感器介绍PAJ7620传感器是原相科技(Pixart)的一款内部集成光学阵列式传感器,以使复杂的手势和光标模式输出,内部集成了九种手势识别:上、下、左、右、向前、向后、顺时针、逆时
    发表于 02-18 15:38

    手势识别控制器制作

    目录智能家居硬件小制作(含源码)《手势识别控制器》基于PAJ7620手势模块、L298N驱动板、arduino介绍材料PAJ7620
    发表于 09-07 06:45

    STM32驱动PAJ7620手势识别传感器知识点分享,绝对实用

    STM32驱动PAJ7620手势识别传感器知识点分享,绝对实用
    发表于 12-17 06:34

    利用PAJ7620U2 Gesture Sensor手势识别控制小车

    引言Arduino或ESP32驱动小车作为一个经典应用,广泛被开源硬件爱好者改装。然而,其交互方式大部分依然是传统的按键交互。本次尝试改变Arduino 小车的交互方式,利用PAJ7620
    发表于 01-05 07:44

    PAJ7620手势传感器模块的描述与功能测试

    PAJ7620传感器是什么?PAJ7620传感器驱动有哪些注意事项?
    发表于 02-17 06:13

    PAJ7620传感器的驱动有哪些注意事项呢

    PAJ7620传感器是什么?PAJ7620传感器的驱动有哪些注意事项呢?
    发表于 03-09 07:50

    PAJ7620传感器的驱动思路和原理分别是什么

    PAJ7620传感器有何功能呢?PAJ7620传感器的驱动思路和原理分别是什么?
    发表于 03-09 06:48

    PAJ7620手势传感器模块调试步骤分享

    1、PAJ7620传感器介绍PAJ7620传感器是原相科技(Pixart)的一款内部集成光学阵列式传感器,以使复杂的手势和光标模式输出,内部集成了九种手势
    发表于 06-06 18:01

    【技术精选】嵌入式STM32原创征文活动精选文章

    应用案例基于PAJ7620STM32手势识别应用案例STM32应用案例 基于STM32F103
    发表于 07-27 18:26

    【RA4M2设计挑战赛】基于PAJ7620U2手势识别网关设计

    1.简介基于瑞萨R7FA4M2AD3CFP进行设计,对接PAJ7620U2手势识别模块实现一款手势识别网关。2.实现功能1.在瑞萨R7FA4
    发表于 03-05 23:40

    使用Arduino和PAJ7620手势传感器制作手势控制机器人

    使用Arduino和PAJ7620手势传感器制作手势控制机器人,简单程序即可实现。小小的传感器可以识别各种手势。它采用内置的空间传感器,可以
    发表于 09-27 06:17

    ATK-PAJ7620手势识别模块的用户手册免费下载

    ATK-PAJ7620_V1.2(V1.2 是版本号,下面均以 ATK-PAJ7620 表示该产品)是 ALIENTEK 推出的一款高性能手势识别传感器模块。该模块采用原相科技(Pix
    发表于 03-13 08:00 58次下载
    ATK-<b class='flag-5'>PAJ7620</b><b class='flag-5'>手势</b><b class='flag-5'>识别</b>模块的用户手册免费下载

    PAJ7620U2集成I2C接口手势识别传感器的数据手册免费下载

    PAJ7620U2将手势识别功能与通用的I2C接口集成到一个芯片中。它可以识别9种手势,包括向上移动、向下移动、向左移动、向右移动、向前移动
    发表于 03-13 08:00 83次下载
    <b class='flag-5'>PAJ7620</b>U2集成I2C接口<b class='flag-5'>手势</b><b class='flag-5'>识别</b>传感器的数据手册免费下载

    微雪电子PAJ7620U2手势传感器简介

    PAJ7620U2 手势识别模块 I2C接口 可直接识别9种基本手势,支持手势中断输出
    的头像 发表于 01-02 15:20 1.9w次阅读
    微雪电子<b class='flag-5'>PAJ7620</b>U2<b class='flag-5'>手势</b>传感器简介