余志康
(香港大学电气和电子工程学院 中国香港特别行政区 999077)
本文的主要研究内容为设计一个能够同时测量三种生理参数的多生理参数检测系统,可以实时、连续地监测用户的心率、血氧饱和度、温度、身份、有无佩戴口罩。整个系统分为嵌入式、人脸识别两部分,嵌入式部分的控制器为STM32开发板,人脸识别部分的控制器为K210。系统的软件算法主要有FFT算法、人脸坐标获取、根据仿射变换矩阵计算人脸特征值,遍历比对特征值。
1.1.1 温度信号特性及测量方法
物体的温度与其单位面积辐射功率的关系由黑体辐射定律P=σ*T给出。人体辐射波长,γ=9300nm,已知红外线波长为760nm-1mm,根据以上数据,人体辐射波长是属于红外光的,即人的辐射主要在红外波段。因此可以使用传感器探测人体的辐射能量来计算出人体表面的温度。
1.1.2 心率信号特性及测量方法
传感器来测量心率是采用的光电容积法,借助LED光进行A/D转换进而测量心率。反射回来的光信号在经过传感器数模转换后,得到的电信号是由直流信号以及交流信号叠加而成的。采集的电信号对心率计算有用的需要分析的是交流部分。频域变换处理信号得到心率的方法更适合嵌入式平台,因此采用光电容积频域计算方法来检测心率信号。
1.1.3 血氧饱和度信号特性及测量方法
脉搏血氧测定法(Pulse Oximetry)是最为常用的一种光学法。通过观察Hb和HbO2的吸收率随波长变化曲线,可以选择RED和IR光来对应氧合血红蛋白和血红蛋白。经由光信号AD转换后的电信号包含了DC、AC两部分,为了接收到的RED和IR反射光信号转换出的电信号的比值能够直接反映血氧饱和度,需要对电信号乘以一个比例系数进行缩放处理,使得两者的电信号的直流部分齐平,取突出来的AC信号的比值。
定义MLX90614、oled屏与开发板的IO连接定义代码如图1、图2所示。电路设计框图如图3所示。
图1:oled显示屏的SCL、SDA引脚定义代码
图2:mlx90614的SCL、SDA引脚定义代码
图3:mlx90614红外测温电路图
与上一个测温模块采用一样的共用引脚思路,将PB8、9作为数据总线。开发板STM32f103与MAX30102、oled屏之间采用iic通信。MAX30102、oled屏与开发板的IO连接定义代码如图4、图5所示。
图4:传感器及显示屏的SDA、SCL引脚定义
图5:传感器的INT引脚定义
电路设计框如图6所示。
图6:MAX30102心率血氧模块电路图
3.1.1 模式切换的原理
根据按键检测函数,检测引脚的电平。通过下降沿触发,使得变量FLAG置零。变量FLAG初始为1,初始电平值last_key_state连高电平。下降沿通过两排六引脚的单刀双掷结构来达到。采用if else的程序结构整合两个功能的代码段,四个模型文件的引入在判断语句if FLAG之前,若按键未被按下,FLAG=1,则执行if后的身份识别代码。若按键被按下,FLAG=0,则执行else后的口罩识别代码。下降沿的引脚外部为GPIO7映射到内部引脚FPIO16,程序检测内部引脚的电平逻辑值。综上,不按下按键,默认身份识别功能,按下按键,下降沿触发,切换到口罩识别。
3.1.2 模式切换的引脚分配及下降沿检测代码
3.2.1 温度测试精度提高方案
由于物体不同且发出的红外线辐射要经过一段空间距离才能到达传感器,红外模块对于辐射率P的估计就会有误差,因此,传感器对辐射率的判断造成的误差就需要人为引入定量分析与补偿来拟合去除。
这里采用了matlab高斯函数来拟合误差,一共采集了20组数据,涵盖了34~40的温度范围,即保证了在大跨度测量范围下的有效性。20组数据即20个坐标点,使用matlab中高斯函数拟合,得到曲线和函数表达式,之后将该函数写入代码段。
3.2.2 具有误差拟合的测温函数代码段
考虑到了仅在OLED屏幕上更新显示数值的缺陷,本设计借助MATLAB的plot函数绘图功能,将生理参数以曲线图像的方式显示出来。动态显示采用方案如下:STM32通过串口将采集到的原始信号发送到电脑的串口调试助手,然后把串口调试助手的数据保存之后用matlab的plot函数显示出波形。
如果要做到测量用户生理参数的同时把用户的ID也一起分配或者识别出来,必须使得K210开发板与STM32f103关联。这里采取简单的硬件控制方式,在已实现的模式切换功能中,下降沿触发身份识别与口罩识别的功能切换,故在STM32f103的两个传感器的VIN引脚做修改,将VIN引脚接至连接按键高电平端的排针上。
当按键未被按下,K210开始身份识别,同时传感器也是供电状态,可以测量生理参数,最后三个从节点的数据在合理设置读取时间后可以同时被PC端的串口所接收到。当按键被按下时,按键的2端脚从导通变为断开,1、3端脚连接,下降沿触发,K210开始口罩识别,并在屏幕上显示用户是否戴口罩,同时传感器断电,不检测生理参数。
上述通过硬件控制的方式来关联两个独立的模块(K210、STM32f103),借助已经设计好的K210模式切换外部电路,使得在身份识别时传感器被供电,能够检测心率、血氧饱和度以及心率,实现生理参数与身份的绑定对应。
本设计是一个高集成度、能够测量3种生理参数的多生理参数采集系统,主要体现在以下几个方面:
(1)K210实现口罩识别、身份识别和两种模式的切换。本文在Maxipy IDE设计了一套以提取坐标、计算特征值、特征值比对为核心原理的人脸识别算法,在K210模块上先后实现了口罩识别与身份识别功能。
(2)STM32f103实现温度、心率、血氧饱和度的精确实时测量。本文设计了同时驱动MAX30102、mlx90614传感器进行测量的工程文件,并且采用了共用数据线SDA、时钟线SCL的总线串口通信思路,从而将三种参数测量功能集成到一个开发板上。
(3)设计能够绑定用户身份与生理参数的外部电路。本设计将两个独立的模块进行了关联,使得在身份识别时传感器被供电,能够检测心率、血氧饱和度以及温度,实现生理参数与身份的绑定对应。