[开源免费]基于STM32的心率监控仪 —— 从原理到实现的完整技术解析

news/2025/12/6 13:58:49/文章来源:https://www.cnblogs.com/baoto/p/19315653

基于STM32的心率监控仪 —— 从原理到实现的完整技术解析

前言

心率监测技术在智能穿戴、健康管理设备中已经非常普及,但如果你想亲手做一个心率监控仪,理解其硬件原理、信号采集方法以及心率算法,其实并不复杂。在大四毕业设计期间,我曾基于 STM32F103C8T6 + PulseSensor + OLED 实现过一台完整可用的心率监控仪,并将全过程整理成技术文档。

本文将结合当时的实践,系统讲解这个小项目的实现思路,涵盖从硬件设计、信号采集、算法处理到界面显示的完整流程,帮助你快速入门一个小而完整的嵌入式信号采集项目。
在这里插入图片描述

源码分享

直接放到之前写的文章里了,免费开源,下载学习即可。
https://blog.csdn.net/weixin_52908342/article/details/155599089

项目介绍

本项目的核心功能包括:

  • 采集手指脉搏的光电信号
  • 使用 STM32 内部 ADC 进行采样
  • 利用算法识别心率波形峰值,并计算 BPM(Beats Per Minute)
  • 在 OLED 上实时显示波形与心率数值
  • 当心率异常时通过蜂鸣器报警
  • 支持按键切换界面、关闭报警等交互

使用到的关键器件:

  • Pulse Sensor 心率传感器(模拟信号输出)
  • STM32F103C8T6 最小系统板
  • 0.96 寸 128×64 OLED(IIC 接口)
  • LED ×1
  • 按键 ×2
  • 蜂鸣器 ×1(需三极管驱动)

成品具有较清晰的心率波形显示、较稳定的数据采集能力,以及轻量的硬件成本,非常适合作为课程设计或个人项目。


开发环境与硬件构成

软件环境

  • Windows 10
  • MDK-ARM Keil 5.24
  • 下载器:ST-Link / J-Link / 串口均可
    在这里插入图片描述

硬件清单

器件 功能
STM32F103C8T6 主控芯片
Pulse Sensor 心率模块 采集脉搏光电信号
OLED(IIC) 显示波形与数据
蜂鸣器 + 三极管 心率异常报警
按键 2 个 页面切换、报警消除
LED 心跳指示灯(可选)

硬件电路设计

Pulse Sensor 通过光电反射检测指尖血液流动变化,并输出模拟电压信号。STM32 使用 ADC1 通道 0(PA0) 进行采样。配合简单 RC 滤波,可有效抑制部分噪声干扰。

OLED 使用软件 IIC 驱动(示例中使用 PA7/SDA 和 PA8/SCL),布线简单,占用资源少。

蜂鸣器由 NPN 三极管驱动,避免 GPIO 无法直接提供驱动电流的问题。

完整连接关系如下:

  • Pulse Sensor → PA0(ADC)
  • OLED SDA → PA7
  • OLED SCL → PA8
  • 按键 K1/K2 → 任意 GPIO(带上拉)
  • 蜂鸣器 → 三极管 → GPIO
  • LED → GPIO

(电路图略,可按你的原图展示)


软件设计与核心模块

软件部分主要包含三大模块:

  1. OLED 显示系统
  2. ADC 采样与信号预处理
  3. 心率计算算法(峰值检测法)

1. OLED 显示模块

OLED 采用软件 IIC 驱动,兼容性好且不占用硬件 IIC。显示部分我在移植正点原子例程基础上进行了:

  • 优化字库,支持显示汉字
  • 增加数字补零功能
  • 提供波形绘制和连续补点,使曲线更平滑

下面是波形绘制核心代码示例:

void OLED_Waveform_display(void)
{int i, n;if(waveform_flag){waveform_flag = 0;for(i = 127; i >= 0; i--){for(n = 0; n < 64; n++)OLED_DrawPoint(i, n, 0);#if 1if(i != 0){if(abs(waveform[i] - waveform[i-1]) > 1){int start = MIN(waveform[i], waveform[i-1]);int end = MAX(waveform[i], waveform[i-1]);for(n = start; n <= end; n++)OLED_DrawPoint(i, n, 1);}}
#endifOLED_DrawPoint(i, waveform[i], 1);}OLED_Refresh_Gram();}
}

2. Pulse Sensor 信号采样

Pulse Sensor 输出模拟信号,需要 STM32 的 ADC 来采集。建议采样频率在 400Hz~500Hz 之间(本项目使用 2ms 定时器中断 = 500Hz)。

核心采样流程:

  1. 定时器每 2ms 进入中断
  2. 执行 ADC 启动转换
  3. 读取电压值(0–4095)
  4. 保存到波形缓存
  5. 调用心率处理算法

3. 心率计算算法(峰值检测法)

算法原理非常经典:

  1. 记录采样时间戳(sampleCounter)
  2. 找到波峰(P)和波谷(T)
  3. 检测信号越过阈值(thresh)时触发一次心跳
  4. 计算两次心跳间隔(IBI = Inter Beat Interval)
  5. BPM = 60000 / 平均 IBI

以下为简化算法片段:

void HeartRate_deal(void)
{Num = sampleCounter - lastBeatTime;if (Signal < thresh && Num > (IBI/5)*3)if (Signal < T) T = Signal;if (Signal > thresh && Signal > P)P = Signal;if (Num > 250){if (Signal > thresh && !Pulse && Num > (IBI/5)*3){Pulse = true;IBI = sampleCounter - lastBeatTime;lastBeatTime = sampleCounter;if (firstBeat) { firstBeat = false; secondBeat = true; return; }if (secondBeat){secondBeat = false;for (i = 0; i < 10; i++)rate[i] = IBI;}runningTotal = 0;for (i = 0; i < 9; i++) { rate[i] = rate[i+1]; runningTotal += rate[i]; }rate[9] = IBI;runningTotal += rate[9];BPM = 60000 / (runningTotal / 10);QS = true;}}if (Signal < thresh && Pulse){Pulse = false;amp = P - T;thresh = amp/2 + T;P = thresh;T = thresh;}if (Num > 2500){thresh = P = T = 512;firstBeat = true;secondBeat = false;lastBeatTime = sampleCounter;}
}

该算法具有较好的鲁棒性,在 PulseSensor 官方算法基础上进行了简化与调优。


系统交互设计

实际运行中,设备具有以下操作流程:

  1. 按键 K1:切换界面

    • 界面 1:显示心率数值、ADC 原始数据等
    • 界面 2:实时心率波形显示
  2. 手指检测机制

    • 利用采集到 0 值的“空白时间段”判断是否有人手放上传感器
  3. 心率异常报警

    • 当 BPM 不在设定区间(如 40–150)蜂鸣器报警
  4. 按键 K2:关闭蜂鸣器


在这里插入图片描述

成品展示

你可以使用原项目中的图片,例如:

  • 心率动态波形图
  • 心率数据界面
  • 实际测试图
    在这里插入图片描述

总结

本项目虽然硬件简单,但涵盖了 传感器信号采集 → 嵌入式算法处理 → 波形图形化显示 → 用户交互设计 的完整体系,非常适合作为嵌入式入门项目或课程设计。

你可以在此基础上继续扩展:

  • 通过 BLE/WiFi 上传数据
  • 加滤波器、卡尔曼算法优化心率稳定性
  • 更换更高性能的 MCU
  • 增加 PPG 信号分析与 HRV(心率变异性)计算

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/990195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

框架即导师,代码即课程:JBoltAI如何让Java开发者快速吃透企业级AI应用开发

框架即导师,代码即课程:JBoltAI如何让Java开发者快速吃透企业级AI应用开发在AI技术渗透到软件研发各个环节的今天,很多Java团队都面临一个共性困境:想切入AI应用开发,但要么卡在“缺乏可落地的实践案例”,要么困…

想快速上线AI应用?JBoltAI框架为Java开发者赋能

想快速上线AI应用?JBoltAI框架为Java开发者赋能一、Java开发者的AI应用开发痛点在AI技术全面渗透各行各业的当下,Java开发者群体正面临一场“想做却难落地”的困境。作为企业级应用开发的主流技术栈,Java生态在对接…

尺度变换是指图片大小变化吗

是的,但远不止改变图片大小这么简单。一、尺度变换 = 改变图像分辨率 最直接的定义:将图像从原始尺寸(如 30002000)缩放到另一尺寸(如 800600 或 40003000)。

2025 年 12 月燕窝品牌权威推荐榜:溯源甄选,滋养臻礼,涵盖燕窝美食/糕点/阿胶糕/年礼等衍生佳品深度解析

2025 年 12 月燕窝品牌权威推荐榜:溯源甄选,滋养臻礼,涵盖燕窝美食/糕点/阿胶糕/年礼等衍生佳品深度解析 随着健康消费理念的持续深化与国潮文化的兴起,燕窝已从传统的高端滋补品,逐渐演变为融入日常生活的健康美…

InnoDB 索引 B+Tree 全剖析

⭐ 第一章:为什么必须是 B+Tree 而不是 B-Tree / Hash? 1. Hash(均匀分布)优点:O(1) 查找 缺点致命:不支持范围查询、排序、前缀匹配WHERE age BETWEEN 10 AND 18 → 完全废掉2. B-Tree(每个节点都保存数据)层…

Keyviz 屏幕按键程序 下载

Keyviz是一个免费的开源软件,打开后可以实时在屏幕上展示按下的按键,更方便操作演示类的视频,下面介绍软件的使用方法,非常简单 网站 www.artcg.design 下载与安装 地址:https://github.com/mulaRahul/keyviz/rel…

2025 年 12 月电线厂家权威推荐榜:铜芯/无氧铜/BVR/光伏/工业/家装/消防电线全品类深度解析与选购指南

2025 年 12 月电线厂家权威推荐榜:铜芯/无氧铜/BVR/光伏/工业/家装/消防电线全品类深度解析与选购指南 在现代社会的基础设施建设与能源传输体系中,电线电缆作为“血管”与“神经”,其性能与可靠性直接关系到电力系…

COCO数据集 评估标准中计算 mAP(mean Average Precision) 的核心方法:

在 IoU阈值从0.5到0.95 的范围内,每隔 0.05 计算一个AP,然后取平均值。 mAP@[.5:.95]=101​IoU=0.5∑0.95​APIoU​ 具体IoU阈值序列: [0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95] 共 10个 阈值点,计算 10个A…

2025年中国干式快速接头制造商推荐:航空专用干式快速接头哪

TOP1 推荐:曼太柯(杭州)流体技术有限公司 推荐指数:★★★★★ 口碑评分:全球流体输送安全领域供应商 专业能力:曼太柯(杭州)流体技术有限公司是Elaflex集团-Mann Teknik AB在中国设立的外商独资企业,旗下MannTek…

2025上海外资注册公司五大靠谱机构年度排名,看看哪家收费便

本榜单依托上海本地政策适配性、服务透明化、客户口碑三大核心维度,深度筛选5家专业机构,为企业精准匹配合规高效的注册服务伙伴,规避低价陷阱与政策风险。 TOP1 推荐:上海广域 推荐指数:★★★★★ 口碑评分:上…

2025年单片机开发权威推荐榜:单片机程序/设计/定制/外包,技术精湛与高效交付的嵌入式解决方案专家

2025年单片机开发权威推荐榜:单片机程序/设计/定制/外包,技术精湛与高效交付的嵌入式解决方案专家 在当今智能化浪潮席卷全球的背景下,单片机作为嵌入式系统的核心,其开发与应用已深度渗透至工业控制、消费电子、汽…

深入理解MySQL基本原理和架构

🚀 一、MySQL 整体架构(从宏观到微观) MySQL 主要由 Server 层 与 存储引擎层(InnoDB) 组成。 ┌──────────────────────────────┐ │ Server 层 │ │ SQ…

深入浅出Mybatis - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年 12 月折弯机折边机厂家权威推荐榜:自动/数控/大型/全自动/铜排/异形折边机,实力工厂精准选型与高效加工解决方案

2025 年 12 月折弯机折边机厂家权威推荐榜:自动/数控/大型/全自动/铜排/异形折边机,实力工厂精准选型与高效加工解决方案 随着制造业向高端化、智能化、绿色化方向深度转型,金属板材加工领域正经历一场深刻的技术革…

2025年装配式建筑房屋材料制造/安装公司排行榜,精选技术强

为帮助企业精准锁定适配需求的装配式建筑合作伙伴,避免选型走弯路,我们从技术落地能力(如构件精度控制、安装工艺成熟度)、产品质量稳定性(含材料性能、抗震防水指标)、全周期服务质量(覆盖设计到售后维护)及真…

RustDesk安装部署

参考文档: 安装部署:https://blog.csdn.net/2509_94082995/article/details/155366183 开放的端口:https://zhuanlan.zhihu.com/p/1912799322636030027 官网:https://github.com/rustdesk/rustdesk/blob/master/do…

2025 年 12 月电动隔断厂家权威推荐榜:智能活动隔断/高端玻璃隔断/移动隔音隔板,创新设计与场景适配深度解析

2025 年 12 月电动隔断厂家权威推荐榜:智能活动隔断/高端玻璃隔断/移动隔音隔板,创新设计与场景适配深度解析 随着现代建筑空间对灵活性、功能性与美学要求的不断提升,电动隔断系统已从传统的空间分隔工具,演变为集…

2025 年 12 月油漆品牌权威推荐榜:环保漆、工业漆、木器漆、墙面漆,源头厂家精选与性能深度解析

2025 年 12 月油漆品牌权威推荐榜:环保漆、工业漆、木器漆、墙面漆,源头厂家精选与性能深度解析 在当今的工业制造与建筑装饰领域,涂料作为不可或缺的表面处理与防护材料,其性能、环保性及可靠性直接关系到最终产品…

2025年液化气专用干式快速接头厂商推荐:干式快速接头供应企

TOP1 推荐:曼太柯(杭州)流体技术有限公司 推荐指数:★★★★★ 口碑评分:全球流体安全输送领域厂商 专业能力:曼太柯是Elaflex集团旗下专注干式接头与拉断阀的核心品牌,作为液化气专用干式快速接头国际品牌的代表…

2025年五大靠谱本国端口锁企业推荐,专业的usb端口锁与信

在数字化办公与设备管理需求激增的当下,端口锁作为保障设备安全、防止数据泄露的关键工具,已成为企业IT运维的隐形防线。面对市场上参差不齐的产品,如何挑选专业的usb端口锁与信誉好的端口锁品牌?以下从技术实力、…