基于STM32的智能手环手表设计与实现心率血氧步数体温

作品简介

购买该资源将获得完整程序源文件+仿真源文件+原理图+PCB图+论文等

在这里插入图片描述

在这里插入图片描述


随着生活水平的提高,无论是老年还是青壮年群体,人们对于健康越来越重视。只有一个好的身体才能体会生活,但是怎么才能让大众更好的去了解自己的身心健康呢?电子信息技术和医学刚好都在同步发展,两者合二为一刚好可以解决人们对于健康问题的困扰,因此人们对于高精密便携式医疗监控仪器的需求更大了。人体监控指标普遍通过心率体温计步3大指标,由于这个原因,本次毕设根据时代发展的需求设计一款基于单片机的运动监测模块。本次设计主要组成是STM32单片机电路、ADXL345加速度传感器、心率血氧检测电路、OLED液晶显示电路、电源电路和DS18B20温度传感器组成。通过ADXL345测量重力加速度,是用来判断人体状态,根据状态的数值变化进行计步功能。通过心率血氧传感器测试,通过手指脉动放大经过比较器处理后发送给单片机进行心率血氧采集。并将步数、心率血氧,温度、时间等信息显示在液晶OLED上,并且我们也可以通过WIFI把当前的数据发生到手机端进行显示,这样也方便陪练人员随时观察运动者状态。本次设计系统价格成本较低,功能比较全面,具有良好的市场前景。

关键词:计步器;DS18B20温度传感器;STM32单片机;液晶显示


1 引言


2 系统方案设计

在这里插入图片描述


3 硬件电路设计

3.1 STM32单片机介绍

单片机的最小系统应能让单片机正常工作并且能够正常的发挥其功能的一个集成在一块芯片上的完整计算机系统。它是一个小型的电脑设备所具有的那样拥有者明显的大脑,也就是控制的核心。同时,也具有一些输出设备,还有就是定时器,能够作为时间的控制中心,具有作为通讯的接口,把所有需要用到的都集中在一个小小的芯片之上,这就是单片机。当然单片机现在的发展已经比较先进,我们来看一下作为最基本的存在它是怎样的。如下图:

在这里插入图片描述

在这里插入图片描述

3.2 主要功能模块电路图

3.2.1 电源电路设计

单片机的电源采用直流5V供电,电源模块包括一个3脚的电源座子和6脚的电源开关。电源座子用于连接外部的电源插头,电源开关用于控制整个单片机的电路开和关。电源座子的2口引脚接地,3口引脚仅仅起到固定的作用,没有特殊的用处,1口引脚连接到电源开关的3口引脚,电源开关的1、3口引脚和4、6口引脚的作用相同,用于电源的正极输出。电源开关的2、5口引脚作为单片机的接地引脚,在使用时采取相对的选择,即选择1、3口引脚作为输出,那么就要选择5口引脚作为接地引脚,选择4、6引脚作为输出端口,2口引脚则作为接地引脚。本次单片机的传感器和无线传输芯片的电压都在5V内,所以5V的电压足够满足。若有12V或者其他电压的传感器,则可以采取升压模块将5V提升到更高的电压,进行供电。本次设计的电源电路如下图所示:

在这里插入图片描述

3.2.2 ADXL345电路设计

ADXL345的内部功能结构如下图所示,X、Y、Z三个相互正交的的方向上的加速度由 G-Cell传感器感知,经过容压变换器、增益放大、滤波器和电压信号输出。然后我们就可以得到步数,我们设置步数距离后可以通过步数在计算里程。

在这里插入图片描述

所谓的G-Cell传感器是由半导体材料(多晶硅)经半导体工艺加工得到,其结构可简化为三块电容极板,如下图。两端的极板圈定,中间的极板在加速度的作用下,偏离无加速度的位置,这样它到两端极板的距离发生变化,造成电容值的变化.这个变化值经容压变换、增益放大,滤波等后体现在最后的电压输出值上,从而完成对加速度的测量。

在这里插入图片描述

ADXL345的三个相互正交的测量方向如下图,固定在人体上后,这三个方向上的数据意义也就随之确定了。

在这里插入图片描述

在这里插入图片描述

ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达±16g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(3.9mg/LSB),能够测量不到1.0°的倾斜角度变化。

在这里插入图片描述

此模块电路主要功能就用于做ADXL345加速度传感器的一个转接口,而且利用ADXL345该加速度传感器产生相应的变化值。相当于整个系统的信号产生模块。

3.2.3 心率血氧传感器设计

MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块。它集成了一个红光LED和一个红外光LED、光电检测器、光器件,以及带环境光抑制的低噪声电子电路。MAX30102采用一个1.8V电源和一个独立的5.0V用于内部LED的电源,应用于可穿戴设备进行心率和血氧采集检测,佩戴于手指、耳垂和手腕等处。标准的2C兼容的通信接口可以将采集到的数值传输给Arduino、KL25Z等单片机进行心率和血氧计算。此外,该芯片还可通过软件关断模块,待机电流接近为零,实现电源始终维持供电状态。正因为其优异的性能,该芯片被大量应用在了三星 Galaxy S7 手机。与前代产品 MAX30100 相比 (MAX30100 目前已经停产淘汰 ) , MAX30102 集成了玻璃盖可以有效排除外界和内部光干扰,拥有最优可靠的性能。

在这里插入图片描述

传统的脉搏测量方法主要有三种:一是从心电信号中提取;二是从测量血压时压力传感器测到的波动来计算脉率;三是光电容积法。前两种方法提取信号都会限制病人的活动,如果长时间使用会增加病人生理和心理上的不舒适感。而光电容积法脉搏测量作为监护测量中最普遍的方法之一,其具有方法简单、佩戴方便、可靠性高等特点。 光电容积法的基本原理是利用人体组织在血管搏动时造成透光率不同来进行脉搏和血 氧饱和度测量的。其使用的传感器由光源和光电变换器两部分组成,通过绑带或夹子固定 在病人的手指、手腕或耳垂上。光源一般采用对动脉血中氧合血红蛋白( HbO2 )和血红蛋 白( Hb )有选择性的特定波长的发光二极管(一般选用 660nm 附近的红光和 900nm 附近的 红外光)。当光束透过人体外周血管,由于动脉搏动充血容积变化导致这束光的透光率发 生改变,此时由光电变换器接收经人体组织反射的光线,转变为电信号并将其放大和输 出。由于脉搏是随心脏的搏动而周期性变化的信号,动脉血管容积也周期性变化,因此光 电变换器的电信号变化周期就是脉搏率。同时根据血氧饱和度的定义,其表示为:

在这里插入图片描述

MAX30102 本身集成了完整的发光 LED 及驱动部分,光感应和 AD 转换部分,环境光干 扰消除及数字滤波部分,只将数字接口留给用户,极大地减轻了用户的设计负担。用户只 需要使用单片机通过硬件 I2C或者模拟I2C接口来读取 MAX30102 本身的FIFO ,就可以得到转换后的光强度数值,通过编写相应算法就可以得到心率值和血氧饱和度。

在这里插入图片描述

其余完整详见文末

3.2.4 OLED显示屏电路设计

3.2.5 DS18B20温度设计

在这里插入图片描述

3.2.6 按键设置电路

3.2.7 蜂鸣器报警电路

3.2.8 WIFI无线通信设计

4 软件编程设计

完整的控制系统由硬件系统和软件系统组成,前一章主要阐述了系统的硬件电路的设计方案,若要充分发挥系统的设计功能,则需要支持硬件平台的软件程序,即烧写到单片机内部的程序。本设计利用STM32为控制中心,采用的的是STM32F103C8T6芯片,开发环境是Keil uVision5 by ARM软件,这款开发环境是目前STM32单片机系统的主流软件,使用的非常频繁。程序的烧录使用的是STLINKV2下载器进行烧录程序。

4.1 编程语言选择

4.2单片机程序开发环境

4.3 软件整体设计

主程序模块:系统上电后,我们需要配置个个传感器的引脚,然后初始化IIC 让oled进行液晶显示和ADXL345进行数据采集,采集完成后WIFI串口初始化等待发送数据,DS18B20进行温度采集,心率传感器通过获取当前心率值,时钟显示当前的时间,最后把数据通过蓝牙发送到手机端,控制OLED显示当前采集到的数据,最后进入按键扫描判断按键是否按下如果按下则处理按键扫描函数。

如下图所示,是整个系统的主程序流程图。

在这里插入图片描述

4.4 心率血氧程序设计

本次设计采用的是MAX30102芯片对人体心率血氧进行采集,MAX30102我们采用的是IIC进行通信首先我们需要在程序里面配置IIC数据传输的引脚分别进行配置,然后对IIC进行初始化bsp_InitI2C(); MAX30102写寄存器函数maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data); MAX30102读寄存器函数maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data); MAX30102初始化maxim_max30102_init(); MAX30102读缓冲器FIFO maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led); 计算心率和血氧饱和度,通过检测PPG (photoplethysmographic,光电容积脉搏波描记法)周期的峰值和相应的红/红外信号的AC/DC,计算出SPO2的an/u比值和心率值

maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer, int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid,int32_t *pn_heart_rate, int8_t *pch_hr_valid);

在这里插入图片描述

4.5 液晶显示模块程序设计

要让液晶显示屏正常工作,首先写入命令控制字,然后在写入需要显示的数据。写入命令控制字之前,必须用指令来查看液晶是否正在工作。如果正在工作,那就必须等待,直到液晶发出工作完成的信号时,才能够写入控制字和数据。液晶显示模块程序流程图如下图所示。

在这里插入图片描述

在这里插入图片描述

5 硬件制作

5.1 电路焊接

5.2 系统调试

5.3 硬件调试


在这里插入图片描述

在这里插入图片描述

仿真源文件+源程序代码+论文报告+PCB图等全套资料请购买

创作时间: