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

学物联网,来万物简单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

参考文献及购买链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值