陈静CHEN Jing;李鑫LⅠXin
(南京理工大学紫金学院,南京 210023)
随着新冠疫情的全球性发展,传统接触式测温的测量方法和测量速度都已无法满足需求[1,2]。相比于接触式测温,非接触式红外测温耗时短、灵敏度高、测量范围宽,而且不会对被测物体造成影响,因此非接触式红外测温已成为测量体温的主流方式[3,4]。但目前市面上主要应用的测温系统大多只显示温度,不能直观地显示具体的测量部位,因此本文设计一种能同时显示热像图和具体温度的测温系统。
本文设计的非接触式红外测温系统采用STM32F103MCU 作为主控芯片,采用AMG8833 红外热成像模块作为传感器,实现非接触式快速测温,并能够实时显示热像图,当温度超过设定阈值时能够报警,该系统使用方便快捷,具有一定的实用性。
本系统主要基于STM32F103ZET6 单片机开发平台,获取AMG8833 红外热成像传感器采集的信息,完成信息计算与处理并显示被测物体温度,系统的整体设计方案如图1 所示。
图1 系统整体设计方案
本设计主要实现的功能如下:
①在TFT-LCD 显示屏上显示动态热像图;
②在热像图的右侧显示三个数据(图像中的最大温度、最小温度和中间位置温度);
③当中间位置温度大于预设值(系统默认预设值为50℃,显示在热像图下方)时,LED 灯亮,蜂鸣器响,表示警报;
④通过按下设置按钮,可增加或减少预设值,每次增加或减少1℃;
⑤按下复位按钮,系统还原到初始状态。
非接触式红外测温系统的硬件设计分为6 个子模块,分别是AMG8833 红外热成像模块、TFT-LCD 液晶显示模块、复位模块、按键模块、LED 模块和蜂鸣器模块。
AMG8833 红外热成像模块:该模块可测量产生8*8的热像矩阵,通过I2C 通讯将数据传至MCU。在设计时将IIC_SCL 引脚与STM32 的GPIOB6 引脚连接,SDA 引脚与GPIOB7 引脚连接,达到I2C 通讯的目的。
TFT-LCD 液晶显示模块:该模块采用RGB565 编码,接收MCU 通过热像矩阵计算出的RGB 颜色矩阵,并实时显示热像图,同时可显示图像中的最大温度、最小温度和中间位置温度。TFT-LCD 模块采用16 位并行数据通讯与MCU 相连。
复位模块:该模块的RESET 端接到STM32 的NRST引脚,实现单片机的低电平复位。在设计电路时,将TFTLCD 的复位引脚也接到RESET 处,达到在STM32 复位的同时复位TFT-LCD 液晶屏的效果。
按键模块:该模块KEY0 和KEY1 端分别与STM32的GPIOE4、GPIOE3 引脚相连,实现温度预设值的增加或减小。在设计电路时并没有使用上拉电阻,需要使用STM32 自身的上拉电阻,因此在配置IO 口时对应设置为上拉输入模式。
LED 模块:该模块LED0 端与STM32 的GPIOB5 引脚相连,当温度超限时,GPIOB5 引脚输出低电平,LED 灯亮以示告警。
蜂鸣器模块:该模块BEEP 端与STM32 的GPIOB8 引脚相连,当温度超限时,GPIOB8 引脚输出高电平,蜂鸣器发声。
系统整体硬件原理图如图2 所示。
图2 系统整体硬件原理图
系统总体软件设计过程如下:
①初始化STM32 单片机、AMG8833 模块和TFT-LCD模块,完成通讯配置,为后续的操作做准备;
②采用I2C 通讯方式与AMG8833 红外热成像模块通信,读取采集的8*8 温度矩阵;
③找出温度矩阵中的最大值、最小值和中心点的温度;
④采用插值计算方法将8*8 的温度矩阵扩展为59*59 的温度矩阵;
⑤将59*59 的温度矩阵转换为RGB565 格式的图像矩阵,便于生成热像图;
⑥扫描按键状态,根据中心点温度是否超过设定阈值,选择是否进行声光报警;
⑦将温度数值和热像图输出显示至LCD 显示屏。
总体软件设计流程图如图3 所示。
图3 系统软件设计流程图
在上述过程中,采用插值计算进行温度矩阵扩展过程如下:
在TFT-LCD 屏幕上,8*8 共64 个像素点所能提供的视觉效果十分有限,甚至无法看到明显的变化,所以在设计程序时,必须加入合适的插值计算算法,将8*8 的矩阵扩大。本设计的插值计算算法是将原来的8*8 矩阵扩大到59*59,具体操作过程如下:
①将8*8 的矩阵均匀放入57*57 的矩阵中(除去原定59*59 矩阵中的第0 行、第58 行、第0 列、第58 列)。
②完成横向插值。假设矩阵中两个已有温度的点x1、x9之间有7 个待插值的点x2~x8,计算举例,以此类推,横向插值结束后温度点个数变为456 个。
③完成纵向插值。方法与横向类似,纵向插值结束后温度点个数变为3249 个,即57*57。
④完成第0 行、第58 行、第0 列、第58 列的插值。第0 行与第1 行完全相同,第58 行与第57 行完全相同,第0列与第1 列完全相同,第58 行与第57 行完全相同。插值完成后就可以得到一个59*59 的温度矩阵。
要想显示热像图,必须将温度矩阵转换成颜色矩阵。此设计采用的颜色编码对应温度从低到高分别是:黑色、蓝色、紫色、红色、黄色、白色。TFT-LCD 采用RGB565 编码,调节颜色就是改变R、G、B 三个值,最后通过二进制移位的方法生成一个具体的颜色,将这些颜色写入LCD 的GRAM 对应的像素点就会显示为对应的颜色。
根据上述软硬件设计原理,完成非接触式红外测温系统如图4 所示。
图4 非接触式红外测温系统实物图
LCD 界面设计显示如图5 所示。它由热像图区域、数据显示区域、报警温度显示区域(对于中心点)和一个颜色条组成。图5 中显示的热像图为人的手势1 所呈现的热像图。从显示结果可以看出测温系统的结果准确度较高,可以用于实时测量人体温度。
图5 LCD 界面显示测试效果
本文基于STM32 单片机设计了一套非接触式红外测温系统,结合AMG8833 红外热成像模块、TFT-LCD 液晶显示模块等实现了测温系统的软件设计和各模块的硬件设计,基于设计方案完成了非接触式红外测温系统的实物设计,对实物系统进行测试,验证了测温系统的有效性与可靠性,说明本文设计的系统能够用于实时测量人体温度,同时可以实时显示热像图,具有一定的实用性。