枯木逢春-我于北京
1308 字
7 分钟
STM32-Health-Band-Xieyi智能手环
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 # 主程序
├── 2、PCB/ # PCB设计文件
├── 3、硬件资料/ # 硬件规格书和资料
├── 4、APP/ # 手机APP(易语言开发)
└── 5、原理图/ # 电路原理图
6 快速开始
6.1 硬件准备
- 准备所有必需的硬件组件(详见硬件组成部分)
- 按照原理图进行电路连接
- 使用提供的 PCB 文件制作电路板
6.2 软件环境
- 开发环境: Keil uVision5
- 编程语言: C 语言
- 编译器: ARM-MDK
6.3 编译和烧录
- 打开 Keil 工程文件:
1、代码/USER/Template.uvprojx
- 编译项目(确保没有错误)
- 通过 ST-Link 或其他烧录器将程序烧录到 STM32
6.4 手机 APP 安装
- 将
4、APP/发布版_手环APP.apk
传输到安卓手机 - 安装 APK 文件
- 确保手机 WiFi 功能已开启
6.5 设备连接
- 手环上电后,会创建 WiFi 热点
- 手机连接到设备 WiFi:
- 账号: WIFI
- 密码: 123456789
或者:
- 账号: www
- 密码: 12345678
- 打开手机 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智能手环/