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.并简单的记录下使用的 ...
随机推荐
- RPA的数字化标签
随着中国经济的飞速发展,"人口红利"也正在不断消失,在过去几十年中,我们已经看到了各种智能化.自动化技术的进步对各行各业产生的巨大影响.但在现代金融行业中,仍然有许多重复.简单.繁 ...
- RPA的应用及工作原理
通过本章学习,您将了解到: 什么是RPA RPA能做些什么 RPA的应用有什么特点 RPA是怎样进行工作的 RPA怎么实现人机协作 RPA的未来趋势怎么样 什么是RPA RPA是利用软件来执行业务流程 ...
- day11-MySql存储结构
MySql存储结构 参考视频:MySql存储结构 1.表空间 不同的存储引擎在磁盘文件上的结构均不一致,这里以InnoDB为例: CREATE TABLE t(id int(11)) Engine = ...
- 三天吃透Spring Cloud面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...
- 【WEB UI自动化】Selenium爬取用户的知乎回答时遇到10002:请求参数异常,请升级客户端后重试
这里分享一个低配版知乎爬虫,利用了Selenium模块 爬取的过程中遇到了10002:请求参数异常,请升级客户端后重试,调用知乎某用户的回答API返回的HTTP状态码是403 Forbidden 之后 ...
- 使用requests的session发送请求
import requests # (1)网址 url = 'https://www.xslou.com/login.php' # (2)输入登录框-->输入密码框-->点击登录找到php ...
- 利用Karlibr生成April标定板图像
1 关键的命令 rosrun kalibr kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.02 --tspace 0 ...
- 系统评价——层次分析法AHP的R语言实现(四)
对一个事物的评价往往会涉及多个因素或者多个指标,评价是在多个因素相互作用下的一个综合判断.多指标综合评价方法具有以下的特点:包含若干个指标,分别说明被评价对象的不同方面,评价方法最终要对被评价对象作出 ...
- 运输问题—R实现
table { margin: auto } 运输问题 随着社会和经济的不断进步,现代物流业蓬勃发展,如何充分利用时间.信息.仓储.配送和联运体系创造更多的价值,是物流运作必须解决的问题.运输问题(t ...
- Python中,类的特殊方法与内置函数的关联
目录 Python类 Python类的设计原则 特殊方法[Special methods] Duck typing 内置函数 English Version The key design princi ...