陳瑩,段元昊,陳黔豫,王艷鵬,蘇銀磊,尚坷欣
(河南大學物理與電子學院,河南開封,475004)
2019年末,一場由新型冠狀病毒感染的肺炎席卷中國武漢,發熱(體溫>37.3℃)是其主要臨床癥狀。其最長潛伏期可達14天,且潛伏期即具有傳染性[1,2]。隨著國內疫情持續向好,人們逐步復工復學,所帶來的人口大規模流動和不可避免的聚集又對疫情防控提出來了新的考驗。為更好的防止國內疫情反復,無接觸測溫預警成為了一大趨勢。
傳統的水銀體溫計雖價格便宜、測量性能穩定,但測溫時間長、易破損、消毒繁瑣,容易交叉傳染,不適用于人員流動較大的公共場所進行體溫篩查。目前,市場上常見的無接觸測溫設備有額溫槍和紅外熱成像體溫篩查系統[3],額溫槍雖然有響應快、操作便捷、成本低和不與被檢測對象接觸等優點,但無法記錄體溫異常者的信息,還需要人工記錄,所以也不適合在人員聚集的場所使用;紅外熱成像體溫篩查系統雖然有先進、實用等優點,也適用于大通道、大人群體溫監測,但它成本高,算法復雜,還有可能造成人臉信息的泄露,存在一定的安全問題。結合這兩種測溫系統的優缺點,我們設計了基于單片機的無接觸智慧云測溫系統,該系統具有可以無接觸測溫、識別出被測者的信息、對超限體溫進行顯示報警、把測量信息上傳至手機APP進行記錄、算法及硬件實現較簡單、可準確追溯體溫異常人員等優點。主要應用于學校,如果稍作模塊功能修改,也可以用在車站、地鐵等高密度人群聚集地。
該系統由單片機模塊、紅外測溫模塊、顯示模塊、語音播報模塊、無線傳輸模塊和報警模塊組成。系統總體結構如圖1所示。

圖1 系統總體框圖
被測者在測溫前刷學生卡,讀卡模塊通過NFC(Near Field Communication)讀取被測者姓名、學號等數據。此時,紅外測溫模塊開始測量被測人員體溫,并將數據上傳至單片機。單片機作為控制中心,實現溫度采集,報警,傳輸等工作。被測者的學號,體溫通過LCD(Liquid Crystal Display)顯示屏顯示,并通過語音播報模塊進行實時播報,與此同時,這些數據再次通過無線傳輸模塊中的藍牙連接,傳輸至手機APP中。對于超過設定閾值的溫度,將由報警模塊報警[3]。可實現無接觸的體溫測量、顯示、報警和信息記錄等功能,如果安裝在學校大門口,還可以防止校外人員進入校園,提高校園的安全性。
本系統采用工業級STC8A8K64S4A12單片機作為主控單元,它不需要外部晶振和外部復位電路,其flash程序存儲器容量高達64KB,內部配有可調高精準24MHz系統時鐘,12位高速模/數轉換器最快速度可達80萬次/秒,支持高速SPI通信,具有4級低壓檢測功能,可在-20℃~85℃環境下正常工作,系統內核兼容51單片機系列,在相同的工作頻率下,比傳統的8051快12倍,具有強抗干擾能力、低功耗高性能的特點,其性能可靠性均滿足本次設計的需求。
系統采用STC8A8K64S4A12作為微控制器,控制紅外傳感器進行體溫測量、讀卡模塊進行學生信息的讀入,將檢測到的人體溫度信息實時的語音播報、顯示并上傳至手機APP,對體溫過高的結果進行報警。
人體溫度不同會發射出不同波長的紅外線,對應的紅外輻射能量也不同,本系統就是利用人體發射的紅外線能量的大小來測量人體的溫度。測溫器件選擇的是Melexis公司的MLX90614,該芯片是一款高精度測溫芯片。其工作環境溫度范圍-40℃~125℃,被測物體溫度范圍-70℃~382.2℃,測量辨析度可達0.02℃,是輻射測溫中最精確的一種,特別是在測量溫度為32℃~42℃時,測量絕對精度為±0.1℃,可應用于測量人體溫度。可通過SMBus兼容協議或PWM輸出兩種方式讀取溫度值。該器件采用罐形(TO-39)封裝,體積小巧、使用方便,目前已在工業、醫療、家居等領域的中低溫場測量中使用[4,5]。
MLX90302集成了該公司的紅外熱電堆傳感器MLX81101和強大的數字信號處理芯片MLX90302,內部設置的低噪聲放大器和17位數模轉換器,使得高精度和高分辨度的溫度測量得以實現。其結構框圖如圖2所示。其中MLX90302包含穩壓電路、低噪聲放大器、A/D 轉換器、DSP 單元、脈寬調制電路及邏輯控制電路[6]。

圖2 MLX90614 結構框圖
其工作原理為:紅外熱電堆傳感器MLX81101輸出的溫度信號經過內部低噪聲、低失調的運算放大器(OPA)放大后經過A/D轉換器(ADC)轉換為17位數字信號通過可編程FIR及IIR低通數字濾波器(即DSP)處理后輸出,輸出結果存儲在其內部RAM存儲單元中。作為標準制式的MLX90614具有兩個紅外傳感器,因此可同時測出所對應的環境溫度Ta和物體溫度To,兩個溫度分辨率都為0.01℃。并且Ta和To既可通過SMBus讀取RAM單元(分辨率0.02℃,固定范圍)輸出,也可通過PWM數字模式輸出(10位分辨率,范圍可配置)。由于本系統測溫溫度范圍與MLX90614出廠時校準的溫度范圍符合,因此可直接采用SMBus方式進行溫度數據Ta和To的讀取輸出[7]。MLX90614由MLX81101紅外熱電堆傳感器對環境溫度及測量溫度進行采集,輸出電壓信號在理想環境下的計算公式為:

其中,A為元件敏感度常數。而后將采集到的環境溫度及測量溫度兩路模擬信號經過MLX90302信號處理芯片轉換為數字信號后通過SMBus寫入MLX90614的RAM中保存,再由單片機進行讀取[8]。MLX90614接口電路圖如圖3所示。

圖3 MLX90614連接電路圖
圖3中MLX90614有電源端VDD,接地端VSS,時鐘信號輸入端SCL和數字信號輸入/輸出端SDA。VDD與電源相連進行供電,為了確保 SDA和SCL能夠在總線空閑時都處于高電平狀態,電路中設計了兩個上拉電阻。
系統的數據顯示模塊使用的器件是LCD1602,該器件是一種專門用于顯示字母、數字、符號等點陣式LCD(液晶顯示器),具有顯示方便,器件連接簡單,易于控制等特點,該器件可以滿足系統需求[9]。
系統的報警模塊選用的是5V有源蜂鳴器進行體溫超限報警。由于蜂鳴器的工作電流較大,單片機I/O口無法直接驅動,所以系統采用S8550三極管來構建放大電路。
無線傳輸采用HC-05主從一體藍牙串口模塊,該模塊主要用于短距離的數據無線傳輸,可以方便的和PC機的藍牙設備相連,也可進行兩個模塊之間的數據互通。模塊采用的協議標準為藍牙V2.0,內置2.4GHz天線,外置8Mbit FLASH,低電壓3.3V工作,工作溫度為-25℃~75℃,可通過AT命令切換為主機或者從機模式[10]。
將藍牙模塊波特率設置為9600b/s,從機工作模式,與單片機串口相連接。用戶可以將帶有藍牙功能的手機與HC-05模塊相連,單片機將傳感器采集的數據通過串口傳給HC-05,HC-05收到數據后再通過藍牙無線傳輸給手機APP,從而實現數據的無線傳輸。該模塊連接電路如圖4所示。

圖4 藍牙串口電路圖
語音播報模塊的作用是將當前測得的體溫值播報出來,更直觀地獲取被測人的體溫信息。系統選用的語音合成模塊為CN-TTS,這是一款高集成度的語音合成模塊,可實現中文、英文和數字的語音合成,并支持定制化語音的輸出[6]。
CN-TTS語音模塊與3.3V或5V單片機兼容,通過GBK實現漢字編碼,再通過TTL串口完成通訊。GBK是一種漢字編碼技術,采用雙字節編碼方式,編碼范圍為8140~FEFE,收錄了標準ISO 10646.1中全部漢字和相關符號,并有所補充,幾乎滿足所有漢語語音內容的輸出要求。CN-TTS語音模塊采用1×9P、2.54mm間距排針孔單列直插與主板連接。
采用STC8A8K64S4A12的串口1通訊,波特率設置為9600bps。CN-TTS語音模塊中的RX為串口接收引腳,接MCU的TXD_2引腳;TX為串口發送引腳,懸空;CN-TTS語音模塊接口設計如圖5所示。

圖5 語音播報模塊電路圖
系統開始工作后,讀取學生校園卡,紅外測溫模塊開始工作。單片機根據設定的體溫閾值判斷該生體溫是否正常。若正常,則語音播報體溫值;若不正常,報警模塊的蜂鳴器開始報警,語音播報模塊播報“發燒”。然后通過顯示模塊和無線傳輸模塊,將讀卡得到的ID號以及體溫等相關數據在LCD屏和手機APP上實時顯示。
當測溫者的溫度超過設定閾值的時候,給蜂鳴器高電平,蜂鳴器工作發出警報。
無線傳輸模塊為藍牙模塊,設置為自動連接模式下的從模式工作角色,所以只能被搜索連接進行數據收發。藍牙模塊讀取信息后,單片機通過串口發送端把讀卡得到的ID號以及體溫信息發送給手機的藍牙模塊,在手機APP中進行接收。圖6為主程序流程圖。

圖6 主程序流程圖
當接收到刷卡信息后,MLX90614紅外測溫傳感器開始工作,并將所測得的體溫數據傳輸至單片機中。圖7為紅外測溫子程序流程圖。

圖7 紅外測溫子程序流程圖
該部分的核心程序時測溫SMBus_ReadMemory(uint8_t slaveAddress,uint8_t command)函 數。Slave Address是MLX90614的識別地址,當一個系統中只有一個MLX90614時,該地址默認為00h。Command是命令,共有四種模式分別為訪問RAM、訪問EEPROM、讀取標示符、進入SLEEP模式。這里我用的是訪問RAM即存儲溫度數據的存儲器。訪問RAM的命令為000x xxxx,xxxxx代表要讀取/寫入的內存地址的低五位。
讀取溫度值,獲取被測人的體溫情況。單片機本身并沒有SMBus接口,所以需要用到I/O口去模擬SMBus串行通信。想要與紅外芯片進行通信獲取溫度數據,那么首先要寫好讀、寫數據的代碼,讀寫數據的代碼可以參考讀寫時序。
整個溫度數據獲取程序如下
uint16_t SMBus_ReadMemory(uint8_t slaveAddress,uint8_t command)


最后,讀取到數據之后對數據進行計算使之變成可直接閱讀的溫度值
temp=SMBus_ReadMemory(0x00,0x07)*0.02-273.15;
該藍牙模塊是一個支持藍牙2.0串口的模塊,在手機端需要下載一個藍牙串口App(我們使用藍牙調試器)來接收數據。單片機將讀卡得到的ID號以及溫度值通過串口發送給藍牙模塊后,藍牙模塊將這些信息發送到手機上。我們在手機端打開藍牙,在藍牙調試器App里面找到此藍牙的名字(HC-05)完成對應連接(初次使用需要輸入連接密碼),就可以實現通信。最終實現無線接收[11]。
語音播報和紅外測溫功能緊密相關,根據我們的設計,當測得的體溫不超過設定閾值時,會報出測得的溫度,一旦溫度超過所設溫度閾值,它就會播報“發燒”。測溫之前需要進行:1.MDK配置,到工程屬性的Target->Use MicroLIB把勾上;2.在usart函數中要包含“stdio.h”3. 重定向“fputc”函數,直接粘貼復制進目標文件即可。配置完成后便可使用程序需將每次測得的溫度值和設定好的溫度閾值做比較,判斷出測得溫度所位于的區間,并執行相應的指令。圖8為語音播報程序流程圖。

圖8 語音播報程序流程圖
經過多次的實驗測試,系統測量結果準確可信,表1為系統測試結果與水銀溫度計實際測量結果的對比。

表1 系統測試結果與實際對比
由測試結果可知,在人體正常體溫范圍內(36.0℃-37.9℃),系統測量值與水銀溫度計測量值最大誤差不超過0.2℃,精確度不低于99.5%。并且,使用水銀溫度計測量溫度時,每人所需時間大約在5-7分鐘,測量后仍需將體溫計進行消毒處理。而使用本系統測量溫度每人僅耗時1-2秒,可快速得出測量結果并能完成播報以及對異常體溫的報警。
本系統可實現遠程、無接觸的進行體溫信息的采集、顯示、播報并記錄,還可以對異常的體溫值進行報警。
該系統不僅將體積小的測溫槍和體積大的測溫門等傳統測溫儀器的優點進行了有機結合,同時又降低了測溫的成本。具有測溫快、精度高、算法復雜度低等優點,還可以準確識別被測溫人信息,防止校外人員進入校園,還可以追溯體溫異常的學生,提高校園安全性。經過大量實驗測試,結果準確可靠,系統工作穩定,可以廣泛使用于學校等人流密集的場所。