首先非常感谢EEPW能给我们提供这次宝贵的学习机会!让我们了解了基于STM32CUBE MX的图型可视法编程方法,掌握了串口输出、I2C和手势传感器PAJ7620U2等相关知识。在编写调试代码前,我们有必要了解下手势传感器PAJ7620U2的相关资料。
手势传感器模块官网链接:https://wiki.seeedstudio.com/Grove-Gesture_v1.0/
PAJ7620U2 Gesture Sensor是一款基于PAJ7620U2的手势识别模块,可直接识别9种基本手势,支持I2C接口,兼容3.3V/5V电平。
特点
基于PAJ7620U2传感器,可直接识别9种基本手势,支持手势中断输出
内置红外LED和光学镜头,能在低光和黑暗环境下工作
支持I2C接口通信,仅需两根信号脚即可控制
板载电平转换电路,可兼容3.3V/5V的逻辑电平
产品参数
工作电压:3.3V/5V
通信接口:I2C
识别距离:5CM ~ 15CM
识别手势:上、下、左、右、前、后、顺时针、逆时针、摇摆
速度:240HZ
识别视角:60° (对角线)
环境光免疫力:<100K LUX
产品尺寸:20MM × 20MM
过孔直径:2.0MM
应用场景:智能家居、办公室和教学;机器人交互、手势玩具、体感游戏装备
接口说明
引脚功能
引脚号 标识 管脚描述
1 GND 电源地
2 VCC 3.3V/5V电源正
3 SDA I2C数据线
4 SCL I2C时钟线
首先需要对PAJ7620U2模块连接器一端进行改造,改成杜邦线接口:
杜邦线一端分别接CN10的3(SCL)、5(SDA)、7(3V3)、9(GND)脚。如下图所示:
利用STM32CUBE MX进行基本代码的配置生成,然后自己进行功能部分的代码编写,这样就提高了编程的效率,节省了开发者大量的时间和精力。
首先在课程一:点灯+串口打印的基础上,我们只需要配置I2C即可。如下图所示:
这里需要强调的是,将PB6和PB7引脚配置成I2C1后,还需要对GPIO进行配置,将PB6和PB7配置为PULL-UP,否则需要焊接上拉电阻。
I2C配置参数查看,一般保持默认参数即可。
配置好之后,点击生成软件代码即可。
主要代码如下:
包含的头文件及定义:
PAJ7620初始化寄存器数组:219个
串口重定义:这里重点强调下,因为使用了Printf函数,所以需要对串口进行重定义。并且还需要通过project-options for target-target,勾选Use MicroLIB,勾选后如果程序编译报错,点击Rebuild即可。因为 keil 在你点击编译的时候只会编译内容有变动的部分(指预处理后的部分)。 当你选择使用 MicroLIB 的时候,编译器会自动添加宏定义__MICROLIB,相对应的,头文件中的内容就会有所改变,导致包含了头文件的 .c 文件内容改变。而 startup 中处存在的条件汇编语句却没有得到预处理和汇编: 被抛弃的部分是堆栈的初始化处理程序, 可以看出定义了__MICROLIB宏和没有定义时堆栈的初始化是交由不同的函数处理的。但是编译的时候没改变这里的条件汇编,结果没有初始化的程序了,因此报错"符号未定义"。解决方式同样很简单, 点击重新编译即可。
Main及while函数:
PAJ7620U2初始化函数:
手势检测输出函数:
串口输出结果如下图(整合了课程一:点灯+串口输出内容):
至此,此次课程学习完成!再次感谢EEPW给我的这次学习机会!