吴 超
(广州大学华软软件学院,广东 广州 510900)
随着传感器、人机交互、柔性传感器、云计算、大数据、物联网等技术的发展,可穿戴设备的应用和用户体验得到不断丰富[1-2]。除了智能眼镜、智能手表和智能手环等产品之外,智能服饰、智能鞋、智能配饰等产品形态相继出现[3]。中国人口老龄化程度的逐渐加深,慢性病人群的增多以及健康管理方式的转变推动了中国智能可穿戴设备的发展。可穿戴健康监测设备改善了用户的健康管理方式、提高了用户的健康水平、提高了中国居民的生活质量。心率的变化能直接或间接反映人体多方面的健康状态[4]。当前使用最广泛的心率计算方法是光电体积方法[5-6]。血管里的血液体积随心脏泵血呈周期性变化,血液体积的周期性变化成为利用PPG信号进行心率估计的基础。光电体积法容易受到干扰,如外界光干扰、手腕运动干扰、温度干扰、皮肤出汗干扰等。本文将32位处理器STM32F103ZET6作为主控芯片,使用LM386声音模块采集数据,通过低功耗蓝牙模块nRF51822发送心率数据到手机,实现抗干扰性强且成本低的心率监测设备。
设备包含数据采集模块、数据处理模块、蓝牙传输模块。主控芯片为32位处理器STM32F103ZET6,主要功能包括数据处理、网络传输、设备控制等。数据采集模块为LM386。蓝牙传输模块nRF51822可把心率数据发送到用户手机。心率监测设备通过LED灯显示工作状态,有2个按键(电源开关键和设备重启键)。设备硬件结构如图1所示。
图1 设备硬件结构
STM32F103ZET6由ST公司出品,采用Cortex-M3内核,CPU最高达72 MHz,具有512 KB FLASH、多种外设、USB接口和CAN接口。它适用于高速处理环境,如图像处理、飞控等领域。STM32F103ZET6内嵌8 MHz的RC振荡器,多达8个定时器,3个16位定时器,2个看门狗定时器(独立型和窗口型),3个USART接口,通用同步/异步串行接收/发送器。STM32F103ZET6芯片原理如图2所示。
图2 STM32F103ZET6主控芯片
LM386是一种音频集成功率放大器,具有功耗低、内链增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点。LM386主要应用于低电压消费产品。微雪声音传感器模块使用LM386对音频信号进行200倍放大,灵敏度可调。声音模块与STM32F103ZET6的端口连接如图3所示。
图3 声音模块与STM32端口连接
nRF51822是功能强大的多协议SoC,适用于Bluetooth低功耗和2.4 GHz超低功耗无线应用。nRF51822拥有256 KB FLASH,16 KB RAM的32位ARM Cortex M0 CPU。灵活的31引脚GPIO映射方案可使I/O(例如串行接口、PWM和正弦解调器)根据PCB需求映射到任何设备引脚。nRF51822支持 S110蓝牙低功耗协议堆栈及2.4 GHz协议堆栈。nRF51822电路原理如图4所示。
图4 nRF51822电路原理
主控芯片STM32F103ZET6通过串口1连接到nRF51822的串口,发送心率数据到nRF51822,nRF51822把心率数据通过蓝牙发送到用户手机。
主控芯片STM32F103ZET6通过串口1发送心率数据到nRF51822。串口数据传输格式为十六进制,消息长度为4字节,第一个字节表示类型,十六进制表示为0x48(H);第二个字节表示id号;第三个字节表示心率数值;第四个字节表示换行,十六进制表示为0x0A。消息格式如图5所示。
图5 串口消息格式
可穿戴心率监测设备首先进行硬件初始化,包含按键、LED灯、ADC转换器、定时器。主控芯片STM32F103ZET6使用定时器控制采集声音和计算心率值的时间,声音采集频率为10 ms/次,心率计算频率为30 s/次。主控芯片STM32F103ZET6计算心率值后,通过USART1发送到nRF51822模块,nRF51822模块通过蓝牙发送到用户手机。用户手机APP可以显示心率的历史数据。程序流程如图6所示。
图6 心率监测设备程序流程
主控芯片STM32F103ZET6通过LM386声音模块获得声音数据。LM386声音模块通过AOUT端口输出模拟信号,经ADC转换后获得声音对应的电压值。
心率信号是低频信号,最高值约为150次/min,最低值约为40次/min。设备通过低通滤波过滤高频信号,然后通过计数函数的波峰个数获得用户的心率值。
计算信号数值的一阶导数,波峰是一阶导数从正数变为负数的点。因为心率最高值约为150次/min,设备的声音采样频率为100 Hz,所以波峰点间的距离不能小于40。
设备采集的心率声音信号通过低通滤波可以过滤很多高频干扰信号,使心率计算更容易。对30 s的心率声音信号数据进行处理,低通滤波保留小于3 Hz的信号,滤波效果如图7所示。
图7 心率信号低通滤波
查找函数的峰值,计算心率数值,根据心率数值的正常范围过滤异常数据点,使心率计算更准确。经过计算,当前的心率数值为68次/min,图8中的红色圆点是计算的波峰。图9数据中的干扰点不会影响心率的计算,计算的心率数值为80次/min。
图8 心率信号波峰个数计算
图9 存在异常数据的心率计算
本设计实现了一个抗干扰性强且成本较低的可穿戴心率监测设备,能够实时监视用户的心率数据。设备通过蓝牙与用户手机进行数据传输,使用方便。设备使用的声音传感器容易安装到衣物中,数据采集方便。未来,笔者将对本设备的功耗进行优化,以延长该心率监测设备的使用时间。