【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网

文章目录

  • 1 简介
  • 2 绪论
    • 2.1 课题背景与目的
  • 3 系统设计
    • 3.1 系统架构
    • 3.2 关键硬件部分
      • 3.2.1 MAX301 00 心率血氧模块
    • 3.3 关键软件部分
      • 3.3.1 数据读取流程
    • 3.4 实现效果
    • 3.5 部分相关代码
  • 4 最后


1 简介

Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片机项目


大家可用于 课程设计 或 毕业设计


单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052


【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网_第1张图片

2 绪论

2.1 课题背景与目的

现代科学的发展, 导致越来越多人开始重视自己的身体健康, 他们往往会想在能力之余使用健身运动等方式来锻炼自身。 你会发现, 在健身房, 健身达人或者是教练都会叮嘱新手去关注自己的心率节奏。 一般来说, 人的激烈的锻炼会造成心脏血压的上升,心率变化从而加剧。 而心率恰恰就作为人们运动的警戒和灯塔, 运动状态下, 心率的平稳状态、 是否处于正常范围内都是健身人士应该注意的地方, 不管你健身的目的是为了什么, 而这更多的是与自身体重、 体制等的相关。 与此同时, 心率的表现也能让人们能及时发现身体的异样。 心率不定往往会造成。 心脏、 心血管等疾病。 但往往是如此致命的病, 检测其的方式就很简单。 而心率检测的作用, 就是作为一个实时监控并且在危急时刻能警报你的装置, 由此可得出心率检测仪对人们的作用十分重要。

【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网_第2张图片

在越来越智能化的现代社会中, 智能医疗已经开始慢慢步入寻常人家。 对于人们来说, 在越来越追求生活品质的现在, 身体健康的需求同样是他们的刚需。 在致力于解决现代医学看病容易预约难的情况下, 便携式的只能家用健康医疗设备就体现出了它存在的意义——足不出户就能轻松做到健康检测和疾病预防。

3 系统设计

3.1 系统架构

学长设计的这个在基于 STM32 控制板外, 另一个主要的板块就是做到如何去采集到心率数据的样本。

关于 MAX30100, 其在简易心率检测仪中使用量非常的大, 是一个优质的心率监测器传感器。 MAX30100 利用其本身含有的 LED 和光电检测端来检测信号的接收,以显示心率数据。

另外, 在该系统中 STM32 是主要微控制器和数据处理器; 利用 OLED 屏实现动态心率的实时监控, 即数据显示; 利用蓝牙串口可以将数据输出显示。 电源将设置一个 3. 5V-8V 的电源, 在选择合适电源电压供给的情况下输出电源给各模块进行使用。
【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网_第3张图片

3.2 关键硬件部分

3.2.1 MAX301 00 心率血氧模块

MAX30100 是一个经过多重优化的优秀传感器, 能测量心率等多样信息。在结构上,MAX30100 包含了检测模块和数据处理模块, 检测模块下拥有 LED、 数据接收器等部分,数据处理部分主要包含了寄存器、 数据传输等。 在该系统中, 便利用了 MAX30100 对样本进行心率检测并进行数据处理。

【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网_第4张图片

实物图:

【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网_第5张图片

电路图:

【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网_第6张图片

使用这个传感器的方式很简单, 手指接触传感器表面的玻璃层, 不能被吸收的红外线部分光会传达到接受处, 从而对样本的心率数据进行计算。 心率的信息在这个过程中从电信号转换为光信号, 又经过 MAX30100 转换成电信号, 从而将数据信息做成已采集样本储存起来。

3.3 关键软件部分

3.3.1 数据读取流程

数据读取基本是靠中断引脚触发主控芯片中断, 触发中断后由主控芯片进行读取MAX30100 的中断寄存器, 从而判断是由哪个触发。 例如温度中断就读取温度值, 过一段时间再发送采集温度指令然后过一段时间产生中断, 这样重复进行。 血氧不用发送指令, 当 FIFO 数据快满了后就会发出中断提醒单片机读取, 进入待机和省电模式将会关闭这些功能。

【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网_第7张图片

设法将 MAX30100 设置为 HR 模式并读取原始 IR 数据后, 绘制完成后, 其外观应如图

【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网_第8张图片

3.4 实现效果

【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网_第9张图片
【毕业设计】基于Stm32的人体心率脉搏无线监测系统 - 单片机 物联网_第10张图片

3.5 部分相关代码


/************************************************
 
 作者:丹成学长,Q746876041
************************************************/

// 心率计算
struct fifo_t {
uint16_t rawIR;
uint16_t rawRed;
};
dcFilter_t MAX30100::dcRemoval(float x, float prev_w, float alpha)
{
dcFilter_t filtered;
filtered.w = x + alpha * prev_w;
filtered.result = filtered.w - prev_w;
return filtered;
}

// 传感器数据滤波

struct meanDiffFilter_t
{
float values[MEAN_FILTER_SIZE];
byte index;
float sum;
byte count;
};
float MAX30100::meanDiff(float M, meanDiffFilter_t* filterValues)
{
float avg = 0;
filterValues->sum -= filterValues->values[filterValues->index];
filterValues->values[filterValues->index] = M;
filterValues->sum += filterValues->values[filterValues->index];
filterValues->index++;
filterValues->index = filterValues->index % MEAN_FILTER_SIZE;
if(filterValues->count < MEAN_FILTER_SIZE)
filterValues->count++;
avg = filterValues->sum / filterValues->count;
return avg - M;
}

struct butterworthFilter_t
{
float v[2];
float result;
};
void MAX30100::lowPassButterworthFilter( float x, butterworthFilter_t * filterResult )
{
filterResult->v[0] = filterResult->v[1];
//Fs = 100Hz and Fc = 10Hz
filterResult->v[1] = (2.452372752527856026e-1 * x) + (0.50952544949442879485 *
filterResult->v[0]);
filterResult->result = filterResult->v[0] + filterResult->v[1];
}




/*******************************************************************
篇幅有限,只展示部分代码
作者:丹成学长,Q532036360
********************************************************************/




单片机-嵌入式毕设选题大全及项目分享:

https://blog.csdn.net/m0_71572576/article/details/125409052


4 最后

你可能感兴趣的:(单片机,物联网,毕业设计,单片机,stm32,物联网,心率检测,毕业设计)