STM32 手势识别传感器模块(PAJ7620)学习

这篇具有很好参考价值的文章主要介绍了STM32 手势识别传感器模块(PAJ7620)学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

模块介绍:

基本部分:

引脚配置:

工作原理:

展示部分:

代码部分展示(在正点的基础上加了一个读手势去控制舵机):

视频展示:


模块介绍:

基本部分:

手势模块搭载的芯片是PAJ7620,无论是正点原子的还是别的手势模块的底层是一致的,甚至代码也是通用的。

芯片内部集成了光学数组式传感器,以使复杂的手势和光标模式输出,自带九种手势识别,支持上、下、左、右、前、后、顺时针旋转、逆时针旋转和挥动的手势动作识别,有效探测距离为5-15cm;也可以检测物体的距离和大小

原理图(正点的):

paj7620,STM32与模块,stm32,学习,单片机

引脚配置:

VCC-GND:3.3V到5V

SCL-SDA:IIC接口

(额外)正点的模块是多两个个INT和NC的引脚:NT是中断引脚,NC是未连接引脚。NC没用.主要是INT,INT是中断引脚,或者相当于手势识别模块的输出引脚,NT引脚连接到外部微控制器的中断输入引脚(例如Arduino的数字引脚),用于通知微控制器检测到手势。当检测到手势时,PAJ7620芯片会将基于手势识别的控制信号转换成一个电平,从INT引脚输出,通过这个引脚,可以实现手势识别后的外部设备控制。

工作原理:

paj7620,STM32与模块,stm32,学习,单片机

手势识别模块的原理:通过红外线传感器读取手部的动作信息来识别手势,然后将手势信息转化为电信号输出,通过电路接口给连向的设备控制指令。

具体来说,芯片内置有一个红外线LED和一个接收电路。红外线LED发射一束红外线,当手部移动或进行手势动作时,红外线会被反射回来。接收电路接收反射回来的红外线,并将其转化为电信号。这些信号经过处理后,可以识别手势,然后转化为符合IIC协议的电信号输出到电路接口,用于操控外部设备。

模块展示:

paj7620,STM32与模块,stm32,学习,单片机paj7620,STM32与模块,stm32,学习,单片机

 paj7620,STM32与模块,stm32,学习,单片机

 注意:图三,凹进去的地方在上方,才是正确的摆放位置,如图三的方位就是正确的

展示部分:

代码部分展示(在正点的基础上加了一个读手势去控制舵机):

//手势识别测试
void Gesrure_test(void)
{
	u8 i;
    u8 status;
	u8 key;
	Servo_Init();
	u8 data[2]={0x00};
	u16 gesture_data;
	u8 ledflash=0;
	
	paj7620u2_selectBank(BANK0);//进入BANK0
	for(i=0;i<GESTURE_SIZE;i++)
	{
		GS_Write_Byte(gesture_arry[i][0],gesture_arry[i][1]);//手势识别模式初始化
	}
	paj7620u2_selectBank(BANK0);//切换回BANK0
	i=0;
	POINT_COLOR=BLUE;//设置字体为蓝色
	LCD_Fill(30,170,300,300,WHITE);
	LCD_ShowString(30,180,200,16,16,"KEY_UP: Exit the test");
	LCD_ShowString(30,210,200,16,16,"Gesrure test");
	POINT_COLOR=RED;//设置字体为蓝色
	while(1)
	{
        key = KEY_Scan(0);
		if(key==WKUP_PRES)
		{
			GS_Write_Byte(PAJ_SET_INT_FLAG1,0X00);//关闭手势识别中断输出
			GS_Write_Byte(PAJ_SET_INT_FLAG2,0X00);
			break;
		}			
        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:               LCD_ShowString(110,250,200,16,24,"UP          ");
					                           printf("Up\r\n");            ledflash=1;      break; //向上
					case GES_DOWM:             LCD_ShowString(100,250,200,16,24,"Dowm        ");      
               						           printf("Dowm\r\n");          ledflash=1;      break; //向下
					case GES_LEFT:             LCD_ShowString(100,250,200,16,24,"Left        ");           
  						                       printf("Left\r\n");          ledflash=1;      break; //向左
					case GES_RIGHT:            LCD_ShowString(100,250,200,16,24,"Right       ");       
                						       printf("Right\r\n");         ledflash=1;      break; //向右
					case GES_FORWARD:          LCD_ShowString(80,250,200,16,24,"Forward     ");        
						                       printf("Forward\r\n");       ledflash=1;      break; //向前
					case GES_BACKWARD:         LCD_ShowString(80,250,200,16,24,"Backward    ");    
            						           printf("Backward\r\n");      ledflash=1;      break; //向后
					case GES_CLOCKWISE:        LCD_ShowString(70,250,200,16,24,"Clockwise   ");     
                						       printf("Clockwise\r\n"); Angle += 30;     ledflash=1;      break; //顺时针
					case GES_COUNT_CLOCKWISE:  LCD_ShowString(50,250,200,16,24,"AntiClockwise");  
                   						       printf("AntiClockwise\r\n");Angle -= 30; ledflash=1;      break; //逆时针
					case GES_WAVE:             LCD_ShowString(100,250,200,16,24,"Wave         ");    
						                       printf("Wave\r\n");          ledflash=1;      break; //挥动
					default:  ledflash=0; break;
					
				}	
					if (Angle > 180)
				{
					Angle = 0;
				}
				if (Angle < 0)
				{
					Angle = 180;
				}
				Servo_SetAngle(Angle);
                if(ledflash)//DS1闪烁
				{   
					LED1=0;delay_ms(80);LED1=1;delay_ms(80);
					LED1=0;delay_ms(80);LED1=1;delay_ms(80);
					delay_ms(300);
					LCD_ShowString(40,250,200,16,24,"                        ");
					ledflash=0;
				}						
			}
			
		}
		delay_ms(50);
		i++;
		if(i==5)
		{
			LED0=!LED0;//提示系统正在运行	
			i=0;
		}		   
	}
}

视频展示:

VID_20230506_194518文章来源地址https://www.toymoban.com/news/detail-723809.html

到了这里,关于STM32 手势识别传感器模块(PAJ7620)学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于FPGA的手势识别(PAJ7620U2)

    1.基本信息         PAJ7620U2 是原相科技(PixArt)公司推出的一款光学数组式传感器,内置光源和环境光抑制滤波器集成的 LED,镜头和手势感测器在一个小的立方体模组,能在黑暗或低光环境下工作。同时传感器内置手势识别,支持 9 个手势类型和输出的手势中断结果。并

    2024年04月09日
    浏览(32)
  • 基于STM32的双轴XY摇杆传感器模块使用

    本文主要介绍的是如何通过STM32核心板 控制 双轴XY摇杆传感器模块 以及将传感信息打印到串口调试助手 提示:以下是本篇文章正文内容,下面案例可供参考 外形如图所示,共五个引脚 分别是VCC GND X轴传感模拟量输出 以及 Y轴传感模拟量输出 以及一个SW按键数字量输出 摇杆

    2024年02月03日
    浏览(34)
  • STM32+Zigbee模块实现串口通信获取传感器数据

    1.两个Zigbee透传模块 2.两块32板(我手上的是VET6和RCT6的两块板子),其它的板子也可以,不过注意一下启动文件对应 3.颗粒物传感器 DL-22无线串口模块 1.工作模式分为点对点和广播模式 点对点模式,要设置一个发送端,一个接收端,根据它说明书进行设置就好,还需要设置相

    2023年04月08日
    浏览(36)
  • 【STM32】DHT11温湿度模块传感器详解&代码

    DHT11是数字温湿度传感器,测量范围:湿度20%-95%,温度0-50℃,广泛应用于加湿器、温湿度计、空调、汽车等领域。 如上图DATA引脚用于MCU与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右(超时时间的判断)。一次完整的数据传输为40bit,高位先出(MSB最高

    2024年02月12日
    浏览(44)
  • STM32案例学习 GY-39环境监测传感器模块

    野火STM32F1系列开发板 正点STM32F1系列开发板 STM32F103ZET6核心板 GY-39环境监测传感器模块 GY-39 是一款低成本,气压,温湿度,光强度传感器模块。工作电压 3-5v,功耗小,安装方便。 其工作原理是,MCU 收集各种传感器数据,统一处理,直接输出计算后的结果。此模块,有两种方

    2024年02月12日
    浏览(36)
  • PAJ7620U2手势识别——激活BANK0(2)

      在前一章教程中,小编带领各位读者通过I2C协议配置了手势识别模块当中,较简单的唤醒操作。在本章教程中,小编会继续带领各位读者继续配置PAJ7620U2手势识别模块,本章主要是讲解如何激活BANK0,详细操作请各位读者继续浏览下去。   相信很多读者都会有这样的疑

    2024年02月08日
    浏览(29)
  • MQ-7一氧化碳传感器模块功能实现(STM32)

            首先来认识MQ-7模块,MQ-7可以检测空气中的一氧化碳(CO)浓度。他采用半导体气敏元件来检测CO的气体浓度,其灵敏度高、反应速度快、响应时间短、成本低廉等特点使得它被广泛应用于智能家居、工业自动化、环保检测等领域。         MQ-7模块的工作原理 基于

    2024年02月03日
    浏览(38)
  • 电子模块|压力传感器模块HX711---硬件介绍与C51&&STM32驱动

    HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性

    2024年02月14日
    浏览(47)
  • PAJ7620U2手势识别——读取手势数据寄存器数据与LED显示(完)

      在前面的教程中呢,小编带领各位读者完成了对所有寄存器的配置,本章教程只需要完成对手势数据寄存器里面的数据读出即可,因为我们只检测上、下、左、右挥手数据,因此用四个led灯作为挥手数据结果指示即可。本章教程是基于FPGA的PAJ7620U2手势识别的最后一章教程

    2024年02月04日
    浏览(75)
  • PAJ7620U2手势识别——读取手势数据寄存器数据与LED指示(完)

      在前面的教程中呢,小编带领各位读者完成了对所有寄存器的配置,本章教程只需要完成对手势数据寄存器里面的数据读出即可,因为我们只检测上、下、左、右挥手数据,因此用四个led灯作为挥手数据结果指示即可。本章教程是基于FPGA的PAJ7620U2手势识别的最后一章教程

    2024年02月07日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包