一、器件知识:
认识手势模块的具体功能与参数
环境光免疫力:<100k Lux
其他特性:有效识别距离:30mm~200mm手势更新率:120Hz支持3.3V/5V电平兼容红外LED和光学镜头,能在低光和黑暗环境下工作
其它的两个我这边就不介绍了,详细请看规格书。
二、具体预设实施方法:
PAJ7620U2+继电器实现手势控制实现方式
准备工作1. 硬件准备:PAJ7620U2手势识别模块继电器(用于控制灯的开关)蜂鸣器适当的电源(5V电源)开发板(STM32H5) 连接线(配套排线)2. 软件准备:开发环境(STM32CubeMX IDE、Keil5)PAJ7620U2的驱动程序或库
硬件配置1. 连接手势识别模块:将PAJ7620U2手势识别模块与开发板通过I2C接口连接。在STM32F103中,这里使用PB6/PB7作为I2C接口。确保PAJ7620U2的供电正确,一般为3.3V。2. 连接继电器: 将继电器的控制引脚连接到开发板的GPIO口上,PB8/PC4。继电器的供电线接至适当的电源,5V。(我这里是电脑供电,电脑供电多少还是有一点不足,大家操作时要注意)3. 连接蜂鸣器:将继电器的控制引脚连接到开发板的某个GPIO口上,PB0。(无源蜂鸣器,使用的是定时器3,通道3)
软件配置
根据手势映射的结果,通过GPIO控制继电器的开关,进而控制灯的亮灭。我这里最后还是用手去按下按键,本来是计划用手势去控制的,想了一下,为了区分,才用按键来操作。
代码编写1. 初始化代码:初始化I2C接口、GPIO口。2. 手势读取代码:从PAJ7620U2读取手势数据。3. 手势映射代码:将手势数据映射到灯控制动作上。4. 继电器控制代码:根据映射结果,通过GPIO控制继电器的开关。五、测试与调试在实际操作前,建议先进行软件测试和仿真,确保代码逻辑正确。然后进行硬件连接和测试,根据测试结果进行调试和优化。
三、流程图:
四、模块连接图:
五、核心代码:
// 无限循环,程序将一直执行此循环内的代码 while (1) { // 这里是留给用户添加代码的标记,但在这个代码段中没有实际的内容 /* USER CODE END WHILE */ // 这里是另一个留给用户添加代码的标记 /* USER CODE BEGIN 3 */ // 调用一个函数(可能是I2C通信的函数)来从某个地址(PAJ_INT_FLAG1)读取一个16位的数据 // 这个数据代表手势或设备的某种状态 Gesture_Data = DEV_I2C_ReadWord(PAJ_INT_FLAG1); // 检查读取到的数据是否非零(即是否有手势或状态被识别) if (Gesture_Data) { // 使用switch语句根据Gesture_Data的值来执行不同的操作 switch (Gesture_Data) { // 如果Gesture_Data等于HID_UP(可能是代表向上的手势) case HID_UP: // 设置HID_Mouse_SET为PapeToUp(可能是表示光标或鼠标向上移动的函数或命令) HID_Mouse_SET=PapeToUp; break; // 如果Gesture_Data等于HID_DOWN(可能是代表向下的手势) case HID_DOWN: // 设置HID_Mouse_SET为PapeToUd(注意这里可能是个拼写错误,应该是PapeToDown或其他类似的) HID_Mouse_SET=PapeToUd; break; // 如果Gesture_Data等于HID_LEFT(可能是代表向左的手势) case HID_LEFT: // 设置HID_Mouse_SET为CursorToLeft(表示光标或鼠标向左移动的函数或命令) HID_Mouse_SET=CursorToLeft; break; // 如果Gesture_Data等于HID_RIGHT(可能是代表向右的手势) case HID_RIGHT: // 设置HID_Mouse_SET为CursorToRight(表示光标或鼠标向右移动的函数或命令) HID_Mouse_SET=CursorToRight; break; // 以下的case语句都未给出具体的操作,只是简单地跳过了 case HID_FORWARD: break; case HID_BACKWARD: break; case HID_CLOCKWISE: break; case HID_COUNT_CLOCKWISE: // 注意这里可能是个拼写错误,应该是"COUNTER_CLOCKWISE" break; case HID_WAVE: break; // 如果Gesture_Data的值不是上述任何一个,则执行default分支(但在这里default分支也是空的) default: break; } } // 注意:在这个代码段中,没有显示`HID_Mouse_SET`是如何被使用的。通常,你可能需要在这个switch语句之后或某个地方调用这个变量所代表的函数或命令。 }
六、设备管理器查看设备:
下图是接了开发板TYPE C的设备:
拿掉USB后的设备,少了一个:
七、使用CUBE MX配置步骤:
系统配置:
RCC配置:
定时器配置:
IIC配置:
USB配置:
串口配置:
GPIO配置:
系统时钟:
八、代码截图:
主函数HID判定:
GPIO初始化:
九、视频连接: