1、系统功能介绍

本设计题目为基于STM32单片机智能手环脉搏心率计步器体温显示设计,它是一款集运动监测与健康监测于一体的嵌入式系统。随着人们健康意识的不断增强,智能手环类设备成为日常生活中的重要工具。本系统以STM32F103C8T6单片机作为核心控制器,结合ADXL345加速度传感器、心率传感器、温度传感器以及LCD1602显示模块,能够实时采集和处理运动与健康相关数据,并直观地在液晶屏上显示结果。

系统实现的主要功能如下:

  1. 运动监测功能:通过ADXL345加速度传感器采集人体运动状态信息,计算出走路步数、行走距离以及平均速度,帮助用户了解运动情况。
  2. 心率监测功能:利用心率传感器实时采集脉搏信号,并通过单片机进行数据处理,得到每分钟的心率值,辅助用户关注心脏健康。
  3. 体温检测功能:通过温度传感器实时检测人体温度,提供基础健康数据,帮助用户及时发现异常。
  4. 数据显示功能:采用LCD1602显示屏,实时显示步数、行走距离、平均速度、心率值和体温值,信息简洁明了。

本系统不仅可用于日常运动和健康监控,还可以为老年人或慢性病患者提供实时健康参考,具有良好的应用前景。


2、系统电路设计

系统电路由STM32F103C8T6核心板、ADXL345加速度传感器、心率传感器、温度传感器、LCD1602液晶显示电路及电源电路组成,各模块电路的设计如下。

2.1 STM32F103C8T6单片机核心电路

STM32F103C8T6是基于ARM Cortex-M3内核的32位单片机,具有72MHz主频、丰富的外设接口以及较强的运算能力,非常适合运动与健康监测类应用。其电路部分包括:

  • 外部晶振电路:提供8MHz外部晶振,并配合倍频电路生成系统时钟。
  • 复位电路:通过复位电容和按键保证系统上电初始化正常。
  • 供电电路:由电源模块提供稳定的+3.3V电压供单片机和传感器使用。
  • 外设接口:通过I2C总线与ADXL345连接,通过ADC接口采集心率和温度信号,通过GPIO与LCD1602通信。

2.2 ADXL345加速度传感器电路

ADXL345是一款三轴加速度传感器,能够检测-16g到+16g范围的加速度值。其电路设计要点:

  • 与STM32通过I2C接口连接,SCL和SDA引脚接到单片机的I2C总线。
  • 提供3.3V供电,并加去耦电容保证稳定性。
  • 通过采集步伐运动中的加速度变化,单片机对数据进行滤波与峰值检测,实现步数统计。

2.3 心率传感器电路

心率传感器常采用光电容积脉搏波(PPG)原理,通过检测血液流动引起的光强变化来获得心率信号。电路要点:

  • 输出为模拟脉冲信号,经信号调理后输入至STM32的ADC通道。
  • STM32对信号进行采样,采用定时中断和峰值检测算法计算脉搏次数,并转换为bpm(每分钟心跳次数)。

2.4 温度传感器电路

温度传感器可采用常见的DS18B20数字温度传感器或模拟输出型传感器。本设计假设使用模拟温度传感器,其电路连接到STM32的ADC输入端。

  • 供电电压为+3.3V。
  • 模拟电压输出与温度值成比例,STM32采样后进行温度计算与显示。

2.5 LCD1602液晶显示电路

LCD1602是一种常用的字符型液晶显示器,可显示2行16列字符。

  • 与STM32通过并行方式(8位或4位模式)连接。
  • 第一行显示步数、距离和速度;第二行显示心率和体温。
  • 通过定时刷新保持数据实时更新。

2.6 电源电路

系统电源由USB接口或锂电池供电,通过LDO或DC-DC模块稳压输出+5V与+3.3V电源。

  • +5V主要供给LCD模块。
  • +3.3V供给STM32与传感器模块。
  • 电源部分配有滤波电容,保证运行稳定。

3、程序设计

系统软件设计基于STM32,使用C语言编写,包含初始化、传感器采集、数据处理、显示更新和逻辑控制等模块。

3.1 主程序设计

主程序负责系统初始化和循环执行各功能任务,保证数据采集与显示实时性。

#include "stm32f10x.h"
#include "lcd1602.h"
#include "adxl345.h"
#include "sensor.h"
#include "usart.h"

int main(void)
{
    SystemInit();       // 系统时钟初始化
    LCD1602_Init();     // 初始化LCD1602
    ADXL345_Init();     // 初始化加速度传感器
    ADC_Config();       // 配置ADC用于心率与温度采集
    USART_Config();     // 调试串口初始化
    
    while(1)
    {
        // 获取加速度数据并计算步数
        StepCounter_Update();
        
        // 获取心率数据
        HeartRate_Update();
        
        // 获取温度数据
        Temperature_Update();
        
        // 更新显示
        LCD_Display();
    }
}

3.2 ADXL345步数检测程序设计

步数检测基于加速度信号的峰值检测原理,程序通过采集XYZ三轴加速度数据,利用阈值判断是否产生步伐。

void StepCounter_Update(void)
{
    int16_t x, y, z;
    float acc;
    
    ADXL345_ReadXYZ(&x, &y, &z);
    acc = sqrt(x*x + y*y + z*z);
    
    if(acc > STEP_THRESHOLD && StepFlag == 0)
    {
        StepCount++;
        StepFlag = 1;
    }
    else if(acc < STEP_THRESHOLD)
    {
        StepFlag = 0;
    }
}

3.3 心率采集与计算程序设计

心率传感器输出模拟波形,STM32通过ADC采样并利用定时器中断统计峰值,从而计算心率。

void HeartRate_Update(void)
{
    static int beatCount = 0;
    static int timerCount = 0;
    
    uint16_t value = ADC_Read(ADC_CHANNEL_HEARTRATE);
    
    if(value > HEART_THRESHOLD && BeatFlag == 0)
    {
        beatCount++;
        BeatFlag = 1;
    }
    else if(value < HEART_THRESHOLD)
    {
        BeatFlag = 0;
    }
    
    timerCount++;
    if(timerCount >= 1000) // 1秒钟
    {
        HeartRate = beatCount * 60;  // 转换为bpm
        beatCount = 0;
        timerCount = 0;
    }
}

3.4 温度检测程序设计

温度传感器输出模拟信号,单片机通过ADC采样并进行转换。

void Temperature_Update(void)
{
    uint16_t adc_value = ADC_Read(ADC_CHANNEL_TEMP);
    float voltage = (adc_value / 4096.0) * 3.3;
    Temperature = voltage * 100;   // 假设10mV/℃传感器
}

3.5 LCD1602显示程序设计

LCD1602实时显示运动与健康数据。

void LCD_Display(void)
{
    char buf[16];
    
    LCD1602_SetCursor(0,0);
    sprintf(buf, "S:%d D:%.1f", StepCount, Distance);
    LCD1602_Print(buf);
    
    LCD1602_SetCursor(1,0);
    sprintf(buf, "HR:%d T:%.1f", HeartRate, Temperature);
    LCD1602_Print(buf);
}

3.6 系统算法与数据处理

  1. 步数统计:通过峰值检测方法识别步伐,同时结合时间戳计算速度与距离。距离通过步长估算公式计算:
    [
    距离 = 步数 \times 步长
    ]
    其中步长可取默认值0.6m或根据用户身高设置。

  2. 平均速度计算:系统根据总行走距离与时间计算平均速度:
    [
    平均速度 = 距离 / 时间
    ]

  3. 心率处理:对心率传感器采样信号进行滤波,去除干扰,利用定时器统计峰值,得到稳定的心率数据。

  4. 温度计算:根据传感器输出电压与温度之间的线性关系,转换为摄氏度值。


4、总结

本设计基于STM32F103C8T6单片机,集成了**运动监测(步数、距离、速度)健康监测(心率、体温)**两大核心功能。通过ADXL345传感器、心率传感器和温度传感器采集数据,利用LCD1602进行实时显示,系统能够帮助用户直观掌握运动与健康信息。

整个系统设计涵盖了硬件电路搭建、传感器信号处理、嵌入式程序设计等多个方面,具有较强的实用性与推广价值。无论是作为智能手环的原型系统,还是嵌入式学习的综合案例,都有重要的参考意义。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐