1、常熟理工学院学报(自然科学)Journal of Changshu Institute of Technology(Natural Sciences)第 37 卷第 2 期2023 年 3 月Vol.37 No.2Mar.,2023基于Arduino 单片机的脉率实时监测系统 干正立,贺 笑,展佳南,杨海萍,丑永新(常熟理工学院 电气与自动化工程学院,江苏 常熟 215500)摘要:针对脉率的提取与监测需求,设计了一种基于 Arduino 单片机的脉率实时监测系统 该系统硬件主要由透射式脉搏传感器、Arduino单片机模块、声光报警模块、显示模块、Wi-Fi模块组成 系统采集人体脉搏信号,对其
2、进行实时滤波和脉率计算,并通过 Wi-Fi 模块将计算结果无线发送到远端 通过设计实验,对所研制系统准确性进行评估,结果表明实时脉率的准确率在85%以上 该系统可用于家居、工作等生活场景下的脉率实时监测,可为我国家庭医疗的发展提供理论和实践支撑关键词:Arduino 单片机;脉搏信号;整系数滤波;脉率实时计算中图分类号:TN820.1 文献标志码:A 文章编号:1008-2794(2023)02-0033-04收稿日期:2022-04-13基金项目:国家自然科学基金项目“基于脉搏时空解析建模的恶性心律失常定量识别方法研究”(61901062)通信作者:丑永新,副教授,博士,研究方向:信号检测与
3、处理、疾病智能识别等,E-mail:人体心脏的收缩与舒张驱动血液在人体心血管系统周而复始地循环,将人体日常活动所需的氧气和营养物质运输到全身各处 血液在人体心血管系统循环,引起脉管发生弹性形变,在人体浅表脉管处可感知这种搏动,称为脉搏 1 “脉诊”是我国中医诊病的重要依据之一,通过医生指尖感知脉搏搏动规律,得出诊断结果 2 脉搏信号中蕴含着人体重要的生理和病理信息,在家庭医疗领域具有广阔的应用前景脉率指人体每分钟内脉搏搏动次数,是评价人体健康程度的重要指标 3-4 传统中医通过指端感知脉搏的搏动速度,进而估计脉率,是迟脉、数脉、疾脉等脉象的重要判断指标 5 然而,人为主观判断脉率的准确性因人而
4、异,有待提高 因此,采用传感器获取人体脉搏信号,并计算人体脉率,对于其进一步应用十分重要本研究设计一种脉率实时计算系统,研制了基于 Arduino 单片机的脉率监测系统硬件系统,提出一种脉率实时计算算法,并设计实验对所提出的算法准确性和所研制系统的可靠性进行了评价图 1 系统框架图1 脉率实时监测系统设计方案 图1为所设计系统的总体框图 系统由透射式脉搏传感器、Arduino 单片机模块、声光报警模块、显示模块、Wi-Fi 模块组成透射式脉搏传感器获取指尖脉搏信号选用 mega2560 单片机作为微处理器,构建单片机最小系统,实现脉搏信号的实时滤波、脉率计算、脉率监测与发送 显示模块实时显示脉
5、率以及脉率监测结果当脉率过缓或者过速时可通过声光报警模块发出不同频率的预警Wi-Fi 模块将单片机采集的脉搏信号和计算的脉率无线发送到 PC 端存储,供进一步处理DOI:10.16101/32-1749/z.2023.02.006常熟理工学院学报(自然科学)2023 年342 系统硬件设计与实现系统核心处理器核心芯片是 ATmega2560,采用 USB 供电选用 HKG-07B 透射式脉搏传感器获取指尖脉搏信号,输出 01.5 V 的电压信号为了降低噪声的干扰,模拟地通过 0 电阻与数字地相连,传感器输出端与单片机 ADC0 口连接采用 LCD1602 显示屏实时显示脉率及人体状态选用 ES
6、P8266 模块与单片机连接实现串口与 PC 之间的无线(WI-FI)数据转换互传采用红色 LED 与蜂鸣器构成声光报警电路,高电平有效,当监测到脉率过速或过缓时发出声光报警,过缓的报警频率为 0.5 Hz,过速的报警频率为 4 Hz系统使用过程中,将传感器插入对应接口,系统上电后等待信号稳定,LCD 显示屏即可实时显示脉率,并给出脉率正常、脉率过缓和脉率过速的判断结果同时,可以通过 Wi-Fi 模块,将脉搏信号和脉率计算结果远程传到 PC 上上电系统初始化脉搏信号采集滤波器滤波峰值检测脉率计算WiFi上传脉率值脉率显示脉率是否过缓、过速?声光报警NY3 系统软件设计与实现3.1 系统软件总体
7、流程系统的整体工作流程如图 2 所示系统上电后进行初始化,LCD1602 初始化、Wi-Fi 芯片建立与上位机连接 随后开始采集脉搏信号并进行滤波,滤波完成后进行峰值检测,计算脉率,通过 Wi-Fi 模块将脉率发送到 PC 机 同时,进行脉率正常、脉率过速和脉率过缓判断及显示,异常时则进行声光报警图 2 系统总体工作流程图图 3 脉搏信号采集与滤波子程序流程图进入子程序刷新原始脉搏数据读取新的样本点陷波滤波低通滤波返回进入子程序返回刷新原始脉搏数据读取新的原始脉搏信号刷新陷波器滤波结果进行陷波器滤波进行低通滤波刷新低通滤波结果3.2 脉搏信号采集与滤波图 3 为脉搏信号采集与滤波子流程图 采用
8、定时中断控制信号采样,每 5 ms 中断一次,则采样频率为 200 Hz 每次采集新样本点之前,采用滑窗的形式将缓存区的脉搏信号从高位向低位移动 1 位(缓存区宽度128 bits)然后,将新采集的样本点放置在缓存区的最高位,即每采集一个样本点,脉搏数据刷新一次针对脉搏信号中的基线漂移、工频干扰和肌电干扰,设计整系数陷波器和低通滤波器进行抑制 6-7 其中,陷波器的系统传递函数为 (1)式中 P 为传递函数分母多项式阶数,P=fS/f0本实验中采样频率fS=200 Hz,要滤除工频干扰则 f0=50 Hz 于是,P=4 Q 为滤波器增益,Q 越大,则滤波器的性能越好,但是需要缓存的数据就越多
9、经过多次试验,Q 取值为 16 R 为传递函数分子多项式阶数,R=QP=64 n 为滤波器阶数,通过试验,n 取值为 2整系数低通滤波器的传递函数为 (2)式中 M=fS/f0,采样频率 fS=200 Hz,第一截止频率 f0取 50 Hz,于是 M=4 经过测试,取 n=1,可以满足需求将式(1)和式(2)的传递函数转换为时域差分方程,在 Arduino 单片机中用 C 语言实现,即可对脉搏信号进行实时滤波 在中断子程序中,每次更新完数据后进行滤波,滤波前需要更新对应的滤波结果3.3 脉率实时计算对脉搏信号进行滤波后,继续在中断子函数中计算脉率 采用文献 8 中提出的基于滑窗迭代 DFT 的
10、方第 2 期35干正立,等:基于Arduino单片机的脉率实时监测系统迭代变量;N 为数据缓存区的长度;x(0)为缓存区第一个样本点,x(Nc)为缓存区存储的最新样本点(2)判断更新的基波样本点是否为极大值,如果是极大值,则将当前极大值位置与前一个极大值的位置做差,得到两个相邻波之间的周期宽度 N则脉率 PR=60/(Nts)=60fs/N,其中 ts为采样周期,ts=fs/1法实时计算脉率,原理如图 4 所示可以看出脉搏信号基波周期与脉搏波周期相同,但是没有重搏波和潮波等特征对主波检测产生影响因此,脉率的计算可转换为基波周期识别,即基波两个极大值之间位置的差值下面是具体计算过程(1)对新的样
11、本点进行滑窗迭代 DFT 运算,计算 S 对应基波的数据点基波计算公式为:图 4 基于滑窗迭代 DFT 脉率计算原理 (3)(4)式中:x1(k)为最新样本点对应基波分量;Sa(k),Sb(k)为两个中间012345时间/s-5000500幅值/mV时间/s节拍数节拍数节拍数节拍数(a)单片机计算脉率与MATLAB计算标准脉率对比;(b)两种方法之间的绝对误差图 5 实测脉搏信号图 6 数据 A 的脉搏计算结果幅值/mV5000012345-5004 实验数据采集与实验设计设计实验,验证所设计系统计算脉率的准确性(1)将所采集脉搏的信号和对应的脉率上传至PC(2)在PC端,采用MATLAB软件
12、从脉搏信号中离线计算脉率,与 Arduino 单片机系统上传的脉率进行比较,评估准确性在实际系统中,通过一路串口给上位机发送脉搏信号,另一路串口驱动Wi-Fi模块将计算得到的脉率发送至 PC 在 PC 端,分别采用 XCOM 软件和网络调试助手接收脉搏信号和脉率 共采集 4个人的 5 组数据,其中一组脉搏信号如图 5 所示对于所采集的脉搏信号,先在 MATLAB 软件中通过所提出算法计算脉率 接着,人工对误检和漏检的脉搏波进行标定,作为单片机计算脉率准确性的评判标准 最后,计算单片机发送的脉率和 MATLAB 提取脉率之间的绝对误差,并对所提出算法的准确性进行量化分析5 实验结果与讨论对所采集
13、的数据进行处理,两种典型的结果如图 6 和图 7 所示 图 6 为数据 A 的脉率计算结果对比和绝对误差 可以看出,有 8 个节拍的脉率绝对误差不为 0 次/min,但在 1 次/min 之下这是由单片机和MATLAB之间表数差异导致的单片机采用16位整型存储数据,而MATLAB中采(a)单片机计算脉率与MATLAB计算标准脉率对比;(b)两种方法之间的绝对误差图 7 数据 C 的脉搏计算结果脉率/(次/分钟)脉率/(次/分钟)脉率/(次/分钟)脉率/(次/分钟)Matlab 计算结果MATLAB 计算结果单片机计算结果单片机计算结果常熟理工学院学报(自然科学)2023 年36表 1 实时脉率
14、计算的准确率用浮点型,脉率数值类型导致了误差 图 7 中有部分脉率结果的误差在1 次/min 之上,有的甚至达到了 12 次/min.这是由脉搏信号干扰段导致的,去除干扰段之后,误差恢复到 1 次/min 之下表 1 为各组数据实时脉率的计算结果 通过对比可以看出,单片机实时脉率计算结果准确率在 85%以上 考虑到脉搏信号干扰段的影响,去除干扰段后脉率计算的准确性仍然有很大的提升空间6 结束语脉搏信号中含有人体重要的生理和病理信息 从脉搏信号中提取数据组名应有脉搏波个数实测脉搏波个数准确率/%A21720996.31B26323187.83C20019195.50D25021385.20E18
15、515985.94的脉率是人体健康程度的重要指标 本研究提出一种基于 Arduino 单片机的脉率实时监测与分析系统 该系统经过进一步小型化升级后可佩戴于人体腕部、耳部等部位,应用于家居、工作等日常生活状态下的脉率实时监测 然而,由于人体运动产生的运动轨迹会极大地降低脉率计算结果的准确性,未来我们将开展干扰段识别工作,以优化脉率检测系统性能参考文献 1 罗静静,左晶晶,季仲致,等面向脉诊客观化的脉搏传感器研究综述 J 仪器仪表学报,2021,41(8):1-14 2 李菲,于琦,王映辉,等中医脉象仪应用技术研究 J 中华中医药杂志,2021,36(11):6839-6842 3 彭敏,何宝林,
16、刘静,等极短时心率变异性与脉率变异性指标一致性的分析 J 生物医学工程研究,2021,40(4):360-365 4 CHOU Y X,ZHANG R L,LU M L,et al.A Real-time Analysis method for Pulse Rate Variability based on Improved Basic Scale Entropy J.Journal of Healthcare Engineering,2017,2017:7406896.5 马俊淇,刘燕,佟宝同,等无线便携式脉象检测系统设计 J 传感器与微系统,2018,37(5):87-90 6 CHOU Y X,XU B L,ZHANG R L,et al.A Novel Filtering Approach for Dynamic Pulse Signal Based on Parameters Self-adjusting Integer-Coefficients Filter C.2016 International Conference on Control,Automation and