物联网AI MicroPython传感器学习 之 MDL0025心率传感器

news2024/7/2 3:39:34

学物联网,来万物简单IoT物联网!!在这里插入图片描述

一、产品简介

PulseSensor(MDL0025) 是一款用于脉搏心率测量的光电反射式模拟传感器。将其佩戴于手指或耳垂等处,通过导线连接可将采集到的模拟信号传输给HaaS开发版用来转换为数字信号,再通过开发板简单计算后就可以得到心率数值,此外还可将脉搏波形上传到电脑上显示波形。PulseSensor 是一款开源硬件,其适用于心率方面的科学研究和教学演示,也非常适合用于二次开发。
image.png
引脚定义:

  • +:接 3.3V/5V
  • -:接 GND
  • S:接 ADC

二、技术参数

  • 工作电压:3.3 V 或 5V DC
  • 电路板直径:16mm
  • 电路板厚度:1.6mm(普通PCB 板厚度)
  • LED 峰值波长:515nm
  • 输出信号类型:模拟信号
  • 输出信号大小:0~3.3V(3.3V电源) 0~5V(5V电源)

三、软件接口

HEARTBEAT(adcdev,rled=None,gled=None,bled=None,highBPM=150,lowBPM=100) - 创建heartbeart驱动对象

  • 函数原型:

heartbeatdev = HEARTBEAT(adcdev,rled,gled,bled,highBPM=150,lowBPM=100)

  • 参数说明:
参数类型必选参数?说明
adcdevADC传入ADC对象
rledGPIO传入GPIO对象
gledGPIO传入GPIO对象
bledGPIO传入GPIO对象
highBPMint心率报警上限
lowBPMint心率报警下限
  • 返回值:
    heartbeatdev 对象创建成功,返回 heartbeatdev 对象;heartbeatdev 对象创建失败,抛出 Exception
  • 示例代码:
from machine import ADC, Pin
import heartbeat

BPM_high=150
BPM_low=100

#初始化ADC类型的设备
adcObj = ADC(Pin(32))

#初始化GPIO类型的设备
redled = Pin(16, Pin.OUT)
blueled = Pin(17, Pin.OUT)
greenled = Pin(18, Pin.OUT)

heartbeatdev = HEARTBEAT(adcdev = adcobj, rled=redled, bled=blueled, gled=greenled, highBPM=BPM_high, lowBPM=BPM_low)
print("heartbeat inited!")
  • 输出:
heartbeat inited!

start - 开始测量心率

  • 函数功能:
    启动心率传感器开始测量心率
  • 函数原型:

heartbeatdev.start()

  • 参数说明:
  • 返回值
  • 示例:
from machine import ADC, Pin
import heartbeat

BPM_high=150
BPM_low=100

#初始化ADC类型的设备
adcObj = ADC(Pin(32))

#初始化GPIO类型的设备
redled = Pin(16, Pin.OUT)
blueled = Pin(17, Pin.OUT)
greenled = Pin(18, Pin.OUT)

heartbeatdev = HEARTBEAT(adcdev = adcobj, rled=redled, bled=blueled, gled=greenled, highBPM=BPM_high, lowBPM=BPM_low)
print("heartbeat inited!")

heartbeatdev.start()
  • 输出:
heartbeat inited!

stop - 停止测量心率

  • 函数功能:
    停止心率传感器测量心率
  • 函数原型:

heartbeatdev.stop()

  • 参数说明:
  • 返回值
  • 示例:
from machine import ADC, Pin
import heartbeat

BPM_high=150
BPM_low=100

#初始化ADC类型的设备
adcObj = ADC(Pin(32))

#初始化GPIO类型的设备
redled = Pin(16, Pin.OUT)
blueled = Pin(17, Pin.OUT)
greenled = Pin(18, Pin.OUT)

heartbeatdev = HEARTBEAT(adcdev = adcobj, rled=redled, bled=blueled, gled=greenled, highBPM=BPM_high, lowBPM=BPM_low)
print("heartbeat inited!")

heartbeatdev.stop()
  • 输出:
heartbeat inited!

getBPM() - 测量心率

  • 函数功能:
    返回测量的心率值
  • 函数原型:

heartbeatdev.getBPM()

  • 参数说明:
  • 返回值:
    返回测量的心率值,单位:次数每分钟(BPM)
  • 示例:
from machine import ADC, Pin
import heartbeat

BPM_high=150
BPM_low=100

#初始化ADC类型的设备
adcObj = ADC(Pin(32))

#初始化GPIO类型的设备
redled = Pin(16, Pin.OUT)
blueled = Pin(17, Pin.OUT)
greenled = Pin(18, Pin.OUT)

heartbeatdev = HEARTBEAT(adcdev = adcobj, rled=redled, bled=blueled, gled=greenled, highBPM=BPM_high, lowBPM=BPM_low)
print("heartbeat inited!")
heartbeatdev.start()

heartrate=heartbeatdev.getBPM()
print("heartrate is ", heartrate, "BPM")
  • 输出:
heartbeat inited!
heartrate is 80 BPM

四、接口案例

leb_b, led_g, led_r 分别对应蓝色,绿色,红色三色LED灯,如果这三个LED灯设备存在并且在心率传感器驱动初始化时作为参数传入,则心率传感器驱动会根据心率值让不同颜色的LED灯闪烁:心率值大于上限值时,红灯按实测心率为频率闪烁; 心率在上限和下限之间时,绿灯按照实测心率为频率闪烁;心率低于下限值时,蓝灯按实测心率为频率闪烁。

  • 代码:
# Python代码
import utime
from machine import ADC, Pin
import heartbeat

BPM_high=150
BPM_low=100

#初始化ADC类型的设备
adcObj = ADC(Pin(32))

#初始化GPIO类型的设备
redled = Pin(16, Pin.OUT)
blueled = Pin(17, Pin.OUT)
greenled = Pin(18, Pin.OUT)

heartbeatdev = HEARTBEAT(adcdev = adcobj, rled=redled, bled=blueled, gled=greenled, highBPM=BPM_high, lowBPM=BPM_low)
print("heartbeat inited!")

heartbeatdev.start()
for i in range(100):
    print ("heart rate is: ", heartbeatdev.BPM)
    utime.sleep(0.5)
heartbeatdev.stop()
  • 输出:
...
heartbeat inited!
heart rate is:  80
heart rate is:  88
heart rate is:  99
heart rate is:  100
...

五、通信协议

主控芯片和心率测量传感器之间通信为 ADC 通讯,获取电压值 mV

六、工作原理

如下图所示,传感器利用人体组织在血管搏动时造成透光率不同,将透光率转化为电信号来进行脉搏测量的。
光的透光率发生改变,此时光感受器接收经人体组织反射光线,转变为电信号并将其放大输出。
image.png

传感器电路原理图如下:
image.png

参考文献及购买链接

  • MDL0025心率传感器购买链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1137039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[java进阶]——HashMap的底层实现原理和源码分析,另附几个高频面试题

🌈键盘敲烂,年薪30万🌈 目录 一、底层数据结构 二、底层原理及源码分析 2.1 继承关系 2.2 成员变量 2.3 构造方法 2.4 重要的成员方法 2.4.1 put()方法 三、高频面试题 一、底层数据结构 JDK8以后底层使用 数组链表红黑树的数据结构&am…

贝锐花生壳内网穿透推出全新功能,远程业务连接更安全

贝锐旗下内网穿透兼动态域名解析品牌花生壳目前推出了全新的“访问控制”功能,可精确设置访问权限,充分保障信息安全,满足更多用户安全远程访问内网服务的需求。 通过这一功能,可实现指定时间、IP、地区等条件下才能远程访问映射的…

【C++】继承 ⑬ ( 虚继承原理 | 虚继承解决继承二义性问题 | 二义性产生的原因分析 )

文章目录 一、虚继承原理1、虚继承解决继承二义性问题2、二义性产生的原因分析3、虚继承原理 二、代码示例 - 虚继承原理1、完整代码示例2、执行结果 一、虚继承原理 1、虚继承解决继承二义性问题 继承的二义性 : 如果 一个 子类 ( 派生类 ) 继承多个 父类 ( 基类 ) , 这些父类…

【【萌新的FPGA学习之FIFO的介绍】】

萌新的FPGA学习之FIFO的介绍 FIFO first in first out FIFO 的作用更多的是 缓冲与缓存 或者FIFO 也常被用来使用为 FIFO 本质上是由 RAM 加读写控制逻辑构成的一种先进先出的数据缓冲器,其与普通存储器 RAM 的 区别在于 FIFO 没有外部读写地址线,使用起…

接口自动化测试方案

1、引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 V1.0 项目经理 XX 测试人员 XXXXX,XXX 所属部门 XX 备注 1.3 文档目的 本文档主要用于指导XXX-YY项目常用接口自动化测试…

数据隐私保护与合规性:现代企业的数据安全策略

第一章:引言 在当今数字化时代,数据已经成为企业最宝贵的资源之一。然而,伴随着大规模数据收集和处理的增加,数据隐私保护和合规性问题也日益凸显。本文将深入探讨数据隐私保护和合规性对现代企业的重要性,并提供一些…

重大突破!国内首个ASIL D认证MCU在底盘域量产上车

中国本土车规级MCU再次实现了重要突破。 近日,芯驰科技的高性能车规MCU——E3搭载在明然科技悬架控制器(CDC)批量下线,并且成功在奇瑞瑞虎9、星途瑶光等车型上正式量产,成为了国内首个应用在主动悬架的车规控制芯片。…

行业追踪,2023-10-26

自动复盘 2023-10-26 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

干货很干:5个有效引流方法,让客户找上门

如何才能把用户引流到私域?是很多老板,店主,线上创业者的卡点,今天分享5个实用方法: ✅线下导流 ✅巧用搜索 ✅同行互推 ✅社群引流 ✅内容输出 所以引流不仅需要知道方法,还需要知道底层逻辑,也…

分布式事务(Seata)——Seata分布式事务XA模式、AT模式、TCC模式的介绍和对比 结合案例分析AT模式和XA模式【源码】

前言 事务(TRANSACTION)是一个不可分割的逻辑单元,包含了一组数据库操作命令,并且把所有的命令作为一个整体向系统提交,要么都执行、要么都不执行。 事务作为系统中必须考虑的问题,无论是在单体项目还是在分布式项目中都需要进行…

从零开始:开发知识付费小程序的入门指南

当下,知识付费小程序成为了一个独具潜力的领域。本篇文章将为您提供一份从零开始的知识付费小程序开发入门指南,让您能够进入这个领域并开始赚取您的专业知识。 第一步:什么是知识付费小程序? 知识付费小程序是一种基于微信小程…

数据创建与数据管理

原文:Dataset Creation and Curation Introduction to Data-Centric AI 为监督学习创建数据集需要样本以及样本的标签。课程专注于分类任务,但是把这些原理运用到其它监督学习的任务也是可以的。 数据收集 寻找训练数据时的关键问题: 1.…

c#学习相关系列之构造函数

目录 一、构造函数的作用 二、构造函数的特征 三、三种构造函数介绍 1、实例构造函数 2、静态构造函数 3、私有构造函数 一、构造函数的作用 构造函数用来创建对象,并且可以在构造函数中对此对象进行初始化。构造函数具有与类相同的名称,它通常用来…

每日一练 | 网络工程师软考真题Day45

阅读以下说明,答复以下【问题1】至【问题4】 【说明】 某公司有1个总部和2个分部,各个部门都有自己的局域网。该公司申请了4个C类IP地址块 202.114.10.0/24~202.114.13.0/24。公司各部门通过帧中继网络进行互联,网络拓扑结构如图1-1所示。 【…

如何在线去除图片上的水印?一分钟教你一键去除

想要去除图片上的水印?不妨试试在线图片水印去除工具!在个人生活或工作中,我们常常需要使用他人的图片,然而图片上的水印却常常成为阻碍,若你正为此烦恼,那么在线图片去水印工具将成为你的救星,…

禁止使用U盘的方法

禁止使用U盘的方法 说到保护电脑数据安全,无论是个人还是企业,这都是一个很重要的问题,大家都会想到设置电脑开机密码,但这还远远达不到我们的要求,有很多种方法可以跳过开机验证,直接进入电脑。所以我们还…

代码随想录Day29 贪心04 LeetCode T860 柠檬水找零 T406 根据身高重建队列 T452 用最少得箭引爆气球

LeetCode T860 柠檬水找零 题目链接:860. 柠檬水找零 - 力扣(LeetCode) 题目思路: 这道题我们只要顺序按照数组判断是否能有钱找零即可,我们定义三个变量来记录每张钞票目前的数量,其中我们知道给10元得找5元,给二十元得找515元,而15元的组合有10元5元和…

算法通过村第十七关-贪心|青铜笔记|贪心也很简单呕

文章目录 前言难以解释的贪心算法贪心问题发放饼干柠檬水找零分发糖果 总结 前言 提示:我像接纳变甜的果实一般迎接此时。 --朱塞培翁加雷蒂《享受》 贪心的思想很难用理论去解释,这里我们通过案例感受下,怎么思考贪心的问题。 难以解释的贪心…

threejs(5)-详解灯光与阴影

一、Gsap动画库基本使用与原理 npm 地址:https://snyk.io/advisor/npm-package/gsap import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; // 导入动画库 import…

设备巡检怎么规范流程?如何做好后勤管理工作?

后勤巡检对于企业和高校来说,就像一台电脑上的安全防护软件,它会定期或不定期地扫描和检查系统,找出存在的问题,例如垃圾文件和病毒风险。巡检的目的是为了检查公司和高校的各项设施、设备和环境等,以发现潜在的环境安…