【Heart Rate Sensor】心率监测仪

2026-09-112

【Heart Rate Sensor】心率监测仪

本文介绍了 DFRobot 心率传感器 heart rate sensor 结合 ESP32 开发板及MicroPython 编程、数码管模块,通过 ADC 电压采样、心率计算、串口通信,实现心率监测的项目设计,包括环境搭建、代码、流程图、效果演示等。

项目介绍

  • 准备工作:心率传感器模块、两位数码管模块、硬件连接、环境搭建;
  • 工程测试:流程图、关键代码、串口绘图、数码管显示。

【Heart Rate Sensor】心率监测仪_image_1.webp

心率传感器

心率传感器,采用光电容积脉搏波描记法,通过测量血液中血红蛋白随心脏跳动而对氧气吸收的变化量来测量人体心率参数。

【Heart Rate Sensor】心率监测仪_image_2.webp

  • 具有响应快,性能稳定,适应性强等特点;
  • 模块拥有方波和脉搏波两种信号输出模式,可以通过板载开关去自由切换输出信号;
  • 脉搏波将输出一个连续的心率波形,而方波将根据心率的变化输出对应的方波;
  • 心率传感器体积小巧,可以佩戴于手指、手腕等检测位置。

硬件连接

  • 连接心率传感器模块和 ESP32-S31 开发板;
心率传感器 ESP32-S31 Note
Signal Pin 45 Data
GND GND Ground
VCC 3V3 Power

根据原理图和数据手册可知,ESP32-S31 集成了 2 个 ADC,管脚说明详见: ADC 管脚分配说明

  • 使用杜邦线连接 USB 转 TTL 工具和 ESP32-S31 开发板;
ESP32-S31 USB-TTL Note
Pin 2 (TXD1) RXD Transmite
Pin 3 (RXD1) TXD Receive
GND GND Ground

详见:RainbowLink V2 4 通道隔离 USB 协议转换器 .

  • 杜邦线连接开发板和数码管模块
74HC595 ESP32-S31 Note
SDI Pin 38 Serial Data In
SCLK Pin 37 Serial Clock
LOAD Pin 36 Load / Latch
GND GND Ground
VCC 3V3 Power

实物图

【Heart Rate Sensor】心率监测仪_image_3.webp

环境搭建

  • 烧录 MicroPython 固件至开发板;
    【Heart Rate Sensor】心率监测仪_image_4.webp
  • 下载并安装 Thonny IDE 软件;

详见:【ESP32-S31_Function_coreboard-1开发板】介绍、环境搭建、工程测试 .

流程图

【Heart Rate Sensor】心率监测仪_image_5.webp

工程代码

Thonny IDE 新建 hr_seg_uart.py 文件,添加如下代码

from machine import Pin, ADC, UART
import time

# ---------- 74HC595 数码管引脚 ---------------
latch = Pin(36, Pin.OUT)
clock = Pin(37, Pin.OUT)
data  = Pin(38, Pin.OUT)

# Initialize UART 
uart = UART(1, baudrate=115200, tx=Pin(2), rx=Pin(3))

# 共阳数码管段码
smgduan = [
    0b11000000, # 0
    0b11111001, # 1
    0b10100100, # 2
    0b10110000, # 3
    0b10011001, # 4
    0b10010010, # 5
    0b10000010, # 6
    0b11111000, # 7
    0b10000000, # 8
    0b10010000, # 9
]

# ------------ ADC 心率传感器配置 ----------------
adc_pin = Pin(45)        # 心率传感器OUT引脚
adc = ADC(adc_pin)
adc.atten(ADC.ATTN_11DB)# 0~3.3V量程
conv_factor = 3.3 / 65535.0

# 595移位输出
def shift_out(byte):
    for i in range(8):
        bit = (byte >> (7 - i)) & 1
        data.value(bit)
        clock.value(1)
        clock.value(0)

# 双位数码管显示函数
# left:整数位,right:小数位,dot=True点亮小数点
def show(left, right, dot=False):
    seg_l = smgduan[left % 10]
    seg_r = smgduan[right % 10]
    if dot:
        seg_l &= 0b01111111  # 整数位点亮小数点,如 1.2
    latch.value(0)
    shift_out(seg_r)
    shift_out(seg_l)
    latch.value(1)

# ---------------------- 主循环 ----------------------
while True:
    adc_val = adc.read_u16()
    voltage = adc_val * conv_factor  # 转换电压 0~3.3V

    # 保留一位小数
    v_1dec = round(voltage * 10) / 10
    int_part = int(v_1dec)
    dec_part = int((v_1dec * 10) % 10)

    # 数码管显示 X.X
    show(int_part, dec_part, dot=True)

    # 串口打印
    uart.write(f"{adc_val}\r\n")
    print(f"Heart ADC raw:{adc_val}, Voltage:{voltage:.1f} V")
    
    time.sleep(0.2)

保存文件。

效果演示

  • Thonny 运行程序,或将程序另存为 main.py 至开发板根目录,复位运行;
  • 将心率传感器固定在手指或手腕,通过串口或数码管观察到 ADC 数值规律跳动;

【Heart Rate Sensor】心率监测仪_image_6.webp

  • Thonny 软件的 Shell 终端空白处右键,勾选 显示绘图器 选项;

【Heart Rate Sensor】心率监测仪_image_7.webp

显示 ADC 原始值的波动,即心率变化;

【Heart Rate Sensor】心率监测仪_image_8.webp

串口绘图

【Heart Rate Sensor】心率监测仪_image_9.webp

  • 根据串口数据绘图结果,可获取心电图;

【Heart Rate Sensor】心率监测仪_image_10.webp

  • 数码管显示 ADC 电压;

【Heart Rate Sensor】心率监测仪_image_11.webp

总结

本文介绍了 DFRobot 心率传感器 heart rate sensor 结合 ESP32 开发板及MicroPython 编程,通过 ADC 电压采样、心率计算、串口通信,实现心率监测的项目设计,包括环境搭建、工程配置、代码、流程图、效果演示等,为相关产品的快速开发和应用设计提供了参考。

硬件清单

创作许可协议

本项目采用 CC BY-NC(署名-非商业性使用) 进行许可。

所需材料/产品

加载全部

    Gravity: 心率传感器

    Gravity: 心率传感器

    Gravity: 心率传感器

相关推荐

评论(1)
木子哦
木子哦

大佬,新的编辑器好用嘛

- 没有更多了 -

创作许可协议

本项目采用 CC BY-NC(署名-非商业性使用) 进行许可。

相关推荐

所需材料/产品

Gravity: 心率传感器

Gravity: 心率传感器

Gravity: 心率传感器