风筝
发表于: 2022-4-26 14:50:04 | 显示全部楼层

在本篇文章中,我们将使用MAX30100脉搏血氧计传感器和Arduino开发板制作一个可以测量血氧和心率的设备。血氧浓度(SpO2)以百分比测量,而心跳/脉搏频率以BPM测量。MAX30100是一款脉搏血氧饱和度和心率监测传感器解决方案。您也可以使用MAX30102,它是MAX30100的升级版本。


在本文中,我们将在0.96寸OLED显示屏中显示血氧和心率值。每次心跳,OLED显示屏上的值就会发生变化。通过使用蓝牙模块HC-05/HC-06,我们可以无线发送数据到安卓应用程序并监控的数据,然后以文本格式保存数据的跟踪记录。通过这种方式,我们可以将从设备读取的数据发送到另一台设备或互联网。运动员可以使用这种可穿戴设备来监测他们在锻炼期间的心率和血氧水平。


所需的组件

●    Arduino Nano开发板

●    MAX30100脉搏血氧计传感器模块

●    0.96寸I2C OLED显示屏

●    HC-05/HC-06蓝牙模块

●    连接跳线

●    面包板


脉搏血氧仪如何工作?

氧气进入肺部,然后进入血液。血液将氧气输送到我们身体的各个器官。在我们的血液中携带氧气的主要方式是通过血红蛋白。在脉搏血氧仪读数期间,将一个类似夹子的小型装置放在手指、耳垂或脚趾上。

1.gif


光束穿过手指中的血液,测量氧气量。它通过测量含氧或脱氧血液中光吸收的变化来实现这一点。

2.gif


MAX30100脉搏血氧传感器模块

MAX30100.jpg


该传感器是一种集成的脉搏血氧饱和度和心率监测传感器解决方案。它包含了两个LED、一个光电探测器、优化的光学器件和低噪声模拟信号处理来检测脉搏和心率信号。它采用1.8V和3.3V电源供电,可通过软件以可忽略的待机电流断电,从而使电源始终保持连接状态。


MAX30100脉搏血氧仪和心率传感器的工作过程

该传感器有两个LED,一个发出红光,另一个发出红外光。对于脉搏率,只需要红外光。红光和红外光都用于测量血液中的氧含量。


当心脏泵血时,由于有更多的血液,含氧血液会增加。随着心脏放松,含氧血量也会减少。通过了解含氧血液增加和减少之间的时间,可以确定脉搏率。


事实证明,含氧血液吸收更多红外光并通过更多红光,而脱氧血液吸收红光并通过更多红外光。这是MAX30100的主要功能:它读取两个光源的吸收值并将它们存储在可以通过I2C读取的缓冲区中。


电路图和连接

下面给出了将MAX30100脉搏血氧仪传感器与Arduino以及HC-05 蓝牙模块和OLED显示屏连接的电路图。

Circuit-Diagram-1.jpg


MAX30100传感器和OLED显示屏都采用I2C通信协议。将它们的SDA和SCL引脚分别连接到Arduino开发板的I2C引脚,即A4和A5。同样蓝牙模块是一个UART模块,需要连接到Arduino的Tx和Rx引脚。


安卓应用程序

脉搏率和血氧浓度可以通过蓝牙连接使用Andorid 应用程序无线传输到Android设备,然后显示在OLED显示屏。

Screenshot-28.jpg


该应用程序是使用MIT App Inventor设计的。下面给出了这两个文件的链接,即APK文件.aia文件。导入.aia 文件后,您可以在MIT App Inventor上编辑修改 Android 应用程序。该应用程序可以安装在任何Android设备上,并且可以连接到HC-05蓝牙模块。


代码

下面给出了将MAX30100脉搏血氧仪和心率传感器与Arduino连接的代码。复制此代码并将其上传到Arduino开发板。 main.rar (796 Bytes, 下载次数: 165)


代码使用以下的库文件:

1.  Arduino MAX30100 库

2.  OkaOLED 库

3.  Adafruit GFX 库


测试运行结果

在面包板组装所有的组件,并进行测试。最初,当没有手指放在MAX30100 上时,血氧值和心率值都为零。放置手指时,开始出现血氧值和心率值。但最初显示的值不正确,几秒钟后,OLED显示屏开始显示正确的值。

MAX30100-Blood-Oxygen-Heart-Rate.jpg


MAX30100不工作故障排除

如果您购买了如下所示的MAX30100模块,那么它可能无法正常工作,因为它存在严重的设计问题。MAX30100使用1.8V作为 VDD,这个特殊的模块使用两个稳压器来实现这个电压。没有错。但是,如果仔细观察,SCL和SDA引脚通过4.7k欧姆电阻上拉至1.8V!这意味着它不适用于具有更高逻辑电平的微控制器。


第1种方法:解决方案是从模块上移除电阻(在下图中圈出),并使用外部4.7k欧姆电阻连接到SDA、SCL和INT引脚。

arduino-max30100-remove-resistors.jpg


移除所有4.7K电阻后,将INT、SDA、SCL引脚连接到外部4.7K上拉电阻,如下图所示。

MAX30100-Not-Working-Fix.jpg


第2种方法:如果您不喜欢第一种方法,可以使用第二种方法来解决此问题。如下面黄线所示,在红十字的位置切断走线并跳线就足够了。跳线不需要绝缘线。您可以从绞合线中取出镀锡绞线。

2nd.jpg


以上就是使用MAX30100脉搏血氧计传感器和Arduino进行血氧和心率测量的全部内容。如果有任何问题,请随时在本帖下面回复。


跳转到指定楼层
dzy
发表于: 2022-7-27 16:02:24 | 显示全部楼层

Thanks
回复

使用道具 举报

风筝
发表于: 2022-7-27 16:10:40 | 显示全部楼层


感谢支持呢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-24 05:15 , Processed in 0.041924 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表