通过一步一步的功能实现,顺理成章的完成了手势翻页笔的基本功能,接下来将在本题中对于手势翻页笔软硬件设计方面进行全面介绍。
一、功能需求分析
本次DIY所实现的功能为手势翻页笔,顾名思义,通过手势实现翻页的功能,本次选用的方式是通过手势传感器的采集实现翻页键PgUp和PgDn的实现,采用有线的方式,通过USB进行数据传输。
二、硬件需求分析
本次所使用的硬件主要是手势传感器——PAJ7620U2模块:
PAJ7620一款光学数组式传感器,内置光源和环境光抑制滤波器集成的 LED,镜头和手势感测器在一个小的立方体模组,能在黑暗或低光环境下工作。同时传感器内置手势识别,支持 9个手势类型,通过内部LED驱动器,驱动红外LED向外发射红外信号,当传感器阵列在有效地距离中探测到物体时,目标信息提取阵列会对探测目标进行特征原始数据地获取,获取数据会存在寄存器中,同时手势识别阵列会对原始数据进行识别处理,最后将手势结果存到寄存器中,用户可根据I2C接口对原始数据和手势数据地结果进行读取。
硬件接口主要是IIC接口,使用3.3V供电。
主控平台选用nucleo-h503rb开发板,板载的MCU为STM32H503RB,可不要小看这款MCU,虽然只有64引脚,可其使用的是Arm Cortex-M33,带有128 KB Flash,25 KB RAM,主频可高达250 MHz,而且最主要的是带有USB功能,板载的USB硬件接口是type-c接口:
该接口使我们传输数据的主要接口。
三、软件需求分析
通过硬件分析可以知道最主要的软件功能就是传感器数据的获取以及USB通信功能的实现,注意手势传感器的中断上报接口没有在座上,所以只能通过轮询的方式不断问是否有手势被检测到。IIC接口的通信速率不高,所以我们使用软件模拟的方式进行通信。
四、功能实现
咱们先看一下大致的硬件框图:
再看一下软件框图:
接下来就开始软件功能的实现,本次基础代码通过STM32CubeMX生成,这一点还是很友好的,尤其是涉及到了USB,可以省掉很多的繁琐步骤。软件功能的编写与调试使用STM32CubeIDE进行,通过编写手势传感器的基础驱动程序,编写IIC接口程序,轮询判断程序等内容实现手势翻页笔的具体功能,一些注意事项以及实现的关键代可以参见本次活动发表的过程贴,这里不在重新赘述了。
五、效果展示
本次的效果展示是通过视频的方式进行,通过实物操作以及电脑界面的变化来反应功能的效果,具体效果参见二楼地址。