基于脉搏信号的身份识别系统设计与实现(包含上位机软件+STM32程序+原理图及PCB)

随着科技的发展,时代的进步,身份信息的安全性问题引起越来越多人的重视。传统 的密码方式繁琐且易遗忘,常见的指纹识别、人脸识别等生物识别技术也出现越来越多的 问题,因此本课题设计了一套基于脉搏信号的身份识别系统。 本课题研制的基于脉搏信号的身份识别系统。该系统包括上位机和下位机模块,下位 机进行脉搏信号的采集与传输,上位机为基于 LabVIEW 编写人机交互界面,实现身份识 别。同时,使用 Matlab 软件开发核心算法。使用下位机以 STM32 为核心进行脉搏信号的 采集,并通过 WiFi 模块将数据无线的发送到 PC 端。上位机对接收的数据进行滤波处理, 抑制信号中的噪声和干扰;然后,对滤波后的信号进行分割并建模;最后,采用随机森林 算法基于模型参数实现身份识别。通过实际实验验证,身份识别的准确率达到了 82.3%。 为基于生理信号进行身份识别的研究提供了理论参考和实践基础。

系统下位机主要负责脉搏信号的采集和数据的传输,下位机实物图如图 3.12 所示。下 位机由锂电池、脉搏传感器、WiFi 模块和 STM32 电路板组成,锂电池通过 DC 插头向下 位机供电,脉搏传感器通过 3.5mm 的耳机座从单片机获取电流同时输出脉搏信号,WiFi 模 块通过排针与单片机的 TX 和 RX 相连,使用杜邦线连接单片机与 J-Link 实现程序的下载 与调试.

图 3.12 下位机实物图

4.1 下位机程序设计

下位机程序首先是进行各种配置的初始化操作,接着就是采集一次脉搏信号,然后将 采集的数据加入帧头帧尾后进行打包,通过 DMA 直接发送到串口,WiFi 模块将数据发送 至上位机,下位机工作流程图如图 4.1 所示。

4.1.1 TCP 通讯程序设计

TCP 通讯程序是通过单片机向串口发送 AT 指令配置 WiFi 模块使其与上位机进行通 信,配置 WiFi 模块需要 7 步,具体步骤如下: ① 配置 WiFi 模块为 STA 模式,指令为:AT+CWMODE=1。 ② 重启模块完成模式配置,指令为:AT+RST。 ③ 连接路由器,指令为:AT+CWJAP="1997","19970711",其中 1997 为热点名称, 19970711 为热点的密码。 常熟理工学院毕业设计(论文) 15 ④ 配置为单路连接模式,指令为:AT+CIPMUX=0。 ⑤ 开启 WiFi 透传模式,指令为:AT+CIPMODE=1。 ⑥ 连接 TCP 服务器,指令为:AT+CIPSTART="TCP","192.168.43.34",9000,该指令 中 192.168.43.34 为服务器的 IP 地址,9000 为服务器的端口号。 ⑦ 进入透传模式,指令为:AT+CIPSEND。 TCP 通讯程序工作流程图如图 4.2 所示 

4.2.1 人机交互界面设计

身份识别系统用户操作界面设计如图 4.5 所示,基于图形化的人机界面,操作简单, 界面美观,人机交互友好。本操作界面主要分为 4 大区域:用户操作区、信息提示区、数 据显示区、识别结果区和用户信息填写区 

1、 低通滤波器

由于高频干扰具有频率较高的特点,常使用低通滤波器进行噪声滤除。低通滤波器是 将频率高于截止频率的信号滤除,只保留频率低于截止频率的信号。本系统设计一种整系 数低通滤波器,可有效抑制高频干扰,使脉搏波形更加平滑,其传递函数为 

 2、 陷波滤波器

本系统的低频干扰主要是由于电力系统所造成的,我国的电力系统频率为 50Hz 的工 频电,因此所造成的低频干扰也在 50Hz 及其整数倍上,本课题设计了整系数陷波滤波器 来抑制这种低频干扰。陷波滤波器一般是由一个全通滤波器减去一个带通滤波器构成,这 样就可以让大多数的频率段通过,而将某一范围内的频率分量进行抑制。整系数陷波滤波 器设计过程简单,滤波效率高,而且计算耗时小,可以在单片机这种低运算速度的器件上 运行,整系数陷波滤波器的传递函数为:

 

4.2.6 脉搏波分割程序设计

本部分程序是将所存储的脉搏信号分割为单周期的脉搏波,脉搏信号是心脏跳动引起 脉搏的搏动产生的,所以脉搏信号具有随心脏跳动而幅值变换的规律,在心脏跳动的一瞬  间,脉搏信号上升变换迅速,然后达到最高的,该点被称为 P 点,也是脉搏信号的波峰。 在下一次心脏跳动前,脉搏信号衰减至最小值,脉搏信号达到波谷,该点也被定义为一个 脉搏波的起点。因此本课题是先寻找到两个 P 波的位置,然后求出两波峰的最小值点便是 波谷点。脉搏波分割流程如图 4.24 所示。 

首先将存储的脉搏数据读取出来,然后求取该数据的最大值和平均值,再求出最大值 与平均值和的 0.3 倍作为最终的阈值。然后将数据中大于阈值的点置 1,将小于阈值的点 置 0 得到一个新的数组 X,再用读取的原数据与 X 点乘就得到了大于阈值的曲线。对数组 X 进行差分,值为-1 的点便是大于阈值曲线的起点和终点,求出两点间的最大就是 P 波的 峰值点。 由于脉搏信号的幅值不稳定,这样找到的波峰点会有许多的误检测的,多数误检测的 波峰点为潮波的波峰点,因此还需清除误检测的波峰点。根据脉搏信号的性质发现,在同 一时间段每个人的脉搏宽度变化不大,且 P 波波峰点与潮波的波峰点二者的差值不会超过 一个脉搏波宽度的一半,我们便将两个波峰点间的差值作为筛选条件,筛选出差值大于脉 搏平均宽度 0.6 倍的两点,比较两点的幅值大小,幅值大的点便是 P 波的波峰点。 本部分程序的主要算法是在 Matlab 中仿真实现,在 LabVIEW 中通过调用该算法实现 了脉搏波的分割,脉搏波分割程序如图 4.25 所示。 

4.2.7 信号建模与特征提取程序设计

本部分程序是对脉搏波的建模并提取特征点,经过测试发现高斯函数是最能准确反映 心脏跳动规律的函数,所以本课题使用三高斯函数对脉搏波进行拟合,结果表明这种拟合 方式产生的误差最小,所体现的生理参数最准确,特征提取流程图如图 4.26 所示 

 

4.2.8 随机森林的构建与实现

本部分主要是讲述如何编写程序,实现随机森林算法。随机森林采用的是随机的方式 来创建的,其包含多个决策树的集成分类器。随机森林的核心思想可以看做是两个关键词, 一个是“随机”,一个是“森林”。 随机主要表现在两点:一是构建树时对训练数据点进行随机抽样,二是分割节点时考 虑的随机特征子集。 森林则顾名思义,是很多棵树在一起,算法决策结果也不由一棵树决定,而是“森林” 里的树一起“投票”决定的。 随机森林的实现有如下几个步骤: 第一步:采用有放回的抽样方式随机抽取等量的样本,从而达到每棵树的训练样本等 量,但是不重复的效果。 第二步:在训练某个决策树的时候,随机的从全部特征中抽取一部分特征,并采用某 种策略选出一个性能最后的特征,作为该节点的分裂属性。 第三步:重复的执行上面两个步骤,直到决策树的节点不能够再分裂为止,整个决策 树形成过程中不会对进行剪枝。 第四步:用每个决策树对输入的样本进行测试,每个子树都产生一个结果。 第五步:采用投票的方式,输出票数最多的类别作为该测试样本的所属类别。 本系统采用的是‘randomforest-matlab’工具箱自带的 MATLAB 函数构建和训练分类 器,其中用于构建随机森林分类的函数是: model_RF = classRF_train(P_train, T_train, ntree); 函数中参数 P_train 表示训练集的输入样本矩阵,T_train 表示为训练集的输出样本向 量,ntree 为随机森林决策树的个数,如图 4.28 为随机森林构建程序。 

 

用于对构建的随机森林分类器进行仿真预测的函数为: Results=classRF_predict(P_test, model_RF); 函数的参数中 P_test 表示待预测样本的输入矩阵, model_RF 为创建好的随机森林分 类器,其实现程序如图 4.29 所示。 

4.2.9 识别结果处理程序设计

本部分程序主要负责对识别结果做后续的处理,识别通过则显示出识别的身份信息及 识别率,识别失败则可以选择训练样本还是退出系统,每次测试,都会将采集的数据以 Tester 来命名,方便识别失败后重新调取该数据进行处理,不会破坏原本数据库中的数据, 本部分程序工作流程图如图 4.30 所示。 

5.1.3 上位机编程平台

LabVIEW 是一款图形化的编程语言,让人们对于编程有了不一样的体验。传统的文本 语音编程枯燥无味,且代码的易读性比较差,但是图形化的编程环境让人们不在觉得编程 很无趣,且代码的可读性极大的提高了,开发者根据图标就可以大概的猜出某个函数的实 现功能,而且该环境内置了许多常用的函数库,开发者只需调用系统库便可以快速的实现 功能,极大的缩短了开发周期。 一个 LabVIEW 程序主要由三部分组成:前面板、程序框图和图标连接器。 前面板也就是用户操作界面,LabVIEW 的一大优势就是,程序编好的同时,用户界面 也设计还了,无需单独设计。 程序框图也叫后面板,与前面板相对应,它是编写 LabVIEW 程序的地方,其系统函 数都设计成了图形样式,也可通过其他方式编写文本语言,二者结合使得其编程更加的方 便高效。 图标连接器的作用是编辑该程序的解释图标,这样在别人使用你编写的程序时,无需 打开函数,看图标即可了解该函数所实现的功能。如图 5.3 所示,为 LabVIEW 开发环境的 前面板和程序框图。 

 首先运行上位机程序,然后上位机上电,等待下位机连接服务器,连接成功后操作界 面会出现连接成功字样的提示框,点击开始采集按钮,观察上位机接收并解析的数据是否 是脉搏波形,并判断幅值是否在正常的范围内。如图 5.6 所示为手部平稳放置时候的波形, 图 5.7 手指抖动时采集到的波形。

5.2.8 身份识别调试

如图 5.13 为本系统的最终识别结果图,我们可以看到右上角的识别出来的标签,识别 者的信息以及识别率,如果识别率高于 70%,则表示识别成功,如果识别率低于 60%的情 况下,系统会自动默认识别失败,并弹出填写信息的对话框,让使用者填写相关信息,系 统会将使用者的信息进行分配标签,并将其脉搏数据加入数据库中进行训练,并给出识别 结果;如果出现误判的情况,识别率高于 70%,但是识别信息与使用者不吻合,使用者可 以手动点击识别纠正按钮,填写相关的信息来重新训练数据 。

需要上述上位机源码+下位机源码+原理图及PCB图,私信我。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值