基于坐姿和心率计算的多功能智能台灯设计

2022-04-21 10:17刘文华颜利宏
漳州职业技术学院学报 2022年1期
关键词:血氧人脸姿态

刘文华,颜利宏

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

随着人们生活节奏越来越快、工作压力越来越大,健康生活成为人们更加关心的话题。不良坐姿会造成颈项肌的疲劳,引起颈肩痛、颈肌痉挛,甚至出现头晕目眩,久而久之,容易在成年之后出现颈椎间盘退变,导致颈椎病[1]。尤其是当代学生和办公人员久坐时间长,坐姿不规范,倾斜身体、低头、跷二郎腿,给颈、背部造成持续的负荷,使背部肌肉、韧带长时间受到过度牵拉而受损,从而引起腰痛[1]。另外,繁忙的工作安排、沉重的生活压力也消耗着人们的健康身体,越来越多的年轻人出现心理问题。

设计的多功能智能台灯主要针对学生、办公人员,帮助其养成良好的坐姿习惯,利用心率计算功能,保护使用者的身体和健康。主要创新点有:

①定位台灯特色,通过检测人脸的位置,计算人体姿态,然后通过判断人体姿态是否正确,进行有效提醒,纠正使用者的坐姿。

②设计一键人脸注册功能,既提高了人体姿态计算的准确性,又方便适配不同坐姿的使用者,配合可调节的摄像头以达到最佳的使用效果。

③基于快速傅里叶算法的心率计算,大幅提高心率计算的速度和准确性,及时发出健康提醒。

④以台灯为系统设计载体。台灯作为学习和办公用品,有利于姿态计算、心率计算等功能的结构设计,有利于满足相关功能的光照要求。

1 整体设计

采用STM32G4芯片为核心,通过I2C、串口、中断IO等接口连接外部血氧传感器、人脸检测摄像头,利用芯片强大的数据计算功能实时处理血氧和人脸位置数据。其中,心率计算模块包含血氧传感器、OLED屏,主要通过I2C接口与主芯片数据通信。人体姿态计算模块包含OpenMV摄像头,主要通过UART串口与主芯片通信。系统硬件连接图见图1。

图1 系统硬件连接图

2 分模块设计与实现

2.1 心率计算

MAX30102血氧浓度传感器[2]是一个集成的脉搏血氧仪和心率监测仪生物传感器。它集成了一个660 nm红光LED、880 nm红外光LED、光电检测器、光器件,以及带环境光抑制的低噪声电子电路[3]。可通过软件关断模块,待机电流为零,实现电源始终维持供电状态,可运用于低功耗产品中。

本模块还有1个0.96寸OLED显示屏,可以直观地观察到心率和血氧的数值。OLED的核心驱动芯片是SSD1306,使用I2C通信接口与主芯片通信。SSD1306内部有一个GDDRAM数据内存,它有128×8 Byte,即128×64 bit,每一个位对应一个像素点。这些字节分别存储在Page0~7中,每一个页存储128×1 Byte,极大节省了运行内存的消耗。

2.1.1 硬件设计

采用芯片自带I2C1总线连接MAX30102血氧浓度传感器和OLED显示屏。STM32G4单片机通过I2C1总线读取一组血氧数据,通过FFT算法计算心率及血氧数据。计算出来的心率及血氧数据再通过I2C1总线实时刷新到OLED屏幕。心率计算模块硬件连接图见图2。

图2 心率计算模块硬件连接图

2.1.2 程序设计

程序开始后初始化I2C1总线,并通过相关命令初始化OLED屏、心率检测传感器。初始化完成后,OLED显示屏开始工作,显示“心率检测模块正常工作”等信息;心率检测传感器开始工作,红色工作指示灯点亮。

血氧数据的数据量大小对心率计算结果影响很大,数据量越大,计算精度越高,芯片计算资源消耗也越大。采用快速傅里叶算法计算出整组血氧数据的曲线形状(频域信息),找出第一个峰值点。峰值点在整组血氧数据的位置代表了心率。

观察一组血氧数据随时域变化而变化的离散信号,傅里叶分析[4-7]可以把信号从其原始时间域转换为频域的表示,反之亦然。离散型傅里叶分析是通过将一系列离散信号分解成不同频率的分量来获得的。DFT算法的缺点是直接从定义中计算它通常太慢而不实际。快速傅里叶变换[8-11]通过将DFT矩阵分解成稀疏因子的乘积来快速计算。所以其本质是实现离散傅里叶变换的一种优化算法,将时间复杂度从O(N2)降低为O(Nlg N),其中N为待计算序列的长度。

对于N点序列x[n]0≤n≤N,它的离散傅立叶变换为:

其中k=0,1,…,N-1,式(1)展开如下,

原始的傅里叶变换以sin函数与cos函数为基础,快速算法有查表法等。在STM32F4芯片中有集成Cordic算法[12-13]模块,相比软件算法,运算速度更快、更节省CPU资源。本程序设计采用Cordic算法和FFT算法,每秒通过I2C1总线读取心率检测传感器,获取512条血氧数据;数据经过滤波后送给FFT算法和Cordic模块计算心率数据;最后将心率数据渲染到OLED屏显示缓冲区,通过I2C1总线刷新到屏幕。本模块程序流程图如图3。

图3 心率计算模块程序流程图

2.2 姿态计算

OpenMV模块以STM32F427CPU为核心,集成了OV7725摄像头芯片,在小巧的硬件模块上,用C语言高效地实现了核心机器视觉算法,包括寻找色块、人脸检测、眼球跟踪、边缘检测、标志跟踪等。

基于Haar特征的cascade分类器是Paul Viola和Michael Jone提出的一种有效的物品检测(object detect)方法。该检测算法发展了Boost人脸检测算法中的AdaBoost算法,级联了AdaBoost训练出来的分类器,采用Haar-like[14]小波特征进行人脸检测。Haar-like小波特征对人脸检测更加有效,并在此基础上扩展形成了OpenMV现在的Haar分类器。

OpenMV人脸检测程序在摄像头实时获取的图片中找出人脸的位置。程序使用find_features函数搜索人脸数据,函数的参数Haar Cascade来自人脸的Haar-like特征检测器。该方法能够搜索图像中与Haar-like特征相匹配的所有区域,并返回一个关于这些特征的边界框矩形元组(x,y,w,h)的列表,若没有发现任何特征,则返回一个空白列表。

2.2.1 硬件设计

OpenMV人脸检测模块检测到人脸数据后,将人脸坐标数据通过串口发送到STM32G4单片机。单片机接收到当前人脸检测结果后计算用户姿态并判断是否正确。如果姿态不正确并维持时间超时6 s后,系统发出蜂鸣、LED灯闪灯信息,提醒当前使用者坐姿不正确,见图4。

图4 人体姿态计算模块硬件连接图

2.2.2 程序设计

基于OpenMV的姿势检测程序,支持人脸注册、人脸检测、姿态计算等。不同用户、不同环境下,用户的正确姿态的表现不同。人脸注册就是支持通过用户按键、远程控制、语音控制等方式要求系统记录当前人脸数据,该人脸数据可以作为人体姿态运算的基础数据。

OpenMV人脸检测程序通过摄像头实时获取的图片,调用find_features函数实时检测当前人脸位置数据。对比人脸注册和实时人脸检测的结果即可判断人脸位置是否合适,进而判断人体姿态,见图5。

图5 人体姿态计算程序流程图

2.3 照明设计

发光二极管是电流驱动型的器件,流过发光二极管的电流越大,亮度越高,但是在驱动数量少的发光二极管一般用限流电阻来实现,这种方式不能调节亮度。如果要调节亮度就要通过PWM来实现。

将发光二极管接入PWM信号,调节占空比即可实现LED不同亮度的变化。PWM的占空比代表的是平均电压,占空比发生变化后LED和限流电阻两端的平均电压就会发生变化,那么流过LED的电流就会发生变化,从而改变LED的亮度。

将LED通过三极管来驱动后,将PWM信号接入三极管的基极,LED和限流电阻接在集电极上,此时PWM的占空比与LED的亮度成正比。PWM占空比越大,那么LED的亮度也就越亮。

本模块设计2路LED分支,每路LED分支并联N只发光二极管,接入三极管,受STM32G4单片机控制。程序开启TIM2时钟产生PWM方波,驱动三极管控制LED照明亮度。照明控制方式有用户按键、远程控制、语音控制,程序流程如图6所示。

图6 照明模块程序流程图

3 实验与结果分析

3.1 心率计算

在NUCLEO-STM32G474RE开发板上测试心率计算模块,见表1。

表1 心率计算时间性能表

心率检测模块每秒读取512条血氧数据,通过计算得到当前血氧、心率数据,显示到OLED屏幕。实验测试结果表明心率检测模块读取血氧数据的时间在0.2 s以内,利用FFT算法计算心率的时间在0.5 s以内。心率检测精度受血氧模块精度、算法等方面影响,准确度在95%以上。

3.2 人体姿态计算

姿态计算模块利用机器视觉技术实现了人体姿态检测,对比注册人脸数据和实时人脸数据的结果即可判断人脸位置是否合适,超时6 s后声光报警。本设计在NUCLEO-STM32G474RE开发板上测试姿态计算模块,检测一直不动的人脸数据,如表2。

表2 姿态计算数据分析表

模块每秒检测5次人脸数据,获取包括人脸宽度、高度、中心点、角度、形状等人脸数据,并实时得到姿态判断结果。根据以上实验结果计算得出各个数据列的方差最大为2.0。从计算结果可以看出,人体姿态计算模块能够稳定且准确地计算人脸数据。

4 结语

采用血氧传感器检测血氧数据,结合FFT算法计算出心率数据;采用OpenMV摄像头,结合人脸检测算法计算出人体姿态数据。实验结果表明算法执行时间和计算精度均符合实际应用需求。

猜你喜欢
血氧人脸姿态
有特点的人脸
一起学画人脸
攀爬的姿态
Pathological abnormalities in splenic vasculature in non-cirrhotic portal hypertension: Its relevance in the management of portal hypertension
脉搏血氧饱和度监测在胸外科中的应用
三国漫——人脸解锁
全新一代宋的新姿态
基于无线技术的医用血氧监测系统的设计与应用
基于STM32血氧心率检测仪的研制
另一种姿态