这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【ESP32-S31_Function_coreboard-1开发板】心率监测仪

共1条 1/1 1 跳转至

【ESP32-S31_Function_coreboard-1开发板】心率监测仪

高工
2026-09-11 16:04:08     打赏

【ESP32-S31 Function coreboard-1开发板】心率监测仪


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


项目介绍

  • 准备工作:心率传感器模块、两位数码管模块、硬件连接、环境搭建;

  • 工程测试:流程图、关键代码、串口绘图、数码管显示。

adc_hr_cover.jpg


心率传感器

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

hr_module.jpg

  • 具有响应快,性能稳定,适应性强等特点;

  • 模块拥有方波和脉搏波两种信号输出模式,可以通过板载开关去自由切换输出信号;

  • 脉搏波将输出一个连续的心率波形,而方波将根据心率的变化输出对应的方波;

  • 心率传感器体积小巧,可以佩戴于手指、手腕等检测位置。


硬件连接

  • 连接心率传感器模块和 ESP32-S31 开发板;

心率传感器ESP32-S31Note

SignalPin 45Data
GNDGNDGround
VCC3V3Power

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


  • 使用杜邦线连接 USB 转 TTL 工具和 ESP32-S31 开发板;

ESP32-S31USB-TTLNote

Pin 2 (TXD1)RXDTransmite
Pin 3 (RXD1)TXDReceive
GNDGNDGround


杜邦线连接开发板和数码管模块

74HC595ESP32-S31Note

SDIPin 38Serial Data In
SCLKPin 37Serial Clock
LOADPin 36Load / Latch
GNDGNDGround
VCC3V3Power

实物图

connect_hr_uart_seg.jpg

环境搭建

  • 烧录 MicroPython 固件至开发板;

  • micropython_logo.jpg

  • 下载并安装 Thonny IDE 软件;

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


流程图

flowchart_hr_seg_uart.jpg


工程代码

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 数值规律跳动;

hr_seg_show.jpg

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

thonny_plot.jpg

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

hr_thonny_plot.gif

串口绘图

HR_uart_plot.jpg


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

hr_webplot.gif

  • 数码管显示 ADC 电压;

hr_seg_show.gif

总结

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





关键词: ESP32-S31     心率     传感器     micropyt    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]