楊樂晨,劉忠富,賀薪諾,趙智星
(大連民族大學(xué) 信息與通信工程學(xué)院,大連 116600)
隨著部分地區(qū)新冠疫情的再次爆發(fā),病毒的感染風(fēng)險再一次提高,由于人們的活動空間不再只有家中,由出行所導(dǎo)致的感染將不斷提高,而乘坐電梯時所引起感染的風(fēng)險將不斷擴(kuò)大,因此,為了降低疫情的感染風(fēng)險,同時提高人們的出行效率,電梯的非接觸操控已成為一種必然的趨勢。
近些年來,國內(nèi)外的科研技術(shù)人員對非接觸電梯操控系統(tǒng)進(jìn)行了較多的研究。文獻(xiàn)[1]研究了一種新型的、3D 自動視覺模型,通過捕捉按下虛擬按鈕的指尖的位置,確定按鍵是否被按下。文獻(xiàn)[2]研究了一種非接觸式低功耗手勢接近開關(guān),用Cortex-M3內(nèi)核的32 位ARM 處理器,結(jié)合APDS-9960 環(huán)境亮度光學(xué)傳感器,實(shí)現(xiàn)了人體動態(tài)手勢的準(zhǔn)確識別。
目前,電梯非接觸操控系統(tǒng)主要包括3 種呼梯方式:手機(jī)二維碼呼梯、語音識別呼梯、人臉識別呼梯。但由于電梯內(nèi)手機(jī)信號不好會導(dǎo)致二維碼掃描出錯,電梯轎廂內(nèi)比較嘈雜導(dǎo)致語音識別率低,疫情期間人們佩戴口罩導(dǎo)致人臉識別率低等原因,以至于達(dá)不到預(yù)期的效果。
針對電梯內(nèi)信號不好、語音識別率低、IC 卡需要接觸按鍵而操作等問題,本文設(shè)計(jì)了一種新型的非接觸電梯操控系統(tǒng),系統(tǒng)進(jìn)行高效的非接觸按鍵識別,以及人臉采集系統(tǒng),提醒人們佩戴口罩,并通過舵機(jī)實(shí)現(xiàn)口罩的彈出,通過非接觸操作以及讓人們佩戴口罩,降低了人們在乘坐電梯期間被感染的風(fēng)險,對抗疫有一定的促進(jìn)作用。
系統(tǒng)以單片機(jī)STM32 為核心處理器,包括電容式非接觸按鍵系統(tǒng)、語音播報電路,人臉識別系統(tǒng)。系統(tǒng)總體框圖如圖1所示。通過非接觸按鍵感應(yīng)電路與單片機(jī)和PLC 通信,進(jìn)行電梯的上下行的操作,使用OpenMV 模塊,通過和云端的Edge Impulse進(jìn)行合作訓(xùn)練,完成數(shù)據(jù)的打標(biāo)、NN 模型訓(xùn)練,優(yōu)化,部署等操作,進(jìn)行人臉識別的訓(xùn)練,識別后通過LD3320 芯片進(jìn)行語音提醒,并控制步進(jìn)電機(jī)彈出口罩。
如圖1所示,系統(tǒng)模型設(shè)計(jì)在按鍵布局上與傳統(tǒng)的布局相仿,在電梯轎廂的上方為OpenMV 攝像頭,在電梯按鍵系統(tǒng)的右側(cè),為口罩寄存箱,當(dāng)接收到單片機(jī)的工作信號后,步進(jìn)電機(jī)組會完成彈出口罩的操作。同時,語音播報模塊會在到達(dá)相應(yīng)樓層時進(jìn)行播報以及提醒乘客佩戴及拿取口罩。
圖1 系統(tǒng)總體設(shè)計(jì)框圖Fig.1 Overall system design block diagram
本系統(tǒng)主要由STM32F103 單片機(jī)最小系統(tǒng)電路、電容式非接觸式按鍵系統(tǒng)、語音播報電路,PLC及控制電路構(gòu)成。整個系統(tǒng)以STM32 單片機(jī)最小系統(tǒng)為微處理器,通過電容式非接觸式按鍵系統(tǒng)判別按鍵的輸入,將識別的信息傳遞給單片機(jī),通過單片機(jī)控制語音播報并將信息傳遞給PLC 控制器,并通過OpenMV識別,控制舵機(jī)彈出口罩,完成整個運(yùn)行系統(tǒng)。
本系統(tǒng)的主控芯片采用STM32F103C8T6 單片機(jī),選用這種芯片組成單片機(jī)最小系統(tǒng)主要由于其構(gòu)成的電路設(shè)計(jì)較為簡單,并且反應(yīng)速度快,程序存儲量相對于51 單片機(jī)來說較大。本文中所設(shè)計(jì)的系統(tǒng)主要以其作為主控芯片,通過串口接收并處理數(shù)據(jù),從而對整個系統(tǒng)功能進(jìn)行實(shí)現(xiàn)。其中,該芯片的主頻為72 MHz,擁有37 個獨(dú)立的IO 引腳,每個引腳既可以識別3.3 V 的電壓,同時容忍5 V,即滿足系統(tǒng)對引腳的需求,又為后續(xù)的開發(fā)留出一定的空間。
電容式非接觸按鍵系統(tǒng)如圖2所示。系統(tǒng)通過NE556 芯片循環(huán)檢測感應(yīng)電極的狀態(tài),以判斷是否有物體接近,感應(yīng)電極不需要附加任何元器件,芯片通過內(nèi)部硬件配置和軟件算法,對感應(yīng)電極上是否有手靠近進(jìn)行檢測。該芯片使用一個感應(yīng)電容,一個參考電容組成,其中,感應(yīng)電容是由兩塊金屬板電極構(gòu)成的平行板檢測電容,將它安裝在金屬導(dǎo)體要通過的線路的某一位置上,由它感受接近它的金屬導(dǎo)電物體,當(dāng)有金屬導(dǎo)體靠近它時,其電容量將會增大。參考電容的結(jié)構(gòu)完全與感應(yīng)電容相同,但它無法感受金屬導(dǎo)體[3]。
圖2 非接觸開關(guān)的簡易示意圖Fig.2 Simple schematic diagram of non-contact switch
本傳感器的檢測是將感應(yīng)電容與參考電容器的電容量分別轉(zhuǎn)換為頻率信號,再由計(jì)數(shù)器、比較器對兩電容器的電容量差值進(jìn)行比較來完成的。首先由NE556 內(nèi)部的2 個555 多諧振蕩器將感應(yīng)電容與參考電容的電容值轉(zhuǎn)換成兩路計(jì)數(shù)脈沖輸出,然后這兩路計(jì)數(shù)脈沖通過各自的計(jì)數(shù)器進(jìn)行計(jì)數(shù),由比較器比較兩個計(jì)數(shù)值的大小。當(dāng)工作電容器Cx中有金屬物體通過時,工作電容器的電容量增大,輸出到計(jì)數(shù)器1 的計(jì)數(shù)脈沖頻率降低,計(jì)數(shù)器1 的計(jì)數(shù)值較計(jì)數(shù)器2 的小,使比較器輸出為“1”的信號,推動相關(guān)電路動作,從而完成檢測。當(dāng)感應(yīng)不到手指時,則NO 端接GND。當(dāng)手指放到感應(yīng)開關(guān)的正上方1~2.5 cm 處,感應(yīng)電容發(fā)生變化,使電壓增大,使繼電器的開關(guān)打向另一邊,使NO 端與VCC 接通,此時,NO 置高。單片機(jī)檢測到高電平時,將數(shù)據(jù)存到相應(yīng)的標(biāo)志位。若感應(yīng)不到手指,則NO 端接GND。
OpenMV 攝像頭是一款小巧、低功耗、高效率的攝像兼圖像處理模塊,可以通過高級程序語言Python實(shí)現(xiàn)處理算法。Python 的高級數(shù)據(jù)結(jié)構(gòu)很容易在機(jī)器視覺算法中處理復(fù)雜的輸出。但是,仍然可以完全控制OpenMV,包括IO 引腳,如圖3所示??梢院苋菀椎厥褂猛獠拷K端觸發(fā)拍攝或者執(zhí)行算法,也可以把算法的結(jié)果用來控制IO 引腳。同時,該攝像頭可以通過Edge Impulse 進(jìn)行訓(xùn)練。簡單的來說,OpenMV 是一個可編程的攝像頭,通過Python 語言,可以實(shí)現(xiàn)邏輯。而且攝像頭本身內(nèi)置了一些圖像處理算法,很容易使用[4]。
圖3 OpenMV 的電路圖Fig.3 Circuit diagram of OpenMV
由于PLC 只支持485 通信,而單片機(jī)支持TTL電平通信,因此采用MAX485 芯片來實(shí)現(xiàn)RS485 與TTL 之間的信號轉(zhuǎn)換[5]。如圖4所示,將PLC 的485接口中的1、2、5 引腳與MAX485 芯片的6、7、5 引腳相連,實(shí)現(xiàn)A、B、GND 與TTL 電平的轉(zhuǎn)換,MAX485 3、4、5 引腳接STM32 單片機(jī)的RX,TX,GND,以達(dá)到32 單片機(jī)與PLC 的通信。
圖4 PLC 通信電路Fig.4 PLC communication circuit
語音播放模塊選用WT588D 語音芯片。該模塊內(nèi)嵌DSP 高速音頻處理器,處理速度非??欤瑫r,可通過與上位機(jī)操作軟件,隨意組合語音,可插入靜音,插入的靜音不占用內(nèi)存的容量,一個已加載語音可重復(fù)調(diào)用到多個地址,完成不同樓層的語音播報。本設(shè)計(jì)采用的是PWM 外加喇叭來進(jìn)行播放。當(dāng)播報完畢后,語音播放停止馬上進(jìn)入休眠模式,芯片轉(zhuǎn)為完全停止?fàn)顟B(tài)。單片機(jī)將按鍵信息與內(nèi)部數(shù)據(jù)信息進(jìn)行匹配,找到對應(yīng)的數(shù)據(jù)信息并發(fā)送給語音模塊,并將按鍵信息轉(zhuǎn)換成語音通過喇叭播放出來。語音模塊原理圖如圖5所示,當(dāng)DO 為高電平,且CS 有效時,SSOP20 芯片與25PXX 保持同步時鐘,通過讀取DI 引腳以及HOLD 引腳的電平信號,確定當(dāng)前的播放狀態(tài)。當(dāng)該模塊檢測到單片機(jī)發(fā)送的驅(qū)動信號時,DI 置高,通過讀取觸發(fā)的引腳序號,確定將要被播放的語音地址,如D0 引腳為低電平時,播放第一條語音信息,以此類推。
圖5 語音播報模塊Fig.5 Voice broadcast module
本設(shè)計(jì)采用GSM800 作為緊急通信的基礎(chǔ),相較于GSM900,GSM800 的穩(wěn)定性更強(qiáng),功耗更低,在緊急情況發(fā)生時,確保電梯內(nèi)外的通信[6]。當(dāng)緊急按鍵被按下后,首先會以短信的形式通知電梯管理人員,同時,接通控制室的電話,確保電梯內(nèi)部與外部溝通。當(dāng)該模塊處于非工作的狀態(tài)時,功耗極低,不會消耗過多的電量以及分走電壓,確保其他模塊的正常工作。
采用TB6600 型步進(jìn)電機(jī)驅(qū)動,該驅(qū)動采用12 V 供電,能夠產(chǎn)生0.5~3.5 A 的電流,通過DIR 和PUL 控制電機(jī)的旋轉(zhuǎn)方向以及轉(zhuǎn)速,固定在按鍵系統(tǒng)的右側(cè),使口罩在彈出時,能被人們迅速取走。如圖6所示,該種型號步進(jìn)電機(jī)內(nèi)含先進(jìn)的ASIC IC來處理單片機(jī)的信號,解析度較高,便于口罩的彈出。為了確保口罩的順利彈出,本系統(tǒng)采用雙步進(jìn)電機(jī)工作,采用1/600 的步進(jìn)方式,以確保旋轉(zhuǎn)的精度。
圖6 L298N 驅(qū)動電路Fig.6 L298N drive circuit
本文所設(shè)計(jì)的系統(tǒng)基于C 語言和Python 語言,使用Keil 及PyCharm 平臺進(jìn)行開發(fā)。整個系統(tǒng)的軟件部分主要分為按鍵檢測系統(tǒng),人臉識別控制舵機(jī)。其中,第一部分通過C 語言實(shí)現(xiàn),通過單片機(jī)對輸入的信號識別,處理。后者通過OpenMV 將采集到的數(shù)據(jù)傳到單片機(jī),在單片機(jī)進(jìn)行分析處理后,單片機(jī)向語音播報模塊發(fā)送信號進(jìn)行播報,并控制舵機(jī)完成口罩的彈出。系統(tǒng)主程序流程如圖7所示。
圖7 主程序流程Fig.7 Main program flow chart
系統(tǒng)上電后,單片機(jī)完成初始化操作,保證各模塊處于工作狀態(tài),接著,單片機(jī)會不斷檢測是否有電梯按鈕被觸發(fā)。當(dāng)單片機(jī)檢測到按鈕被觸發(fā)后,開始判斷被觸發(fā)按鈕的鍵值,并建立串口通信,將鍵值發(fā)送給PLC,發(fā)送完成后,單片機(jī)通知OpenMV檢測乘客是否佩戴口罩,若已佩戴,單片機(jī)將回到電梯按鍵檢測的程序中,等待下一次按鍵觸發(fā)。若有乘客未佩戴口罩,單片機(jī)將通過PWM 產(chǎn)生1600個PWM 脈沖,控制電機(jī)旋轉(zhuǎn),將口罩彈送出去,同時,單片機(jī)通知語音播報模塊,提醒乘客取走口罩。
識別乘客是否佩戴口罩采用Edge Impulse 進(jìn)行大量人臉樣本信息的訓(xùn)練和積累,建立人臉數(shù)據(jù)庫[7]。單片機(jī)通過與數(shù)據(jù)庫的對比,判別乘客是否佩戴口罩,若未戴口罩,則單片機(jī)對語音播報模塊發(fā)出信號,單片機(jī)進(jìn)入中斷,令其完成語音播報提醒,同時對步進(jìn)電機(jī)發(fā)出控制信號,使其彈出口罩,待口罩被取走口,繼續(xù)下一次識別。
針對傳統(tǒng)算法對多角度人臉表情識別效果不佳、偏轉(zhuǎn)角下生成的人臉正面化圖像質(zhì)量低等問題,提出了一種結(jié)合雙通道WGAN-GP 的多角度人臉表情識別算法。傳統(tǒng)模型僅利用側(cè)臉特征對多角度人臉進(jìn)行表情識別,特征差異小導(dǎo)致識別精度低,因此引入生成對抗網(wǎng)絡(luò)先對人臉進(jìn)行轉(zhuǎn)正,消除姿態(tài)角的影響。為了使模型訓(xùn)練穩(wěn)定的同時提升人臉生成質(zhì)量,以WGAN-GP 作為基礎(chǔ)網(wǎng)絡(luò),并將其改進(jìn)為雙通道結(jié)構(gòu),融合五官特征以及人臉全局特征來進(jìn)行正面化生成。最后,構(gòu)建輕量級網(wǎng)絡(luò)MobileNetV3 對生成出的正面人臉表情圖像進(jìn)行識別,保證分類精度并且大幅減少參數(shù)運(yùn)算量?;贚adv=-Ex~Pg[D(x)],通過對抗網(wǎng)絡(luò)轉(zhuǎn)正人臉,增大特征差異,以提高建立的人臉模型的準(zhǔn)確度。實(shí)驗(yàn)結(jié)果表明,本文算法在任意角度下,都能較好地復(fù)原出正面化人臉表情圖像,提高了多角度人臉表情的識別率。
如圖8所示,當(dāng)手指在按鈕的正上方2~3 cm 處時可正常觸發(fā),此時,單片機(jī)會通過串口,向PLC 發(fā)送被觸發(fā)的按鍵值,當(dāng)PLC 收到信息后,會通過LED 顯示相應(yīng)的樓層,表示接收成功。圖中,當(dāng)手指放在4 樓的按鍵的上方時,PLC 的第四個LED 燈會被點(diǎn)亮。
圖8 實(shí)物調(diào)試Fig.8 Physical commissioning
系統(tǒng)上電后,通過改變手指和按鈕的距離,檢測按鈕是否被觸發(fā),以及其他按鈕是否被誤觸以及口罩能否被彈出甚至彈飛。通過OpenMV 進(jìn)行人臉采集訓(xùn)練,對多個人的面部進(jìn)行多方位的采集,以及戴口罩時樣例。以此提高識別是否佩戴口罩的容錯率。人臉識別測試圖如圖9所示。
圖9 人臉識別測試圖片F(xiàn)ig.9 Face recognition test picture
無論是按鍵的準(zhǔn)確率,口罩彈出的準(zhǔn)確率,以及是否佩戴口罩的識別率都在93%以上,可以看出本系統(tǒng)的準(zhǔn)確率較高,無論是按鈕觸發(fā)的準(zhǔn)確率,口罩彈出的準(zhǔn)確率,以及是否佩戴口罩的識別率都滿足設(shè)計(jì)要求。
本文所設(shè)計(jì)的非接觸式電梯操作系統(tǒng),使用STM32 單片機(jī)作為主控芯片,實(shí)現(xiàn)了電梯的非接觸式操作并彈出口罩。比傳統(tǒng)意義上的非接觸電梯控制更簡捷、更方便、更智能。其功能能夠在疫情期間,降低由乘做電梯所導(dǎo)致的間接感染的風(fēng)險,對抗疫有一定的促進(jìn)作用,其創(chuàng)新性主要在于非接觸控制以及自動彈出口罩,具有一定的推廣價值。