【DigiKey创意大赛】便携生命探测仪02+热成像相机初步实现
[复制链接]
【DigiKey创意大赛】便携生命探测仪02+热成像相机初步实现
本次作品是生命探测仪,采用热成像技术实现,第一步就是先做出一个热成像相机。
一、物料准备。
- 热成像传感器MLX90640,分辨率为32H x 24V阵列,封装是TO-39,本次大赛两个必选料之一。焊接好的图片如下。
2、主控板,选的是以前做评测攒下的一块ESP32-S3开发板,由DFRobot设计的FireBeetle-ESP32-S3,如下图。
焊接好线缆的效果如下。
3、显示屏,选了一块480*320的TFT,如下图,也是以前做评测攒下的。
由于以前做评测用过,连接线缆是焊好的,可以直接用。
二、程序设计
1、搭建开发环境
以前在ESP32上面开发程序,主要是用Arduino IDE,这次程序比较大,编译一次太慢了,后来查到用VScode+PlatformIO非常好用,就开始研究这个方案。
这里推荐这个链接,安装介绍很详细。
这个作者还提供了离线安装包,解决了那个在线下载很慢的问题。
安装好后随便找个程序编译了一下,第一次编译耗时和Arduino IDE是一样的,要是修改一下再次编译,编译时间就短了很多,究其原因就是Arduino IDE每次都把所有文件编译一遍,而VScode+PlatformIO则是只需编译改动的文件。VScode的代码编辑、检索、查找定义等功能更是远胜其他编辑器,体验非常好。下图是我装好的界面。
2、设计代码
关于MLX90640这颗传感器的应用实例,在网上还是很多的,我是直接在GitHub上搜了一个做的功能比较多的开源代码作为基础,然后改IO口,改屏幕驱动,基本的数据读取和显示就搞定了。我参考的代码地址:
作者还用Python做了一个上位机,接收串口数据显示热成像效果:
该作者使用的硬件是立创开源上的一个项目:
QF-HEYE迷你热成像仪-找羊0603版
热成像相机基本功能实现后,我发现一个问题,就是我用的这个屏幕刷新率太慢了,效果参考开头视频,网上有人说开启DMA可提高数据传输效果,刷新帧率能快不少,我就开始研究DMA方案,最后遗憾的是,我用的这款屏驱动芯片ILI9488在4线SPI模式下,只支持18bit数据格式,DMA是以8bit为单位传输的,为了传输18bit数据,还得先把数据拆分,根据我使用的开源显示驱动库TFT_eSPI的作者Bodmer在GitHub上的回复,这么来回一折腾,完全抵消了DMA带来的优势,所以他建议需要高刷新率显示,还是换屏吧,他推荐用ST7789芯片驱动的TFT屏,这个SPI模式支持16位DMA传输,时钟可达80MHz,刷新还是很快的。大神的回复链接如下:
我现在纠结是重新买个SPI屏幕呢,还是换一个手头别的平台,这是个问题,容我再对比一下。
|