1308 字
7 分钟
STM32-Health-Band-Xieyi智能手环
2025-06-25
2025-06-27

1 Xieyi 智能手环项目 (开源)#

项目地址 GitHub - FuXieyi/STM32-Health-Band: Open-source Smart Health Band

2 项目简介#

这是一个基于 STM32F103C8T6 的智能手环开源项目,集成了多种健康监测功能,包括心率检测、血氧饱和度检测、体温检测、计步器以及跌倒检测等功能。设备通过 ESP8266 WiFi 模块连接手机 APP,实现实时数据传输和远程监控。

3 主要功能#

  • 🫀 心率检测 - 基于 MAX30102 传感器的光电容积脉搏波描记法
  • 🩸 血氧饱和度检测 - 实时监测血氧水平
  • 🌡️ 体温检测 - 精确的体温监测
  • 🚶 计步功能 - 基于 ADXL345 三轴加速度传感器
  • 🚨 跌倒检测 - 智能跌倒报警系统
  • 📱 WiFi 连接 - 通过 ESP8266-01S 模块连接手机 APP
  • 📺 OLED 显示 - 实时显示各项健康数据
  • 🔔 蜂鸣器报警 - 异常情况声音提醒

4 硬件组成#

4.1 主控制器#

  • STM32F103C8T6 - ARM Cortex-M3 核心,主频 72MHz

4.2 传感器模块#

  • MAX30102 - 心率血氧传感器
  • ADXL345 - 三轴加速度传感器(用于计步和跌倒检测)

4.3 显示与通信#

  • OLED 显示屏 - SSD1306 驱动,IIC 接口,128x64 分辨率
  • ESP8266-01S - WiFi 通信模块

4.4 其他组件#

  • 蜂鸣器 - 报警提示
  • 电源管理模块

5 软件架构#

├── 1、代码/
│   ├── CORE/          # STM32核心文件
│   ├── FWLIB/         # STM32固件库
│   ├── HARDWAR/       # 硬件驱动层
│   │   ├── MAX30102.c # 心率血氧传感器驱动
│   │   ├── adxl345.c  # 加速度传感器驱动
│   │   ├── OLED.c     # OLED显示驱动
│   │   └── …
│   ├── SYSTEM/        # 系统层代码
│   └── USER/          # 用户应用层
│       └── main.c     # 主程序
├── 2PCB/            # PCB设计文件
├── 3、硬件资料/       # 硬件规格书和资料
├── 4APP/            # 手机APP(易语言开发)
└── 5、原理图/         # 电路原理图

6 快速开始#

6.1 硬件准备#

  1. 准备所有必需的硬件组件(详见硬件组成部分)
  2. 按照原理图进行电路连接
  3. 使用提供的 PCB 文件制作电路板

6.2 软件环境#

  • 开发环境: Keil uVision5
  • 编程语言: C 语言
  • 编译器: ARM-MDK

6.3 编译和烧录#

  1. 打开 Keil 工程文件:1、代码/USER/Template.uvprojx
  2. 编译项目(确保没有错误)
  3. 通过 ST-Link 或其他烧录器将程序烧录到 STM32

6.4 手机 APP 安装#

  1. 4、APP/发布版_手环APP.apk 传输到安卓手机
  2. 安装 APK 文件
  3. 确保手机 WiFi 功能已开启

6.5 设备连接#

  1. 手环上电后,会创建 WiFi 热点
  2. 手机连接到设备 WiFi:

   - 账号: WIFI

   - 密码: 123456789

   或者:

   - 账号: www  

   - 密码: 12345678

  1. 打开手机 APP 即可查看实时数据

7 核心算法#

7.1 心率检测算法#

采用峰值检测算法,通过分析 MAX30102 传感器的 PPG 信号来计算心率:

  • 信号预处理和滤波
  • 峰值检测
  • 心率计算(基于峰间间隔)

7.2 血氧饱和度算法#

基于红光和红外光的吸收比率:

  • 双波长光电容积脉搏波信号采集
  • R 值计算(红光/红外光的 AC/DC 比值)
  • SpO2 计算

7.3 跌倒检测算法#

基于加速度传感器数据:

  • 三轴加速度阈值检测
  • 运动状态分析
  • 跌倒事件识别

8 技术特性#

  • 低功耗设计 - 优化的电源管理
  • 🔄 实时监测 - 100ms 数据采集周期
  • 📊 数据缓存 - 支持历史数据存储
  • 🌐 无线传输 - WiFi 数据上传
  • 🎯 高精度 - 经过校准的传感器算法

9 开发说明#

9.1 编译要求#

  • Keil uVision5 或更高版本
  • ARM 编译器 V5.06 或更高版本
  • STM32F10x 标准外设库

9.2 调试接口#

  • 串口调试: USART1, 波特率 115200
  • 仿真器: 支持 ST-Link/J-Link

9.3 自定义配置#

主要配置参数位于各个驱动头文件中,可根据硬件连接修改:

  • GPIO 引脚配置
  • IIC 接口配置  
  • 传感器参数配置

10 文件说明#

10.1 核心源文件#

  • main.c - 主程序,包含系统初始化和主循环
  • MAX30102.c/h - 心率血氧传感器驱动
  • adxl345.c/h - 三轴加速度传感器驱动
  • OLED.c/h - OLED 显示屏驱动

10.2 配置文件#

  • stm32f10x_conf.h - STM32 外设库配置
  • stm32f10x_it.c - 中断服务程序

11 性能指标#

| 指标 | 规格 |

|------|------|

| 心率检测范围 | 60-100 BPM |

| 血氧检测精度 | ±2% |

| 温度检测精度 | ±0.5°C |

| 电池续航 | 约 24 小时 |

| WiFi 传输距离 | 室内 10 米 |

| 显示更新频率 | 10Hz |

12 许可证#

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

13 作者#

Xieyi - 项目创建者和主要开发者

14 致谢#

感谢以下开源项目和库:

  • STM32 标准外设库
  • Keil 开发环境
  • 相关传感器厂商提供的参考代码

15 联系方式#

如有问题或建议,欢迎通过以下方式联系:

  • 提交 Issue 到本仓库
  • 发送邮件(请在 Issues 中留言)
STM32-Health-Band-Xieyi智能手环
https://blog.fuxieyi.top/posts/stm32-health-band-xieyi智能手环/
作者
谢懿Shine
发布于
2025-06-25
许可协议
CC BY-NC-SA 4.0