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.并简单的记录下使用的 ...
随机推荐
- 【新版】使用 go-cqhttp 扫码登录,一键接入 ChatGPT 机器人到 QQ 群
目录 项目效果 安装 go-cqhttp 虚拟文件 启动 ChatGPT 项目效果 由于 ChatGPT 目前只能在漂亮国使用,所以想要在国内使用 ChatGPT 必然险阻重重 不仅时时刻刻要跟企鹅公 ...
- c++ 内存顺序
搞懂无锁编程的重要一步是完全理解内存顺序! 本教程由作者和ChatGPT通力合作完成. 都有哪几种? c++的内存模型共有6种 memory_order_relaxed memory_order_co ...
- scp上传文件No such file or directory 问题
问题描述 window使用scp复制文件到linux时报 No such file or directory 错误 解决办法 本地复制到Linux,win环境必须用绝对路径 上传成功
- flask-wtfwkfom使用
我们在使用flask框架来搭建自己的博客,只要是设涉及到表单相关,必然会想起Flask-WTF与WTForms.对于flask初学者来说,比较容易混淆两者.今天想来一一解释两者的用法. Flask-W ...
- 详解事务模式和Lua脚本,带你吃透Redis 事务
摘要:Redis事务包含两种模式:事务模式和Lua脚本. 本文分享自华为云社区<一文讲透 Redis 事务>,作者: 勇哥java实战分享. 准确的讲,Redis事务包含两种模式:事务模式 ...
- Linux Socket网络编程: TCP/UDP与本地套接字
网络交互和数据传输好比打电话,socket就像电话机,是在网络编程世界中与外界进行网络通信的途径 TCP网络编程 基于服务器-客户端模型,使用套接字完成连接的建立 服务端准备连接 使用socket创建 ...
- docker的安装(linux、centos)
环境:centos7 1.先确定linux是否是centos7 cat /etc/redhat-release 2.如果自己的linux上之前有安装docker,先卸载.如果没有,则直接跳过这一步. ...
- Search Engine + Recommendation System
PageRank 该网络的 邻接矩阵 通过变换可以变成 概率转移 矩阵 设该转移矩阵为M,最终每个节点的重要性向量为r,则有了一个状态转移方程\(M \cdot r = r\),(虽然严格意义上,应该 ...
- javasec(六)RMI
这篇文章介绍java-RMI远程方法调用机制. RMI全称是Remote Method Invocation,远程⽅法调⽤.是让某个Java虚拟机上的对象调⽤另⼀个Java虚拟机中对象上的⽅法,只不过 ...
- Redis报错MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on
1.错误信息 org.redisson.client.RedisException: MISCONF Redis is configured to save RDB snapshots, but is ...