彭文庭,羅寧寧,2,伍鵬輝,謝邦璽
(1.南昌航空大學(xué)測(cè)試與光電工程學(xué)院,江西南昌 330063;2.南昌航空大學(xué)江西省光電信息科學(xué)與技術(shù)重點(diǎn)實(shí)驗(yàn)室,江西南昌 330063)
密集人群中的傳染病防控工作是目前公認(rèn)的難度較大的工作,尤其是在火車站、機(jī)場(chǎng)、會(huì)場(chǎng)等人口密集且流動(dòng)性大的場(chǎng)所,這項(xiàng)工作更是難上加難。如“非典”、H1N1 和新冠肺炎等傳染性疾病,因其發(fā)病前期具有較強(qiáng)的隱藏性和較高的傳染性,使得這類疾病的防控工作變得十分困難。此類疾病最主要、最明顯的發(fā)病特征是體溫比正常人偏高。因此,在密集人群中快速準(zhǔn)確地把體溫偏高者與正常體溫者區(qū)別出來(lái)是防控這類疾病的重要手段。
目前密集人群中測(cè)溫主要采用紅外測(cè)溫方法。紅外測(cè)溫具有精度高、響應(yīng)時(shí)間快、測(cè)距遠(yuǎn)、使用簡(jiǎn)單方便、安全可靠及使用壽命長(zhǎng)等優(yōu)點(diǎn),被廣泛應(yīng)用于農(nóng)產(chǎn)品檢測(cè)、化工安全檢測(cè)等領(lǐng)域[1-2]。目前較為成熟、使用較廣泛的紅外測(cè)溫裝置主要有手持紅外測(cè)溫槍以及紅外熱成像儀加聲光報(bào)警器系統(tǒng)。手持紅外測(cè)溫槍廣泛應(yīng)用在地鐵站入口、商場(chǎng)入口等人群密集處,需工作人員對(duì)出入人群進(jìn)行測(cè)溫操作。紅外熱成像儀加聲光報(bào)警器系統(tǒng)則廣泛應(yīng)用在火車站、高鐵站出入口。上述兩種測(cè)溫裝置存在一定的不足之處,紅外測(cè)溫槍正常工作的環(huán)境溫度范圍為16~35 ℃[3-4],因此在部分寒冷地區(qū),紅外測(cè)溫槍會(huì)有較大的測(cè)溫誤差,容易造成錯(cuò)誤篩選體溫異常者,且人工近距離測(cè)溫容易引起交叉感染。紅外熱成像儀加聲光報(bào)警器系統(tǒng)由于采用了測(cè)溫紅外熱成像儀與彩色攝像機(jī)融合技術(shù),配合專業(yè)的測(cè)溫軟件從而導(dǎo)致成本較高。每個(gè)人的身高和體型各不相同,而市場(chǎng)上大多數(shù)人體熱成像儀的高度和水平視角是固定的,因此在測(cè)量時(shí)會(huì)因測(cè)量部位不準(zhǔn)確而引起較大的測(cè)溫誤差[5-6]。
文中提出一種基于STM32 單片機(jī)的智能紅外測(cè)溫小車,創(chuàng)新性地將紅外測(cè)溫技術(shù)和智能小車技術(shù)相融合,實(shí)現(xiàn)了人體識(shí)別、測(cè)溫、報(bào)警智能一體化操控,實(shí)現(xiàn)對(duì)出入人群的全自動(dòng)化測(cè)溫,能夠精準(zhǔn)篩選體溫異常者,有效避免測(cè)溫人員與被測(cè)人員近距離接觸而引發(fā)的交叉感染,可為疫情防控測(cè)溫提供一種創(chuàng)新的思維方式。
圖1 為基于STM32 單片機(jī)的智能紅外測(cè)溫小車系統(tǒng)框圖,該小車系統(tǒng)由五大模塊組成:主控服務(wù)端、驅(qū)動(dòng)模塊、人體搜尋識(shí)別模塊、測(cè)溫報(bào)警模塊和電源模塊。STM32 單片機(jī)作為整個(gè)小車系統(tǒng)的主控服務(wù)端[7-8],驅(qū)動(dòng)模塊由電機(jī)[9-10]、舵機(jī)[11-12]和鋁合金材質(zhì)的底板組成,人體搜尋識(shí)別模塊由人體感應(yīng)器[13-14]組成,測(cè)溫報(bào)警模塊由測(cè)溫傳感器[15-16]、LED(Light Emitting Diode)燈、蜂鳴器以及OLED(Organic Light-Emitting Diode)顯示屏組成,電源模塊采用鋰電池給整個(gè)小車系統(tǒng)供電。
圖1 智能紅外測(cè)溫小車系統(tǒng)框圖
文中采用STM32F103C8T6 單片機(jī)作為整個(gè)小車系統(tǒng)的主控服務(wù)端。STM32F103C8T6 單片機(jī)芯片具有32 位ARM Cortex-M3 內(nèi)核,電壓使用范圍為2.0~3.6 V,工作頻率最高可以達(dá)到72 MHz,內(nèi)部采用64 kB 或128 kB 字節(jié)Flash 程序存儲(chǔ)器,以及高達(dá)20 kB字節(jié)的SRAM 數(shù)據(jù)存儲(chǔ)器。
驅(qū)動(dòng)模塊由電機(jī)、舵機(jī)和鋁合金材質(zhì)的底板組成,為后輪驅(qū)動(dòng)前輪的轉(zhuǎn)向機(jī)構(gòu)。舵機(jī)安裝在底板靠近前輪一側(cè),舵機(jī)通過(guò)連動(dòng)桿與前輪連接。電機(jī)安裝在底板靠近后輪一側(cè),電機(jī)為后輪提供動(dòng)力。電機(jī)驅(qū)動(dòng)芯片的型號(hào)為T(mén)B6612,它有兩個(gè)供電端,邏輯控制部分由5 V 供電,另一個(gè)是12 V 的電機(jī)供電端。舵機(jī)型號(hào)為HWZ020,其轉(zhuǎn)向是通過(guò)PWM(Pulse-Width Modulation)控制,給定不同的占空比,舵機(jī)的轉(zhuǎn)向幅度隨之改變。小車采用的是鋁合金車身,能夠適應(yīng)各種惡劣的環(huán)境。
人體搜尋識(shí)別模塊由兩個(gè)型號(hào)為HC-SR505 的人體感應(yīng)器組成,其感應(yīng)張角為120°,默認(rèn)工作電壓為DC 4.5~20 V,靜態(tài)電流小于50 mA,具有全自動(dòng)感應(yīng)、超小體積、工作電壓范圍寬、微功耗、可重復(fù)觸發(fā)方式、方便與各類電路實(shí)現(xiàn)對(duì)接等優(yōu)點(diǎn)。人體感應(yīng)器的工作原理為:人體發(fā)射的10 mm 左右的紅外線通過(guò)菲涅爾濾光片增強(qiáng)后聚集到紅外感應(yīng)源上,紅外感應(yīng)源通常采用熱釋電元件,這種元件在接收到人體紅外輻射溫度發(fā)生變化時(shí)就會(huì)失去電荷平衡,向外釋放電荷,產(chǎn)生電信號(hào)。人進(jìn)入人體感應(yīng)器感應(yīng)范圍則輸出高電平,人離開(kāi)感應(yīng)范圍則自動(dòng)延時(shí)關(guān)閉高電平,輸出低電平。感應(yīng)輸出高電平后,在延時(shí)時(shí)間段內(nèi),如果有人體在其感應(yīng)范圍內(nèi)活動(dòng),其輸出將一直保持高電平,直到人離開(kāi)后才延時(shí)將高電平變?yōu)榈碗娖健?/p>
測(cè)溫報(bào)警模塊由測(cè)溫傳感器、LED燈、蜂鳴器以及OLED 顯示屏等組成,其中核心部件測(cè)溫傳感器采用型號(hào)為MLX90614 的紅外非接觸溫度計(jì),集成了低噪聲放大器、17 位模數(shù)轉(zhuǎn)換器和強(qiáng)大的數(shù)字信號(hào)處理單元,測(cè)量分辨率為0.02°C,可應(yīng)要求在有限溫度范圍內(nèi)實(shí)現(xiàn)0.1 °C 的醫(yī)療精度,使得高精度和高分辨度的溫度計(jì)得以實(shí)現(xiàn)。
電源模塊為整個(gè)小車系統(tǒng)供電,主要包括兩部分:由三節(jié)輸出電壓為3.7 V 的充電鋰電池18650 串聯(lián)在一起,輸出電壓約為11.1 V,以及一塊輸出電壓約為5 V 的蓄電池組成。小車的電機(jī)和舵機(jī)的驅(qū)動(dòng)的額定電壓約為12 V,所以需要由三節(jié)3.7 V 的鋰電池進(jìn)行供電,而所用到的STM32 的額定電壓約為5 V,由輸出電壓約為5 V 的蓄電池進(jìn)行供電。
電機(jī)轉(zhuǎn)速和舵機(jī)轉(zhuǎn)向是根據(jù)兩個(gè)人體感應(yīng)器所得數(shù)據(jù)進(jìn)行調(diào)整的。電機(jī)驅(qū)動(dòng)模塊的工作流程如圖2 所示。當(dāng)左側(cè)人體感應(yīng)器感應(yīng)到人體后,主控服務(wù)端輸出左側(cè)信號(hào),控制小車移動(dòng)速度減慢,并緩慢向左側(cè)轉(zhuǎn)向;當(dāng)右側(cè)人體感應(yīng)器感應(yīng)到人體后,主控服務(wù)端輸出右側(cè)信號(hào),控制小車移動(dòng)速度減慢,并緩慢向右側(cè)轉(zhuǎn)向,直至左右兩側(cè)的人體感應(yīng)器同時(shí)感應(yīng)到人體后,主控服務(wù)端控制電機(jī)減速,進(jìn)行測(cè)溫。
圖2 電機(jī)驅(qū)動(dòng)模塊的工作流程
電機(jī)驅(qū)動(dòng)模塊的核心部件是電機(jī)驅(qū)動(dòng)和舵機(jī)。圖3(a)為電機(jī)驅(qū)動(dòng)模塊的連接原理圖。將STBY 置高電平,才能正常工作。PWMA、AIN2、AIN1 分別與STM32 單片機(jī)的PB10、PB11、PB12 接口連接,共同控制左輪的轉(zhuǎn)動(dòng)。PWMB、BIN2、BIN1 分別與STM32單片機(jī)的PB15、PB14、PB13 接口連接,共同控制右輪的轉(zhuǎn)動(dòng)。通過(guò)PB10、PB15 接口設(shè)置TB6612 的PWMA、PWMB 的頻率為10 kHz,并通過(guò)改變占空比來(lái)調(diào)節(jié)電機(jī)的速度。AIN1、AIN2、BIN1、BIN2 通過(guò)“一端高電平一端低電平”來(lái)控制電機(jī)正反轉(zhuǎn)。舵機(jī)的控制端與單片機(jī)的PA1 接口連接,如圖3(b)所示,舵機(jī)轉(zhuǎn)向也是基于PWM 控制原理,通過(guò)PA1 接口設(shè)置一定的占空比,從而控制舵機(jī)的轉(zhuǎn)向。
圖3 電機(jī)驅(qū)動(dòng)模塊連接原理圖
人體搜尋識(shí)別模塊中包含的兩個(gè)人體感應(yīng)器,分別安裝在小車車身前端左右兩側(cè),設(shè)置兩個(gè)人體感應(yīng)器與車身縱向軸線的夾角均為45°,在小車正前方兩個(gè)人體感應(yīng)器感應(yīng)范圍有一定的重疊。人體搜尋識(shí)別模塊的工作流程如圖4 所示,當(dāng)僅有左側(cè)人體感應(yīng)器感應(yīng)到人體時(shí),主控服務(wù)端驅(qū)動(dòng)小車向左轉(zhuǎn)向,同樣當(dāng)僅有右側(cè)人體感應(yīng)器感應(yīng)到人體時(shí),主控服務(wù)端驅(qū)動(dòng)小車向右轉(zhuǎn)向,直至兩側(cè)的人體感應(yīng)器同時(shí)接收到人體感應(yīng)信號(hào),即人體剛好位于小車前方兩個(gè)人體感應(yīng)器感應(yīng)范圍重疊區(qū)域,此時(shí)主控服務(wù)端驅(qū)動(dòng)測(cè)溫傳感器進(jìn)行測(cè)溫。
圖4 人體搜尋識(shí)別模塊的工作流程
圖5 為人體感應(yīng)器連接原理圖。左右人體感應(yīng)器的輸出口OUT 分別與單片機(jī)PA8 和PA9 接口相連接。人體感應(yīng)器感應(yīng)到人體后,輸出口OUT 輸出高電平,STM32 單片 機(jī)通過(guò)GPIO_ReadInputDataBit()庫(kù)函數(shù)讀取PA8、PA9 的電平。
圖5 人體感應(yīng)器連接原理圖
測(cè)溫報(bào)警模塊由測(cè)溫傳感器、LED燈、蜂鳴器和OLED 屏組成。測(cè)溫報(bào)警模塊的工作流程如圖6 所示,當(dāng)人體感應(yīng)器檢測(cè)到人體后,主控服務(wù)端驅(qū)動(dòng)測(cè)溫傳感器進(jìn)行測(cè)溫,溫度數(shù)據(jù)傳入主控服務(wù)端中進(jìn)行處理,再傳入OLED 顯示屏顯示溫度。當(dāng)溫度在設(shè)置的溫度范圍內(nèi)時(shí),完成一次操作,進(jìn)行下一次人體搜尋測(cè)溫,當(dāng)溫度不在設(shè)置的溫度范圍內(nèi)時(shí),主控服務(wù)端發(fā)出指令控制蜂鳴器發(fā)出報(bào)警,LED 燈點(diǎn)亮,完成一次操作。
圖6 測(cè)溫報(bào)警模塊的工作流程
圖7(a)為測(cè)溫傳感器連接原理圖。測(cè)溫傳感器的SCL、SDA 端分別與單片機(jī)PB5、PB6 接口連接,測(cè)溫之后將測(cè)得的數(shù)據(jù)傳入STM32 單片機(jī)進(jìn)行數(shù)據(jù)處理和分析。圖7(b)為蜂鳴器與LED 燈連接原理圖。蜂鳴器與LED 的控制端分別與單片機(jī)PA5、PA6 接口連接,當(dāng)測(cè)得的溫度不在設(shè)置范圍內(nèi)時(shí),PA5、PA6 均置為低電平,此時(shí)蜂鳴器和LED 工作。圖7(c)為OLED顯示屏連接原理 圖。OLED屏的SCL、SDA 端分別與單片機(jī)PB8、PB7 連接,單片機(jī)處理好的溫度數(shù)據(jù)則通過(guò)PB7、PB8 接口輸出顯示在OLED 屏上。
圖7 測(cè)溫報(bào)警模塊連接原理圖
對(duì)所設(shè)計(jì)的測(cè)溫報(bào)警模塊進(jìn)行了溫度測(cè)量實(shí)驗(yàn),溫度測(cè)量結(jié)果如表1 所示。根據(jù)式(1),計(jì)算得到溫度的平均絕對(duì)誤差(MAE)δ為0.11 ℃。
表1 溫度測(cè)量結(jié)果
式中,n代表測(cè)量次數(shù),代表測(cè)量溫度,xi代表實(shí)際溫度。人體溫度正常范圍為36.2~37.3 ℃,考慮測(cè)溫傳感器引入的誤差,將正常溫度范圍設(shè)置為36.1~37.4 ℃,當(dāng)溫度不在該范圍內(nèi)時(shí),發(fā)出報(bào)警。
安裝在小車車身前端左右兩側(cè)的人體感應(yīng)器的輸出口分別與單片機(jī)不同串口相連接。圖8所示為人體搜尋模塊軟件流程圖,初始化后判斷當(dāng)前感應(yīng)人體情況,如果人體感應(yīng)器感應(yīng)到人體,輸出口輸出高電平,STM32 單片機(jī)通過(guò)GPIO_ReadInput DataBit()庫(kù)函數(shù)讀取對(duì)應(yīng)串口的電平。當(dāng)左側(cè)讀取到高電平時(shí),控制小車向左轉(zhuǎn)向,同樣當(dāng)右側(cè)讀取到高電平時(shí),控制小車向右轉(zhuǎn)向,直至左右人體感應(yīng)器同時(shí)感應(yīng)到人體后,小車停止并進(jìn)行測(cè)溫。
圖8 人體搜尋模塊軟件流程圖
測(cè)溫報(bào)警模塊的軟件流程圖如圖9 所示。當(dāng)兩側(cè)的人體感應(yīng)器同時(shí)接收到感應(yīng)信號(hào)時(shí),程序初始化,主控服務(wù)端驅(qū)動(dòng)測(cè)溫傳感器進(jìn)行測(cè)溫,將所測(cè)得的溫度顯示在OLED 屏上,并判斷溫度是否處于正常溫度區(qū)間,當(dāng)溫度處于設(shè)置的溫度范圍內(nèi)時(shí),完成一次操作,進(jìn)行下一次人體搜尋測(cè)溫,當(dāng)溫度不在設(shè)置的溫度范圍內(nèi)時(shí),主控服務(wù)端發(fā)出指令控制LED燈點(diǎn)亮、蜂鳴器發(fā)出報(bào)警。
圖9 測(cè)溫報(bào)警模塊軟件流程圖
文中設(shè)計(jì)的基于STM32 單片機(jī)的智能紅外測(cè)溫小車,將紅外測(cè)溫技術(shù)和智能小車技術(shù)相融合,在智能小車的基礎(chǔ)上加載了人體識(shí)別裝置和紅外測(cè)溫裝置,可以精準(zhǔn)地搜尋人體并測(cè)量其溫度,并在發(fā)現(xiàn)溫度異常時(shí)發(fā)出報(bào)警,能夠有效地篩選溫度異常者,實(shí)現(xiàn)了人體識(shí)別、測(cè)溫、報(bào)警智能一體化操控;同時(shí)具有測(cè)量結(jié)果準(zhǔn),測(cè)溫效率高,測(cè)溫不漏人,成本低且可行性好等優(yōu)點(diǎn),相對(duì)于人工作業(yè)而言,具有不可比擬的優(yōu)勢(shì),可以滿足疫情防控的需求,同時(shí)也可以在很多領(lǐng)域加以推廣。研究過(guò)程中,仍有一些待解決問(wèn)題,如當(dāng)左右兩側(cè)的人體感應(yīng)器同時(shí)感受到不同的人體后,小車也會(huì)進(jìn)行測(cè)溫,針對(duì)上述問(wèn)題,需要對(duì)傳感器進(jìn)行進(jìn)一步研究,完善小車功能。