陳靜CHEN Jing;李鑫LⅠXin
(南京理工大學(xué)紫金學(xué)院,南京 210023)
隨著新冠疫情的全球性發(fā)展,傳統(tǒng)接觸式測溫的測量方法和測量速度都已無法滿足需求[1,2]。相比于接觸式測溫,非接觸式紅外測溫耗時短、靈敏度高、測量范圍寬,而且不會對被測物體造成影響,因此非接觸式紅外測溫已成為測量體溫的主流方式[3,4]。但目前市面上主要應(yīng)用的測溫系統(tǒng)大多只顯示溫度,不能直觀地顯示具體的測量部位,因此本文設(shè)計一種能同時顯示熱像圖和具體溫度的測溫系統(tǒng)。
本文設(shè)計的非接觸式紅外測溫系統(tǒng)采用STM32F103MCU 作為主控芯片,采用AMG8833 紅外熱成像模塊作為傳感器,實現(xiàn)非接觸式快速測溫,并能夠?qū)崟r顯示熱像圖,當(dāng)溫度超過設(shè)定閾值時能夠報警,該系統(tǒng)使用方便快捷,具有一定的實用性。
本系統(tǒng)主要基于STM32F103ZET6 單片機(jī)開發(fā)平臺,獲取AMG8833 紅外熱成像傳感器采集的信息,完成信息計算與處理并顯示被測物體溫度,系統(tǒng)的整體設(shè)計方案如圖1 所示。
圖1 系統(tǒng)整體設(shè)計方案
本設(shè)計主要實現(xiàn)的功能如下:
①在TFT-LCD 顯示屏上顯示動態(tài)熱像圖;
②在熱像圖的右側(cè)顯示三個數(shù)據(jù)(圖像中的最大溫度、最小溫度和中間位置溫度);
③當(dāng)中間位置溫度大于預(yù)設(shè)值(系統(tǒng)默認(rèn)預(yù)設(shè)值為50℃,顯示在熱像圖下方)時,LED 燈亮,蜂鳴器響,表示警報;
④通過按下設(shè)置按鈕,可增加或減少預(yù)設(shè)值,每次增加或減少1℃;
⑤按下復(fù)位按鈕,系統(tǒng)還原到初始狀態(tài)。
非接觸式紅外測溫系統(tǒng)的硬件設(shè)計分為6 個子模塊,分別是AMG8833 紅外熱成像模塊、TFT-LCD 液晶顯示模塊、復(fù)位模塊、按鍵模塊、LED 模塊和蜂鳴器模塊。
AMG8833 紅外熱成像模塊:該模塊可測量產(chǎn)生8*8的熱像矩陣,通過I2C 通訊將數(shù)據(jù)傳至MCU。在設(shè)計時將IIC_SCL 引腳與STM32 的GPIOB6 引腳連接,SDA 引腳與GPIOB7 引腳連接,達(dá)到I2C 通訊的目的。
TFT-LCD 液晶顯示模塊:該模塊采用RGB565 編碼,接收MCU 通過熱像矩陣計算出的RGB 顏色矩陣,并實時顯示熱像圖,同時可顯示圖像中的最大溫度、最小溫度和中間位置溫度。TFT-LCD 模塊采用16 位并行數(shù)據(jù)通訊與MCU 相連。
復(fù)位模塊:該模塊的RESET 端接到STM32 的NRST引腳,實現(xiàn)單片機(jī)的低電平復(fù)位。在設(shè)計電路時,將TFTLCD 的復(fù)位引腳也接到RESET 處,達(dá)到在STM32 復(fù)位的同時復(fù)位TFT-LCD 液晶屏的效果。
按鍵模塊:該模塊KEY0 和KEY1 端分別與STM32的GPIOE4、GPIOE3 引腳相連,實現(xiàn)溫度預(yù)設(shè)值的增加或減小。在設(shè)計電路時并沒有使用上拉電阻,需要使用STM32 自身的上拉電阻,因此在配置IO 口時對應(yīng)設(shè)置為上拉輸入模式。
LED 模塊:該模塊LED0 端與STM32 的GPIOB5 引腳相連,當(dāng)溫度超限時,GPIOB5 引腳輸出低電平,LED 燈亮以示告警。
蜂鳴器模塊:該模塊BEEP 端與STM32 的GPIOB8 引腳相連,當(dāng)溫度超限時,GPIOB8 引腳輸出高電平,蜂鳴器發(fā)聲。
系統(tǒng)整體硬件原理圖如圖2 所示。
圖2 系統(tǒng)整體硬件原理圖
系統(tǒng)總體軟件設(shè)計過程如下:
①初始化STM32 單片機(jī)、AMG8833 模塊和TFT-LCD模塊,完成通訊配置,為后續(xù)的操作做準(zhǔn)備;
②采用I2C 通訊方式與AMG8833 紅外熱成像模塊通信,讀取采集的8*8 溫度矩陣;
③找出溫度矩陣中的最大值、最小值和中心點(diǎn)的溫度;
④采用插值計算方法將8*8 的溫度矩陣擴(kuò)展為59*59 的溫度矩陣;
⑤將59*59 的溫度矩陣轉(zhuǎn)換為RGB565 格式的圖像矩陣,便于生成熱像圖;
⑥掃描按鍵狀態(tài),根據(jù)中心點(diǎn)溫度是否超過設(shè)定閾值,選擇是否進(jìn)行聲光報警;
⑦將溫度數(shù)值和熱像圖輸出顯示至LCD 顯示屏。
總體軟件設(shè)計流程圖如圖3 所示。
圖3 系統(tǒng)軟件設(shè)計流程圖
在上述過程中,采用插值計算進(jìn)行溫度矩陣擴(kuò)展過程如下:
在TFT-LCD 屏幕上,8*8 共64 個像素點(diǎn)所能提供的視覺效果十分有限,甚至無法看到明顯的變化,所以在設(shè)計程序時,必須加入合適的插值計算算法,將8*8 的矩陣擴(kuò)大。本設(shè)計的插值計算算法是將原來的8*8 矩陣擴(kuò)大到59*59,具體操作過程如下:
①將8*8 的矩陣均勻放入57*57 的矩陣中(除去原定59*59 矩陣中的第0 行、第58 行、第0 列、第58 列)。
②完成橫向插值。假設(shè)矩陣中兩個已有溫度的點(diǎn)x1、x9之間有7 個待插值的點(diǎn)x2~x8,計算舉例,以此類推,橫向插值結(jié)束后溫度點(diǎn)個數(shù)變?yōu)?56 個。
③完成縱向插值。方法與橫向類似,縱向插值結(jié)束后溫度點(diǎn)個數(shù)變?yōu)?249 個,即57*57。
④完成第0 行、第58 行、第0 列、第58 列的插值。第0 行與第1 行完全相同,第58 行與第57 行完全相同,第0列與第1 列完全相同,第58 行與第57 行完全相同。插值完成后就可以得到一個59*59 的溫度矩陣。
要想顯示熱像圖,必須將溫度矩陣轉(zhuǎn)換成顏色矩陣。此設(shè)計采用的顏色編碼對應(yīng)溫度從低到高分別是:黑色、藍(lán)色、紫色、紅色、黃色、白色。TFT-LCD 采用RGB565 編碼,調(diào)節(jié)顏色就是改變R、G、B 三個值,最后通過二進(jìn)制移位的方法生成一個具體的顏色,將這些顏色寫入LCD 的GRAM 對應(yīng)的像素點(diǎn)就會顯示為對應(yīng)的顏色。
根據(jù)上述軟硬件設(shè)計原理,完成非接觸式紅外測溫系統(tǒng)如圖4 所示。
圖4 非接觸式紅外測溫系統(tǒng)實物圖
LCD 界面設(shè)計顯示如圖5 所示。它由熱像圖區(qū)域、數(shù)據(jù)顯示區(qū)域、報警溫度顯示區(qū)域(對于中心點(diǎn))和一個顏色條組成。圖5 中顯示的熱像圖為人的手勢1 所呈現(xiàn)的熱像圖。從顯示結(jié)果可以看出測溫系統(tǒng)的結(jié)果準(zhǔn)確度較高,可以用于實時測量人體溫度。
圖5 LCD 界面顯示測試效果
本文基于STM32 單片機(jī)設(shè)計了一套非接觸式紅外測溫系統(tǒng),結(jié)合AMG8833 紅外熱成像模塊、TFT-LCD 液晶顯示模塊等實現(xiàn)了測溫系統(tǒng)的軟件設(shè)計和各模塊的硬件設(shè)計,基于設(shè)計方案完成了非接觸式紅外測溫系統(tǒng)的實物設(shè)計,對實物系統(tǒng)進(jìn)行測試,驗證了測溫系統(tǒng)的有效性與可靠性,說明本文設(shè)計的系統(tǒng)能夠用于實時測量人體溫度,同時可以實時顯示熱像圖,具有一定的實用性。