便携生命探测仪
作者:sipower
一、作品简介
现在越来越多业余驴友喜欢户外冒险,但是随之而来的就是遇到危险的情况时有发生,因此我想到做一个便携生命探测仪,在发生危险时,能帮助救援人员方便找到遇险者。此方案主要采用热敏式图像传感器MLX90640ESF-BAB-000-TU检测人体红外信号,采用BME680气体,湿度,压力,温度传感器评估板记录环境信息,配合一个带屏幕的评估板,显示热成像图片。再额外添加一个心电采集模块,当发现遇险者后,能立即给遇险者采集心电图和心率并在屏幕上显示,方便救援人员判断生命体征状态,好制定下一步救援计划。下图是最终的作品照片,我用纸壳做成一个手枪形态的样子。
本次作品从得捷电子采购的器件:
序号 |
型号 |
名称 |
用途 |
1 |
MLX90640ESF |
热敏式图像传感器 |
检测人体红外信号 |
2 |
3660 |
BME680评估板 |
采集气体,湿度,压力,温度参数 |
3 |
DFR1075 |
ESP32-C6评估板 |
转换心电数据格式 |
4 |
JB2835AWT-W |
白色发光管 |
用于探测仪照明 |
本次作品自备的器件:
序号 |
型号 |
名称 |
用途 |
1 |
DFR0975 |
ESP32-S3评估板 |
主控板实现数据处理和现实功能 |
2 |
MSP3520 |
3.5英寸480*320分辨率触摸屏 |
显示热成像图像和心电波形 |
3 |
LH001-91 |
心电评估板 |
采集心电数据 |
二、系统框图
整个系统框图如下图。
如上图所示,ESP32-S3评估板作为主控板,通过SPI接口连接一片480*320分辨率的触摸屏,用来显示各个检测数据、图像、心电波形。通过串口连接一片ESP32-C6评估板。ESP32-C6负责通过串口从LH001-91心电评估板接收字符串数据,然后选择心电波形、心率、导联脱落数据转换成浮点数,再从另外一个串口发给主控板。通过I2C接口连接热敏式图像传感器MLX90640ESF-BAB-000-TU检测人体红外信号,转换成热成像实时图片刷新到显示屏。通过I2C接口连接BME680气体,湿度,压力,温度传感器评估板记录环境信息,并显示在屏幕上。
三、各部分功能说明
所有板子,传感器,屏幕等器件焊接好,并打胶加固后的效果如下图。
- 热成像传感器MLX90640
该传感器分辨率为32H x 24V阵列,封装是TO-39,本次大赛两个必选料之一。焊接好的图片如下。和主控板之间采用I2C接口。该传感器软件驱动我这里参考Adafruit_MLX90640的库,再结合显示屏特点进行了调色板处理,通过差值将32*24点阵放大到320*240点阵,可以在屏幕上均匀显示,祛除颗粒感。
- 主控板
选的是以前做评测攒下的一块ESP32-S3开发板,由DFRobot设计的FireBeetle-ESP32-S3,如下图。该评估板提供非常丰富的IO接口,可以满足大部分DIY的需求。这个板卡的程序我在VScode+PlatformIO平台开发,使用体验非常好,强烈推荐没用过的同行们尝试一下。
- 显示屏
选了一块480*320的TFT,如下图,也是以前做评测攒下的。该屏幕采用SPI接口,带电阻式触摸屏,使用该屏幕可以省掉按键,配合开源显示驱动库TFT_eSPI,可以非常方便的实现各种显示功能。这里需要特别说明一下,由于该屏幕使用的驱动IC ILI9488是18bit数据,TFT_eSPI是不支持DMA的,我这使用了一些技巧,最终实现DMA写屏,使得热成像刷新率显著提高,具体的细节可以参考我分享的第三贴。
- BME680传感器
该传感器具有SPI和I2C两种接口,由于我用的这个ESP32-S3开发板引出的SPI口接屏了并且SPI占IO口比较多,我择使用I2C接口连接BME680小板,最开始为了省事我把它和MLX90640挂在同一个I2C总线上了。但是我发现一个问题,就是每次读取BME680时候,热成像刷新都会卡顿一下,体验不好,原因就是共用总线造成的。好在ESP32-S3有多个I2C,并且还有一个巨牛掰的GPIO交换矩阵,可以让外设使用任意IO口。于是我从引脚分配表上找了2个闲置的IO口A4和A5配置成了I2C总线,完美解决卡顿问题。采集数据显示如下图。
- 心电采集部分
本次作品为了实现心电采集,我选用了领慧立芯推出的医疗级模拟前端心电采集方案。具体实现采用的是领慧立芯的心电采集评估板,该评估板基于LH001-91设计。
LH001-91是专门针对心电信号采集而开发的医疗级模拟前端,集成了24位Σ-Δ ADC,可编程增益放大器,右腿驱动,导电脱落监测等功能。更详细资料见如下链接:
http://www.legendsemi.com/hyyy_2/4.html
下图是我申请到的LH001-91的评估板,主要由AFE(LH001-91),通用MCU和两侧的三个电极组成。
为了降低主控端的软件复杂度,我还选用了一块ESP32-C6开发板做心电数据解析,该开发板由DFRobot设计研发,型号是FireBeetle 2 ESP32-C6。如下图所示。
FireBeetle 2 ESP32-C6采用较新的RISC-V内核,在官方VScode+PlatformIO平台还不支持Arduino架构,最后采用ArduinoIDE做的程序开发。详细程序见作品源代码。
在本次作品中主要是用到了ESP32-C6的两个串口做协议转换。原理框图如下图。
我在PC端用了一个能显示串口数据波形的软件,ESP32-C6负责从LH001-91评估板接收字符串数据,然后转换成上位机软件能识别的协议,再从另外一个串口发出去。最后由主控板接收数据并显示在屏幕上。心电显示效果如下图。
- 照明部分
考虑到这个探测仪会在黑暗环境下工作,我在作品最前端加了2个高亮白光LED发光管。在最终的手枪状扳机处粘了一个按键,可以控制发光管的亮灭。局部照片如下图。
四、作品源码
ESP32-S3程序采用VScode+PlatformIO平台开发。
ESP32-C6程序采用ArduinoIDE开发。
便携生命探测仪源代码
五、作品功能演示视频
六、项目总结
感谢EEWorld和得捷电子提供的这次机会,让我体验了热敏式图像传感器MLX90640和环境检测传感器BME680。然后做出这个有意义的作品。在开发过程中,感觉到ESP32单片机生态系统很完善,不但有非常好用的Arduino平台,还有更强大的VScode+PlatformIO开发平台,让程序开发更加高效稳健。
下面链接是本次作品开发过程中的经验分享贴,本文中没有详细介绍的内容,在下面帖子中都能找到。
七、其他
无。