基于STM32的智能手环系统的设计

基于STM32的智能⼿环系统的设计
前⾔
随着科学技术的⾰新,智能化⽣活已经开始实现,更多的⼈们的⽬光聚焦在智能化产品上⾯,⼀⽅⾯是对⾃⾝健康的关注,另⼀⽅⾯是对便携轻松的⽣活的向往,智能⼿环就作为其中的⼀种代表性产物。其主要应⽤于运动显⽰⽐如显⽰⾏⾛及跑步的步数,距离,速度。同时可以实时健康监测⽐如⼼率,⾎氧,体温等。是⼀款突出个性与⼈性的智能化产物。
⼀、系统⽅案的设计
1.1系统功能分析
本设计是由STM32F103C8T6最⼩系统电路,DS3231时钟模块,ADXL345计步模块,MAX30102⾎氧⼼率模块,DS18B20温度模块,MPU6050体位检测模块,2.4⼨TFT彩⾊液晶屏显⽰模块组成的嵌⼊式智能⼿环系统。
(1)通过DS3231时钟模块实现⽇期显⽰的功能
(2)使⽤传感器ADXL345检测⼈步数
(3)通过MAX30102传感器实时检测⾎氧⼼率;
(4)通过传感器DS18B20进⾏温度测量。
(5)通过MPU6050体位检测卧床病⼈是否跌倒或可以通过此功能蜂鸣器警报呼叫。
(6)通过2.4⼨TFT彩⾊液晶屏实时显⽰⽇期,步数,距离,⼼率,⾎氧,跌倒状态以及温度值。
1.2系统总体结构
⼆、硬件电路的搭建
加工pcb板2.1STM32最⼩系统组成部分
2.2S硬件引脚连接
三、软件设计
本设计采⽤轮询的操作⽅式,⾸先在系统中断中间隔不同的时间给相应的标志位置⼀,⽐如:计步每隔0.2s计步标志位置⼀,时钟每隔1s 置⼀⼀次。然后在主循环中检测标志位,如果标志位置⼀。刷新相应的值。
3.1系统流程图
3.2主函数代码
#include"stm32f10x.h"
tomgro#include"delay.h"
#include"led.h"
#include"uart.h"
#include"stdio.h"
#include"ds18b20.h"
#include"Lcd_Driver.h"
#include"TFT_demo.h"
#include"GUI.h"
#include"key.h"
#include"mpu6050.h"
#include"inv_mpu.h"
#include"inv_mpu_dmp_motion_driver.h"
#include"math.h"
#include"MAX30100.h"
#include"MAX30100_Filters.h"
#include"MAX30100_PulseOximeter.h"
#include"MAX30100_SpO2Calculator.h"
#include"myiic.h"
#include"timer3.h"
#include"adxl345.h"
石油化工流程泵#include"myiic_2.h"
#include"DS3231.h"
u8 ReadAdxl345;//定时读取adxl345数据
u8 ErrorNum=0;//记录错误次数
u16 Normal_num=0;//正常次数
u16 Error_num=0;//倾斜次数
u16 BuShu=0;//步数脉冲量
u16 step_num =0;//计数步数
float disJuLi =0;//显⽰距离
float disJuLi =0;//显⽰距离
signed short HeartRate_val=0;//⼼跳速率
u8 SPO2_val =0;//⾎氧浓度
u8 mpu_count =0;
u8 STAP_FLAG =0;
u8 mpu_flag =0;//⼈体跌倒检测标志位标志位1、2任意⼀个异常该标志位为1  【1:跌倒,0:正常】_Bool mpu_1_flag =0;//⼈体跌倒检测标志位1 ⾓度异常标志【1:异常,0:正常】
_Bool mpu_2_flag =0;//⼈体跌倒检测标志位2 加速度异常标志【1:异常,0:正常】
_Bool mpu_temp =0;//缓存
_Bool temp_flag =0;//温度获取标志
_Bool max_flag =0;//⼼率⾎氧获取标志
导电碳油
_Bool time_flag =0;//时间获取标志
_Bool MPU_flag =0;//开关陀螺仪姿态获取分析标志
_Bool MAX_flag =0;//开关⼼率⾎氧获取分析标志
_Bool ADXL_flag =0;//开关计步获取分析标志
int SVM;//⼈体加速度向量幅值SVM
int main(void)
{
float pitch,roll,yaw;//欧拉⾓
short aacx,aacy,aacz;//加速度传感器原始数据
u8 t =0;
u16 z =0;//温度中间缓存值
u16 temp_BuShu;
SysTick_Config(SystemCoreClock/1000);
Delay_Ms(100);
Lcd_Init();//屏幕初始化
UART1_Init();//串⼝调试波特率115200
DS18B20_Init();//DS18B20温度模块初始化 PA4
Gpio_Init();//蜂鸣器初始化      PA5
EXTI_KEY_Config();//按键初始化      PA6
MPU_Init();//MPU6050初始化    -----SCLK接到“PB10”脚 SDIN接到“PB11”脚
DS3231_Init();//时钟模块初始化    -----SCLK接到“PA3 ”脚 SDIN接到“PA2 ”脚
Delay_Ms(100);//等待初始化稳定
//测试时钟代码
// DS3231_Set(20,5,28,21,36,0);
// while(1)
// {
//  Delay_Ms(2000);  //等待初始化稳定
//  get_show_time();
//  printf("%u-%u-%u\t",calendar.w_year+2000,calendar.w_month,calendar.w_date);
//  printf("%u:%u:%u\r\n",calendar.hour,calendar.min,calendar.sec);
// }
IIC_Init();//⾎氧浓度模块IIC初始化  -----SCLK接到“PB8 ”脚 SDIN接到“PB9 ”脚
TIM3_Init();//每1ms执⾏⼀次中断, RunTime 每1ms加 1
SPO2_Init();//⾎氧⼼率配置
boot_Demo();//启动界⾯
Delay_Ms(1000);//等待初始化稳定
Init_ADXL345();//Init_ADXL345初始化  -----SCLK接到“PB6 ”脚 SDIN接到“PB7”脚
if(Single_Read_ADXL345(0X00)==0xe5)
{
Delay_Ms(5);
}
else
{
Delay_Ms(3);
紫铜止水片
}
while(mpu_dmp_init())//DMP初始化
链轮设计
{
//printf("MPU6050 Error");
Delay_Ms(200);
}

本文发布于:2024-09-22 04:14:53,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/111541.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:标志   模块   系统   检测
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议