【DigiKey好物畅享】Melexis MLX90640的本地屏幕显示(热成像)

需求分析

我们在经过arduino的快速验证后可以发现温度的采集还是挺准的,不过arduio的开发板没有显示功能,对于MLX90640的32×24的分辨率来说就有点不够用了,MLX90640分辨率虽然不高,但配合颜色映射,完全可以呈现出热成像画面。那么我们为什么不弄出一个小小的热成像显示终端呢?

硬件选型

选主控时,我考虑了这么几个需求:要有足够的算力处理热成像数据,要能直接驱动显示屏,还要方便携带。Adafruit的ESP32-S3 TFT Feather正好满足这些条件:

这块开发板集成了ESP32-S3芯片和一块240×135像素的彩色TFT显示屏,体积非常小,非常适合做便携设备。板子还自带锂电池充电电路,接上锂电池就是一个可以随身移动的终端。

硬件连接

连接方式非常简单,因为两者都支持I2C通信。MLX90640有四根线:VCC接3.3V,GND接地,SDA接开发板的SDA引脚),SCL接开发板的SCL引脚。唯一要注意的是,MLX90640的I2C地址是0x33,不要和其他I2C设备冲突:

软件设计

由于TFT Feather已经内置了显示屏,连接好传感器就可以开始编程了。整个系统只需要两根线(加上电源)就能工作,确实是最小化的热成像方案。编程环境我们使用的是CircuitPython,也是是Adafruit主推的嵌入式Python运行环境,语法简洁,库资源丰富,非常适合快速原型开发。传感器每次会返回768个温度值,需要经过计算才能转换成实际温度,基本流程是:读取原始数据 → 进行温度补偿 → 应用发射率校正,显示部分的核心是将温度值映射为颜色。

效果展示

通电开机后,传感器开始工作,屏幕上逐渐显示出热分布图像。把手掌放在传感器前方几厘米处,屏幕上立刻呈现出手掌的轮廓——蓝色的背景,手掌区域呈现出温暖的橙红色,掌心的温度最高,颜色最亮,即使不接触手掌,也能清晰分辨出五指的形状。这是因为手掌发出的红外辐射足以被传感器捕捉到。整个画面的刷新率大约是4-5帧,虽然不算流畅,但观察静态物体已经完全足够:

总结

我们通过不断递进对MLX90640的测试,从基本参数到快速驱动,再到画面显示,逐渐了解并掌握这颗优秀的传感器,其应用场景非常的广泛。通过简单的接口实现复杂的功能,便携式的热成像效果也让我们看到了一个不一样的多彩世界。