10827|33

932

帖子

3

TA的资源

纯净的硅(中级)

楼主
 

基于STM32F103的血氧心率监测装置 [复制链接]

 
春节期间正忙于会客,忽然接到一个标注为“XX国际货运代理公司”的电话,我想这骗子也太唬人了,改天我还去注册一个“宇宙开发公司”,比你的“国际代理公司”要更气派的多呢,立马挂断了电话。第二天这个电话又来了,出于礼貌我接通了电话:“您好!”对方说:“您是H先生吗?”得到我的确定并核实了我的名字后说:“您有一个从菲律宾寄来的包裹,请问你的详细住址,我们将通过XX快递寄给您。”这时我忽然想起在去年末曾经申请过一个血氧心率检测芯片的评测,之后就一直没有音讯,我还以为此事不了了之呢。
不多久就接到快递送来的包裹,这是一个20多厘米见方的纸箱(见下图),箱子外边还附着几张发货装箱单,猜想大概是海关通关需要的吧。

    开箱后映入眼帘的是几个大小不一的静电包装袋。

    还有一份与箱外类似的发货装箱单,另外还有几张彩页。

从粉红色的防震包装袋里取出一个精制的硬纸盒,打开纸盒后在空空如也的海绵垫中间插了一块1厘米见方的小芯片,这就是本次评测的主角(见下图)。


    下图就是芯片的特写,是一块有8个焊盘的小PCB板,大约1厘米见方,仔细查看和分析后才知道左右两个焊盘分别是电源及地线,上下的6个焊盘是分别连通的,实际上就是芯片的中断INT引脚和I2C通讯用的SCLSDA引脚。

    从另外一个小的静电包装袋里取出了一个用乳胶制品,开始还不知道用途,看完说明书之后才知道这是一个卡片袋,可以用来存放银行卡或身份证。

    另外还有一支精制的圆珠笔(见下图)。

    还有一个厚实的静电包装袋,我起初以为里面是开发用的器材或资料,打开后才发现是一本笔记本。不过这个笔记本也非常精制,不光有封口的松紧带和作书签用的丝带,里面印刷的不象我们常用的横格,而是横竖交错的方格,方便绘图定位。

    拆开最后一个静电包装袋,里面是十根带鳄鱼夹的测试线。在这些小礼品中,我认为这个是最实用的了。

    整个包装箱里没有找到我所需要的技术手册或使用说明等资料,好在宣传彩页上印有网址,可以去官网下载资料。

从美信官网下载的全是英文资料,这可难倒了我这个“文盲”,全靠百度翻译才勉强了解了一点皮毛,但始终没有找到对芯片引脚作用的描述和如何使用的说明。经过反复阅读程序后才知道INT引脚是芯片提供信号,以便主机开始读取I2C总线上的检测数据,SCLSDA显然是I2C总线通讯用的。
官方提供的例程主要是后缀为cpp的文件,开始我还按网上说的将其后缀名改为.c后再进行编译,后来才知道根本不用修改后缀名,完全可以正常编译的。
官方提供的文件主要有:1MAX30102.cpp(初始化芯片和读写数据);2algorithm.cpp(算法);3main.cpp(主函数),其他引脚设置和I2C驱动则在mbed文件夹中,在mbed里面除了头文件外都是编译过的.o文件。
我开始准备用现有的GD32E230开发板的驱动,可是无法成功与检测芯片建立起I2C通讯,之后换用STM32F103最小系统板也没有成功,检测芯片的LED灯始终没有亮起,以致于我都怀疑芯片是不是已经损坏了。为了判定准备模拟I2C使用的引脚是否正常,我还用逻辑分析仪来检测相关引脚的功能,看是否能正常控制(见下图)。

后来我从网上找到一个基于STM32F103C8T6 MCU的应用,下载后由于其没有包含关键的mbed文件夹内容,编译一直通不过,而我又不知道该到哪里去找这些文件。最后又在另一个论坛里找到同样基于STM32F103C8T6的项目包,这个压缩包资料完整,解压后编译顺利通过了,不仅成功地驱动了检测芯片,而且通过串口通讯在电脑上可以得到检测数据(参见下图)。


芯片驱动成功后,我开始着手LCD显示功能,看似简单的事情,可就在固件库的选择上走了弯路。开始我使用的是标准库,编译总是出错,最后反复查看代码和文件夹中的文件才发现这个项目中使用的是HAL库,修改相应的代码后才完成了在LCD显示屏上显示数据的功能。
为了测试方便,我用洞洞板焊接了一块扩展板,用鼠标线来连接扩展板与检测芯片,同时LCD屏也可以直接插在扩展板上(参见下图)。这样可以避免杜邦线的杂乱和松动引起接触不良。

为了使用方便,我找了一个塑料瓶盖,将检测芯片缝在瓶盖内,正好可以套在手指上,这样仅方便使用,检测时还可以减少杂光影响。

接下来准备在LCD上显示脉搏的动态图形,在选择数据源上又费了一番周折。开始我使用的是从检测芯片读入的数据,但显示效果不理想,后来改用驱动PWM发光管的变量。在显示方式上开始用的是曲线,因为我的LCD显示屏分辨率太低,显示效果不好,后来改为用竖线组成黑色区域显示,效果才好上一点(参见下图)。

至此,这个项目算是基本完成了。从使用的情况看,因为在程序中采用了存储500组数据后再计算,因此明显存在滞后现象,开始使用时要稳定几秒后才逐步显示正常数据,而且在检测过程中稍有活动,数据便不正常,血氧数值相对波动不大,但心率波动时最大甚至超过200/秒。另外在使用过程中偶尔还出现过芯片死锁现象,复位单片机都无效,一定要断电重新加载才恢复正常。

下一步的测试计划是添加蓝牙模块,同时开发一个安卓APP,将检测数据发送到手机上显示,以便让心率波形显示更美观,取得更好的体验效果。

这是我从网上找到的基于STM32F103C8T6文件包
MAX30102_uvision5_stm32f103c8.rar (2.69 MB, 下载次数: 160)


最新回复

[attach]540455[/attach]那可以麻烦帮忙看看max30102芯片的5和6引脚在使用时需要使用PWM控制吗? 淘宝上说这两个引脚可以不接   详情 回复 发表于 2021-5-25 16:25
点赞 关注(2)
 

回复
举报

821

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
这个好玩
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

板凳
 
是还好玩,假如家里有年老体弱的病人,还可以起一定的监护作用。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
楼主大大可以开源一下程序吗,最近买了一个这个模块打算拿来玩玩,移植美信的程序 数据总是不对头

点评

1楼已经开源了的,下载解压后即可编译运行,通过串口调试助手在电脑上可以看到血氧和心率数据。  详情 回复 发表于 2019-4-28 21:22
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

5
 
Pandaz_ 发表于 2019-4-28 17:05
楼主大大可以开源一下程序吗,最近买了一个这个模块打算拿来玩玩,移植美信的程序 数据总是不对头

1楼已经开源了的,下载解压后即可编译运行,通过串口调试助手在电脑上可以看到血氧和心率数据。
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

6
 
hujj 发表于 2019-4-28 21:22 1楼已经开源了的,下载解压后即可编译运行,通过串口调试助手在电脑上可以看到血氧和心率数据。

楼主  可以开源一下你自己后面改的程序吗?带LCD显示的程序,最近也是在搞这个血氧仪

点评

已经上传。  详情 回复 发表于 2019-6-17 15:29
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

7
 

应邀将我修改后的整个项目文件打包上传,供大家参考和优化。

Nucleo_MAX30102.rar (5.55 MB, 下载次数: 121)

 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

8
 
tangjch11 发表于 2019-6-17 15:11 楼主  可以开源一下你自己后面改的程序吗?带LCD显示的程序,最近也是在搞这个血氧仪

已经上传。

 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

9
 

楼主   大神!  我是最近刚刚接触这个指尖血氧仪,因为准备做这么一个项目,不知可否加个微信或者QQ联系     便于请教! 打扰之处还请谅解

 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

10
 
本帖最后由 tangjch11 于 2019-6-22 11:44 编辑

我现在使用的检测方式是光电的检测方式  发射LED发射出660nm  和905nm的红光和红外光   再使用一个接收管接收透光率,接收管会输出占空比为50%不同频率的PWM 波形,我现在就是不知道这个PWM波形代表的什么意思,继而怎么这个脉宽信号转换成数字值,不然我就可以套用美信的算法了!!

微信图片_20190622114303.jpg (146.09 KB, 下载次数: 1)

发射管图片

发射管图片
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

11
 

有许多问题还想请教了! Q 906529016

 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

12
 

我只知其然,不知其所以然。对下载的程序未作任何修改,仅仅是添加了LCD5110的显示功能。

 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

13
 
hujj 发表于 2019-6-22 14:33 我只知其然,不知其所以然。对下载的程序未作任何修改,仅仅是添加了LCD5110的显示功能。

了解了!多谢你的分享! 另外你LCD 显示那个心率的柱状条 是根据那个值进行实时更新显示的了?还是固定显示!

点评

是根据LED的pwm值,这个值是根据心率数据计算的,这个计算是原程序就有的。  详情 回复 发表于 2019-8-19 15:38
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

14
 

我使用这些算法,心率和血氧的数据始终不稳定,是怎么回事呢?哪位大神可以指点指点?谢谢!

点评

    我是直接用下载的程序,监测和计算部分未作任何修改。从代码初步分析的结果,程序是将测得的最后500组数据加权平均得到结果,下次剔除最早的一部分数据,然后补充新获得的数据再计算加权平均数,这样  详情 回复 发表于 2019-8-19 15:44
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

15
 
tangjch11 发表于 2019-6-22 17:13 了解了!多谢你的分享! 另外你LCD 显示那个心率的柱状条 是根据那个值进行实时更新显示的了?还是固定显 ...

是根据LED的pwm值,这个值是根据心率数据计算的,这个计算是原程序就有的。

 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

16
 
不!努力 发表于 2019-8-19 15:06 我使用这些算法,心率和血氧的数据始终不稳定,是怎么回事呢?哪位大神可以指点指点?谢谢!

    我是直接用下载的程序,监测和计算部分未作任何修改。从代码初步分析的结果,程序是将测得的最后500组数据加权平均得到结果,下次剔除最早的一部分数据,然后补充新获得的数据再计算加权平均数,这样就平滑了数据的波动。

 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(中级)

17
 

特别是血氧一直都是错的

 

 
 
 

回复

145

帖子

0

TA的资源

一粒金砂(高级)

18
 

发现网上找了一推,都是错的,可能硬件是源码要配对的

点评

    我开始准备在GD32E230开发板上使用,但一直没能驱动I2C通讯,后来在淘宝上找到这个直接使用STM32AF103C8T6的代码,下载编译测试一次通过,我仅仅是在这个代码上添加了LCD5110显示这部分。  详情 回复 发表于 2019-9-25 15:08
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

19
 
qzc0927 发表于 2019-9-25 13:58 发现网上找了一推,都是错的,可能硬件是源码要配对的

    我开始准备在GD32E230开发板上使用,但一直没能驱动I2C通讯,后来在淘宝上找到这个直接使用STM32AF103C8T6的代码,下载编译测试一次通过,我仅仅是在这个代码上添加了LCD5110显示这部分。

 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

20
 

想请假一下如何用AFE4400来实现这些功能,

点评

很抱歉,我开始移植也没有成功,下载的这段代码是基于STM32F103C8T6芯片的,为此我专门买了一块最小系统板,下载测试一次通过。  详情 回复 发表于 2019-11-15 22:59
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表