基于STM32单片机的心率血氧监测系统设计(STM32代码编写+手机APP设计+PCB设计+Proteus仿真)

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 1 资料获取与演示视频
    • 1.1 资料介绍
    • 1.2 资料获取
    • 1.3 演示视频
  • 2 系统框架
  • 3 硬件
    • 3.1 主控制器
    • 3.2 显示屏
    • 3.3 WIFI模块
    • 3.4心率血氧传感器
  • 4 设计PCB
    • 4.1 安装下载立创EDA专业版
    • 4.2 画原理图
    • 4.4 使用嘉立创下单助手进行下单,打板。
    • 4.5 实物图
  • 5 软件设计
    • 5.1 编写STM32单片机代码
    • 5.2 设计手机客户端
  • 6 proteus仿真
  • 7 实验测试
    • 7.1 准备
    • 7.2 烧录软件
    • 7.3 实验验证
  • 总结


前言

本文设计出一款基于STM32单片机的心率血氧值监测系统。
主要功能如下:

1、检测人体的心率和血氧值。

2、按键调节阈值,超出阈值声光报警。

3、阈值保存到AT24C02,掉电不丢失,实现数据永久化存储。

4、显示屏实时显示数据。

5、通过ESP8266连接 机智云平台,实现单片机-手机APP交互。


1 资料获取与演示视频

1.1 资料介绍

在这里插入图片描述

1.2 资料获取

完整资料获得链接:
咸鱼:【胜磊电子】基于STM32单片机的心率血氧监测系统设计(STM32代码编写+手机APP设计+PCB设计+Proteus仿真)

淘宝:【胜磊电子】基于STM32单片机的心率血氧监测系统设计(STM32代码编写+手机APP设计+PCB设计+Proteus仿真)

1.3 演示视频

哔哩哔哩:【胜磊电子】基于STM32单片机的心率血氧监测系统设计(STM32代码编写+手机APP设计+PCB设计+Proteus仿真)

2 系统框架

系统框架如图所示:
在这里插入图片描述

单片机整体框图:

在这里插入图片描述


3 硬件

3.1 主控制器

主控制器选择STM32F103C8T6,在淘宝上买的,如下图所示:
在这里插入图片描述
STM32F103C8T6 是意法半导体(ST)推出的一款基于 ARM Cortex-M3 内核的 32 位微控制器,以下从其性能参数、功能特性、应用领域等方面进行介绍:

主频
最高可达 72MHz,具备 1.25DMIPS/MHz 的运算能力,能够快速处理各种指令和任务。
内核处理器:采用 ARM Cortex-M3 内核,具有高性能、低功耗的特点,支持 Thumb-2 指令集,能够高效地执行各种指令。

存储
拥有 64KB 的 Flash 存储器,用于存储程序代码和常量数据;20KB 的 SRAM,用于存储运行时的变量和临时数据。

丰富的外设接口
USART:集成了 3 个 USART(通用同步异步收发器)接口
SPI:2 个 SPI(串行外设接口)接口
I2C:2 个 I2C(Inter-Integrated Circuit)接口
USB: 1 个 USB 2.0 全速接口

定时器
包含 7 个定时器,其中包括 4 路 PWM 输出,可用于脉冲宽度调制、输入捕获、输出比较、正交编码器接口等功能,广泛应用于电机控制、脉冲信号生成等领域。

ADC(模数转换器)
内置 2 个 12 位 ADC,转换时间仅为 1μs,具有 10 个通道,可对多路模拟信号进行快速采样转换,适用于各种需要采集模拟信号的场景,如传感器数据采集等。

时钟系统
内置 4-16MHz 的高速内部时钟(HSI)和 32KHz 的低速内部时钟(LSI),也可通过外部晶振提供更高精度的时钟源,通常包括一个 8MHz 的高速外部时钟(HSE)和一个 32.768KHz 的低速外部时钟(LSE),为芯片内部各个模块提供精确的时钟信号,确保它们能够同步工作。

其他功能
集成了看门狗定时器、CRC 计算单元、RTC 实时时钟、SysTick 定时器、DMA(Direct Memory Access)控制器等,进一步增强了芯片的功能和可靠性。支持 JTAG(Joint Test Action Group)和 SWD(Single Wire Debug)调试接口,方便开发人员连接调试器进行程序调试和下载,提高开发效率。

3.2 显示屏

使用1.8寸显示屏,分辨率128*160。如图,
在这里插入图片描述
1.8寸彩屏,支持16BIT RGB 65K彩色显示,显示色彩丰富

128X160分辨率,显示清晰

采用SPI串行总线,只需几个IO即可点亮显示

带SD卡槽方便功能扩展

军工级工艺标准,长期稳定工作

3.3 WIFI模块

WIFI模块使用ESP8266,如图,
在这里插入图片描述
ESP01S 是一款基于乐鑫 ESP8266EX 芯片的低成本、低功耗 Wi-Fi 模块,专为物联网(IoT)和嵌入式系统设计。
以下是其详细介绍:

核心架构与性能
处理器:采用 32 位 Tensilica L106 RISC 处理器,主频支持 80MHz 或 160MHz,集成 TCP/IP 协议栈,可直接运行用户程序。
内存配置:
闪存(Flash):提供 1MB 或 4MB 两种版本(具体型号差异),用于存储固件和用户代码。
RAM:64KB,支持程序运行和数据缓存。
通信协议:支持 802.11b/g/n 标准,数据传输速率最高 4Mbps,覆盖 2.4GHz 频段,支持 STA、AP、STA+AP 三种工作模式。
硬件资源与接口
引脚定义:
供电:3.0V~3.6V(推荐 3.3V),传输电流 170mA,接收电流 56mA。
通信:UART 接口(TXD/RXD),支持 AT 指令交互,波特率默认 115200bps。
GPIO:提供 2 个可编程引脚(GPIO0、GPIO2),可用于控制外设(如 LED、继电器)或传感器输入。
其他:CH_PD(使能引脚,高电平有效)、RST(复位引脚)。
扩展能力:
PWM:部分引脚支持 PWM 输出,用于电机调速或灯光控制。
I²C/SPI:需通过外部扩展芯片(如 PCF8574、MCP23017)实现。
低功耗特性
工作模式:
活跃模式:传输时电流约 170mA,接收时 56mA。
睡眠模式:
轻睡眠:电流约 10mA,保留网络连接。
深度睡眠:电流低至 20μA,适用于电池供电设备。
唤醒方式:支持定时唤醒、GPIO 触发唤醒或 UART 数据唤醒。
应用场景
智能家居:通过 Wi-Fi 连接控制灯光、空调、门锁等设备。
环境监测:采集温湿度、空气质量等数据并上传至云端。
工业自动化:远程监控设备状态,实现无线数据传输。
智能农业:监测土壤湿度、光照等参数,优化种植管理。

3.4心率血氧传感器

心率血氧传感器使用MAX30102,如图:
在这里插入图片描述
产品介绍:
MAX30102是一个集成的脉搏血氧仪和监测仪生物传感器的模块。它集成了一个红光LED和一个红外光LED、光电检测器、光器件,以及环境光抑制的低噪声电子电路。MAX30102采用一个1.8V电源和一个独立的5.0V用于内部LED灯源。应用于可穿戴设备进行心率和血氧采集检测,佩戴于手指、耳垂和手腕等处。标准和I2X兼容的通信接口可以将采集到的数值传输给单片机进行心率和血氧计算。此外,该芯片还可通过软件关断模块,待机电流接近为0,实现电源始终维持供电状态。
工作原理:
1.光溶积法:利用人体组织在血管搏动时造成透光率不同来进行脉搏和血氧饱和度测量的
2.光源:采用对动脉血中氧合血红蛋白(Hb02)和血红蛋白.(Hb)有选择性的特定波长的发光二极管
3.透光率转化为电信号动脉搏动充血容积化导到光的透光率发生改变,此时由光电变换接收经人体组织反射光线,转变为电信号并将其放大和输出。


4 设计PCB

直接使用上述模块,线路非常杂乱,因此,我们需要自己设计一块PCB底板。开发工具使用立创EDA。

相关资料已经放在本文第一节。

4.1 安装下载立创EDA专业版

4.2 画原理图

在这里插入图片描述
4.3 摆放元器件,设计规则,泪滴,铺铜。
在这里插入图片描述

4.4 使用嘉立创下单助手进行下单,打板。

4.5 实物图

实物如图:
在这里插入图片描述


5 软件设计

5.1 编写STM32单片机代码

工程目录如图所示:
在这里插入图片描述

5.2 设计手机客户端

在这里插入图片描述


6 proteus仿真

本系统使用proteus8.17进行仿真测试。
在这里插入图片描述
完整视频请看本文1.3 演示视频


7 实验测试

7.1 准备

1、准备好硬件实物,接好传感器和其他外设。
2、将TFT LCD插在底板响应位置。
3、ESP8266插在相应位置。
4、在手机端安装机智云APP。
5、上电

7.2 烧录软件

下载代码需要提前安装好MDK环境,准备好SWD下载器,在MDK中进行“LOAD”下载。

7.3 实验验证

1、 proteus仿真测试

2、监测心率和血氧测试

3、按键调节阈值报警测试

4、AT24C02永久存储测试

5、手机客户端测试

演示视频:

基于STM32单片机的心率血氧值监测系统(STM32代码编写+手机APP设计+PCB设计+Proteus仿真)


总结

以上,就是基于STM32单片机的心率血氧监测系统设计,包含实物,仿真、PCB,手机APP等,并对每个环节进行了详细测试。

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

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

相关文章

main(int argc,char **agrv)的含义

今天和大家讨论一个常见的但是不容易深入了解的知识点。那就是 main 函数声明中使用到的 argc 和 argv 的含义。通常我们写主函数的时候一般都是直接使用int main() 或者 void main() 来声明 main 函数。但是你知道吗?在c89/c99的语言标准中,main函数的声…

如何简单实现发版不影响客户使用?nginx负载

nginx负载发版不影响客户使用 1.需要二台服务器 2.二台服务器均是正式环境配置 3.服务器Nginx配置修改 发版顺序:先在服务器2发版,发布成功后,再改服务器Nginx配置,重新加载nginx;然后在服务器再发版,发布成…

qt笔记(1)——Qtablewidget使用

1.基础使用方法 (略) 2.坑和注意点 2.1 设置一个单元格的编辑属性 在代码中,想要修改一个单元格的编辑属性,需要对这个item的flags进行设置;注意对一个tablewidget的一个item成员进行设置后,进行一次编…

字符串的模糊匹配方法介绍

字符串的模糊匹配方法介绍 目录字符串的模糊匹配方法介绍一、编辑距离(Levenshtein Distance)复杂度分析二、Jaro-Winkler 距离复杂度分析三、最长公共子序列(LCS)复杂度分析四、模糊搜索(Fuzzy Search)复杂…

ActiveMQ在Spring Boot中的详细使用指南

📋 目录 🚀 ActiveMQ简介 什么是ActiveMQ? 核心概念 🏗️ 基础架构组件 📝 重要概念解释 ActiveMQ vs 其他消息中间件 🔧 环境搭建 1. ActiveMQ服务端安装 Docker方式(推荐初学者) 手动安装方式 2. 验证安装 访问Web管理界面 连接参数 测试连接 �…

二元一次方程

前言 最近刚学二元一次方程,想写一篇专栏熟悉一下本文写给初一的同学看,学过的就划了吧二元一次方程 两个未知数最高项次数为 111 次为整式方程二元一次方程的解不唯一,但是二元一次方程可以用一个未知数来表达另一个未知数eg:eg:eg: xy1x y…

AI编程的未来是智能体原生开发?

目录 前言 一、从“串行”到“并行”:什么是智能体原生开发? 1.1 传统模式(串行思维) 1.2 智能体原生模式(并行思维) 二、程序员的新角色:从代码手艺人到系统思想家 三、软件开发的终局&a…

【牛客刷题】小红的与运算

文章目录 一、题目介绍1.1 题目描述1.2 输入描述1.3 输出描述1.4 示例二、 解题思路2.1 核心算法设计2.2 性能优化关键2.3 算法流程图三、解法实现3.1 解法一:基础实现3.1.1 初级版本分析3.2 解法二:优化版本(推荐)3.2.1 优化版本分析四、总结与拓展4.1 关键优化技术4.2 算…

spring中 方法上@Transation实现原理

Spring中Transactional注解方法实现原理Spring的Transactional注解在方法级别实现事务管理的原理主要基于动态代理和拦截器机制,以下是其核心实现流程:1. 代理创建阶段当Spring容器启动时,会为带有Transactional注解的类创建代理对象&#xf…

qt-C++语法笔记之Stretch与Spacer的关系分析

qt-C语法笔记之Stretch与Spacer的关系分析 code review! 文章目录qt-C语法笔记之Stretch与Spacer的关系分析1. Stretch(拉伸因子)2. Horizontal Spacer 和 Vertical Spacer3. Stretch 和 Spacer 的关系4. 实际应用中的选择5. 注意事项6. 代码与 Qt Desig…

Qwen3技术综述

1. 引入 2025年5月,qwen推出了旗舰模型(flagship model)Qwen3-235B-A22B。并以Apache 2.0版权发布(可自由商业使用,修改代码和商用要包含原始版权)。本文对其技术报告中提到的数据处理技术与模型结构进行综…

[特殊字符] Excel 读取收件人 + Outlook 批量发送带附件邮件 —— Python 自动化实战

许多公司定期需要将不同部门或客户的报告发送给指定人员。手动操作容易出错、耗时且繁琐。今天这篇文章教你如何利用 Python 实现: 🧩 从 Excel 中读取“收件人 抄送人 附件文件路径”; 📤 使用 win32com.client 调用 Outlook …

多模态大语言模型arxiv论文略读(152)

VidComposition: Can MLLMs Analyze Compositions in Compiled Videos? ➡️ 论文标题:VidComposition: Can MLLMs Analyze Compositions in Compiled Videos? ➡️ 论文作者:Yunlong Tang, Junjia Guo, Hang Hua, Susan Liang, Mingqian Feng, Xinya…

基于AR和SLAM技术的商场智能导视系统技术原理详解

本文面对室内定位算法工程师、智慧商场系统开发者、对VR/AR应用开发感兴趣的技术人员,解决如何通过SLAMAR技术破解大型商场室内导航的空间认知壁垒,实现沉浸式导览,本文提供完整技术方案与代码实现。 如需获取商场智能导视系统解决方案请前往…

Debezium日常分享系列之:认识Debezium Operator

Debezium日常分享系列之:认识Debezium Operator什么是Debezium OperatorDebezium Operator 的工作原理Debezium Operator 的优点Debezium Operator 使用场景Debezium Operator 的关键组件部署Debezium OperatorDebezium Operator 的使用什么是Debezium Operator De…

POSIX信号量,环形队列

是一种进程间或线程间同步机制,用于控制多个线程/进程对共享资源的访问,避免并发冲突。可以看作是一个计数器,通过对计数器的操作(PV操作)实现同步P操作(原子性):--,将信…

Python Day6

浙大疏锦行 Python Day6 内容: 描述性统计(可视化分析)单特征可视化(连续、离散)特征与标签可视化特征与特征可视化 代码: # TODO: 描述性统计 import pandas as pd import numpy as np import seaborn…

ESP32与树莓派C++、Rust开发实战

C++语言在ESP32、树莓派实例 以下是关于C++语言在ESP32、树莓派等硬件设备上的开发实例汇总,涵盖常见应用场景和代码示例。 ESP32开发实例 LED控制(GPIO操作) 使用ESP32的GPIO控制LED灯,示例代码基于Arduino框架: #include <Arduino.h> const int ledPin = 2; …

Jedis 原生之道:Redis 命令 Java 实现指南(一)

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;Redis &#x1f4da;本系列文章为个人学习笔…

飞算 JavaAI 开发助手:深度学习驱动下的 Java 全链路智能开发新范式

飞算 JavaAI 开发助手&#xff1a;深度学习驱动下的 Java 全链路智能开发新范式 文章目录飞算 JavaAI 开发助手&#xff1a;深度学习驱动下的 Java 全链路智能开发新范式前言飞算 JavaAI IDEA插件下载、注册、使用智能引导操作流程Java Chat智能工作流程操作流程智能问答操作流…