許云霄 萬(wàn)航 郁凱 楊敬元 馬怡楠 胡琦 繆吳霞 呂偉臻
【摘要】為了解決雨天公共大廳及走廊的地面濕滑問(wèn)題,本文提出一種基于視頻識(shí)別的地面干燥技術(shù)。該技術(shù)利用攝像頭獲取地面濕滑情況,利用matlab監(jiān)控軟件進(jìn)行識(shí)別計(jì)算,利用單片機(jī)控制干燥風(fēng)扇的啟停與轉(zhuǎn)速,監(jiān)控軟件與單片機(jī)之間通過(guò)串口連接。文中介紹了技術(shù)原理與所開(kāi)發(fā)的原型驗(yàn)證系統(tǒng),系統(tǒng)運(yùn)行情況表明了該技術(shù)的可行性。
【關(guān)鍵詞】視頻識(shí)別;地面干燥; Matlab;單片機(jī)
1.引言
公共大廳及走廊平時(shí)人來(lái)熙攘川流不息,但下雨天由于鞋底沾帶雨水,使得地面濕滑難行,安全事故易發(fā),老人與孩子更是令人擔(dān)心。由于地面濕滑引發(fā)的安全事故與法律糾紛也屢見(jiàn)報(bào)端。為了解決雨天室內(nèi)地面濕滑問(wèn)題,我們可以采用地面防滑溶劑或者推桿式地面烘干器,但是這兩種方法都需要專(zhuān)人維護(hù)或者操作,自動(dòng)化程度不高。有鑒于此,本文提出一種基于視頻識(shí)別的地面干燥系統(tǒng)設(shè)計(jì)方案,該系統(tǒng)無(wú)需專(zhuān)人值守,可自動(dòng)運(yùn)行。本文圍繞原型驗(yàn)證系統(tǒng),介紹該技術(shù)的各個(gè)細(xì)節(jié)。
2.系統(tǒng)總體方案
本系統(tǒng)利用攝像頭監(jiān)視地面,通過(guò)地面色差識(shí)別潮濕區(qū)域。潮濕面積與潮濕下限設(shè)定進(jìn)行比較后,確定是否需要鼓風(fēng)干燥。干燥風(fēng)扇采用開(kāi)環(huán)比例控制,風(fēng)扇轉(zhuǎn)速正比于當(dāng)前潮濕面積與下限設(shè)定值之差。系統(tǒng)每0.5秒鐘采集一次圖像,進(jìn)行一次識(shí)別與控制計(jì)算,開(kāi)啟后可持續(xù)自動(dòng)運(yùn)行。系統(tǒng)由兩部分組成:視頻監(jiān)控軟件和干燥風(fēng)扇單片機(jī)控制系統(tǒng)。監(jiān)控軟件利用Matlab開(kāi)發(fā),負(fù)責(zé)攝像頭的驅(qū)動(dòng)、潮濕面積識(shí)別、參數(shù)設(shè)定和實(shí)時(shí)信息顯示,風(fēng)扇控制系統(tǒng)是一個(gè)單片機(jī)系統(tǒng),利用串行口與監(jiān)控軟件通訊,負(fù)責(zé)風(fēng)扇的調(diào)速控制與測(cè)速。監(jiān)控軟件與單片機(jī)之間的通訊協(xié)議非常簡(jiǎn)單,每0.5秒互發(fā)一個(gè)字節(jié)的數(shù)據(jù)。監(jiān)控軟件下發(fā)數(shù)據(jù)給定風(fēng)扇轉(zhuǎn)速,取值范圍在0~100之間,表示占最高轉(zhuǎn)速的百分比。0表示停止干燥,100表示全速轉(zhuǎn)動(dòng)。單片機(jī)上傳值表示測(cè)速值,單位為“轉(zhuǎn)數(shù)/0.5秒”。
3.干燥風(fēng)扇單片機(jī)控制系統(tǒng)
3.1 硬件設(shè)計(jì)
圖1 風(fēng)扇控制電路原理圖
硬件主要解決風(fēng)扇的驅(qū)動(dòng)、調(diào)速與測(cè)速問(wèn)題。原型驗(yàn)證系統(tǒng)采用CPU四線風(fēng)扇,四條線分別是驅(qū)動(dòng)電源(黃色)、驅(qū)動(dòng)地(黑色)、調(diào)速(藍(lán)色)與測(cè)速(綠色)。調(diào)速線接受PWM波輸入,波形占空比對(duì)應(yīng)最高轉(zhuǎn)速百分比,測(cè)速線輸出脈沖信號(hào),風(fēng)扇內(nèi)部封裝有霍爾傳感器,每轉(zhuǎn)一圈輸出一個(gè)高電平脈沖,記錄單位時(shí)間內(nèi)的脈沖數(shù),即可獲得風(fēng)扇的轉(zhuǎn)速[1]。硬件電路原理圖如圖1所示。風(fēng)扇利用12V穩(wěn)壓電源獨(dú)立供電,通過(guò)繼電器控制電源通斷,從而控制風(fēng)扇的啟停,繼電器利用P3.7口控制。調(diào)速PWM波形由P1.1口輸出,測(cè)速脈沖信號(hào)引到P3.3外部中斷INT1口,利用中斷捕獲脈沖信號(hào)。
3.2 單片機(jī)軟件設(shè)計(jì)
單片機(jī)系統(tǒng)的任務(wù)主要有串行通訊、根據(jù)給定風(fēng)扇轉(zhuǎn)速啟停風(fēng)扇、生成調(diào)速PWM波和響應(yīng)外部中斷進(jìn)行測(cè)速,程序架構(gòu)采用基于中斷的輪轉(zhuǎn)結(jié)構(gòu)[2]。主程序在完成初始化工作之后進(jìn)入無(wú)限循環(huán),先根據(jù)串口的最新數(shù)據(jù)啟停繼電器并確定PWM調(diào)速信號(hào)占空比,再判斷0.5秒定時(shí)是否到達(dá),如果到達(dá)則發(fā)送測(cè)速值。外部中斷服務(wù)程序僅對(duì)測(cè)速脈沖進(jìn)行計(jì)數(shù),定時(shí)器0中斷服務(wù)程序用于生成調(diào)速PWM波高低電平,并實(shí)現(xiàn)0.5秒計(jì)時(shí)。
3.3 基于繼電器與定時(shí)器的風(fēng)扇調(diào)速
對(duì)風(fēng)扇我們采用繼電器控電,PWM波調(diào)速和脈沖測(cè)速的控制方法。P1^1作為PWM波輸出引腳,T0用作PWM波波形生成定時(shí)器。對(duì)定時(shí)器的初始化采用總線方式,TMOD=0x21,T0作為16位定時(shí)器用來(lái)控制中斷。測(cè)控速由兩個(gè)中斷TF0與INT1(ET0=1.EX=1)實(shí)現(xiàn),初始化時(shí)便打開(kāi)總中斷(EA=1)。風(fēng)扇的12V供電電源接入繼電器的常開(kāi)觸點(diǎn),軟件初始化時(shí)將繼電器斷開(kāi),此后根據(jù)PC機(jī)傳輸?shù)男盘?hào)更改狀態(tài)值relaystat從而讓單片機(jī)來(lái)處理繼電器的開(kāi)關(guān)。PWM是通過(guò)改變周期矩形波的占空比從而達(dá)到要求電壓的一種調(diào)壓方法。設(shè)風(fēng)扇電機(jī)始終接通電源時(shí)的最大速度為Vmax,占空比為D,則平均轉(zhuǎn)速為V=Vmax×D。在軟件中,我們?cè)O(shè)定的PWM波周期為1000us,初始占空比為50%。設(shè)定定時(shí)器T0每1us溢出中斷一次,計(jì)數(shù)變量click隨中斷每1us自增一次(click++)。設(shè)變量hightime為高電平持續(xù)時(shí)間,PWM波高低電平的生成程序?yàn)閕f(click>1000) click=0;if(click<=hightime)p11=1;else p11=0;。
3.4 基于外部中斷的風(fēng)扇測(cè)速
風(fēng)扇的測(cè)速脈沖信號(hào)連接到P3^3口,通過(guò)響應(yīng)外部中斷可以記錄脈沖數(shù),測(cè)速定時(shí)利用定時(shí)器T0實(shí)現(xiàn)。由于計(jì)數(shù)器計(jì)數(shù)值被定義為字符型變量,最大值為255,不能滿足0.5秒的定時(shí)需要,我們定義了三個(gè)計(jì)數(shù)器count1,count2和count3,通過(guò)循環(huán)嵌套實(shí)現(xiàn)0.5秒定時(shí)計(jì)數(shù)。在INT1中斷服務(wù)程序中通過(guò)++pulsnum使脈沖次數(shù)加1,在主循環(huán)中通過(guò)以下代碼使count3清零并獲得測(cè)速值cesu:If(count3>=4){count3=0;cesu=pulsnum; pulsnum=0;}。
3.5 基于串行口的通訊
原型系統(tǒng)采用通用異步收發(fā)器(UART)RS-232作為監(jiān)控軟件與單片機(jī)的通訊鏈路。數(shù)據(jù)接收方式采用查詢法,發(fā)送采用0.5秒定時(shí)方式。T1用為可自動(dòng)重裝的8位定時(shí)器, 作為波特率發(fā)生器。SCON=0x50將串行口初始化為10位異步收發(fā)方式并且允許PC機(jī)向軟件發(fā)送數(shù)據(jù)。波特率選定為9600bps,根據(jù)公式:
[2n-]
計(jì)算出的初值0xFD賦值給TH1和TL1。SMOD取值為0, PCON=0x00定義波特率不倍增。查詢讀取緩沖寄存器的代碼為:if(RI==1) {EA=0;RI=0;tmpdata=SBUF;},給定風(fēng)扇轉(zhuǎn)速被讀取到tmpdata中。發(fā)送測(cè)速值cesu的代碼為:SBUF=cesu; while(!TI); TI = 0;。
4.基于視頻識(shí)別的Matlab的監(jiān)控軟件
4.1 監(jiān)控軟件概述
監(jiān)控軟件是系統(tǒng)的人機(jī)接口,向用戶顯示地面及設(shè)備的狀態(tài)信息,獲取用戶的參數(shù)設(shè)定。軟件基于Matlab的GUIDE開(kāi)發(fā),完成的軟件界面如圖2所示。界面的右下方是監(jiān)控區(qū)域的實(shí)時(shí)畫(huà)面,以黑白二值圖象顯示干濕區(qū)域,白色表示干燥區(qū)域,黑色表示潮濕區(qū)域。界面左部是監(jiān)控參數(shù)顯示設(shè)定區(qū),其中下限設(shè)定可通過(guò)鼠標(biāo)操作修改。點(diǎn)擊“啟動(dòng)干燥”按鈕后,風(fēng)扇會(huì)根據(jù)當(dāng)前潮濕面積與下限設(shè)定值的大小自動(dòng)運(yùn)轉(zhuǎn),點(diǎn)擊“停止干燥”按鈕后,系統(tǒng)只監(jiān)控地面狀態(tài),風(fēng)扇停止運(yùn)轉(zhuǎn)。
圖2 監(jiān)控軟件界面
4.2 基于定時(shí)器的定時(shí)監(jiān)控操作實(shí)現(xiàn)
監(jiān)控軟件每0.5秒鐘采集一次圖像,進(jìn)行識(shí)別與計(jì)算處理,還要隨時(shí)響應(yīng)用戶的按鈕操作,與單片機(jī)進(jìn)行通訊,所以處理好軟件的實(shí)時(shí)性和定時(shí)任務(wù),是軟件開(kāi)發(fā)的基本工作。我們采用了Matlab的timer定時(shí)器實(shí)現(xiàn)定時(shí)任務(wù),實(shí)時(shí)任務(wù)由相關(guān)控件的Callback函數(shù)處理[3]。在figure控件的OpeningFcn函數(shù)中,用代碼handles.timer=timer(‘TimerFcn, {@timerCallback, handles}, ‘ExecutionMode, ‘fixedSpacing,‘Period, 0.5); 初始化定時(shí)器,用代碼start(handles.timer);啟動(dòng)定時(shí)器。然后定義了timer的響應(yīng)函數(shù)function timerCallback(hObject, eventdata, handles),在timerCallback中進(jìn)行圖像獲取、潮濕面積識(shí)別、二值化圖像顯示、當(dāng)前潮濕面積和風(fēng)扇狀態(tài)轉(zhuǎn)速更新,同時(shí)根據(jù)按鈕的點(diǎn)擊情況確定是否向單片機(jī)發(fā)送轉(zhuǎn)速指令。在figure控件的DeleteFcn函數(shù)中利用代碼stop(handles.timer); 對(duì)定時(shí)器進(jìn)行關(guān)閉操作。
4.3 基于USB攝像頭的潮濕面積識(shí)別技術(shù)
這部分內(nèi)容主要包括兩部分:Matlab環(huán)境下攝像頭對(duì)象的操作和潮濕面積的識(shí)別。我們首先在figure控件的OpeningFcn函數(shù)中,用代碼handles.obj=videoinput('winvideo',1,'YUY2_640x480');定義了攝像頭對(duì)象,然后用start(handles.obj);開(kāi)啟攝像頭,隨后在timerCallback中進(jìn)行圖像數(shù)據(jù)獲取。與定時(shí)器對(duì)象類(lèi)似,在figure控件的DeleteFcn函數(shù)中利用代碼stop(handles.obj);對(duì)攝像頭進(jìn)行關(guān)閉操作。潮濕面積的獲取采用先對(duì)圖像二值化后計(jì)算面積的方法[4]。通過(guò)framenow=getsnapshot(handles.obj);獲取圖像,通過(guò)graynow=rgb2gray(framenow);[level EM]=graythresh(graynow);Bnow=im2bw(graynow,level);獲取二值化圖像Bnow,通過(guò)imshow(Bnow);顯示二值化圖像,通過(guò)arearatio=round(100-100*bwarea(Bnow)/bwarea(graynow));計(jì)算潮濕面積百分比arearatio,再通過(guò)set(handles.text2,'string', num2str(area ratio));顯示當(dāng)前潮濕面積百分比。
圖3 原型驗(yàn)證系統(tǒng)
4.4 基于串行通訊的風(fēng)扇干燥控制
監(jiān)控軟件的最終功用是根據(jù)潮濕面積與設(shè)定值之差控制風(fēng)扇,而風(fēng)扇控制指令通過(guò)串行口發(fā)送給單片機(jī)。Matlab支持對(duì)串行口的訪問(wèn),首先我們?cè)趂igure控件的OpeningFcn函數(shù)中用代碼handles.scom=serial ('COM1');定義了串行口對(duì)象,在設(shè)定相關(guān)參數(shù)handles.scom.Terminator='';handles.scom.InputBuffer Size=20;handles.scom.OutputBufferSize=20;handles.scom.Timeout=0.1;之后通過(guò)fopen(handles.Sco m);打開(kāi)串口。風(fēng)扇給定轉(zhuǎn)速fanspeed的發(fā)送采用fwrite(handles.scom,fanspeed);,風(fēng)扇測(cè)速值通過(guò)fancesu=fread(handles.scom);讀取。當(dāng)然,串行口對(duì)象也要在figure控件的DeleteFcn函數(shù)中利用代碼fclose(handles.scom);進(jìn)行關(guān)閉。風(fēng)扇給定轉(zhuǎn)速正比于當(dāng)前潮濕面積與下限設(shè)定之差,相當(dāng)于比例控制。下限設(shè)定值限于5%到90%之間,非法輸入用程序進(jìn)行糾正。
圖4 運(yùn)行試驗(yàn)測(cè)試曲線
5.原型驗(yàn)證系統(tǒng)及運(yùn)行試驗(yàn)
5.1 原型驗(yàn)證系統(tǒng)概況
我們開(kāi)發(fā)成功的原型驗(yàn)證系統(tǒng)見(jiàn)圖3,型材框架的底部用水寫(xiě)紙模擬地面,水寫(xiě)紙的頂端裝有風(fēng)扇,框架頂部安裝攝像頭,單片機(jī)系統(tǒng)固定在框架上,監(jiān)控計(jì)算機(jī)與攝像頭和單片機(jī)相連。用水將紙打濕,啟動(dòng)監(jiān)控軟件,可以看到當(dāng)前采集畫(huà)面的二值化圖像。當(dāng)前潮濕面積為56%,潮濕面積下限設(shè)定為20%,干燥吹風(fēng)狀態(tài)為“停止”,轉(zhuǎn)速為0轉(zhuǎn)/分鐘。點(diǎn)擊“啟動(dòng)干燥”按鈕后,干燥吹風(fēng)狀態(tài)變?yōu)椤斑\(yùn)行”,轉(zhuǎn)速變?yōu)?800轉(zhuǎn)/分鐘。運(yùn)行大概2分鐘后,當(dāng)前潮濕面積變?yōu)?8%,干燥吹風(fēng)狀態(tài)再次變?yōu)椤巴V埂保D(zhuǎn)速也變回0轉(zhuǎn)/分鐘。把潮濕面積下限設(shè)定更改為5%,風(fēng)扇再次啟動(dòng)吹風(fēng),直至當(dāng)前潮濕面積減小到4%停止。
5.2 調(diào)速與測(cè)速運(yùn)行試驗(yàn)
為了驗(yàn)證整個(gè)系統(tǒng)的調(diào)速與測(cè)速效果,我們做了一個(gè)試驗(yàn)。利用串口大師模擬監(jiān)控軟件,按一定的規(guī)律下發(fā)轉(zhuǎn)速給定值,然后與單片機(jī)上傳的測(cè)速值進(jìn)行比較,觀察風(fēng)扇的控制情況。運(yùn)行試驗(yàn)測(cè)試曲線如圖4所示。從圖中可以看出,風(fēng)扇很好地按照給定轉(zhuǎn)速旋轉(zhuǎn),且具有一定的慣性和超調(diào),說(shuō)明風(fēng)扇調(diào)速與測(cè)速環(huán)節(jié)的設(shè)計(jì)是成功的。
6.總結(jié)
本文圍繞原型驗(yàn)證系統(tǒng),介紹了一種基于視頻識(shí)別的潮濕地面干燥技術(shù)。該系統(tǒng)可以識(shí)別地面潮濕情況,根據(jù)參數(shù)設(shè)定自動(dòng)啟動(dòng)鼓風(fēng)干燥,使地面保持干燥。系統(tǒng)自動(dòng)化程度高,無(wú)需專(zhuān)人值守,可以彌補(bǔ)現(xiàn)有技術(shù)方案的不足,能廣泛應(yīng)用于賓館、商場(chǎng)、餐廳、地下通道等室內(nèi)公共場(chǎng)所,解決雨天鞋底沾水地面濕滑帶來(lái)的安全問(wèn)題,值得推廣。
參考文獻(xiàn)
[1]百度文庫(kù).4針CPU風(fēng)扇原理[DB/OL].http://wenku.baidu.com/view/7a76a2fb0242a8956bece45b. html.2014-8-7.
[2]楊欣.51單片機(jī)應(yīng)用從零開(kāi)始[M].北京:清華大學(xué)出版社,2013.
[3]張志涌.精通 MATLAB6.5版[M].北京:北京航空航天大學(xué)出版社,2003.
[4]周品.Matlab圖像處理與圖形用戶界面設(shè)計(jì)[M].北京:清華大學(xué)出版社,2013.
項(xiàng)目來(lái)源:上海理工大學(xué)2014年度校級(jí)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目(項(xiàng)目編號(hào):XJ2014069);項(xiàng)目組成員:許云霄、萬(wàn)航、郁凱、楊敬元、馬怡楠、胡琦、繆吳霞、呂偉臻;項(xiàng)目指導(dǎo)老師:劉歌群。