隨著經(jīng)濟(jì)水平和人們生活質(zhì)量的不斷提高,機(jī)動(dòng)車(chē)數(shù)量迅速增加,傳統(tǒng)停車(chē)系統(tǒng)無(wú)法滿(mǎn)足高速增長(zhǎng)的停車(chē)需求,智能停車(chē)管理系統(tǒng)的研究勢(shì)在必行。通過(guò)對(duì)傳統(tǒng)停車(chē)系統(tǒng)的分析,研究了智能停車(chē)系統(tǒng)需具備的基本功能,并以ZigBee傳感網(wǎng)絡(luò)、MQTT協(xié)議、Node.js與O2O模式等作為關(guān)鍵技術(shù),提出系統(tǒng)的整體架構(gòu)、系統(tǒng)組成和實(shí)現(xiàn)技術(shù),該系統(tǒng)可有效利用城市停車(chē)資源,減輕停車(chē)壓力。
王中生,韓康
(西安工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,陜西 西安 710021)
智能停車(chē);ZigBee;MQTT;Node.js;O2O
隨著我國(guó)經(jīng)濟(jì)高速增長(zhǎng)、城市化進(jìn)程不斷加快,機(jī)動(dòng)車(chē)的數(shù)量迅速增加,日益增長(zhǎng)的停車(chē)需求與城市所能提供的停車(chē)位數(shù)量之間的矛盾越來(lái)越突出,停車(chē)問(wèn)題已經(jīng)成為影響城市交通可持續(xù)發(fā)展的瓶頸。然而,傳統(tǒng)停車(chē)場(chǎng)由于功能單一、效率低下、自動(dòng)化程度低,己經(jīng)不能滿(mǎn)足人們的停車(chē)需求,因此發(fā)展城市各處停車(chē)場(chǎng)的智能化建設(shè)對(duì)于改善整個(gè)城市的交通管理狀況起著至關(guān)重要的作用[1]。
傳統(tǒng)停車(chē)場(chǎng)在停車(chē)效率、能源消耗、安全性能、車(chē)場(chǎng)管理運(yùn)營(yíng)等方面已不能滿(mǎn)足現(xiàn)代化的停車(chē)發(fā)展需求,多數(shù)傳統(tǒng)停車(chē)系統(tǒng)存在以下問(wèn)題。
(1)停車(chē)系統(tǒng)僅記錄停車(chē)場(chǎng)內(nèi)車(chē)輛數(shù)目或剩余車(chē)位數(shù)目,無(wú)法提供具體的停泊位置信息。如果停車(chē)場(chǎng)規(guī)模較大,車(chē)主很難快速找到合適的停車(chē)位。
(2)無(wú)法提供空余停車(chē)位在線顯示功能。對(duì)于一個(gè)開(kāi)放性停車(chē)場(chǎng),車(chē)主無(wú)法了解到該停車(chē)場(chǎng)是否會(huì)有空余車(chē)位,等到車(chē)主到達(dá)該停車(chē)場(chǎng)時(shí)才發(fā)現(xiàn)已經(jīng)停滿(mǎn),這無(wú)疑是對(duì)時(shí)間和資源的浪費(fèi)。
(3)停車(chē)系統(tǒng)之間很少進(jìn)行資源共享。當(dāng)前各個(gè)停車(chē)場(chǎng)的系統(tǒng)是各自分離的“信息孤島”[2],停車(chē)系統(tǒng)之間無(wú)法進(jìn)行數(shù)據(jù)共享,即使某些停車(chē)場(chǎng)爆滿(mǎn),而另一些停車(chē)場(chǎng)有大量空余車(chē)位,系統(tǒng)也無(wú)法為用戶(hù)提供來(lái)自其他停車(chē)場(chǎng)的可選停車(chē)方案。
因此,開(kāi)發(fā)和設(shè)計(jì)一套完整的智能停車(chē)管理系統(tǒng)非常必要。智能化的停車(chē)管理系統(tǒng)成為大中型綜合商業(yè)建筑物、學(xué)校以及居民小區(qū)必備的配套設(shè)施[3],它可以有效減輕人們出行的壓力,緩解現(xiàn)代城市堵車(chē)及停車(chē)難的問(wèn)題。
1、系統(tǒng)功能
智能停車(chē)管理系統(tǒng)針對(duì)傳統(tǒng)停車(chē)場(chǎng)的缺陷,結(jié)合國(guó)內(nèi)外智能停車(chē)系統(tǒng)的研究現(xiàn)狀,采用O2O模式,為系統(tǒng)添加了以下幾方面功能。
1.1空余車(chē)位在線查看功能
在O2O(Online to Offline)模式下,用戶(hù)可以通過(guò)PC網(wǎng)頁(yè)或者手機(jī)等終端遠(yuǎn)程查看停車(chē)場(chǎng)的空余車(chē)位信息,車(chē)位上有車(chē)泊入或離開(kāi)時(shí),車(chē)位狀態(tài)變化都會(huì)及時(shí)顯示在用戶(hù)終端上。如果用戶(hù)想要在某個(gè)停車(chē)場(chǎng)泊車(chē),可提前通過(guò)手機(jī)等移動(dòng)終端查看信息并預(yù)定車(chē)位,進(jìn)行有計(jì)劃的安排,消除尋找車(chē)位的盲目性。
1.2車(chē)位預(yù)約功能
通過(guò)移動(dòng)終端查看空閑車(chē)位,用戶(hù)可以對(duì)其進(jìn)行標(biāo)記和預(yù)約,對(duì)于被用戶(hù)標(biāo)記過(guò)的車(chē)位系統(tǒng)會(huì)限制其他車(chē)輛泊入,待用戶(hù)到達(dá)自己預(yù)約的車(chē)位時(shí),可以通過(guò)移動(dòng)終端操作,解除限制,泊車(chē)入位。
1.3停車(chē)引導(dǎo)功能
用戶(hù)可以通過(guò)移動(dòng)終端查看停車(chē)場(chǎng)布局圖和停車(chē)情況,并根據(jù)引導(dǎo)找出事先預(yù)約或者空閑的車(chē)位。當(dāng)停車(chē)場(chǎng)規(guī)模較大時(shí),清晰的停車(chē)分布圖可以引導(dǎo)用戶(hù)快速泊車(chē)。
1.4停車(chē)場(chǎng)信息共享和停車(chē)位推薦功能
當(dāng)用戶(hù)通過(guò)移動(dòng)終端預(yù)約車(chē)位時(shí),系統(tǒng)控制硬件,采取強(qiáng)制措施保護(hù)車(chē)位,例如升起一排地樁或者檔桿,阻止其他用戶(hù)進(jìn)入。但是這顯然是對(duì)公共資源的一種浪費(fèi),更好的做法是,僅對(duì)被預(yù)約的車(chē)位進(jìn)行標(biāo)記,當(dāng)用戶(hù)預(yù)約的車(chē)位被其他用戶(hù)占用時(shí),系統(tǒng)可為用戶(hù)推薦車(chē)位,提供可選的停車(chē)方案。停車(chē)位推薦的功能是依賴(lài)于信息共享的,各個(gè)停車(chē)系統(tǒng)之間能夠信息共享,才能提供合理的車(chē)位推薦。
2、系統(tǒng)架構(gòu)
該智能停車(chē)系統(tǒng)整體上劃分為三大部分[4]:數(shù)據(jù)源層、數(shù)據(jù)服務(wù)層和發(fā)布層,如圖1所示。
首先,系統(tǒng)中原始數(shù)據(jù)均來(lái)源于數(shù)據(jù)源層,通過(guò)紅外、超聲波等設(shè)備采集車(chē)位傳感數(shù)據(jù),采用ZigBee傳感網(wǎng)絡(luò)作為中間層進(jìn)行通信,依照Z(yǔ)igBee協(xié)議進(jìn)行組網(wǎng)和發(fā)送數(shù)據(jù)[5]。采集到的傳感器數(shù)據(jù)可通過(guò)ZigBee傳感網(wǎng)絡(luò)傳送至PC上位機(jī)進(jìn)行數(shù)據(jù)的集中預(yù)處理。其次,數(shù)據(jù)服務(wù)層運(yùn)行于服務(wù)器中,接收來(lái)自PC上位機(jī)的傳感器數(shù)據(jù),對(duì)其進(jìn)行處理,最終轉(zhuǎn)換為車(chē)位狀態(tài)信息存儲(chǔ)于數(shù)據(jù)庫(kù)內(nèi),并使用Webservice規(guī)范發(fā)布數(shù)據(jù)接口,提供數(shù)據(jù)共享功能。最后,在發(fā)布層,系統(tǒng)支持多種客戶(hù)端,用戶(hù)可方便地查看停車(chē)場(chǎng)車(chē)位信息,并使用車(chē)位預(yù)約、停車(chē)引導(dǎo)等功能。
3、系統(tǒng)設(shè)計(jì)與關(guān)鍵技術(shù)
系統(tǒng)整體實(shí)現(xiàn)思路是:按照O2O理念[6],線下使用ZigBee進(jìn)行數(shù)據(jù)采集,配合Arduino控制器控制硬件,線上使用Node.js處理數(shù)據(jù)存儲(chǔ)與數(shù)據(jù)分發(fā),配合手機(jī)等移動(dòng)端App,管理停車(chē)位資源。通過(guò)線上線下的有序配合,為用戶(hù)提供空閑車(chē)位查詢(xún)、車(chē)位標(biāo)記預(yù)約、停車(chē)引導(dǎo)等功能。
系統(tǒng)主要采用ZigBee數(shù)據(jù)傳輸、MQTT消息推送、Node.js數(shù)據(jù)服務(wù)、移動(dòng)客戶(hù)端等關(guān)鍵技術(shù)。
3.1 ZigBee無(wú)線傳感網(wǎng)絡(luò)
在智能停車(chē)系統(tǒng)中,下位機(jī)采用超聲波傳感器探測(cè)距離,從而判斷車(chē)位上是否有車(chē)輛泊入。通過(guò)Arduino控制器操縱傳感器采集數(shù)據(jù)經(jīng)由ZigBee網(wǎng)絡(luò)傳遞至PC上位機(jī),數(shù)據(jù)在上位機(jī)上進(jìn)行預(yù)處理(消除噪聲)后,最終遞交至服務(wù)器。另一方面,除了接收和處理來(lái)自下位機(jī)的數(shù)據(jù),上位機(jī)也可以接收服務(wù)器控制信息,并通過(guò)ZigBee網(wǎng)絡(luò)發(fā)送控制信息至Arduino控制器,最終由Arduino來(lái)控制硬件動(dòng)作,實(shí)現(xiàn)反向控制,因此,系統(tǒng)中不僅可以通過(guò)移動(dòng)終端獲取傳感器數(shù)據(jù)實(shí)現(xiàn)在線查看車(chē)位的功能,也能通過(guò)手機(jī)操作控制系統(tǒng)硬件,實(shí)現(xiàn)預(yù)約車(chē)位的功能。超聲波傳感器與Arduino控制器、 ZigBee與上位機(jī)均采用串口通信協(xié)議交換數(shù)據(jù)。
3.2 MQTT消息推送
智能停車(chē)系統(tǒng)要求數(shù)據(jù)能自主雙向流動(dòng),即上位機(jī)與服務(wù)器通信過(guò)程中,一方面當(dāng)傳感器數(shù)據(jù)由于車(chē)輛位泊入或者離開(kāi)發(fā)生變化時(shí),上位機(jī)能主動(dòng)通知服務(wù)器,服務(wù)器接收新數(shù)據(jù)并存儲(chǔ)。另一方面,用戶(hù)發(fā)送反饋數(shù)據(jù)去操作車(chē)位時(shí),服務(wù)器能主動(dòng)通知上位機(jī),上位機(jī)再將用戶(hù)控制指令數(shù)據(jù)傳遞至ZigBee網(wǎng)絡(luò),進(jìn)而通知Arduino控制器操作相關(guān)硬件。由于HTTP協(xié)議具有被動(dòng)性,在此過(guò)程中,單純地使用HTTP協(xié)議只能保證傳感器數(shù)據(jù)被正確提交至服務(wù)器,但無(wú)法保證服務(wù)器數(shù)據(jù)變化時(shí)能主動(dòng)通知服務(wù)器,除非使用客戶(hù)端長(zhǎng)輪詢(xún)的方式,即在上位機(jī)不斷地發(fā)送HTTP請(qǐng)求獲取最新的服務(wù)器數(shù)據(jù)。但是這種方式非常耗費(fèi)系統(tǒng)資源,對(duì)一個(gè)物聯(lián)網(wǎng)系統(tǒng)代價(jià)比較大,因此選用擁有“消息訂閱機(jī)制”特點(diǎn)的MQTT協(xié)議實(shí)現(xiàn)服務(wù)器到上位機(jī)的通信更加合理。
消息隊(duì)列遙測(cè)傳輸(Message Queuing Telemetry Transport,MQTT)采用輕量級(jí)發(fā)布和訂閱消息傳輸機(jī)制,支持雙向消息推送[7]。在MQTT協(xié)議中有訂閱者、發(fā)布者和代理三類(lèi)角色,前兩種以MQTT客戶(hù)端的形式來(lái)展現(xiàn),后一種以MQTT代理服務(wù)器的形式展現(xiàn)。訂閱者和發(fā)布者的通信由MQTT代理來(lái)協(xié)調(diào),具體運(yùn)行機(jī)制是:MQTT代理服務(wù)器維護(hù)各個(gè)MQTT客戶(hù)端之間的關(guān)系,當(dāng)某一客戶(hù)端發(fā)布消息時(shí),代理服務(wù)器會(huì)首先接收消息,查詢(xún)訂閱該類(lèi)型消息的用戶(hù),并將消息轉(zhuǎn)發(fā)給訂閱者,訂閱者便可主動(dòng)收到消息推送。智能停車(chē)系統(tǒng)中采用MQTT協(xié)議進(jìn)行服務(wù)器到上位機(jī)的反向通信,PC上位機(jī)訂閱服務(wù)器發(fā)布的數(shù)據(jù)庫(kù)更新的消息,一旦數(shù)據(jù)庫(kù)更新事件發(fā)生,便發(fā)布消息主動(dòng)通知上位機(jī),上位機(jī)再做相應(yīng)處理。通信模型如圖3所示,上位機(jī)PC和服務(wù)器均運(yùn)行著MQTT客戶(hù)端,用于消息的訂閱或發(fā)布,某個(gè)MQTT客戶(hù)端一旦發(fā)布消息,MQTT代理服務(wù)器便會(huì)將其轉(zhuǎn)發(fā)給相應(yīng)的訂閱者。
本系統(tǒng)在上位機(jī)上采用基于Python的開(kāi)源工具Paho實(shí)現(xiàn)MQTT客戶(hù)端,與運(yùn)行于服務(wù)器中的MQTT代理服務(wù)器進(jìn)行交互,完成服務(wù)器到上位機(jī)的消息推送;使用HTTP協(xié)議實(shí)現(xiàn)上位機(jī)到服務(wù)器的通信,當(dāng)傳感器數(shù)據(jù)的變化超過(guò)一定閾值時(shí)發(fā)送HTTP請(qǐng)求,將數(shù)據(jù)提交給服務(wù)器??偟膩?lái)說(shuō),通過(guò)HTTP協(xié)議與MQTT協(xié)議,數(shù)據(jù)可以在服務(wù)器與上位機(jī)之間自主雙向流動(dòng)。
3.3 Node.js數(shù)據(jù)服務(wù)
服務(wù)端采用Node.js技術(shù),可實(shí)現(xiàn)服務(wù)掛載、數(shù)據(jù)操作、數(shù)據(jù)分發(fā)等多種功能。
(1)服務(wù)掛載。在Node.js環(huán)境中可以同時(shí)掛載MQTT代理服務(wù)器和HTTP服務(wù)器,滿(mǎn)足服務(wù)器自主推送消息到上位機(jī)的需求,也允許上位機(jī)發(fā)送HTTP請(qǐng)求來(lái)提交傳感器數(shù)據(jù)。在Node.js環(huán)境中,可采用Mosca[8]搭建MQTT代理服務(wù)器,同時(shí)創(chuàng)建MQTT客戶(hù)端,在數(shù)據(jù)庫(kù)更新時(shí)發(fā)布消息,通知上位機(jī)執(zhí)行執(zhí)行相應(yīng)動(dòng)作。
(2)數(shù)據(jù)操作。MongoDB是一種NoSQL數(shù)據(jù)庫(kù),基于分布式文件存儲(chǔ),可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類(lèi)型,適用于大數(shù)據(jù)查詢(xún)服務(wù)。在智能停車(chē)系統(tǒng)中,服務(wù)器接收到傳感器數(shù)據(jù)后按照一定規(guī)則將傳感器數(shù)據(jù)映射為車(chē)位的占用狀態(tài)信息,以JSON格式表示,存儲(chǔ)于MongoDB。
(3)數(shù)據(jù)分發(fā)。Webservice為運(yùn)行于不同系統(tǒng)或平臺(tái)的應(yīng)用提供了一套交互規(guī)范,RESTful Webservice因其輕量、高效、易用、易設(shè)計(jì)等特點(diǎn),在移動(dòng)互聯(lián)網(wǎng)應(yīng)用中使用廣泛。使用Node.js平臺(tái)的輕量級(jí)Web框架Express,可設(shè)計(jì)符合REST規(guī)范的API,方便快捷地進(jìn)行數(shù)據(jù)分發(fā)和共享。手機(jī)等移動(dòng)客戶(hù)端調(diào)用REST API可以從數(shù)據(jù)庫(kù)中獲取車(chē)位信息,展示在移動(dòng)設(shè)備上。
總之,在Node.js環(huán)境下,各項(xiàng)功能可以便捷地實(shí)現(xiàn)[9],其整體組織結(jié)構(gòu)如圖4所示。
3.4 移動(dòng)客戶(hù)端技術(shù)
使用Java、Swift、React Native[10]等技術(shù)可開(kāi)發(fā)各個(gè)平臺(tái)的App,通過(guò)調(diào)用服務(wù)器提供的REST API 獲取車(chē)位狀態(tài),并使用第三方SDK集成一些實(shí)用的功能,例如,使用百度地圖SDK為App集成地圖和導(dǎo)航功能[1112];使用支付寶SDK可以為App集成在線支付功能,停車(chē)收費(fèi)通過(guò)移動(dòng)支付技術(shù)完成。因此,用戶(hù)通過(guò)App可以快速查看停車(chē)場(chǎng)的布局圖和停車(chē)位的當(dāng)前占用信息,提前預(yù)約車(chē)位,進(jìn)行高效的停車(chē)管理,緩解城市停車(chē)壓力。
4、結(jié)論
本文通過(guò)對(duì)現(xiàn)有停車(chē)系統(tǒng)的分析,結(jié)合當(dāng)前物聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)先進(jìn)技術(shù),根據(jù)O2O模式提出了一種智能停車(chē)系統(tǒng)的整體架構(gòu),并重點(diǎn)對(duì)其中的關(guān)鍵技術(shù)進(jìn)行了研究。該系統(tǒng)可提供空余車(chē)位在線查看、車(chē)位在線預(yù)約、用戶(hù)停車(chē)引導(dǎo)、附近停車(chē)場(chǎng)推薦和智能計(jì)費(fèi)系統(tǒng)等功能,實(shí)現(xiàn)停車(chē)場(chǎng)自動(dòng)化管理,緩解日益增長(zhǎng)的汽車(chē)保有量帶來(lái)的城市停車(chē)壓力。
依據(jù)信息技術(shù)的發(fā)展趨勢(shì),未來(lái)智能停車(chē)場(chǎng)主要從以下幾個(gè)方面進(jìn)行深化。
(1)打破信息孤島。依賴(lài)于互聯(lián)網(wǎng)技術(shù),停車(chē)場(chǎng)之間數(shù)據(jù)共享,構(gòu)建統(tǒng)一物聯(lián)平臺(tái),進(jìn)行資源整合,使停車(chē)資源得到有效利用。
(2)實(shí)現(xiàn)高度自動(dòng)化。通過(guò)移動(dòng)支付自助繳費(fèi),使用傳感器技術(shù)感知車(chē)輛泊入并自動(dòng)計(jì)費(fèi),使用計(jì)算機(jī)視覺(jué)等技術(shù)實(shí)現(xiàn)快速識(shí)別。逐漸實(shí)現(xiàn)停車(chē)場(chǎng)無(wú)人化管理,節(jié)省人力資源。
(3)精確的停車(chē)誘導(dǎo)。通過(guò)傳感器定位技術(shù)自動(dòng)生成停車(chē)場(chǎng)布局圖,為用戶(hù)提供更精確的停車(chē)誘導(dǎo)、車(chē)位引導(dǎo)和反向?qū)ぼ?chē)等功能。
(4)移動(dòng)終端支持更多功能,如停車(chē)位自動(dòng)導(dǎo)航、自動(dòng)繳費(fèi)、按照停車(chē)位反向?qū)ぼ?chē)等功能。
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,停車(chē)系統(tǒng)會(huì)變得越來(lái)越智能,“城市停車(chē)難”的問(wèn)題也會(huì)逐步減緩。