馮曉榮,凌 云
(1.南通大學(xué)工程訓(xùn)練中心,江蘇 南通 226007;2.杭州開地信息技術(shù)有限公司,浙江 杭州 310000)
文章圍繞一種“準(zhǔn)、快、操作方便”的紅外線測(cè)溫裝置,實(shí)現(xiàn)支持遠(yuǎn)程服務(wù)、自動(dòng)程度高,但是價(jià)格低、操作便捷,方便一線新冠疫情防控工作使用。該裝置的人體測(cè)溫的電路由人環(huán)境溫度傳感器、人體溫度傳感器以及自校準(zhǔn)系統(tǒng),人臉識(shí)別、控制器、本地語(yǔ)音播報(bào)、LED 顯示器以及遠(yuǎn)程傳輸模塊組成,在測(cè)試人體溫度時(shí),人體體表溫度受環(huán)境影響比較大,控制器先測(cè)量環(huán)境溫度,再測(cè)量人體溫度,根據(jù)環(huán)境溫度來(lái)修正所測(cè)量的人體溫度,測(cè)量的溫度實(shí)現(xiàn)本地顯示和遠(yuǎn)程上傳,根據(jù)預(yù)先設(shè)定的閾值進(jìn)行正?;虍惓2?bào)。
本測(cè)溫系統(tǒng)還帶有人臉識(shí)別系統(tǒng),用于對(duì)特定區(qū)域范圍內(nèi)的群體進(jìn)行體溫測(cè)量和跟蹤。
模塊設(shè)計(jì)原則是解耦、顆粒度和時(shí)效性,按照此原則劃分了軟件模塊圖1,包括基本節(jié)拍任務(wù)、環(huán)境溫度測(cè)量任務(wù)、人體溫度測(cè)量任務(wù)、GPRS處理及自行上報(bào)任務(wù)、串口通信處理任務(wù)、人臉識(shí)別處理任務(wù)和語(yǔ)音播報(bào)處理。
圖1 硬件模塊圖
環(huán)境溫度對(duì)人體測(cè)溫存在重大影響,首先需要測(cè)得環(huán)境溫度,再測(cè)得人體溫度,通過(guò)計(jì)算得到實(shí)際人體溫度并通過(guò)遠(yuǎn)程通道上報(bào)到平臺(tái),然后判斷人體溫度是否存在異常,按照設(shè)定值有異常則語(yǔ)音報(bào)警,否則正常顯示人體溫度,圖2為測(cè)溫總體流程圖。
圖2 測(cè)溫流程框圖
人體測(cè)得的溫度需要上傳到平臺(tái)軟件,作為實(shí)時(shí)跟蹤的數(shù)據(jù),而上傳通過(guò)GPRS無(wú)線通道連接到平臺(tái)軟件,裝置軟件有新的溫度數(shù)據(jù)時(shí)進(jìn)行實(shí)時(shí)上報(bào),裝置軟件GPRS通道的整體流程如圖3所示。
圖3 GPRS處理及上報(bào)流程圖
GPRS通道的登錄及心跳的流程如圖4所示,登陸幀和心跳幀都需要平臺(tái)軟件應(yīng)答,登錄若沒有收到確認(rèn)幀則會(huì)重試三次,都不成功斷開重新連接,心跳按照心跳周期發(fā)送心跳維持連接在線,GPRS重連如圖5所示。
圖4 GPRS登錄及心跳流程圖
環(huán)境溫度測(cè)量后,對(duì)環(huán)境溫度進(jìn)行細(xì)分、別分,采用不同的修正模型,對(duì)應(yīng)修正人體溫度,具體的流程如圖6所示。
人臉識(shí)別流程用于實(shí)時(shí)跟蹤特殊人群,特殊人群由使用單位添加,防止人臉數(shù)據(jù)被濫用,采集到溫度需要和人臉圖像建立對(duì)應(yīng)關(guān)系,如此測(cè)溫后便可索引歷史測(cè)得溫度,比對(duì)出異常信息并報(bào)警,歷史天數(shù)可以配置,流程如圖7所示。
圖7 人臉識(shí)別流程圖
·GPRS配置參數(shù)結(jié)構(gòu):
typedef struct GPRS_PARM_STRUCT
{
char iIpAddr[IP_ADDR_LEN]; //IP
unsigned short iPort; //端口
char iAPN[16]; //APN
char iUser[16]; //APN用戶名
char iPassword[16]; //APN密碼
}STRUCT_GPRS_PARM;
·GPRS數(shù)據(jù)發(fā)送結(jié)構(gòu)
typedef struct
{
unsigned char iRecvFlag:1; //0-尚未接收完成,1-接收完成ê unsigned char iTimerOut:7;//接收超時(shí)時(shí)間
unsigned short iLen;//數(shù)據(jù)長(zhǎng)度
unsigned char iData[SIZE_0F_GPRS_SEND_LEN];//發(fā)送數(shù)據(jù)緩沖
}CommStruct_Gprs;
·數(shù)據(jù)上報(bào)結(jié)構(gòu)
typedef struct REPORT_STRUCT
{
unsigned char iSta;// 上報(bào)狀態(tài) ′ì?
unsigned char iLen;//數(shù)據(jù)長(zhǎng)度ê
unsigned char iData[SIZE_OF_SAVE_READ_DATA];//上報(bào)數(shù)據(jù)緩沖
}ReportStruct;
·串口數(shù)據(jù)結(jié)構(gòu)
struct UARTOpStruct{
uint08 *TxBuf; // 發(fā)送數(shù)據(jù)指針
uint08 TxLen; //待發(fā)送數(shù)據(jù)長(zhǎng)度è
uint08 TxOpc; //已發(fā)送數(shù)據(jù)長(zhǎng)度
uint08 *RxBuf; // 接收數(shù)據(jù)指針
uint08 RxLen; //待接收數(shù)據(jù)長(zhǎng)度
uint08 RxOpc; //已接收數(shù)據(jù)長(zhǎng)度
};
(1)void IsMainProcessGprsTask(void); //GPRS主循環(huán)處理。
(2)void IsTimerReportProcess(unsigned char *iSta);// 上報(bào)處理函數(shù)。
(3)void IsProcessCfCenter(unsigned char iTcp,unsigned char iParm);//登錄心跳維護(hù)。
(4)void IsRecvFromCenterProcess(unsign ed char iParm);//數(shù)據(jù)接收循環(huán)處理。
(5)void IsHandleTemperature(void); //溫度計(jì)算處理。
(6)float Test_ADC_Temperature(void);//ADC采樣溫度。
(7)void UpdateTemperature(void);// 刷新環(huán)境溫度。
(8)void IsProcessExtDisTemp(void);//人體溫度修正顯示。
(9)void IsSciMainProcess(void);// 串口處理任務(wù)。
(10)void IsTimeProcess(void);//基本節(jié)拍任務(wù)。
模塊分類正確,軟件編寫規(guī)范,在溫度數(shù)值計(jì)算與傳輸方面基本實(shí)現(xiàn)快速與正確。應(yīng)用本軟件系統(tǒng)形成的測(cè)溫裝置已經(jīng)投入使用,得到用戶肯定。