APP下载

驾驶员生命体征信号检测系统的设计与实现

2022-10-31顾海潮麦云飞张兰春石爱峰

农业装备与车辆工程 2022年7期
关键词:体征控件串口

顾海潮,麦云飞,张兰春,石爱峰

(200093 上海市 上海理工大学 机械工程学院)

0 引言

为了能够实时了解驾驶员在驾驶过程的体征状况,本文基于AWR1642BOOST 评估板(76~81 GHz)和QT 进行软硬件设计。虽然76~81 GHz 雷达不能穿透皮肤[1],但是雷达可测量呼吸和心跳引起的体表运动,通过雷达对微小运动的灵敏度来检测生命体征信号,采用URAT 串口协议进行采集信号传输,通过降噪算法处理采集数据,得到更准确的呼吸和心跳信号数据,并对体征信号数据做心率变异性(HRV)分析,将得出的分析结果进行指标分析,实现驾驶员驾驶状况评估。最终通过QT 搭建的图形用户界面完成驾驶员生命体征和驾驶状况显示。

1 基于AWR1642 评估板的硬件系统设计

下位机采用TI 公司的AWR1642 BOOST 毫米波传感器评估板,是工作在76~81 GHz 频段的单片FMCW 雷达传感器,包含开发软件C67xDSP 内核、低功率ARM Cortex-R4F 控制器和片上存储器所需要的一些组件,雷达发射前端有4 个接收通路,2 个发送通路。整体硬件部分逻辑图如图1 所示。

图1 硬件组成逻辑图Fig.1 Block Logic diagram of hardware composition

下位机运行流程如图2 所示。AWR1642 BOOST毫米波传感器评估板用于完成驾驶员生命体征信号的采集以及与上位机的通信,通过调用 QT 内置的QSerialPort 模块,可以实现上位机与下位机的UART 串口通讯,能够极大地保障发送与接收数据的准确性和抗干扰能力。QT 的上位机界面通过按键槽函数向其发送报文,控制毫米波雷达的启停。

图2 下位机流程图Fig.2 Lower computer flow chart

1.1 信号发射流程模块

AWR1642 BOOST 评估板内部的毫米波雷达发射脉冲信号,主要通过信号合成器、发射天线、接收天线、混频器4 个模块。通过毫米波雷达内部的信号合成器,可以调制脉冲频率[2],本次实验采用线性调频脉冲,发射天线(TX)发射线性调频脉冲。调频脉冲在传播的过程中遇到障碍将产生反射,反射的脉冲信号经由接收天线(RX)接收,发射天线和接收天线信号最后通过混频器混合成中频信号。整个信号发射和接收流程框图如图3 所示。选用TI 公司的AWR1642 BOOST(76~81 GHz)评估板进行检测,此毫米波雷达使用的是4 发2 收天线。

图3 毫米波雷达信号发射流程框图Fig.3 Block flow diagram of millimeter-wave radar signal transmission

1.2 信号处理模块

人体心跳和呼吸信号的检测过程如图4 所示,包括目标检测、相位提取、信号分离与重构、呼吸和心跳频率估计4 个步骤[3]。对中频信号进行模数转换后,首先要识别所检测人体对应的距离范围,对每个脉冲都进行距离快速傅立叶变换(FFT),得到距离信息[4],然后根据距离分布构造距离时间图。在确定人体目标后,通过反正切进行相位求解并对反正切解调相位进行解缠绕。去除脉冲噪声后,通过数字滤波器进行呼吸和心跳信号的分离。心跳信号进行随机运动的检测,去除无用信号。最后,采用峰值、频域FFT 算法和时域自相关算法计算心率和呼吸频率。整体信号处理流程如图4 所示。

图4 信号处理链中的生命体征检测Fig.4 Vital sign detection in signal processing chain

2 基于QT 的软件系统设计

QT 是一个跨平台的C++应用程序开发框架,可以开发GUI 程序和非GUI 程序,被广泛运用于各类嵌入式产品和设备的开发[5]。

生命体征检测系统的图形用户界面开发,主要运用了QPushButto 控件、QLCDNumber 显示控件、QCustomplot 控件、Line Edit 控件等。

在QT 中通过按钮信号与槽函数的通信和联系,以实现主界面与子界面的切换,还可实现自动检测串口以及打开串口等功能。应用QT 串口类QSerialPort,QtSerialPort 模块中提供的QSerialPort和QSerialPortInfo C++类,可分别提供操作串口的各种接口和计算机中可用串口的各种信息。

项目工程的建立,首先使用QT 设计器创建生命体征信号检测系统的主窗口,即Windows 类,在此基础上添加菜单栏,设置菜单栏名称,创建对象然后添加槽函数,当菜单被点击时,触发绑定的函数事件。通过点击菜单选项,进行界面切换。

为了进行实时的数据绘图显示,利用QCustomPlot 控件完成高质量的界面显示。由官网下载QCustomPlot 源文件,在创建的项目中加入下载文件,创建一个widget,点击左键选择提升为QCustomPlot类,就可以使用它进行实时显示绘图[6]。

对信号进行处理,估计呼吸频率和心跳频率值,在QT 的GUI 界面上显示,同时显示信号波形图和距离箱位置图,图形用户界面如图5 所示。

图5 GUI 界面显示Fig.5 GUI interface display

2.1 读取串口,自动检测串口模块

选择自动检测串口后,检测系统的图形用户界面设备找到对应的USB 串口号,分别为控制串口号和数据串口号。设置控制串口的波特率是115 200,数据位是8 位,停止位是0 位,奇偶位是0;数据串口的波特率是921 600,数据位是8 位,停止位是0 位,奇偶位是0。代码如表1 和表2 所示。

表1 自动检测串口代码Tab.1 The code to detect serial port automatically

表2 串口配置代码Tab.2 The code to configure serial port

2.2 读取配置文件模块

根据不同的检测环境,分别在人的不同部位检测生命体征,如后背和前面。通过修改配置文件实现对毫米波雷达射频配置的修改,也可以修改信号处理时所需要的参数配置。

2.3 串口数据传输模块

嵌入式软件采用QT Creator 进行编写,这是因为QT 代码有很好的移植性,加上自带的界面编辑器,可以快速设计界面,并可移植到各个平台。通过调用QSerialPort 模块,可实现上位机与下位机的串口通讯。因为USB 串口每次插在不同的USB 口上时获得的串口名称可能有变化,这时可以利用串口的序列号,首先遍历所有串口,找到所需串口,然后打开串口,设置波特率等参数,串口收到数据后会发出一个信号(signal),通过槽函数(solt)与信号相连接。在slot 中读取接收到的新数据,用readAll() 函数读取串口缓冲区中的全部数据,代码如表3 所示。通过串口进行数据传输,实现了从下位机实时传递数据并在LCD 控件上实时显示各采集的数据并绘制信号图。

表3 读取串口数据代码表3 The code to read serial port data

2.4 数据保存模块

本系统的数据存储采用的是SQLite 数据库。SQLite 是一款轻型的数据库且遵守ACID 的关系型数据库管理系统,接口简单、速度快、体积小,它包含在一个相对小的C 库中。因为设计目标是嵌入式的,所以本身占用资源非常低,并且它能够支持Windows/Linux/Unix 等主流的操作系统,同时该系统操作简单,功能强大,扩展性强,生成的数据库文件可以在多个平台移植。

2.5 驾驶状况评估模块

心率变异性(HRV)作为评估人体健康的指标之一,评估心脏交感神经与迷走神经张力及其平衡性。通过毫米波雷达进行检测后,生成报告。报告中会显示检测者本次的平均心率值、异常结果、8 个身体情况指标得分以及驾驶员驾驶状况评估结果,检测者可以根据这个报告了解自己的身体情况,及时做出调整,避免潜在的安全事故发生[7]。

在HRV 分析中,可以通过时域和频域分析方法,其特征解释如表4 所示。将从心率间隙值(RRI)估计得到的大部分时间域和频域特征与参考值进行对比。由于RRI 的估计方法不同,额外的估计可能影响最小和最大心率的误差,也可能会带来其他某些参数的误差,但是从雷达中提取的许多HRV参数仍然有用。测试结果如图6 所示。

图6 HRV 检测界面显示Fig.6 HRV detection interface display

表4 心率变异性特征解释Tab.4 Interpretation of characteristics of heart rate variability

对RRI 和RRI 差值进行直方图绘制,显示间隙值的分布情况,通过散点图形状分析来进行特征指标评估。散点图和直方图显示如图7 所示。

图7 散点图和直方图界面显示Fig.7 Scatter diagram and histogram interface display

心率减速力(DC)的高低表示迷走神经兴奋性的高低,如果其降低会增加患者猝死率,这将会大大提高潜在安全事故的发生率。其临床上判定意义:DC 大于4.5 ms,被测人员处于猝死低危阶段,即驾驶员驾驶状况良好;如果DC 低于2.5 ms,被测人员处于猝死的高危阶段[8],驾驶员驾驶状况较差,此时发生交通事故的潜在性大大增加。

通过心率段数据进行减速力计算,得到DC 值,根据临床判定的标准对DC 值进行判断,进而筛选和判断检测人员的驾驶状况。测试结果如图8 所示。

图8 心率减速力检测界面显示Fig.8 Heart rate deceleration force detection interface display

通过毫米波雷达进行检测后,对指标进行分析,生成驾驶员驾驶状况评估报告。报告中会显示检测者平均心率值、异常结果、HR、SDNN、RMSSD、SDSD、PNN20、PNN50、DC、LF/HF 以及对本次检测给出的驾驶建议,检测者可以根据这个报告实时了解自己的身体状况,结果如图9 所示。

图9 驾驶状况评估界面显示Fig.9 Driving condition assessment interface display

3 结语

基于QT 平台搭建驾驶员生命体征检测系统,通过毫米波雷达对驾驶员生命体征信号进行检测,对检测到的信号进行降噪处理,分离出心跳和呼吸信号,并对信号数据进行HRV 指标分析,评估驾驶员驾驶状况,最后通过QT 设计的GUI 界面实时显示驾驶员的体征数据,实现了驾驶员生命体征实时检测与驾驶状况评估的功能。

猜你喜欢

体征控件串口
基于C++Builder 的电子邮件接收程序设计*
使用“填表单”微信小程序 统计信息很方便
基于.net的用户定义验证控件的应用分析
MCS—51单片机中的多串口通讯技术的应用
基于BP神经网络的病人体征缓变监护方法
以高热为主诉无明显甲状腺肿大的亚急性甲状腺炎的临床分析
骨关节炎的临床特征及其治疗进展
全国计算机等级考试机房准备工作探讨
微机串口的测试诊断
Spreadsheet控件在Delphi数据库系统中的编程与应用