ESP32-DEVELOP
30分,水一个报告
实验报告
心率采集信息价值
心率采集是一种常见的生理指标监测方法,通过测量心脏每分钟搏动的次数来评估一个人的心脏功能状况。心率采集信息具有重要的价值,对于医学、运动科学和健康管理等领域都具有广泛的应用。以下是对心率采集信息价值的准确、科学的介绍。
首先,心率采集信息能够提供关于心脏健康状况的重要线索。正常的心率范围是60到100次/分钟,超出这个范围可能意味着心脏存在问题。通过监测心率的变化,医生可以判断是否存在心律不齐、心肌缺血、心肌梗死等心脏疾病,并及时采取相应的治疗措施。此外,心率变异性(HRV)分析也可以提供关于心脏健康状况的有价值信息。HRV指的是心率在不同时间点上的变化程度,较高的HRV通常与较好的心血管健康相关,而较低的HRV可能与心脏疾病风险增加有关。
其次,心率采集信息在运动科学中具有重要的应用。心率是评估运动强度和耐力的重要指标之一。通过监测运动时的心率变化,可以了解个体的心肺功能状况、运动耐力水平以及运动适应性。运动员、教练员和健身爱好者可以根据心率信息调整训练强度和持续时间,以实现更好的训练效果。此外,心率采集信息还可以用于监测运动后的恢复情况,有助于判断身体对运动的适应程度和疲劳程度,为合理安排训练计划提供依据。
此外,心率采集信息在健康管理中也具有重要作用。心率的变化可以反映人体对不同情绪、压力和环境的反应。通过监测日常生活中的心率变化,可以评估个体的应激水平和情绪状态。这对于识别和管理压力、焦虑和抑郁等心理健康问题具有帮助
设备
IDE: Thonny
硬件: ESP32 、240x240 屏幕 、 USB数据线 、杜邦线-10cm母对母、MAX30102传感器
固件:
https://micropython.org/download/esp32/
MAX30102传感器
介绍
MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块。
它集成了一个红光LED和一个红外光LED、光电检测器、光器件,以及带环境光抑制的低噪声电子电路。
MAX30102采用一个1.8V电源和一个独立的5.0V用于内部LED的电源,应用于可穿戴设备进行心率和血氧采集检测,佩戴于手指点耳垂和手腕处。
标准的I2C兼容的通信接口可以将采集到的数值传输给Arduino、KL25Z、STM32、STC51等单片机进行心率和血氧计算。
此外,该芯片还可以通过软件关断模块,待机电流接近为零,实现电源始终维持供电状态。
工作原理
光溶积法:利用人体组织在血管搏动时造成透光率不同来进行脉搏和血氧饱和度测量
光源:采用对动脉血中痒合血红蛋白(HbO2)和血红蛋白(Hb)有选择性的特定波长的发光二极管
透光率转化为电信号:动脉搏动充血容积变化导致这束光的透光率发送改变,此时由光电变换接收经人体组织反射光线,转变为电信号并将其放大输出。
电路解析
主要参数:
产品名称 | MAX30102 心率模块 |
---|---|
LED峰值波长器 | 660nm/880nm |
LED供电电压 | 3.3 ~ 5V |
检测信号类型 | 光反射信号(PPG) |
输出信号接口 | I2C接口 |
通信接口电压 | 1.8 ~ 3.3V ~ 5V(可选) |
引脚说明
| 名称 | 管教定义 |
| ——- | —————————————————— |
| VIN | 电源输入 1.6V-5.5V |
| 3位焊盘 | 选择总线的上拉电平,取决于引脚主控电压可选1.8v或者3.3v |
| SDA | IIC-SDA |
| SCL | IIC-SCL |
| GND | 地 |
| INT | INT 低电平有效中断(漏极开路)MAX30102 的中断引脚 |
| IRD | IR_DRV IR LED阴极和LED驱动器连接点 一般不接 |
| RD | R_DRV 红色LED阴极和LED驱动器连接点 一般不接 |
ESP32开发板
ESP32开发板是专为ESP32芯片设计的硬件平台,用于简化和加速基于ESP32的应用程序开发。它是一种集成了ESP32芯片、外围电路和连接器的单板电脑。
ESP32开发板具有丰富的硬件资源,包括数字和模拟GPIO引脚、UART、SPI、I2C接口、PWM输出以及ADC和DAC等功能。它还配备了Wi-Fi和蓝牙天线,使得无线通信变得更加方便。
ESP32开发板具有广泛的应用领域。由于其强大的无线通信功能,它常被用于物联网(IoT)应用开发,如智能家居、传感器网络、远程监控等。同时,其丰富的硬件接口和高性能处理器也使其成为机器人、自动化系统、嵌入式设备和工业控制等领域的理想选择。
ESP32开发板的优点还包括低功耗、高性价比和易于使用。它能够在低功耗模式下运行,适用于长时间运行的应用。此外,ESP32开发板的价格相对较低,对于学习和原型开发非常友好。其易于使用的开发环境和丰富的社区支持也为开发者提供了更多便利。
总之,ESP32开发板是一种功能强大且易于使用的硬件平台,为开发者提供了丰富的资源和灵活性,促进了基于ESP32芯片的应用程序开发和创新。
电路连接
检测心率
1 | from machine import sleep, SoftI2C, Pin, Timer |
代码解释
该代码段主要通过与MAX30102传感器进行通信来检测心率。它使用了Python的machine模块中的一些功能,如定时器和I2C通信。MAX30102传感器是一种可穿戴式生物传感器,能够通过皮肤来检测心率。
代码的主要逻辑是在一个无限循环中不断检测传感器读数,并进行相关的心率计算。首先,代码会初始化I2C对象和传感器对象,以便与MAX30102传感器进行通信。然后,它会检查传感器是否被正确连接,并设置传感器的一些配置参数,如采样率和活跃LED的幅度。
在主循环中,代码会检查传感器是否有可用的数据。如果有可用数据,它会从传感器的缓存中读取红光和红外光的读数。然后,代码会判断读数是否超过一个阈值,以确定是否有手指放置在传感器上。如果读数低于阈值,则表示没有检测到手指;反之,表示手指已放置。
接下来,代码会将红光读数存储到一个历史列表中,并通过保留列表的最后32个元素来控制列表的长度。然后,代码会计算历史列表中的最小值和最大值,并根据这些值计算出心率的阈值。
代码会检查当前的心跳状态,并根据红光读数和阈值的比较来确定是否有心跳事件发生。如果检测到心跳开始,则计算心跳的频率和心率,并将计算结果添加到心率历史列表中。心率历史列表的长度被限制在最大30个元素,以保持数据的有效性。最后,代码会通过定时器每秒调用一次display_info
函数来显示心率。
检测血氧、温度
检测血氧值代码模块
1 | # -*-coding:utf-8 |
代码解释
这段代码实现了计算心率(Heart Rate)和血氧饱和度(SpO2)的算法。它接受红外(IR)信号和红色(Red)信号作为输入,通过检测心率周期的峰值和对应的红外和红色信号的交流/直流成分,计算出血氧饱和度的比值(SPO2)。以下是代码的主要步骤:
- 计算红外信号的直流均值。
- 对红外信号进行去直流均值并翻转信号,以便检测谷值。
- 使用4点移动平均对信号进行平滑处理。
- 计算阈值,阈值的值为信号的平均值,限制在30和60之间。
- 使用峰值检测算法找到红外信号的谷值位置。
- 计算心率,通过计算峰值之间的间隔时间来估算心率。
- 寻找与红外信号谷值位置相邻的最大值,以及计算红色信号的直流和交流成分,用于血氧饱和度校准比率的计算。
- 计算血氧饱和度的值,使用血氧饱和度校准比率和峰值比率的公式计算。
- 返回心率、心率有效性、血氧饱和度和血氧饱和度有效性。
血氧和温度检测代码
1 | from machine import sleep, SoftI2C, Pin, Timer |
代码解释
代码的主要逻辑是在一个无限循环中不断检测传感器读数,并进行相关的计算。首先,代码会初始化I2C对象和传感器对象,以便与MAX30102传感器进行通信。然后,它会检查传感器是否被正确连接,并设置传感器的一些配置参数,如采样率和活跃LED的幅度。
在主循环中,代码会检查传感器是否有可用的数据。如果有可用数据,它会从传感器的缓存中读取红光和红外光的读数,并判断是否有手指放置在传感器上。如果没有检测到手指,代码会继续下一次循环;否则,会进行心率和血氧的计算。
对于心率的计算,代码会将红光读数存储到一个历史列表中,并通过保留列表的最后32个元素来控制列表的长度。然后,代码会计算历史列表中的最小值和最大值,并根据这些值计算出心率的阈值。通过比较当前读数和阈值,代码可以检测到心跳的开始和结束,并计算出心率值。
对于血氧的计算,代码会将红光和红外光的读数存储到相应的列表中,并限制列表的长度为最新的100个元素。然后,代码会调用calc_hr_and_spo2
函数来计算血氧值。如果计算成功,将血氧值存储在SPO2变量中。
对于温度的读取,代码使用传感器的read_temperature
方法获取环境温度,并将其存储在TEMPERATURE变量中。
最后,通过定时器每秒调用一次display_info
函数,将心率、血氧和温度显示出来。
OLED屏幕驱动
代码实现
1 | from machine import sleep, SoftI2C, Pin, Timer |
实验总结和感悟
在我使用ESP32开发板和MAX30102传感器设计的可穿戴设备的实验中,我成功地实现了心率、血氧和温度的测量功能。以下是我对这次实验的心得体会。
首先,我深刻认识到了传感器在物联网和可穿戴设备领域的重要性。MAX30102传感器能够准确测量心率和血氧水平。通过与ESP32开发板的结合,我能够实时获取传感器采集到的数据,并进行处理和展示。这使我对传感器的原理和工作方式有了更深入的理解。
其次,我学会了如何使用ESP32开发板进行数据采集和处理。ESP32是一款功能强大的微控制器,具有丰富的通信接口和处理能力。通过编写适当的代码,我能够将传感器的数据读取到ESP32上,并使用串口或者其他通信方式将数据传输到计算机或移动设备上。这为数据的后续处理和分析提供了便利。
在实验过程中,我遇到了一些挑战。首先是传感器的校准和信号处理。传感器的准确性和稳定性对于测量结果至关重要。我花了一些时间研究和调整代码,确保测量结果的准确性。