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.并简单的记录下使用的 ...
随机推荐
- RTE NG-Lab:一起探索下一代实时互动新世界
互联网已经彻底改变了我们的工作和生活.从纸书信笺,到智能手机中的 App,再到 VR 头显,实时互动体验逐代升级,已经成为了我们生活的一部分.随着元宇宙的爆火,新增的实时互动场景日益颠覆着我们的想象力 ...
- 四种OS网络属性配置
1.Windows BAT设置网络属性: netsh interface ip set address "Ethernet" static 192.168.31.223 255.2 ...
- Freemon停止提供免费域名注册了
前言 freemon是一家国外的域名注册商,提供很多顶级的域名注册,最棒的是它还提供了五个免费的顶级一级域名注册分别有:tk.cf.ml.ga.gq,而且据我所知是不限量注册,最高一年使用期,可以免费 ...
- 抽象同步队列AQS原理和实践
AQS简述 AQS是一个FIFO的双向队列,队列元素类型为Node(也就是Thread).AQS有一个state属性,ReentrantLock可以用来便是当前线程获取锁的可重入次数:对于samaph ...
- 多精度 simulator 中的 RL:一篇 14 年 ICRA 的古早论文
目录 全文快读 0 abstract 1 intro 2 related work 3 背景 & 假设 3.1 RL & KWIK(know what it knows)的背景 3.2 ...
- flask基本项目结构
|-- myproject |-- config.py |-- flask-env.yml |-- manage.py |-- app | |-- models.py | |-- __init__.p ...
- TypeScript必知三部曲(一)TypeScript编译方案以及IDE对TS的类型检查
TypeScript代码的编译过程一直以来会给很多小伙伴造成困扰,typescript官方提供tsc对ts代码进行编译,babel也表示能够编译ts代码,它们二者的区别是什么?我们应该选择哪种方案?为 ...
- Vulnhub Development靶场 Walkthrough
Recon 首先使用netdiscover进行二层Arp扫描. ┌──(kali㉿kali)-[~] └─$ sudo netdiscover -r 192.168.80.0/24 Currently ...
- Kubernetes客户端认证(二)—— 基于ServiceAccount的JWTToken认证
1.概述 在 Kubernetes 官方手册中给出了 "用户" 的概念,Kubernetes 集群中存在的用户包括 "普通用户" 与 "Service ...
- 版本依赖控制工具Maven
Maven 简介 依赖管理工具 如果说A工程里面用到了B工程的类.接口.配置文件等这样的资源,那么就说A依赖B 构建管理工具 构建:使用原材料生产产品的过程 安装:把一个Maven工程经过打包操作生产 ...