生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32

新闻资讯2026-04-21 18:37:48

本次完成的项目,是结合乐鑫ESP32-S3-Box-Lite和EPC001开发板,实现的便携生命体征检测仪原型机。

通过资料,可以了解到这块EPC001开发板是基于EPC001芯片的多参数生命体征检测开发板,芯片集成了分别用于检测脉搏波信号与心电信号的模拟前端,而且ADC精度为24bits,这是非常之高了。 配合官方提供的软件,就可以通过串口获取EPC001采集到的对应数据进行呈现,检测的波形包括脉搏波、血氧波形、心电、肌电、脑电波形,并可以实时更新检测参数如心率、血氧、血压、心律不齐指数等多种参数。

生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第1张

在资料包之中,还提供了"EPC001_Program_HClock_高速时钟"、"EPC001_Program_HClock_低速时钟"的源码,也提供了开发工具,但烧录要使用ARM-USB-TINY-H调试器。 我没有这样的调试器,所以不能对源码进行二次开发。不过EPC001是通过串口与上位机进行通讯的,所以可以参考上位机,对照技术手册,使用串口指令控制EPC001和从EPC001读取检测的数据。

ESP32-S3-Box-Lite,使用的是ESP32-S3的主控,带有320x240的TTF屏幕,并提供了PMOD接口,可以与EPC001开发板的串口连接,从而控制EPC001开发板进行采集和数据回传。

 

生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第2张 

生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第3张

 

于是结合两者,实现了这个"ECP001便携生命体征检测仪原型机"。

当前分享的这个版本为第一版,实现了对ECP001开发板的基础控制,可以检测一路波形信号数据,并呈现SP02数据。

因为是进行原型开发,所以系统程序的开发基于MicroPyton,界面使用LVGL开发。

在这次分享中,以ECG数据为主。 在学习使用EPC001的过程中,得到了EPC001技术人员的大力支持,解决了不少疑惑和问题,并从网络上查到了大量LVGL相关的资料和分享,都非常感谢!

通过开发板的使用手册,可以了解到ECP001开发板上串口通讯的引脚:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第4张 

实际位置位于J3的7、3引脚:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第5张

这个串口引脚,可以与官方提供的USB2TTL连接到电脑,使用官方提供的上位机软件控制PEC001开发板,并读取数据进行呈现。 在这个项目中,将其与ESP32-S3-Box-Lite的PMOD上的GPIO11、GPIO13进行连接,实现串口通讯。

为了更好的理解技术手册中所描述的通讯协议,我还是用了逻辑分析仪,来辅助进行分析。 下面是官方上位机软件中,ECG部分的界面:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第6张

使用逻辑分析,可以清晰的看到EPC001回传的数据:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第7张

通过逻辑分析仪,我将所有的界面的参数的设置,测量的启停,都进行了详细的分析,并与手册一一核对。 在最开始版本提供的手册,有部分指令和解析规则是对应不上的,向官方技术人员咨询后,得到更新版本的技术手册,从而都匹配正确。

具体的通讯协议,分为两个部分,分别为:

  • 控制命令发送:

  •  生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第8张 

  • 下发控制命令后,EPC001会应答对应的控制命令,表示收到。 具体的控制指令包括如下:

  •  生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第9张

  • 数据上传:

  •  生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第10张 

  • 当使用采集波形指令后,除了会回传控制指令接受成功,后续将会持续的自动上传检测的数据。

具体的数据上传数据包包括如下:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第11张

通过技术手册和逻辑分析仪配合,了解清楚了通讯协议以后,我还使用串口调试工具,进行了对应控制指令的发送和回传数据的接收,把这些弄清楚了,就可以开始具体的开发工作了。

在ESP32-S3-Box-Lite的系统程序中,使用串口与EPC001通讯: 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第12张 

在MicroPython中,处理串口通讯非常快捷方便。

首先定义串口通讯引脚:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第13张 

然后使用uart.write()进行发送,使用uart.any()检测是否有收到数据,使用uart.read()读取数据: 

生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第14张

因为不同的波形数据的获取,对应不同的指令,所以可以参考实际需要,进行指令的定义: 

生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第15张

发送对应的波形采集控制指令后,就能够接收到数据上传了。

在代码中,我适当的输出了读取到的数据:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第16张 

可以看到,持续收到了0x21开头的ECG波形数据。

读取到数据之后,就可以根据技术手册的说明,进行解析。

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第17张 

上面的示例为EMC,ECG的上传数据规则类似,只是最开始的数据包头类型为0x21。

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第18张

 

在MicroPython中,使用如下的方式进行解析:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第19张 

上述解析过程如下:

  1. 检测数据包的头和尾,应为为0x21、0x0A,则表示有效的ECG数据
  2. 计算校验和位之前的数据包内容部分的校验和,并与收到的校验和进行对比,相同则说明数据有效
  3. 再取得数据中的波形数据的部分,进行下一步的处理

参考前面使用逻辑分析的结果和技术手册,可以了解波形部分的数据,是对应数字的ASCII码,使用下面的代码进行界面得到对应的数值:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第20张 

如前述逻辑分析仪取得的数据:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第21张

解析后,对应的数值为:8388608

该数值,即为ADC采样的原始值(RAW),可以参考手册中的说明,转换为mV原始值和增益值: 

生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第22张 

增益值和原始值的差别,只是在于计算增益值的时候,nGain=1即可。

对应的MicroPython处理代码如下:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第23张

因为拿到过两版技术手册,所以上面的代码中,有两个计算公式。实际的处理代码,为下面的部分,与最新的技术手册对应。

在界面的处理上,因为是第一版,所以以简洁快速为主,基本的设置如下。

  • 开机首显示首界面
  • 按中键后,进入波形采集和呈现界面
    • 在此界面,可以按中键,进行切换暂停和呈现状态
  • 按左右键,分别为进入波形界面和SP02数据呈现界面
  • 按右上角BOOT按键,则返回首界面

因为使用了LVGL进行界面的开发,所以可以很方便的使用LVGL的组件,来进行具体界面的呈现。

  • 首界面:使用LVGL的image组件呈现图片

    • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第24张
    • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第25张
  • 波形部分的显示:使用LVGl的chart组件

    • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第26张
  • 波形界面文本显示:在波形数据界面,会显示当前的参数设置,以及读取到的数据,使用LVGL的label组件即可:

    • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第27张
  • SP02数据:使用LVGL的Table组件进行呈现:

    • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第28张
    • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第29张

最后,再使用按键,来处理对应界面的切换:

 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第30张

通过LVGL设计好了相应的界面,再将读取到的数据,与LVGL界面关联起来,就能实时进行数据呈现:

  • 波形数据的呈现: 
  • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第31张
  • SP02数据的呈现: 
  • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第32张

最终,第一版原型机实现的功能如下:

  • 首界面:
    • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第33张
  • 波形界面:
    • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第34张
  • SP02数据呈现:
    • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第35张

 

完整的源码,可以查看:https://gitee.com/honestqiao/EPC001_ESP32-S3-Box-Lite

随着对暖芯迦EPC001使用的深入,以及在MicroPython中使用LVGL的熟练,对第二版也进行了一些规划。

  • 功能上
    • 完善对现有波形数据的支持:
    • 采用模块化的结构,进行数据解析
    • 实现对PPG-绿光、PPG-红光、ECG、PPG+ECG、EMG、EEG、BP波形数据的控制和读取,以及SP02数据的读取
  • 界面上
    • 使用Screen/Tab的方式,方便进行切换操作
      • 生命检测仪怎么看【Funpack第二季第五期】基于乐鑫ESP32_https://www.jmylbn.com_新闻资讯_第36张