潘昊飛,王曉樂(lè),李浩宇,陳濤
(安徽新華學(xué)院大數(shù)據(jù)與人工智能學(xué)院,安徽合肥,230088)
隨著停車(chē)場(chǎng)的規(guī)模越來(lái)越大,人們對(duì)其安全性、便捷性的要求也越來(lái)越高,在管理上也需要一種高效快捷的管理模式,實(shí)現(xiàn)對(duì)停車(chē)空間的最大利用。如圖1所示,智能停車(chē)場(chǎng)由硬件系統(tǒng)和軟件系統(tǒng)組成。硬件系統(tǒng)包括車(chē)位檢測(cè)、門(mén)禁系統(tǒng)和車(chē)牌識(shí)別系統(tǒng)。軟件系統(tǒng)分為管理系統(tǒng)和用戶(hù)界面。車(chē)位檢測(cè)系統(tǒng)可以判斷車(chē)位是否被占用,并將車(chē)位的狀態(tài)上傳至上位機(jī)。系統(tǒng)經(jīng)過(guò)數(shù)據(jù)分析后,會(huì)將空余車(chē)位數(shù)顯示在屏幕上。車(chē)牌識(shí)別和門(mén)禁系統(tǒng)在出入口處實(shí)現(xiàn)車(chē)輛進(jìn)出以及車(chē)牌信息的采集,同時(shí)會(huì)將采集到的信息傳入管理系統(tǒng)并開(kāi)始計(jì)費(fèi)。通過(guò)各個(gè)子系統(tǒng)的相互配合實(shí)現(xiàn)無(wú)人管理、智能引導(dǎo)和車(chē)位查詢(xún)等方便快捷的操作,不僅給車(chē)主帶來(lái)方便,也給停車(chē)場(chǎng)管理人員帶來(lái)方便,同時(shí)也提高了經(jīng)濟(jì)效益。
圖1 智能停車(chē)場(chǎng)系統(tǒng)功能圖
智能停車(chē)場(chǎng)硬件組成框圖如圖2所示,主要硬件有SG90微 型 舵 機(jī)、E18-D50NK光 電 開(kāi) 關(guān)、Raspberry Pi Camera Rev 1.2攝像機(jī)、DHT11數(shù)字溫濕度傳感器、LCD1602顯示屏、HC-SR04超聲波傳感器和一塊7寸主顯示器。光電開(kāi)關(guān)負(fù)責(zé)收集汽車(chē)到來(lái)的信號(hào),并將信號(hào)傳Raspberry Pi主板,主板會(huì)根據(jù)此信號(hào)控制攝像頭拍照采集數(shù)據(jù)。攝像頭再將采集到的數(shù)據(jù)回傳給Raspberry Pi。Raspberry Pi會(huì)根據(jù)數(shù)據(jù)來(lái)控制門(mén)禁舵機(jī)的開(kāi)啟和關(guān)閉。DHT11負(fù)責(zé)進(jìn)行溫度采集,將采集到的數(shù)據(jù)傳遞給Arduino主板。LCD1602則負(fù)責(zé)接受Arduino傳來(lái)的數(shù)據(jù)并將其在LCD屏幕上顯示。超聲波傳感器負(fù)責(zé)收集當(dāng)前停車(chē)場(chǎng)內(nèi)車(chē)位是否被占用的情況,Arduino同時(shí)控制多個(gè)超聲波傳感器,同時(shí)對(duì)超聲波傳感器采集數(shù)據(jù)分析,從而得出停車(chē)場(chǎng)的剩余位置的數(shù)量。
圖2 硬件框圖
門(mén)禁系統(tǒng)控制舵機(jī)和光電開(kāi)關(guān)完成車(chē)輛的入庫(kù)和出庫(kù)。需要為光電開(kāi)關(guān)添加一個(gè)邊沿檢測(cè)函數(shù)。當(dāng)車(chē)輛進(jìn)入時(shí),光電開(kāi)關(guān)會(huì)輸出一個(gè)由低到高的電平跳變信號(hào),系統(tǒng)檢測(cè)到這一變化,隨即發(fā)生中斷,觸發(fā)回調(diào)函數(shù)。這樣可以保證系統(tǒng)得到及時(shí)的響應(yīng),也不會(huì)受到其它進(jìn)程的影響而導(dǎo)致檢測(cè)滯后。
GPIO.add_event_detect(CHECK_BUTTON_NUMBER,GPIO.RISING,callback=StartCheck)
在回調(diào)函數(shù)中,系統(tǒng)會(huì)創(chuàng)建一個(gè)線程,調(diào)用車(chē)牌識(shí)別系統(tǒng),當(dāng)成功識(shí)別到車(chē)牌后,系統(tǒng)調(diào)用舵機(jī)驅(qū)動(dòng)函數(shù),打開(kāi)門(mén)禁,讓車(chē)輛進(jìn)入。等待車(chē)輛完全進(jìn)入后,門(mén)禁會(huì)自動(dòng)關(guān)閉。在車(chē)輛進(jìn)入過(guò)程中,需要通過(guò)光電開(kāi)關(guān)不斷監(jiān)測(cè)電平的變化以確定車(chē)輛是否完全進(jìn)入,保證在車(chē)輛進(jìn)入的過(guò)程中,門(mén)禁不會(huì)突然關(guān)閉,避免對(duì)汽車(chē)和駕駛員造成傷害。主要代碼如下:
def allowPass():
setServoAngle(DJ_BCM_NUMBER,OPEN)#控制舵機(jī)打開(kāi)門(mén)禁
while GPIO.input(CHECK_BUTTON_NUMBER):#不斷檢測(cè)電平變化
time.sleep(2)# 延遲兩秒后關(guān)閉門(mén)禁,避免汽車(chē)沒(méi)有來(lái)得及駛?cè)?/p>
setServoAngle(DJ_BCM_NUMBER,CLOSE)#關(guān)閉門(mén)禁
車(chē)位檢測(cè)由Arduino主板控制超聲波傳感器完成。傳感器置于車(chē)位頂部或則地下,利用超聲波傳感器得到車(chē)輛與傳感器間的距離。通過(guò)對(duì)距離參數(shù)的判定,確認(rèn)車(chē)位是否被占用。在獲得數(shù)據(jù)后,開(kāi)啟串口,將此信息發(fā)送給Raspberry Pi主板。
在主程序中,創(chuàng)建一個(gè)監(jiān)聽(tīng)串口的線程,當(dāng)新傳入的參數(shù)與上一次不一樣時(shí),更新數(shù)據(jù)庫(kù)中的信息,反之丟棄。主要代碼如下:
if park_num != oldpark_num: #新傳入的數(shù)據(jù)與舊數(shù)據(jù)不一致
oldpark_num = park_num #更新數(shù)據(jù)
mydb.updatePark(park_num)#更新庫(kù)
在本系統(tǒng)中,由于設(shè)計(jì)了門(mén)禁系統(tǒng),可判斷待識(shí)別區(qū)域是否有需要識(shí)別的車(chē)輛,這樣不用在系統(tǒng)中頻繁的調(diào)用車(chē)牌識(shí)別功能,提高了系統(tǒng)運(yùn)行效率。車(chē)牌識(shí)別的流程如圖3所示。
圖3 車(chē)牌識(shí)別流程圖
系統(tǒng)完成車(chē)牌識(shí)別后,還要對(duì)輸出的車(chē)牌信息判斷。如果車(chē)牌號(hào)碼在庫(kù)中存在,則說(shuō)明車(chē)輛已經(jīng)入庫(kù)。用戶(hù)需要完成繳費(fèi)后,門(mén)禁系統(tǒng)才會(huì)放行。
(1)主程序
主程序負(fù)責(zé)組合各個(gè)子功能模塊,其流程圖如圖4所示。
圖 4 主程序流程圖
(2)車(chē)輛管理
管理人員通過(guò)管理系統(tǒng),隨時(shí)查看車(chē)輛的狀態(tài),判斷某一輛車(chē)是否在車(chē)庫(kù)內(nèi)。同時(shí)也要對(duì)每一輛入庫(kù)的時(shí)長(zhǎng)進(jìn)行統(tǒng)計(jì),對(duì)“僵尸”車(chē)及時(shí)清理,避免遭受損失。
(3)車(chē)輛計(jì)費(fèi)
當(dāng)車(chē)輛進(jìn)入車(chē)庫(kù)時(shí),車(chē)輛信息自動(dòng)錄入數(shù)據(jù)庫(kù)內(nèi),同時(shí)也開(kāi)啟計(jì)時(shí)。當(dāng)用戶(hù)出庫(kù)時(shí),系統(tǒng)掃描車(chē)牌號(hào),計(jì)算出費(fèi)用。用戶(hù)通過(guò)web完成付款后,便可離開(kāi)。
用戶(hù)通過(guò)瀏覽器訪問(wèn)系統(tǒng)網(wǎng)站,實(shí)現(xiàn)三大主要功能:
(1)車(chē)輛繳費(fèi):用戶(hù)任何時(shí)候都可以查詢(xún)到繳費(fèi)信息,也可以在任何時(shí)候付款。為了防止用戶(hù)過(guò)早付款造成經(jīng)濟(jì)損失,在出口處也設(shè)置了二次驗(yàn)證。當(dāng)車(chē)輛經(jīng)過(guò)出口時(shí),會(huì)再次統(tǒng)計(jì)費(fèi)用。如果此次費(fèi)用和用戶(hù)付款金額不匹配,那么就不允許放行,用戶(hù)必須再次付款。
(2)車(chē)輛查詢(xún):用戶(hù)可以在任何時(shí)候查詢(xún)到自己的車(chē)輛信息,包括入庫(kù)時(shí)間,停放時(shí)間,以及繳費(fèi)信息。用戶(hù)可以在此界面對(duì)車(chē)輛進(jìn)行付款。
(3)車(chē)位查詢(xún):用戶(hù)未駛?cè)胲?chē)庫(kù)時(shí),可以在此界面上查詢(xún)到車(chē)庫(kù)車(chē)位情況,并且會(huì)為用戶(hù)自動(dòng)規(guī)劃合理路線。規(guī)劃路線中的車(chē)位并不會(huì)和用戶(hù)車(chē)輛進(jìn)行綁定。
(1)測(cè)試模型
測(cè)試模型如圖5所示。
圖5 測(cè)試模型
(2)主程序界面
主程序界面如圖6所示。經(jīng)測(cè)試,可以實(shí)現(xiàn)對(duì)入口的實(shí)時(shí)監(jiān)控,能自動(dòng)識(shí)別處理車(chē)牌信息并且自動(dòng)控制車(chē)輛入庫(kù)出庫(kù)。
圖6 主程序界面
(3)用戶(hù)界面
用戶(hù)界面使用web進(jìn)行設(shè)計(jì),這樣不需要用戶(hù)下載其他的軟件,方便用戶(hù)操作。如圖7所示,是部分用戶(hù)界面的截圖,基本滿(mǎn)足了車(chē)輛繳費(fèi)、車(chē)輛查詢(xún)和車(chē)位查詢(xún)。
圖7 車(chē)輛查詢(xún)和付款
(1)系統(tǒng)進(jìn)行車(chē)牌識(shí)別時(shí)拍攝角度對(duì)結(jié)果有影響。所以在設(shè)計(jì)時(shí)應(yīng)當(dāng)考慮多次掃描識(shí)別,進(jìn)行統(tǒng)計(jì)后選取置信度較高的車(chē)牌作為實(shí)際輸出結(jié)果,可以大大提高識(shí)別率。
(2)本設(shè)計(jì)整體結(jié)構(gòu)較為完善,且模擬運(yùn)行情況良好,可以用作商用停車(chē)場(chǎng)設(shè)計(jì)的參考模型。