楊 帆, 徐 軍
(哈爾濱理工大學(xué) 自動(dòng)化學(xué)院,黑龍江 哈爾濱 150080)
電源開關(guān)裝置無論是在生活還是工作中都比較常見,為了方便控制,人們通常會(huì)在不同工位上安放獨(dú)立的插排供自己用電器使用,但由于人為因素可能會(huì)在離開后忘記關(guān)閉電源開關(guān)[1]。據(jù)相關(guān)統(tǒng)計(jì),一部臺(tái)式計(jì)算機(jī)在關(guān)機(jī)狀態(tài)下1 h耗電量約為0.005 kW/h。除此之外,安全問題更加重要,由于設(shè)備電線老化,在無人看守時(shí),很容易造成火災(zāi)。同時(shí),在有電的狀態(tài)下,一些不法分子也可以通過U盤等設(shè)備跳過開機(jī)密碼,進(jìn)去系統(tǒng)進(jìn)行一些科研資源、數(shù)據(jù)報(bào)表的竊取。
目前,對于電源開關(guān)控制的系統(tǒng)主要是以集成電路(integrated circuit,IC)卡作為開關(guān)的“鑰匙”。通過不同IC卡與讀卡器之間的通信,配合信號發(fā)射器,控制對應(yīng)工位的電源開關(guān)。但通過系統(tǒng)實(shí)際中的應(yīng)用情況,通過IC卡進(jìn)行電源控制是不方便、不安全的。隨著手機(jī)行業(yè)的迅猛發(fā)展,人們上下班或上課很少隨身攜帶IC卡,取而代之的是用手機(jī)NFC等功能進(jìn)行簽到。除此之外,人們也可以使用其他人的IC卡進(jìn)行電源控制,大大降低了安全性。
本次設(shè)計(jì)通過提取人臉特征信號進(jìn)行電源的控制,不但增加了系統(tǒng)安全性,同時(shí)方便用戶進(jìn)行電源的控制,相比IC卡方式有了不同程度的提升。
整體系統(tǒng)主要包括4個(gè)部分,分別是基于OpenCV的人臉識(shí)別系統(tǒng)、基于Visual Basic的上位機(jī)客戶端、射頻信號發(fā)送端以及電源開關(guān)控制端。通過人臉識(shí)別系統(tǒng)對于人員進(jìn)行信息的錄入與識(shí)別,通過串口將識(shí)別的結(jié)果傳輸?shù)缴衔粰C(jī),經(jīng)過上位機(jī)數(shù)據(jù)庫匹配后經(jīng)過串口將身份認(rèn)證(ID)信息由發(fā)送端發(fā)送到相應(yīng)的電源開關(guān)端,整體結(jié)構(gòu)如圖1所示。
系統(tǒng)硬件主要分為射頻信號發(fā)送端和電源開關(guān)控制端。發(fā)送端和開關(guān)控制端采用相同的微控制器與射頻模塊。其中,發(fā)送端主要包括串口通信電路、掉電自保護(hù)電路,開關(guān)控制端主要包括設(shè)備編號撥碼電路,繼電器電路等。信號發(fā)送端和電源控制端實(shí)物電路板如圖2所示。
圖1 整體系統(tǒng)結(jié)構(gòu)示意
圖2 信號發(fā)送端與接收端控制板
在設(shè)計(jì)中選用的是Atmel公司生產(chǎn)基于AVR內(nèi)核的Atmega328p-au微處理器,集成了2 048 bit的RAM,32 KB的Flash,同時(shí)支持1 024 bit的E2PROM,一個(gè)串行接口,2個(gè)SPI通信接口和一個(gè)I2C接口,可以同時(shí)滿足系統(tǒng)對于電源開關(guān)的各項(xiàng)功能控制[2]。微處理器最小系統(tǒng)原理圖如圖3所示。
圖3 微處理器最小系統(tǒng)原理
考慮到需要射頻系統(tǒng)控制的距離范圍、從機(jī)數(shù)量和功耗要求,在設(shè)計(jì)中選用的是NRF24L01無線射頻模塊。NRF24L01內(nèi)置硬件鏈路層協(xié)議,與微控制器之間采用SPI通信方式,可在系統(tǒng)中長期穩(wěn)定工作。同時(shí)由于模塊正常狀態(tài)下的工作電壓是1.9~3.6 V,所以在硬件系統(tǒng)中加入了降壓環(huán)節(jié),選用AMS1117-3.3作為降壓芯片,將系統(tǒng)輸入的5 V電壓降至3.3 V供模塊正常工作。
在射頻信號發(fā)送端,考慮到可能由于通信或者USB電源接觸不穩(wěn)定等情況而造成電源開關(guān)端失控,所以在本次設(shè)計(jì)中加入了掉電自保護(hù)的功能,當(dāng)檢測到USB接口或者通信接口的電壓低于外接鋰電池電壓時(shí),便通過小型繼電器自動(dòng)切換供電電源,同時(shí)微處理器檢測到鋰電池端的IO口電平發(fā)生變化后,便通過射頻網(wǎng)絡(luò)向所有電源開關(guān)端發(fā)送關(guān)閉指令,實(shí)現(xiàn)了硬件自保護(hù)。掉電自保護(hù)原理圖如圖4所示。
圖4 掉電自保護(hù)電路原理
在電源開關(guān)接收端,為了方便人們可以對設(shè)備進(jìn)行編號接收發(fā)送的指令,在接收端使用了6位的撥碼開關(guān),實(shí)現(xiàn)1臺(tái)發(fā)送裝置同時(shí)控制64臺(tái)接收裝置。當(dāng)接收端通電之后,首先會(huì)檢測A0~A5引腳的電平狀態(tài),通過二進(jìn)制運(yùn)算計(jì)算出本臺(tái)機(jī)器的編號。在編碼中,“1”代表高電平,“0”代表低電平。例如將撥碼開關(guān)撥至“010100”,則通過二進(jìn)制計(jì)算
ID=20×0+21×1+22×0+23×1+24×0+25×0
(1)
得出此臺(tái)機(jī)器編號ID為“10”。
系統(tǒng)軟件設(shè)計(jì)主要分為硬件端程序設(shè)計(jì)、人臉識(shí)別單元設(shè)計(jì)以及Visual Basic上位機(jī)端設(shè)計(jì)。
對于發(fā)送端程序設(shè)計(jì),主要是將Visual Basic上位機(jī)后臺(tái)接收的結(jié)果通過串口傳輸至發(fā)送端,發(fā)送端微處理器接收到開或關(guān)的信號,并通過SPI通信接口發(fā)送給NRF24L01模塊,進(jìn)而通過射頻網(wǎng)絡(luò)發(fā)送到指定編號的電源開關(guān)接收端。而對于接收端程序設(shè)計(jì),則是先通過撥碼開關(guān)獲取當(dāng)前設(shè)備編號后,等待接收對應(yīng)的射頻開關(guān)指令,當(dāng)射頻模塊接收到指令信號后,微處理器會(huì)將判斷的結(jié)果通過IO引腳進(jìn)行高低電平的控制,進(jìn)而通過繼電器控制整體電源的開關(guān)通斷。發(fā)送端、接收端主程序流程如圖5所示。
圖5 發(fā)送端(左)接收端(右)程序流程
人臉識(shí)別系統(tǒng)設(shè)計(jì)流程主要包括人臉信息的訓(xùn)練與識(shí)別,整體系統(tǒng)均在Python環(huán)境下搭建,整體流程圖如圖6所示。
圖6 人臉識(shí)別系統(tǒng)流程
在進(jìn)行訓(xùn)練的過程中,利用了Haar-Like人臉檢測算法獲取當(dāng)前圖像的特征值,之后再經(jīng)過直方圖均衡處理。對于Haar-Like特征值的計(jì)算,是由空白矩形區(qū)域的權(quán)值乘以空白矩形區(qū)域像素和加上黑色矩形區(qū)域的權(quán)值乘以黑色矩形區(qū)域的像素和[3]
(2)
式中n為feature的矩形個(gè)數(shù),rectSum(ri)為矩形所圍圖像灰度的積分,wi為矩形的權(quán)值。
采用Haar-Like進(jìn)行特征值提取后,獲得了大量的數(shù)據(jù),為了防止原始圖特征值數(shù)據(jù)冗余,在設(shè)計(jì)中利用PCA算法對于圖像主要特征進(jìn)行降維處理,方便后續(xù)識(shí)別部分在低維中進(jìn)行計(jì)算。
最后在識(shí)別的過程中,將處理后的圖像向PCA特征子空間進(jìn)行投影,利用得到的坐標(biāo)值與PCA子空間圖像系數(shù)進(jìn)行對比,利用歐氏距離計(jì)算出最后識(shí)別的可信度
(3)
式中C為可信度,D為歐氏距離,S為參與訓(xùn)練的人臉數(shù)目,eigenVecN為人臉特征向量數(shù)[4~6]。
在人臉識(shí)別系統(tǒng)中,整體UI使用Pyqt技術(shù)進(jìn)行進(jìn)行設(shè)計(jì),主界面總體布局為當(dāng)前時(shí)間、人臉錄入和人臉識(shí)別區(qū)域;人臉錄入子界面包括圖像采集步驟、圖像篩選步驟以及錄入步驟,而在人臉識(shí)別子界面主要包括圖像檢測匹配步驟。用戶界面(user interface,UI)如圖7所示。
圖7 UI界面
對于Visual Basic上位機(jī)來說,主要是進(jìn)行數(shù)據(jù)庫信息比對、UI設(shè)計(jì)交互和串口信息傳輸。通過人臉識(shí)別系統(tǒng)識(shí)別的結(jié)果與數(shù)據(jù)庫比對后,在Visual Basic客戶端上顯示不同工位開關(guān)方塊的顏色變化。并將比對的結(jié)果信息并打印信息到顯示界面到窗口欄,顯示開關(guān)電源用戶的信息,如姓名、工號、部門以及開關(guān)機(jī)時(shí)間等,最后通過串口輸出數(shù)據(jù)至微處理器端。
系統(tǒng)測試主要是對于上位機(jī)的狀態(tài)顯示以及電源開關(guān)的控制。人臉識(shí)別系統(tǒng)將識(shí)別后的結(jié)果通過串口傳送給Visual Basic客戶端后,在界面顯示出用戶的信息與開關(guān)機(jī)時(shí)間,并將開關(guān)機(jī)指令通過串口經(jīng)發(fā)送端傳送給對應(yīng)電源開關(guān)接收端,系統(tǒng)測試場景如圖8所示。
圖8 系統(tǒng)測試場景
上位機(jī)界面如圖8計(jì)算機(jī)中所示。左側(cè)部分為對應(yīng)工位開關(guān)狀態(tài),紅色為關(guān)閉,綠色為開啟;右側(cè)部分為信息顯示界面,可以顯示人員姓名、部門、簽到時(shí)間、離開時(shí)間等。實(shí)現(xiàn)第一次識(shí)別開啟電源,再次識(shí)別關(guān)閉電源。
針對IC卡控制電源開關(guān)技術(shù)的不足,本文設(shè)計(jì)了一種通過人臉識(shí)別技術(shù)控制電源開關(guān)的系統(tǒng),并在實(shí)際實(shí)驗(yàn)中進(jìn)行了測試,測試結(jié)果表明:整體系統(tǒng)可以實(shí)現(xiàn)通過人臉識(shí)別信號進(jìn)行獨(dú)立電源的開關(guān)機(jī)控制,可以更高效的節(jié)約電能,提升整體安全性,在人臉識(shí)別應(yīng)用場景中有著廣泛的應(yīng)用前景。