1. 项目背景与核心功能
在健康监测领域,便携式体征参数检测设备正变得越来越重要。这个基于单片机的体征检测系统,能够同时测量体温、心率、脉搏和体重四项关键生理指标,相当于把医院里分散的检测设备整合到了一个便携装置中。
我最近完整实现了这个系统的硬件搭建和软件编程,实测数据误差控制在医疗级标准范围内。整套方案成本不到200元,但实现了市面千元级健康检测设备80%的核心功能。特别适合家庭健康监测、社区医疗服务站等场景使用。
2. 系统整体设计方案
2.1 硬件架构设计
系统采用模块化设计思路,核心由五个部分组成:
- STM32F103C8T6最小系统板(主控)
- MAX30102血氧心率传感器
- DS18B20温度传感器
- HX711体重称重模块
- 0.96寸OLED显示屏
硬件选型心得:STM32F103系列虽然性能不是最强,但其丰富的外设接口和成熟的生态,特别适合这种多传感器集成的项目。实测同时处理四个传感器数据时CPU占用率仅65%左右。
2.2 传感器工作原理详解
2.2.1 心率检测原理
MAX30102采用光电容积法(PPG):
- 发射940nm红外光穿透皮肤
- 检测血液流动导致的光强变化
- 通过算法提取脉搏波特征点
- 计算相邻波峰间隔得出心率
实测采样率设置为100Hz时,检测误差可控制在±2bpm内。
2.2.2 体温测量方案
DS18B20数字温度传感器:
- 测量范围0-50℃(适合人体温)
- 精度±0.5℃
- 单总线通信节省IO口
- 需做接触式测量(建议设计耳温探头)
3. 核心电路设计与实现
3.1 信号调理电路
心率模块需要特别设计模拟前端:
c复制// 伪代码展示关键配置
void MAX30102_Init() {
setLEDPulseWidth(411us); // 最佳信噪比
setADCRange(16384nA); // 适合手指测量
setSampleRate(100Hz); // 平衡精度与功耗
}
体重检测采用24位ADC芯片HX711:
- 称重传感器选用5kg量程
- 需做去皮重和线性校准
- 关键代码片段:
c复制float getWeight() {
long adc = HX711_Read();
return (adc - tare_offset) * calibration_factor;
}
3.2 电源管理设计
多传感器系统需特别注意电源噪声:
- 数字部分:AMS1117-3.3V稳压
- 模拟部分:LT1763低噪声LDO
- 电池:18650锂电池+充电管理IC
- 实测工作电流:正常模式28mA,待机模式0.5mA
4. 软件算法实现
4.1 心率算法处理流程
- 原始信号采集(100Hz)
- 带通滤波(0.5-5Hz)
- 移动平均平滑
- 峰值检测算法:
c复制int detectPeak(int sample) {
static int last_val = 0;
if(sample > threshold && last_val <= threshold) {
return 1; // 检测到波峰
}
last_val = sample;
return 0;
}
- 计算RR间期(60/RR间期=心率值)
4.2 体温补偿算法
DS18B20需进行环境补偿:
- 存储基准温度-电压对照表
- 根据当前环境温度动态修正
- 补偿公式:
code复制最终体温 = 原始读数 + 0.1*(25 - 环境温度)
5. 系统集成与测试
5.1 硬件组装要点
-
传感器布局原则:
- 心率传感器远离电源模块
- 温度传感器独立屏蔽罩
- 称重模块机械隔离
-
线材选择:
- 模拟信号使用双绞线
- I2C总线加10k上拉电阻
- 电源线径不小于0.5mm²
5.2 校准流程实录
-
体重校准:
- 空载时记录tare_offset
- 放置500g标准砝码计算calibration_factor
-
体温校准:
- 对比水银温度计读数
- 调整补偿系数
-
心率验证:
- 同时连接专业心率带
- 调整滤波参数至误差最小
6. 常见问题解决方案
6.1 心率检测不稳定
可能原因及对策:
- 手指接触不良 → 增加橡胶指套
- 环境光干扰 → 启用传感器的环境光消除功能
- 运动伪影 → 开启运动补偿算法
6.2 体重测量漂移
典型处理流程:
- 检查HX711基准电压(应为1.25V)
- 重新执行去皮操作
- 检查称重平台机械结构
6.3 多传感器数据冲突
优化方案:
- 采用分时采样策略
- 设置传感器优先级:
- 心率 > 体温 > 体重
- 增加数据校验位
7. 项目优化方向
在实际使用三个月后,我总结了几个值得改进的点:
-
低功耗优化:
- 加入加速度计实现运动唤醒
- 修改为中断驱动式采样
- 实测可使续航从3天提升至2周
-
无线传输扩展:
- 增加ESP-01S WiFi模块
- 实现数据自动上传
- 需注意天线远离模拟电路
-
外壳设计建议:
- 3D打印医用级ABS材料
- 心率检测区采用磨砂表面
- 重量控制在150g以内