MAX30102采集心率数据
一个100行的代码调试都可能会让程序员遇到很多挫折,所以,面对挫折,我们永远不能低头。
关于MAX30102驱动配置程序,网上搜索博客有一堆资料,c/c++写的驱动代码都有,
可参考博客:
软件流程:
* 中断向量初始化
* 串口初始化
* 定时器初始化
* IIC初始化
* max30102初始化
* 循环读取max30102数据寄存器的值
* 每隔10s计算一次心率值
基本的单片机配置不用多说,不会的可以区正点原子官网下载例程好好学一学
stm32系列基本上都是库函数,非常适合新手上手
我这里使用的是stm32f405单片机
单片机调试会出现很多莫名其妙的bug,有软件产生的,有硬件产生的,要学会逐个问题的分析排查
调试max30102尤其要注意的点;
* 搞清楚测心率是红灯还是红外,官方英文手册有写:红灯是心率模式,红灯+红外是血氧模式
* 一定要保证IIC配置正确,这样才能读到数据
* 一定要注意max30102的采样频率,采样频率的设置直接关系到心率计算的准确度
* 根据采样频率如设置100hz,说明每10ms采样一个数据,那么就可以采用定时器每定时10ms设置标志位,然后再在应用程序里判断标志位从而把数据读出来
* 读取数据可采用fifo模式,需看懂官方手册,如何利用fifo读取数据以及每个数据是如何组成的,如心率模式下,读FIFO是六个字节,前后三个字节都是红灯数据
* 10s即可读到1000个数据,利用此1000个数据即可计算心率值
硬件准备就绪,软件驱动配置正确的情况下,将手指头贴在max30102上面静止不动,采集数据如下:
112539
112514
112534
112523
112548
112631
112578
112663
112591
112636
112669
112644
112436
112386
112262
112296
112183
112234
112138
112155
112143
112205
112162
112158
112178
采集到数据后需要对数据进行预处理,再经过心率提取算法,计算出心率值,可先离线分析,再将代码实现在单片机上。
数据预处理部分基本上包含如下:
* 环境光处理(硬件处理)
* 去除运动伪影
* 三轴加速度数据估计噪声(运动下配合维纳滤波器,可搜索相关论文)
* 维纳滤波衰减噪声(适合运动下测量)
* 巴特沃兹去低频噪声
* rolling去除基线漂移,只能线性补偿,非线性待测试解决
* 均值滤波->滑动平均使波形更平滑
python实现效果如下:

经过和华为watch测试对比,静止情况下,误差在1%之内
MAX30102采集心率数据的更多相关文章
- C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子)
第一次接触HtmlAgilityPack是在5年前,一些意外,让我从技术部门临时调到销售部门,负责建立一些流程和寻找潜在客户,最后在阿里巴巴找到了很多客户信息,非常全面,刚开始是手动复制到Excel, ...
- Gobblin采集kafka数据
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 找时间记录一下利用Gobblin采集kafka数据的过程,话不多说,进入正题 一.Gobblin ...
- API例子:用Python驱动Firefox采集网页数据
1,引言 本文讲解怎样用Python驱动Firefox浏览器写一个简易的网页数据采集器.开源Python即时网络爬虫项目将与Scrapy(基于twisted的异步网络框架)集成,所以本例将使用Scra ...
- Performance Monitor采集性能数据
Performance Monitor采集性能数据 Windows本身为我们提供了很多好用的性能分析工具,大家日常都使用过资源管理器,在里面能即时直观的看到CPU占用率.物理内存使用量等信息.此外新系 ...
- 【Android 应用开发】分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计
.主要是为了总结一下 对这些概念有个直观的认识; . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/198 ...
- Android 音视频开发(四):使用 Camera API 采集视频数据
本文主要将的是:使用 Camera API 采集视频数据并保存到文件,分别使用 SurfaceView.TextureView 来预览 Camera 数据,取到 NV21 的数据回调. 注: 需要权限 ...
- 分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计
一. 数据采集 源码GitHub地址 : -- SSH : git@github.com:han1202012/DisplayTest.git; -- HTTP : https://github.co ...
- 将HTML表格的每行每列转为数组,采集表格数据
将HTML表格的每行每列转为数组,采集表格数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //将HTML ...
- 用js采集网页数据并插入数据库最快的方法
今天教大家一个快速采集网站数据的方法,因为太晚了,直接上例子,这里以采集易车网的产品数据为例. 思路:利用js获取网页数据并生成sql命令,执行sql命令把采集的数据插入数据库. 1.用谷歌浏览器或者 ...
- .Net Core下使用HtmlAgilityPack解析采集互联网数据
HtmlAgilityPack应该算是.Net下最好用的html解析库了. 因为最近帮朋友采集一些数据,在nuget里面搜索了好几个库,最后决定就用HtmlAgilityPack.并简单的记录下使用的 ...
随机推荐
- Javaweb学习笔记第七弹
Maven依赖范围 对于Maven的安装配置等环境准备问题,可详细参考我的前几篇博客, 网址1:https://www.cnblogs.com/liuzijin/p/16654344.html 网址2 ...
- 全球IP whois信息获取与情报挖掘
全球IP的whois信息获取与情报挖掘 什么是whois信息? Whois是一种网络协议,也是一种网络服务,能够让客户端查询域名或者IP是否注册,以及注册人的相关信息.我们通常所说的whois信息就是 ...
- ElasticSearch的常用API
ElasticSearch的常用API 1.在服务器上怎么查ES的信息 # 通过使用_cat可以查看支持的命令 ### curl localhost:9200/_cat eg: /_cat/alloc ...
- 续集来了!我让 GPT-4 用 Laf 三分钟写了个完整的待办事项 App
书接前文,上篇文章我们教大家如何三分钟时间用 Laf 实现一个自己的 ChatGPT. 一觉醒来,GPT-4 已经发布了! GPT-4 实现了真正的多模态,可以把纸笔画的原型直接写出网页代码.读论文时 ...
- aspnetcore微服务中使用发件箱模式实例
aspnetcore微服务种服务之间的通信一般都有用到消息中间件,如何确保该服务的持久层保存创建的数据同时又把消息成功投递到了关联服务,关联服务做对应的处理. 下面就以一个简单的例子来演示实现方式之一 ...
- QML和QT
推荐一些学习qml教程 Qt官方的QML教程: https://doc.qt.io/qt-5/qtqml-index.html,这是一个由Qt官方提供的完整的QML教程,包含了所有基本知识和高级语法. ...
- python协程详细解释以及例子
目录 1.协程 1.1greenlet实现协程 1.2yield关键字实现协程 1.3使用asyncio模块实现协程 1.4async & await关键字实现协程 2.协程意义 3.异步编程 ...
- win10计划任务程序库实现定时任务的自动执行程序及问题解决。
win10计划任务程序库可以实现按照规则频率执行脚本的功能.现在将设置方法记录如下: 创建任务步骤 1.右键点击我的电脑,选择管理,依次点击:系统工具->任务计划程序->任务计划程序库. ...
- hdfs集群的扩容和缩容
目录 1.背景 2.集群黑白名单 3.准备一台新的机器并配置好hadoop环境 3.1 我们现有的集群规划 3.2 准备一台新的机器 3.2.1 查看新机器的ip 3.2.2 修改主机名和host映射 ...
- Kubernetes 部署 MySQL 高可用读写分离
Kubernetes 部署 MySQL 高可用读写分离 简介: 在有状态应用中,MySQL是我们最常见也是最常用的.本文我们将实战部署一个一组多从的MySQL集群. 一.配置准备 configMap ...