基于STM32的手势识别控制系统的设计

2023-03-09 03:17贾书香
黑龙江科学 2023年2期
关键词:液晶屏顺时针手势

贾书香

(山东华宇工学院,山东 德州 253034)

手势识别技术是一种自然、简洁、直接的新型技术,已成为交互性技术研究的热点,被广泛应用于交通、医疗、无线设备操控、手语翻译、VR游戏等领域。比如其可实现对交通信号的识别,将其应用于医疗器械可减少交叉感染。近年来,人机交互不断发展,要将手势识别技术用于计算机交互,需对其进行深入研究,利用手势识别实现控制。

1 系统总体设计方案

该系统包括STM32单片机主控板、手势识别模块、JR6001语音播报模块和OLED显示器等模块。系统整体框图如图1所示。

图1 系统整体框图Fig.1 Overall block diagram of the system

该系统以STM32作为核心处理器,集成了手势检测系统、OLED显示器和JR6001语音播报等模块。手势识别系统的主控制模块是STM32单片机,外围实现手势信号获取的是PAJ7620光学数组传感器,当传感器阵列在有效的距离中探测到物体时,目标信息提取阵列会对探测目标进行特征原始数据获取并储存在寄存器中,同时对原始数据进行识别信息处理,将处理得到的手势结果存在寄存器中。

单片机驱动OLED12864液晶屏显示手势动作的文字形式,为了进一步对手势控制效果进行展示,使用上下左右4个朝向的LED灯作为手势响应设备,手势向左则驱动左侧LED灯点亮,其他“右、上、下”3个朝向同理。

通过语音播报系统对当前手势进行播报,手势向前则驱动语音播报模块播放“当前手势为向前”“后、顺时针、逆时针”3个朝向同理。

2 硬件模块设计

2.1 单片机模块设计

手势识别控制系统的主控核心是STM32,由晶振电路及复位电路构成。单片机在结构上主要分为存储器、控制器、并行I/O口、时钟电路4部分。单片机内部的控制器类似于大脑的功能,协调与控制系统进行工作,能够对各个环节进行实时调控。

晶振电路设计采用内部时钟的应用形式,分别在OSCIN、OSCOUT引脚上接入晶振及电容,以确保电路可提供准确的单频振荡,为系统的平稳运行提供基础性的时钟信号。晶振电路中设有2个LED,分别串联电阻形成的指示灯模块,主要用于系统能否进行正常运转的显示操作,同时对下载程序是否有效进行判别。在单片机最小系统中,复位电路的主要作用是在系统程序跑乱、系统内部程序数据不能正常执行、程序代码混乱的情况下,通过上电提供给系统正常工作状态下的相反的电平,以达到系统程序重新运行的目的。复位电路由按键和0.1uF并联后再串联1个10K电阻构成。

2.2 PAJ7620手势识别模块

PAJ7620内部自带LED驱动器、传感器感应阵列、目标信息提取阵列和手势识别阵列等,工作时通过内部LED驱动器驱动红外LED,向外发射红外线信号,当传感器阵列在有效的距离中探测到物体时,目标信息提取阵列会对探测目标进行特征原始数据获取,获取的数据存在寄存器中,同时手势识别阵列对原始数据进行识别信息处理,将结果存到寄存器中,用户可使用I2C接口对原始数据和手势识别的结果进行读取。此模块采用“原相科技”的PAJ7620芯片,是一个5脚器件,设计时将1脚VCC接到电源供电信号上,2脚GND与主板的大地信号互联,SCL时钟信号连接到单片机的PA2接口,SDA数据传输信号连接到单片机的PA3接口。

2.3 语音模块和LED灯

2.3.1 语音模块

语音播报模块主要采用深圳市佳仁科技有限公司开发的JR6001芯片,此模块自带USB接口,能灵活更换SPI-flash内的的语音内容,省去了传统语音芯片需要安装上位机更换语音的环节,SPI FLASH直接模拟成U盘,与拷贝U盘一样,非常方便。

JR6001语音模块主要用来体现不同手势不同响应的效果。当进行手势识别测试时,屏幕会显示相应的手势,“向前”“向后”“顺时针”和“逆时针”的手势通过语音播报提示。本模块与扬声器连接,将声音公放出来,语音内容包括:00001:欢迎使用手势识别,测试系统;00002:当前为手势识别测试;00003:当前手势为向前;00004:当前手势为向后;00005:当前手势为顺时针;00006:当前手势为逆时针。

2.3.2 LED灯

LED灯主要体现不同手势不同响应的效果,当进行手势识别测试时,屏幕会显示相应的手势,分别为“向上”“向下”“向左”“向右”的手势,通过点亮对应的LED灯进行提示。本设计用了4个LED灯,分别放在4个方向位置,当做出手势动作时,点亮对应方向的LED灯。

2.4 OLED显示屏

OLED在正常通电下即可实现发光,无须独立的背光层,因此OLED液晶屏的尺寸厚度相对薄一些,外观结构尺寸约为LCD1602的一半,但显示内容是一样的,具有独立的特点,针对各显示单元寄存器上的地址修改数值,可单独驱动部分背光点亮,无须将整个背光全部点亮,因此具有较好的节能特性。像素点颜色切换时间即灰阶响应时间极短,在画面切换和变更时不会产生明显的拖影。液晶屏是7管脚的器件,SCL是时钟信号,用于实现液晶屏上电启动和工作时序的控制。SDA是液晶屏的数据显示信号,用于实现液晶屏的显示内容输出。SCL和SDA都与单片机接口直连,设计时通过查看OLED液晶屏规格书中关于上电时序的内容,遵循液晶屏的上电逻辑。

OLED显示器主要用于将“向上”“向下”“向左”“向右”“向前”“向后”“顺时针”和“逆时针”8种手势以文字形式显示出来。

2.5 电源模块

STM32单片机需要3.3 V的稳定电压,手势识别、OLED屏等其他器件则使用5.0 V电压,因此该系统需要5.0 V和3.3 V两种等级的电压供电。本设计采用单片机自带的USB接口连接电源进行供电,并采用ME6211作为电压模块进行电平转换。

3 系统软件设计

3.1 主程序设计流程

手势识别控制系统的数据输入主要通过手势传感器的电平信号变化数值,对数据进行处理和响应,完成数据的加减操作,将预设的手势字符段写入液晶屏呈现出来,通过LED灯按照手势内容进行响应,并调用语音播报模块完成实时播报。系统流程如图2所示。

3.2 程序设计

手势识别模块的设计。数据采集部分需利用手势传感器的DATA返回值进行识别,程序首先对传感器初始化并判断是否在位,只有传感器在位才会进入下一采集阶段,传感器的状态默认保持高电平,若电平无变化则未进行数据采集,当检测到有一个低电平信号,则单片机读取传感器信号值并发送,本次传感器采集结束返回,输出采集数值,完成该流程后重新进入此函数,并循环不断采集和输出。

图2 系统流程图Fig.2 Flow chart of the system

语音播报模块的设计。语音播报程序利用已写入语音芯片寄存器的字符内容转化音频输出文件,系统对语音内容库进行设置,当识别到正常的手势指令时,调用语音,按照预设的内容进行播报。

OLED屏的设计。程序运行第一步会对液晶屏的配置和显示寄存器的值初始化并赋初始值,液晶正常显示预设的固定参数名称内容,对应参数的数据同步调用寄存器的数据进行实时刷新显示,判断液晶屏是否处于“忙”阶段,“非忙”即可写入新的液晶显示指令,循环读取和写入,实现液晶屏的显示调用。

4 手势识别系统调试

系统调试通过Keil uVision5进行,通过软硬件结合的形式,对各个单独模块进行逐个测试,对程序部分进行参数调试与分析,整合各个模块,完成功能和性能调试。

确认各模块的供电电压是否正常,若不正常需排查原因。编译简单的程序进行单项功能的确认,如驱动语音播报模块播报简单的内容,验证是否按照预期进行播报、液晶屏是否显示预设的字符等。对各个模块的功能进行逐个调试,如表1所示。

表1 硬件模块测试结果Tab.1 Results of hardware module test

接通电源后,系统正常开启,同时在液晶屏上显示“手势识别系统,手势识别测试”,语音播报模块播报“欢迎使用手势识别,测试系统”,再进行接下来的操作。

手势检测环节,例如:使用手势识别测试为向上的内容,手势向上划,可在液晶屏上看到当前手势:向上,同时上方的LED灯点亮;使用手势识别测试为向下的内容,手势向下划,可在液晶屏上看到当前手势:向下,同时下方的LED灯点亮;使用手势识别测试为顺时针的内容,手势顺时针划,液晶屏上显示“当前手势:顺时针”,语音播报“当前手势:顺时针”。

手势识别测试过程中,选择了10位受试者,分别为被试1、被试2、被试3、被试4、被试5、被试6、被试7、被试8、被试9、被试10。每人分别进行8组手势动作的重复执行,每组动作重复20次。每次手势动作执行完成后通过OLED屏、语音播报和LED灯进行展示识别结果并将其记录下来,计算手势的正确识别率。

通过第一次测试可得,8个手势的正确识别率都不高于60%,其中“顺时针”和“逆时针”两个手势的识别率都低于40%,可见,手势识别技术还应更加完善,使其准确率更高。对程序进行调试和分析,对后期测试实验过程结果进行统计,手势识别结果记录及手势识别正确率记录如表2和表3所示。

表2 手势识别结果记录表Tab.2 Record of gesture recognition results

表3 手势识别正确率记录表Tab.3 Accuracy record of gesture recognition

由表3可得,8个手势的识别率最终显示都在90%以上,其中5个手势的识别率能达到95%及以上,手势识别的精确度较高。后续会不断优化其精度,使其实现更好的效果。

系统的功能测试结果如表4所示。

表4 功能测试结果Tab.4 Results of functional test

5 结束语

以STM32单片机为控制芯片、使用PAJ7620手势传感器实现控制指令数据的采集,利用OLED液晶屏实现数据显示。该设计使用C语言编写了单片机系统的所有采集与控制程序,通过硬件与软件部分的设计与制作,方法合适,达到了预期效果。

猜你喜欢
液晶屏顺时针手势
最后才吃梨
基于STM32F4的多通道串口驱动TFT液晶屏显示系统设计
挑战!神秘手势
图形前线
V字手势的由来
一种消除液晶屏高温MURA的工艺研究
为什么表的指针都按照顺时针方向转动
胜利的手势
心情不好
基于机器视觉的液晶屏字符缺陷检测系统设计