【雕爷学编程】Arduino动手做(100)---MAX30102手腕心率

雕爷学编程,Arduino动手做,开源硬件,创客传感器,MAX30102手腕心率模块
摘要由CSDN通过智能技术生成

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百:MAX30102血氧仪手腕心率脉搏检测心跳传感器模块

在这里插入图片描述
相关链接
【雕爷学编程】Arduino动手做(100)—MAX30102手腕心率模块
http://t.csdnimg.cn/91ZWn
【雕爷学编程】Arduino动手做(100)—MAX30102手腕心率模块2
http://t.csdnimg.cn/pJ4wp
【雕爷学编程】Arduino动手做(100)—MAX30102手腕心率模块3
http://t.csdnimg.cn/mQlmI
【雕爷学编程】Arduino动手做(100)—MAX30102手腕心率模块4
http://t.csdnimg.cn/wfA11

MAX30102
是一种综合性脉搏血氧测定法,心率监测模块。它包括内部LED,光电探测器、光学元件和低噪声电子设备具有环境光抑制功能。max30102提供了完整的系统解决方案,简化流程设计适用于移动和可穿戴设备。MAX30102在单个1.8V电源上工作为内部LED提供单独的5.0V电源。通信通过标准I2c兼容接口。模块可以通过软件关闭零备用电流,允许电源轨始终保持通电。

应用
●可穿戴设备
●健身辅助设备
在这里插入图片描述
MAX30102的优点和特点

●心率监测器和脉搏血氧计传感器输入LED反射溶液

●微型5.6毫米x 3.3毫米x 1.55毫米14针光学模块

•集成的盖玻片提供最佳、坚固的

●移动设备超低功率运行

•可编程采样率和LED电流节电

•低功率心率监测器(<1兆瓦)

•超低停机电流(0.7μA,典型值)

●快速数据输出能力

•采样率高

●强大的运动伪影复原能力

•高信噪比

-40°C至+85°C工作温度范围

在这里插入图片描述
在这里插入图片描述
MAX30102手腕心率模块

有两个发光二极管,一个光检测器,优化光学和低噪声的仿真信号处理,以检测脉搏血氧饱和度和心脏速率信号。

1、只需要将手指头紧贴在传感器上,就能估计 脉搏血氧饱和度(SpO2)及脉搏(相当于心跳)。

2、携带氧气的红血球能吸收较多红外光(850-1000nm),未携带氧气的红血球则是吸收较多的红光(600-750nm)。

3、因此pulse oximeter就是一个迷你的分光计,利用不同红血球之吸收光谱的原理,来分析血氧饱和度。

4、这种实时而快速的测量方式,也广泛被运用在许多临床的参考。

在这里插入图片描述
MAX30102手腕心率模块电原理图
在这里插入图片描述
在这里插入图片描述

  • 11
    点赞
  • 182
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 47
    评论
以下是使用Python控制MAX30102传感器的示例代码: ```python import smbus2 import time # MAX30102 I2C address MAX30102_ADDRESS = 0x57 # MAX30102 register addresses MAX30102_REG_INTERRUPT_STATUS_1 = 0x00 MAX30102_REG_INTERRUPT_STATUS_2 = 0x01 MAX30102_REG_FIFO_WRITE_POINTER = 0x02 MAX30102_REG_FIFO_OVERFLOW_COUNTER = 0x03 MAX30102_REG_FIFO_READ_POINTER = 0x04 MAX30102_REG_FIFO_DATA = 0x05 MAX30102_REG_MODE_CONFIG = 0x06 MAX30102_REG_SPO2_CONFIG = 0x07 MAX30102_REG_LED1_PA = 0x09 MAX30102_REG_LED2_PA = 0x0A MAX30102_REG_MULTI_LED_CTRL1 = 0x11 MAX30102_REG_MULTI_LED_CTRL2 = 0x12 MAX30102_REG_TEMP_INTEGER = 0x1F MAX30102_REG_TEMP_FRACTION = 0x20 MAX30102_REG_REVISION_ID = 0xFE MAX30102_REG_PART_ID = 0xFF # MAX30102 mode configuration settings MAX30102_MODE_HR_ONLY = 0x02 MAX30102_MODE_SPO2_ONLY = 0x03 MAX30102_MODE_MULTI_LED = 0x07 # MAX30102 sample rate configuration settings MAX30102_SAMPLING_RATE_50 = 0x00 MAX30102_SAMPLING_RATE_100 = 0x01 MAX30102_SAMPLING_RATE_200 = 0x02 MAX30102_SAMPLING_RATE_400 = 0x03 MAX30102_SAMPLING_RATE_800 = 0x04 MAX30102_SAMPLING_RATE_1000 = 0x05 MAX30102_SAMPLING_RATE_1600 = 0x06 MAX30102_SAMPLING_RATE_3200 = 0x07 # MAX30102 LED pulse amplitude configuration settings MAX30102_LED_PA_0 = 0x00 MAX30102_LED_PA_1 = 0x01 MAX30102_LED_PA_2 = 0x02 MAX30102_LED_PA_3 = 0x03 MAX30102_LED_PA_4 = 0x04 MAX30102_LED_PA_5 = 0x05 MAX30102_LED_PA_6 = 0x06 MAX30102_LED_PA_7 = 0x07 MAX30102_LED_PA_8 = 0x08 MAX30102_LED_PA_9 = 0x09 MAX30102_LED_PA_10 = 0x0A MAX30102_LED_PA_11 = 0x0B MAX30102_LED_PA_12 = 0x0C MAX30102_LED_PA_13 = 0x0D MAX30102_LED_PA_14 = 0x0E MAX30102_LED_PA_15 = 0x0F # Initialize I2C bus bus = smbus2.SMBus(1) # Reset MAX30102 bus.write_byte_data(MAX30102_ADDRESS, MAX30102_REG_MODE_CONFIG, 0x40) time.sleep(1) # Set sample rate to 100Hz bus.write_byte_data(MAX30102_ADDRESS, MAX30102_REG_SPO2_CONFIG, MAX30102_SAMPLING_RATE_100) # Set LED pulse amplitude for LED1 and LED2 bus.write_byte_data(MAX30102_ADDRESS, MAX30102_REG_LED1_PA, MAX30102_LED_PA_6) bus.write_byte_data(MAX30102_ADDRESS, MAX30102_REG_LED2_PA, MAX30102_LED_PA_6) # Set multi-LED mode configuration for LED1 and LED2 bus.write_byte_data(MAX30102_ADDRESS, MAX30102_REG_MULTI_LED_CTRL1, 0x23) bus.write_byte_data(MAX30102_ADDRESS, MAX30102_REG_MULTI_LED_CTRL2, 0x01) # Set mode to HR only bus.write_byte_data(MAX30102_ADDRESS, MAX30102_REG_MODE_CONFIG, MAX30102_MODE_HR_ONLY) # Read data from MAX30102 while True: # Read FIFO data count fifo_data_count = bus.read_byte_data(MAX30102_ADDRESS, MAX30102_REG_FIFO_WRITE_POINTER) - bus.read_byte_data(MAX30102_ADDRESS, MAX30102_REG_FIFO_READ_POINTER) if fifo_data_count > 0: # Read FIFO data fifo_data = bus.read_i2c_block_data(MAX30102_ADDRESS, MAX30102_REG_FIFO_DATA, 6) # Print heart rate print("Heart rate: ", fifo_data[3]) ``` 这是一个基本的读取值的示例,你可以根据需要进行修改和扩展。请注意,MAX30102的配置可能因制造商而异,因此在使用此代码之前最好查阅一下设备的数据手册。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 47
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值