1 总体框架
本设计的总体框架如图1 所示。图1中, 监护仪采用以 ARM Cortex-M3 为内核 STM32 单片机作为核心处理单元, 分别将数字集成心率血氧采集模块、 非接触测量温度的红外线传感器模块得到的心率信号、 血氧信号、温度信号通过通用的通信协议传到核心处理单元进行特定的算法以及处理, 得到当前测试者的心率值、 血氧值、体温值, 这些参数同时在LCD 显示屏上实时显示与更新。测试者还可以通过独立按键配置生理参数的阈值提醒和将得到的生理参数通过无线通信模块实时发送至智能手机与电脑等终端设备, 在云端可以实现这些生理参数的远程监测。
2 硬件设计
STM32F103VET6 的工作频率最高可达72 MHz , 512 KB 的 Flash 容量作为 程序存 储器 , 64 KB 的 SRAM 静态随机存取存储器, 同时, 片上集成丰富的外设, 如: USB 、ADC 、CAN 、I2C 、UART 、TIMER 等。 开发者可通过库函数、寄存器、STM32CUBEMX 等多种开发方式提高编程效率。 2.2 数字集成心率血氧传感器
MAX30102 是美信半导体公司于 2016 年专为可穿戴设备和健康医疗辅助设备设计的一款数字集成心率血氧传感器模块。 该模组主要集成了双波长红光和红外光 LED 、接收反射红光和红外光的光电探测器、环境光消除器件、分辨率可调的高精度 18 位 ADC 、数字噪声消除器件、FIFO 存储器和 I2C 通信接口。 单片机可通过 I2C 通信对 MAX30102 单独设置为心率模式、血氧模式或者共用模式, 配置内部 ADC 分辨率、红光和红外光样本的采集速率、FIFO 中样本数量溢出的中断方式、低功耗待机模式等操作。美信官网有 MAX30102 的系统图和数据手册, MAX30102 模块的电路如图 2 所示。
该传感器测量心率和血氧的方法即光电容积法(PPG)。测量心率的基本原理[5-6]是利用动脉血液中的脉动成分对红外光的吸光度随着心脏跳动而进行周期性的变化(红外光波长通常为900nm附近),经过反射后的红外光光强被光电探测器接收后转化为数字信号,进而通过算法处理得到心率。而测量血氧需要用到两种波长不同的红光(波长通常在660nm附近)和红外光。脉动血液中的还原血红蛋白(Hb)和氧合血红蛋白(HbO2)对660nm(Hb对红外光的消光系数)、aHbO2(HbO2对红光的消光系数)以及用算法从原始样本中分离的交流信号的以下公式,即可得到血氧饱和度值。
2.3 3 红外非接触温度传感器
某些晶体可以因为温度变化而引起晶体表面电荷, 辐射红外线。 红外非接触传感器的工作原理为探测物体表面红外辐射能量, 并将其转变为易于测量的电信号或其他形式的量。 MLX90614 模组集成了用于探测目标温度和环境温度的热电偶 MLX81101 和用于处理热电偶输出模拟信号的专用集成芯片 MLX90302 , 由迈来芯公司研发和生产。
3 软件设计
3.1 用于配置阈值和选择发送数据的按键扫描算法
由于本监护仪设计的循环流程运行一次所需时间为 3 ~ 4 s , 因此通常的在主函数中的按键扫描算法无法精确地识别到测试者按键操作, 故采用了外部中断嵌套定时器中断扫描按键的方法来检测测试者的按键动作。 该方法能极大地减少用户进行单片机配置时所需要的按键数目, 降低产品成本, 同时提高了单片机运行程序的效率, 提高硬件资源的使用率。
具体的按键扫描算法思想如下: 测试者按下配置按键, 单片机扫描到边沿信号, 程序进入设置了打开定时器的外部中断服务函数, 单片机处于扫描按键状态, 测试者此时可进行各种生理参数的阈值配置( 当阈值大于或小于测试者配置的数值时, 单片机会实时响应并提醒测试者) , 或者选择关闭定时器的中断开关, 从而使单片机退出配置模式, 按键算法流程如图 4 所示。
3.2 2 心率血氧算法选择分析
从 MAX30102 中获取的数据信号为原始信号, 需经过算法处理才能得到测试者的心率值与血氧值。 对于从该模块采集出来的数据信号进行处理的方法, 常用的有两种: 一种是时域分析, 即算出脉搏数据信号( PPG) 的平均波峰距, 再用一分钟除以这个波峰距即可得到心率值; 另一种是通过对 PPG 信号进行 FFT 变换得到频域中脉搏波信号的频段, 再将这个频率值乘以一分钟得到心率值。 首先是第二种方法, 经过了在 STM32VET6 使用FFT ( 快速傅里叶变换) 算法对 PPG 信号的处理后, 发现这种方法计算心率值存在时间和精度相矛盾的问题, 由以下公式可得出:
heartrate=60×Samples_per_second×s2_max_index×FFT_N
( 5 )其中, Samples_per_second 为每秒从 MAX30102 中采集的红 外 光 样 本 数 量 , s2_max_index × FFT_N 为 脉 搏 信 号 中交流成分信号的频率, FFT_N 为快速傅里叶变换的点数长度。 若 Samples_per_second 设置为 100 , FFT_N 设置为1 024 , 从 FFT 填满数据到计算出心率值需要花 费 5 s , 但得到的各心率值间隔为 3 。 从监测测试者的心率的实时性和准确性来看, 这都是没有参考价值的。 若提高FFT 的点数长度, 虽然能提高测试心率值的精度, 但这将大大增加了监测出心率的时间, 同时加大了微控单元的负担。 本文设计心率算法使用的是第一种, 计算心率血氧的算法流程如图 5 所示。
3.3 3 机智云物联网平台 demoapp 的移植与调试
从下位机监护仪采集的测试者生理参数( 如:心率、血氧和体温) 在 LCD 模块实时显示, 同时, 还能将监护仪进行联网后在手机客户端和官方的网页界面监测到这 些生理参数。 物联网平台选择的是机智云, 而联网设备选择的是乐鑫的esp8266 。
ESP8266 广泛应用于各种物联网智能硬件的开发, 如: 传感器网络、智能家居设计和无线医疗电子设备等。其常用的固件 AT 指令作为微控单元和 WiFi 模组之间配置功能, 连接与通信的底层指令。 相应地, 机智云物联网开发平台使用 GAgent 固件作为其与WiFi 模组的桥梁。
在 MCU 代码开发方面, 机智云有官方的代码自动生成工具, 该工具帮助开发者完成了 MCU与 WiFi 模组通信连接的底层协议工作, 适用于独立 MCU 方案和 SoC 方案, 使开发者更专注于软硬件的功能开发。机智云数据点设置如表1所示, 云端网页生理参数远程监测如图6所示, 记录了测试者某天21时一段时间内生理参数随时间变化情况。
4 测试验证
为了测试验证本次设计的监护仪的准确性, 以同一测试者 10 个不同时间点的生理参数作为测试样本, 每个时间点分别用参考监护仪和本监护仪进行 5 次采集,最后求平均值。 测试者心率、血氧和体温的测试结果如表 2 所示。
5 结论
智能远程多生理参数健康监护仪为社会上的一些特定人群提供了日常居家健康监护的可行性, 监护仪采用数字集成心率血氧模块等采集人体的心率、血氧和体温等, 通过下位机实时显示数据和波形, 使用独立按键配置阈值提醒和配置联网, 同时可通过云端网页监测记录。 本设计具有操作简单、成本低、便携性好、扩展性丰富、测量较为准确等特点。