心率测量-arduino+matlab

news2025/4/17 21:59:01

参考:【教程】教你玩转Stduino之手指心跳检测模块 - 知乎 (zhihu.com)

1 原理

心跳检测模块,由一个红外线发射LED和红外接收器构成。手指心跳监测模块能够测量脉搏,是这样工作的:当手指放在发射器与接收器之间,红外发射LED发射的光将穿过手指,到被接收器接收。而血压会随着脉搏变化,导致红外接收器接收到的光通量也会随之变化,因此可以通过红外光接收的情况来统计监测心跳。

红外心率测量是一种基于光学原理来检测人体心率的方法,其工作原理主要涉及光的发射、吸收、反射以及信号处理等过程,以下是具体介绍:

光学原理


1. **光源发射**


   - 红外心率测量设备通常使用红外发光二极管(LED)作为光源。这种LED能够发射特定波长的红外光,一般在700 - 1000纳米左右。例如,常用的波长为940纳米的红外LED,其发射的光具有良好的穿透性,能够穿透皮肤表层到达皮下组织。


2. **光的吸收与反射**


   - 当红外光照射到人体手指、耳垂或手腕等部位时,部分光会被组织吸收,部分光会被反射回来。人体的血液中含有大量的血红蛋白,血红蛋白对红外光有特定的吸收特性。血液中的血红蛋白和氧合血红蛋白对红外光的吸收量会随着血液的流动而发生变化。
   - 在心脏收缩(心缩期)时,大量血液被泵入动脉,血管扩张,血液量增加,对红外光的吸收也会相应增加,反射光的强度就会减弱;而在心脏舒张(心舒期)时,血管收缩,血液量相对减少,对红外光的吸收减少,反射光的强度增强。这种反射光强度的变化与心脏的搏动密切相关。

信号检测与处理


1. **光电检测**


   - 设备中有一个光电传感器(如光电二极管),它能够将反射回来的红外光信号转换为电信号。当反射光强度发生变化时,光电传感器输出的电信号的幅度也会随之变化。例如,当反射光强度减弱时,输出的电信号幅度减小;当反射光强度增强时,输出的电信号幅度增大。


2. **信号放大与滤波**


   - 由于光电传感器输出的信号通常比较微弱,需要经过放大电路进行放大。同时,人体周围环境可能存在各种干扰信号,如电磁干扰、环境光干扰等。为了提取出准确的心率信号,还需要通过滤波电路去除这些干扰信号。滤波电路一般会设计为带通滤波器,只允许与心率频率范围(通常为0.5 - 5赫兹)相符的信号通过。


3. **信号处理与心率计算**


   - 放大和滤波后的信号是一个随时间变化的周期性信号,其周期与心脏的搏动周期相对应。通过数字信号处理技术,如快速傅里叶变换(FFT)等方法,可以分析信号的频率成分,提取出心率信号的频率。心率的计算公式为心率(次/分钟)= 60 × 信号频率(赫兹)。例如,如果信号频率为1赫兹,那么心率就是60次/分钟。

红外心率测量技术具有非侵入性、操作方便、测量速度快等优点,广泛应用于医疗健康监测设备、智能穿戴设备(如智能手环、智能手表)等领域。然而,它也存在一些局限性,比如在手指等部位有污垢、指甲油等情况时,可能会影响红外光的反射和吸收,从而导致测量结果不准确。

2接线图

信号端接模拟量A0端口

电路修改说明: arduino板子的VIN--供电, GND, A0采集信号。但我感觉这个模块太简单了,就没有其他电路。怀疑不是心电检测。

下面这个怎么看也不是心率信号。

需要安装signal process 工具包,否则无法处理peak函数

% 确保安装了MATLAB Support Package for Arduino Hardware
% 如果未安装,请运行以下命令:
% matlab.addons.install('https://github.com/mathworks/arduinoio/archive/master.zip')

% 初始化Arduino连接
clear 
a = arduino('COM6', 'Uno'); % 根据实际使用的端口修改COM3

% 配置引脚模式
configurePin(a, 'A0', 'AnalogInput'); % 设置A0为模拟输入
configurePin(a, 'D13', 'DigitalOutput'); % 设置D13为数字输出

% 初始化变量
sampleRate = 100; % 采样率100Hz
windowSize = 100; % 用于计算心率的窗口大小
data = zeros(windowSize, 1); % 初始化数据缓冲区
heartRate = 0; % 初始化心率
ledState = 0; % LED初始状态

% 主循环
for i = 1:1000 % 读取1000个数据点
    % 读取A0端口的模拟值
    
    pulseValue = readVoltage(a, 'A0');
    
    % 将读取的值存储到数据缓冲区
    data(i) = pulseValue;
    
    % 如果数据缓冲区已满,计算心率
    if i >= windowSize
        % 提取窗口内的数据
        signal = data(i - windowSize + 1:i);
        
        % 检测信号中的峰值
        [peaks, locs] = findpeaks(signal, 'MinPeakProminence', 10);
        
        % 如果检测到多个峰值,计算心率
        if length(peaks) > 1
            avgPeakDistance = mean(diff(locs)); % 计算平均峰值间隔
            heartRate = 60 / (avgPeakDistance / sampleRate); % 计算心率(单位:bpm)
            fprintf('Heart Rate: %.2f BPM\n', heartRate);
        end
    end
    
    % 控制D13端口的LED闪烁
    if heartRate > 0
        ledState = ~ledState; % 切换LED状态
        writeDigitalPin(a, 'D13', ledState); % 写入LED状态
    end
    
    % 短暂延时以匹配采样率
    pause(1 / sampleRate);
end

figure
plot(signal)
title('心率检测信号')
% 关闭Arduino连接
clear 

采集数据data,1000点,不像 心率图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2331693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

H3C的MSTP+VRRP高可靠性组网技术(MSTP单域)

以下内容纯为博主分享自己的想法和理解,如有错误轻喷 MSTP多生成树协议可以基于不同实例实现不同VLAN之间的负载分担 VRRP虚拟路由器冗余协议可以提高网关的可靠性防止单点故障的可能 在以前这两种协议通常一起搭配组网,来提高网络的可靠性和稳定性&a…

字符串替换 (模拟)神奇数 (数学)DNA序列 (固定长度的滑动窗口)

⭐️个人主页:小羊 ⭐️所属专栏:每日两三题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 字符串替换 (模拟)神奇数 (数学)DNA序列 (固定长度的滑动窗口&am…

Linux驱动-块设备驱动

Linux驱动-块设备驱动 一,块设备驱动简介二,无请求队列情况(EMMC和SD卡等)三,请求队列情况(磁盘等带有I/O调度的设备)四,两者在驱动上区别 一,块设备驱动简介 块设备驱动…

【算法学习】链表篇:链表的常用技巧和操作总结

算法学习: https://blog.csdn.net/2301_80220607/category_12922080.html?spm1001.2014.3001.5482 前言: 在各种数据结构中,链表是最常用的几个之一,熟练使用链表和链表相关的算法,可以让我们在处理很多问题上都更加…

2台8卡L20服务器集群推理方案

1、整体流程梳理 #mermaid-svg-0aNtsWUnOH7ewXpN {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0aNtsWUnOH7ewXpN .error-icon{fill:#552222;}#mermaid-svg-0aNtsWUnOH7ewXpN .error-text{fill:#552222;stroke:#55…

HarmonyOS:使用geoLocationManager (位置服务)获取位置信息

一、简介 位置服务提供GNSS定位、网络定位(蜂窝基站、WLAN、蓝牙定位技术)、地理编码、逆地理编码、国家码和地理围栏等基本功能。 使用位置服务时请打开设备“位置”开关。如果“位置”开关关闭并且代码未设置捕获异常,可能导致应用异常。 …

系统分析师(二)--操作系统

概述 进程管理 选项A:该进程中打开的文件 进程中打开的文件是由整个进程来管理的,同一进程下的各个线程都可以对这些打开的文件进行访问和操作,所以进程中打开的文件是可以被这些线程共享的。 选项B:该进程的代码段 进程的代码…

安科瑞测频仪表:新能源调频困局的破局者

安科瑞顾强 在“双碳”目标推动下,风电、光伏等新能源正加速成为电力供应的核心力量。然而,新能源发电的间歇性与波动性,如同一把“双刃剑”,在提供清洁电力的同时,也给电网稳定运行带来了前所未有的挑战。国家能源局…

富士相机照片 RAF 格式如何快速批量转为 JPG 格式教程

富士(Fujifilm)相机拍摄的 RAW 格式文件(RAF)因其高质量和丰富的图像信息而受到摄影师的喜爱。然而,RAF 文件通常体积较大且不易于分享或直接使用。为了方便处理,许多人选择将其转换为更通用的 JPG 格式。在…

Linux 入门指令(1)

(1)ls指令 ls -l可以缩写成 ll 同时一个ls可以加多个后缀 比如 ll -at (2)pwd指令 (3)cd指令 cd .是当前目录 (4)touch指令 (5)mkdir指令 (6)rmdir和rm…

Redis缓存数据库一致性

前言: 在系统开发中经常使用关系型数据库,为了提升关系型数据库的读性能,一般会使用redis加一层缓存,缓存和数据库是分离的两次操作,本文用来分析如何操作能保证缓存和数据库的数据一致性。 一、读场景 二、写场景 …

Android Coil 3 Fetcher大批量Bitmap拼接成1张扁平宽图,Kotlin

Android Coil 3 Fetcher大批量Bitmap拼接成1张扁平宽图&#xff0c;Kotlin <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><u…

文件相关:treecpmv命令扩展详解

拷贝和移动文件 序号命令对应英文作用01tree [目录名]tree以树状图列出文件目录结构02cp 源文件 目标文件copy复制文件或者目录03mv 源文件 目标文件move移动文件或者目录&#xff0f;文件或者目录重命名 一、 tree命令 &#xff08;1&#xff09;定义 tree 命令可以以树状…

S32K144的m_data_2地址不够存,重新在LD文件中配置地址区域

在开发平台软件的时候代码中超出了64K的内存&#xff0c;单纯在ld文件中&#xff0c;增加m_data_2的存储长度&#xff0c;原先是0x00007000,我将长度修改为0x00008000,起始地址还是0x20000000,软件编译没有报错堆栈超出&#xff0c;但是软件下载到单片机中之后&#xff0c;144不…

【STM32】综合练习——智能风扇系统

目录 0 前言 1 硬件准备 2 功能介绍 3 前置配置 3.1 时钟配置 3.2 文件配置 4 功能实现 4.1 按键功能 4.2 屏幕功能 4.3 调速功能 4.4 倒计时功能 4.5 摇头功能 4.6 测距待机功能 0 前言 由于时间关系&#xff0c;暂停详细更新&#xff0c;本文章中&#xff0c;…

【重装系统】大白菜自制U盘装机,备份C盘数据,解决电脑启动黑屏/蓝屏

1. 准备 U 盘 U 盘容量至少 8G&#xff0c;备份 U 盘的数据&#xff08;后期会格式化&#xff09; 2. 从微软官网下载操作系统镜像 https://www.microsoft.com/zh-cn/software-download/windows11 3. 下载安装大白菜 https://www.alipan.com/s/33RVnKayUfY 4. 插入 U 盘&#…

vue实现目录锚点且滚动到指定区域时锚点自动回显——双向锚点

最近在用vue写官网&#xff0c;别问我为什么用vue写官网&#xff0c;问就是不会jq。。。。vue都出现11年了。。。 左侧目录&#xff1a;点击时&#xff0c;右侧区域可以自动滚动到指定的位置。 右侧区域手动滚动时&#xff0c;左侧锚点可以自动切换到对应的目录上 从而实现…

Flutter Invalid constant value.

0x00 问题 参数传入变量&#xff0c;报错&#xff01; 代码 const Padding(padding: EdgeInsets.all(20),child: GradientProgressIndicator(value: _progress), ),_progress 参数报错&#xff1a;Invalid constant value. 0x01 原因 这种情况&#xff0c;多发生于&#xff…

【精品PPT】2025固态电池知识体系及最佳实践PPT合集(36份).zip

精品推荐&#xff0c;2025固态电池知识体系及最佳实践PPT合集&#xff0c;共36份。供大家学习参考。 1、中科院化学所郭玉国研究员&#xff1a;固态金属锂电池及其关键材料.pdf 2、中科院物理所-李泓固态电池.pdf 3、全固态电池技术研究进展.pdf 4、全固态电池生产工艺.pdf 5、…

如何计算设备电池工作时长?

目录 【mAh&#xff08;毫安时&#xff09;计算方法】 【Wh&#xff08;瓦时&#xff09;计算方法】 【为什么仅用电流&#xff08;mA&#xff09;和时间&#xff08;h&#xff09;就能计算电池使用时长&#xff08;mAh&#xff09;&#xff1f;】 1. mAh 的本质是“电荷量…