基于压电薄膜的睡眠监测终端设计
2021-08-10丁新民
丁新民
(深圳康佳电子科技有限公司 多媒体研发中心,广东 深圳 518000)
1 技术背景
随着社会的进步,人们的生活节奏不断加快,睡眠问题也日趋严重,失眠、睡眠障碍等问题受到了越来越多的关注。调查显示,中国有32%的成年人有睡眠障碍。长期睡眠不足会影响人们的健康。许多人为了了解自己的睡眠质量,会采用一些方法监测自己的睡眠情况。目前大多数睡眠监测方法采用脑电波的方式,通过佩戴电极得到δ(1~3 Hz)、θ(4~ 7 Hz)、α(8~ 13 Hz)、β(14~ 30 Hz)波段信息[1],之后分析各个波段信号所占比例,从而得到睡眠状态。这种方式佩戴设备比较麻烦,需要在胸腹部和头部佩戴各种电极来采集数据,一方面操作复杂,需要专业人员来操作这些复杂的仪器和设备;另一方面,也给测试人带来了较大的精神压力,会严重影响人的睡眠质量和心态,导致检测出来的结果并不准确。
本文介绍一种采用压电薄膜来监测睡眠的终端系统,无需佩戴设备,简单放置(平铺)就可以长期监测人的睡眠状态,并可以通过蓝牙低能耗技术(Bluetooh Low Energy,BLE)通知到用户App。该系统具有非接触、不影响睡眠、无需专业操作、上手简单、经济实惠及可推广的特点。
2 实现方式
2.1 总体方案
睡眠监测系统由控制主MCU(STM32F4)、蓝牙通信MCU(NRF52832)以及压电薄膜带组成。STM32F4采用Cortex M4内核,带FPU和DSP指令集,主频较高,信号处理能力较强。蓝牙通信MCU将采集和处理的数据传送给用户。压电薄膜带主要用来收集模拟信号[2]。系统总体框架如图1所示。
图1 总体框架图
2.2 数据采集
睡眠检测带是一条800 mm×8 mm的压电薄膜,质地柔软,无需电源(低功耗),可以放在胸部接近心脏的位置。施加压力在薄膜上方时,两个电极之间会产生线性电信号。具体地,28 μm厚的压电薄膜敏感度微应变典型值为10~15 mV(应变是形变量与原来尺寸的比值)。STM32F4通过A/D转换将模拟信号转换为数字信号,并将转换后的数字信号存储到FATFS文件系统。需要注意,储存时应当在信号数值前面加上对应时间,方便后期对应分析不同时期的状态。PCB板与压电薄膜如图2所示。
图2 PCB板与压电薄膜
2.3 数据处理
数据收集完成后,从文件系统中提取数据。将数据在MATLAB中显示出来。采集的信号包含心率、呼吸及体动等,原始数据如图3所示。可以看到,波形比较杂,难以直接得到心率和呼吸等数据。如果简单采用波峰波谷的方式去计算,实际得到的数据并不理想。通过大量测试发现,心率、呼吸及体动3个参数在频域上面的差异较大。因此,可以把要处理的信号由时域转换为频域。
图3 原始数据图
采用快速傅里叶变换(Fast Fourier Transform,FFT)方式将信号转换为频域信号,对于FFT的分辨力的选取至关重要。设信号的采样频率为F,采样点数为N,经过傅里叶变换之后的频谱精度为fs=F/N。在采样频率固定的情况下,只有增加采样点数,才能提高分辨力,但在实际的过程中采集的数据量大会导致实时性较差。而实际需要在较短的时间内给出结果。对此,可采用补零法[3],将剩余采样点数补零,来提高分辨力。
原始信号如图3所示,由于呼吸信号振幅高、频率低,而心率信号则振幅低、频率高,因此可以得出,低振幅的心率信号叠加在高振幅的呼吸信号上。人在睡眠过程中,由压力等产生的震动信号频率基本在0.2~2 Hz。实际测得手机振动频率大概在100 Hz,利用滤波器,可以很好地将这些信号过滤出来。电风扇的摇头频率正好也处于0.2~2 Hz,但是其只对水平方向有影响。因此,获得的0.2~2 Hz的震动信号就是心率和呼吸信号。
采用2 Hz的低通滤波器对序列进行处理,得到心率信号波形,如图4(a)所示。对信号进行频谱转换,得到频率分量的波形如图4(b)所示。在特定范围(0.2~2 Hz)内,其峰值对应的频率值为心率。从图中可以分析出峰值为1.2 Hz,心率大概为每分钟72次。
图4 心率信号
为了得到相应的呼吸信号,首先通过2 Hz低通滤波器得到呼吸信号,如图5(a)所示。然后将数据分段进行傅里叶变化,得到0~0.8 Hz的频谱图。从图5(b)的频谱图可以看出,峰值出现在0.2 Hz,即每分钟12次。因此通过这种方式可以得出睡眠呼吸的一个重要参数。
图5 呼吸信号
在睡眠过程中,一般人的动作会对压电薄膜产生较大的AD值,包括轻微的肢体动作。通过在原始波形中对一定范围幅度的记数,可以得到该时段的体动值。
2.4 数据分析
睡眠分期主要有W(清醒期)、R(快速眼动期)、SLEEP1(浅度睡眠期)以及SLEEP2(深度睡眠期),其中SLEEP1和SLEEP2也称为NR期。基于健康成人夜间睡眠一般规律,NR期心率平稳且偏低,心率一般会比醒时慢每分钟10~30次;由NR期进入R期时,心动周期的上升较缓,约6~10 min内升到顶部;由NR期进入W期时,心率值上升迅速,一般在2 min内上升到顶部。睡眠状态具有局部稳定性和连续性,不会在短时间内频繁转换睡眠时相。利用这一规律,可以通过心率判断出NR期,根据心率缓慢程度来区分SLEEP1和SLEEP2,一般来说,睡眠程度越深,心率值越低。同样,呼吸次数也有这样的规律,呼吸次数越低,说明处在NR期的概率越大。通过提取某分钟内前后30 s呼吸次数的差值之间的关系,根据睡眠参数在R期明显增大的规律,可以区分R期与非R期[4]。综合心率和呼吸数据,可以判断出R期与NR期。
根据实际的睡眠信号可知,人在深度睡眠时,体动占总的呼吸加体动的比例非常小。通过脑电设备采集脑电信息,脑电的睡眠值一般作为判断睡眠分期的标准,然后与采集体动值相结合,得到相应区间的门阀值,可通过这种方式来区分SLEEP1与SLEEP2。之后,通过心率缓慢程度的方式来修正SLEEP1与SLEEP2分期。
SampEn为样本熵[5],是用来度量时间序列复杂度的值。清醒或者浅睡状态时,样本熵值较高;随着睡眠的深入,熵值下降并且处于相对平稳的状态。因此,可以通过熵值来区分W期。样本熵算法基本步骤如下。
(1)将原始睡眠数据经过滤波处理成睡眠时间序列。
(2)采用MATLAB自带的函数SampEn(data,m,r),data为时间序列,m为重构维数,r为阈值大小,一般选择r=0.1~0.25*Std(data)。
(3)计算 SampEn(t)。
2.5 移植
将在MATLAB上面实现的睡眠分期整理成相应的C语言代码,将其运行到STM32F4MCU上。处理完成后,通过BLE通信,告知用户睡眠状态信息,用户最终得到的分期结果如图6所示。
图6 睡眠分期
3 应用场景
本方案设计的终端设备具有易于安装、使用方便的特点,适合各年龄段的人群。相对于其他睡眠监测设备更加安全,可广泛运用于消费类电子领域。
4 结 语
该睡眠监测设计通过滤波等操作对原始数据进行处理优化,对睡眠状态分期。通过傅里叶变换将收集的时域信号转换成频域信号,提取出峰值部分的参数,进而得到睡眠特征参数。通过类比脑电信号(睡眠情况),可以对算法设置门阀值,更高效地分离出睡眠状态。利用压电薄膜采集数据的方式极大地避免了严格的环境要求和复杂的操作,能够长时间、不间断地监测睡眠状态,准确率高,为有睡眠障碍的人群提供了一种有效的监测手段。