基于STM8 单片机手势识别器控制电路设计

2020-06-01 03:28郑慧珍沈周锋
韶关学院学报 2020年3期
关键词:电容式手势谐振

郑慧珍,沈周锋

(漳州职业技术学院 电子工程学院,福建 漳州 363000)

手势是人们在日常生活中最直观和自然的交流方式,能在特定的场合表达一些特殊的意义,是人类的基本动作之一[1].随着智能化设计技术发展,手势识别技术在部分消费类产品上的应用已成为一大热点,无论是智能家居、智能可穿戴,还是VR 等方面的应用,都在试图增加这一识别功能,这在丰富产品应用场景的同时,也增加了新的卖点[2].人机交互的设计越来越受人们青睐,手势识别作为人机交互的一部分,对它的研究具有重要的意义.

1 控制系统的总体设计

根据系统设计的目标,需完成对任意人员手势识别的训练,然后经确认后训练员在感应区域内做出手势,系统便能够给出准确的判断.笔者设计了一套符合系统需求的电路.该电路的系统主要由电源模块、控制模块、检测采集模块和人机交互模块4 部分组成[3].控制模块采用STM8 单片机作为主控制芯片,STM8 是基于8 位框架结构的微控制器,内部资源丰富,内部自带16 MHz 的RC 振荡电路作为系统时钟.程序执行速度快,一个时钟周期几乎可执行一条指令. FDC2214 芯片是Ti 公司的一款低功耗高精度的电容传感器芯片,其供电电压为2.7~3.6 V,谐振频率从10 kHz 到 10 MHz,数据位数为28 位,即精度为1/228,FDC2214 有4 个采集通道,其与MCU 的通信方式为I2C[4]. FDC2214 电容传感芯片具有4 个检测通道,可作为手势识别的采集器,完成手势识别的采集.另外本系统采用晶联讯电子所设计生产的JLX12864G-086 液晶显示屏来作为人机交互界面,从而完成具有训练模式、判决模式和提示用户如何进行训练模式这样比较复杂的显示界面,该系列的显示屏通信接口采用单向的SPI 接口,与标准SPI 接口完全兼容,同样不需要过多的软件介入.单片机与传感器芯片和显示模块进行数据通信占用CPU 时间片极少,便于系统扩展其他产品功能.系统总体框架见图1.

图1 系统总体框图

2 系统软硬件设计

整机硬件电路见图2.系统由单片机的最小系统及其外围电路构成,采用内部振荡器作为时钟信号,无需外部晶振.J1 接口作为单片机的程序烧写和在线调试接口,连接ST-LINK 调试器即可完成程序的单步执行和在线调试.通过观察单片机内部寄存器的变化情况来调整程序参数,以便于修改程序中存在的bug.系统采用单片机内部集成的I2C 单元与FDC2214 通信,大大增加了I2C 通信的速度,接口时钟频率选取1 MHz,几十微秒即可完成一次数据读写.采用单片机内部自带的SPI 接口单元与12864 屏幕通信.接口时钟频率采用4 MHz,大大加快了屏幕刷新的速度.单片机在训练模式下采集各种手势对应的4 个通道数据,存入单片机EEPROM 中.EEPROM 具有断电保存功能,保证用户训练数据永久保存,无需扩展外围存储芯片.每种手势采集3 次,提高识别的稳定度.在判决模式下采集实时的数据,与训练数据进行比对,完成手势识别.下面对主要模块FDC2214 电容式感应模块来进行阐述.

图2 整机硬件电路

2.1 FDC2214 电容式感应模块

检测采集模块采用电容式传感芯片FDC2214.电容式感应是一种低功耗、低成本、高分辨率非接触式感应技术,适用于接近检测、手势识别、远程液位监测等应用场景.电容式传感模块,以其低成本、高度灵活等特点,具有广泛的应用范围.限制电容式传感器主要问题在于噪声敏感性度过高. FDC2214 采用创新的抗EMI 技术架构,在高噪声环境中仍能保持较好的精度.它是面向电容式传感的解决方案,具有抗噪声、抗电磁干扰、高分辨率、高速、多数字化通道等特点.该芯片采用基于窄带技术的创新型架构,可对噪声进行高度抑制,在高速情况下仍保持高分辨率. FDC2214是基于LC谐振电路原理的电容检测传感器[5-6],其基本原理见图 3. FDC2214 的特点是最大输出速率(一个活动通道)4.08 ksps;最大输入电容是250 nF(10 kHz,1 mH 电感);传感器激励频率是10 kHz 至10 MHz;通道数量4 个;分辨率28 位;系统本底噪声是100 sps 0.3 fF;2.7~3.6 V 的电源电压;有效功耗为2.1 mA;低功耗睡眠模式35 uA;关机电流200 nA;数据接口采用I2C.

图3 FDC2214 电路原理图

设计采用FDC2214 芯片作为核心来设计手势识别器.该芯片内Resonant circuit driver 单元和芯片外L和C 组成的并联谐振电路组成振荡电路(见图3).振荡频率f ≈1/2/π/sqrt(L*C),当物体接近电容一极时,C 的值发生变化,从而影响振荡频率f.传感器芯片实时的监测4 个振荡电路的频率,并转换为28 位位宽的数字信号.不同的物体接近极片,由于形状、距离和介电常数的不同,C 变化量有所不同,振荡频率变化量也将不一样.因此整机训练模式所得数据,可以大大提高了对人手的识别正确率.手势特征点总共包括5 根手指和一个手掌,而FDC2214 只有4 个电容检测通道.为了降低成本,本设计采用通道复用的方式,完成1 片FDC2214 检测6 个特征点.笔者设计的四路传感器分布见图4,当手接近电容一极时,该极片对地电容发生微弱变化,从而改变谐振频率.设计时在感应面板下方安装一定数量的极片,若食指接触感应面板时,通道2 的谐振频率会降低一定值,若此时手掌也接近感应面板,通道2 的谐振频率会降低更大的值,同时通道1 的谐振频率也会下降一定值(见图4).大拇指和半个手掌采用通道1 来检测.用户出示手势时,只有手掌贴合检测面和拇指手掌同时贴合检测面,所引起的通道1 频率变化值不同,软件可以通过检测通道1 的变化量大小判断拇指.通过判断4 个通道的谐振频率值的减小情况,即可判断五根手指和一个手掌的接近情况,即可判断出当前手势.

图4 感应面板极片位置示意图

2.2 系统软件设计

系统程序总体设计见图5,各单元初始化完毕后先判断是否是训练模式.若标志位等于1,则进入训练模式,否则进入判定模式.在训练模式下采集4 个通道的值,并对这4 个通道的数据进行预处理,每个通道采样3 次并取得平均值Kn,然后等待确认键按下,再将数据存入相应的训练数据缓存中.然后刷新屏幕,提示用户出示特定手势供下一轮的数据采集,待所有手势训练已经结束后返回.在判定模式下,需要对采集到的手势值进行比对,从而获得正确手势并进行显示.手势识别算法的编程思路是基于K-NN模式识别算法(邻近算法)设计的[7-8].将各通道采集的数值Xn 与各通道的训练数据Kn 相减后取绝对值,然后再相加得到Zn.其表示当前手势与训练手势的相似度,值越大则相识度越低.对比实时数据与各组训练数据相似度,即可判定当前手势,最后液晶屏显示手势.

图5 系统软件控制流程图

3 测试与小结

不同使用者,手掌的粗糙程度不同,手掌大小和手指长短都存在个体差异,因此设计如下测试方案:选取10 个测试员,其中5 个男性,5 个女性,手掌大小不一.对测试器进行了多次重复的测试:先让10 个人分别进行手势1(测试采用猜拳)训练和手势1 判决,然后10 个人分别进行手势2(测试采用划拳)手势训练和手势2 判决.选取一人作为指导员,指导测试员手势的放置.

经测试,10 人在面板手型图案的指导下进行的测试,按规定放置手势,每人测试10 次,多数情况均可在1 s 以内判决出手势成功率达到100%.偶尔手势安放位置偏差大于1 cm,判决结果会出错.测试结果见表1.

测试结果表明:用户按要求安放手势,1 s 内,可以实现手势识别;对不同粗糙程度和成年人手型不同大小,均可以完成功能目标.基于本设计成果,可广泛应用于智能家居系统或企业门禁的人机交互界面.通过识别出的手势控制电视、空调、照明灯等一系列家电,真正实现手势识别在实际中的应用.

表1 测试正确率

猜你喜欢
电容式手势谐振
牵引变电所电容式电压互感器检测方法的研究
电容式传感系统数据处理电路的设计
挑战!神秘手势
基于FDC2214电容式传感器的手势识别装置
V字手势的由来
胜利的手势
谐振式单开关多路输出Boost LED驱动电源
LLC半桥谐振变换器参数优化设计与实现
电容式电压互感器介质损耗及电容量测试方法分析
基于CM6901 的LLC半桥谐振开关电源设计