王中生,韓康
?。ㄎ靼补I(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,陜西 西安 710021)
摘要:隨著經(jīng)濟(jì)水平和人們生活質(zhì)量的不斷提高,機(jī)動車數(shù)量迅速增加,傳統(tǒng)停車系統(tǒng)無法滿足高速增長的停車需求,智能停車管理系統(tǒng)的研究勢在必行。通過對傳統(tǒng)停車系統(tǒng)的分析,研究了智能停車系統(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)可有效利用城市停車資源,減輕停車壓力。
中圖分類號:TN602文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.1674 7720.2016.20.028
引用格式:王中生,韓康. 基于物聯(lián)網(wǎng)的智能停車系統(tǒng)研究設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2016,35(20):99 102.
關(guān)鍵詞:智能停車;ZigBee;MQTT;Node.js;O2O
0引言
隨著我國經(jīng)濟(jì)高速增長、城市化進(jìn)程不斷加快,機(jī)動車的數(shù)量迅速增加,日益增長的停車需求與城市所能提供的停車位數(shù)量之間的矛盾越來越突出,停車問題已經(jīng)成為影響城市交通可持續(xù)發(fā)展的瓶頸。然而,傳統(tǒng)停車場由于功能單一、效率低下、自動化程度低,己經(jīng)不能滿足人們的停車需求,因此發(fā)展城市各處停車場的智能化建設(shè)對于改善整個城市的交通管理狀況起著至關(guān)重要的作用[1]。
傳統(tǒng)停車場在停車效率、能源消耗、安全性能、車場管理運(yùn)營等方面已不能滿足現(xiàn)代化的停車發(fā)展需求,多數(shù)傳統(tǒng)停車系統(tǒng)存在以下問題。
(1)停車系統(tǒng)僅記錄停車場內(nèi)車輛數(shù)目或剩余車位數(shù)目,無法提供具體的停泊位置信息。如果停車場規(guī)模較大,車主很難快速找到合適的停車位。
(2)無法提供空余停車位在線顯示功能。對于一個開放性停車場,車主無法了解到該停車場是否會有空余車位,等到車主到達(dá)該停車場時才發(fā)現(xiàn)已經(jīng)停滿,這無疑是對時間和資源的浪費(fèi)。
(3)停車系統(tǒng)之間很少進(jìn)行資源共享。當(dāng)前各個停車場的系統(tǒng)是各自分離的“信息孤島”[2],停車系統(tǒng)之間無法進(jìn)行數(shù)據(jù)共享,即使某些停車場爆滿,而另一些停車場有大量空余車位,系統(tǒng)也無法為用戶提供來自其他停車場的可選停車方案。
因此,開發(fā)和設(shè)計(jì)一套完整的智能停車管理系統(tǒng)非常必要。智能化的停車管理系統(tǒng)成為大中型綜合商業(yè)建筑物、學(xué)校以及居民小區(qū)必備的配套設(shè)施[3],它可以有效減輕人們出行的壓力,緩解現(xiàn)代城市堵車及停車難的問題。
1系統(tǒng)功能
智能停車管理系統(tǒng)針對傳統(tǒng)停車場的缺陷,結(jié)合國內(nèi)外智能停車系統(tǒng)的研究現(xiàn)狀,采用O2O模式,為系統(tǒng)添加了以下幾方面功能。
1.1空余車位在線查看功能
在O2O(Online to Offline)模式下,用戶可以通過PC網(wǎng)頁或者手機(jī)等終端遠(yuǎn)程查看停車場的空余車位信息,車位上有車泊入或離開時,車位狀態(tài)變化都會及時顯示在用戶終端上。如果用戶想要在某個停車場泊車,可提前通過手機(jī)等移動終端查看信息并預(yù)定車位,進(jìn)行有計(jì)劃的安排,消除尋找車位的盲目性。
1.2車位預(yù)約功能
通過移動終端查看空閑車位,用戶可以對其進(jìn)行標(biāo)記和預(yù)約,對于被用戶標(biāo)記過的車位系統(tǒng)會限制其他車輛泊入,待用戶到達(dá)自己預(yù)約的車位時,可以通過移動終端操作,解除限制,泊車入位。
1.3停車引導(dǎo)功能
用戶可以通過移動終端查看停車場布局圖和停車情況,并根據(jù)引導(dǎo)找出事先預(yù)約或者空閑的車位。當(dāng)停車場規(guī)模較大時,清晰的停車分布圖可以引導(dǎo)用戶快速泊車。
1.4停車場信息共享和停車位推薦功能
當(dāng)用戶通過移動終端預(yù)約車位時,系統(tǒng)控制硬件,采取強(qiáng)制措施保護(hù)車位,例如升起一排地樁或者檔桿,阻止其他用戶進(jìn)入。但是這顯然是對公共資源的一種浪費(fèi),更好的做法是,僅對被預(yù)約的車位進(jìn)行標(biāo)記,當(dāng)用戶預(yù)約的車位被其他用戶占用時,系統(tǒng)可為用戶推薦車位,提供可選的停車方案。停車位推薦的功能是依賴于信息共享的,各個停車系統(tǒng)之間能夠信息共享,才能提供合理的車位推薦。
2系統(tǒng)架構(gòu)
該智能停車系統(tǒng)整體上劃分為三大部分[4]:數(shù)據(jù)源層、數(shù)據(jù)服務(wù)層和發(fā)布層,如圖1所示。
首先,系統(tǒng)中原始數(shù)據(jù)均來源于數(shù)據(jù)源層,通過紅外、超聲波等設(shè)備采集車位傳感數(shù)據(jù),采用ZigBee傳感網(wǎng)絡(luò)作為中間層進(jìn)行通信,依照ZigBee協(xié)議進(jìn)行組網(wǎng)和發(fā)送數(shù)據(jù)[5]。采集到的傳感器數(shù)據(jù)可通過ZigBee傳感網(wǎng)絡(luò)傳送至PC上位機(jī)進(jìn)行數(shù)據(jù)的集中預(yù)處理。其次,數(shù)據(jù)服務(wù)層運(yùn)行于服務(wù)器中,接收來自PC上位機(jī)的傳感器數(shù)據(jù),對其進(jìn)行處理,最終轉(zhuǎn)換為車位狀態(tài)信息存儲于數(shù)據(jù)庫內(nèi),并使用Webservice規(guī)范發(fā)布數(shù)據(jù)接口,提供數(shù)據(jù)共享功能。最后,在發(fā)布層,系統(tǒng)支持多種客戶端,用戶可方便地查看停車場車位信息,并使用車位預(yù)約、停車引導(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ù)存儲與數(shù)據(jù)分發(fā),配合手機(jī)等移動端App,管理停車位資源。通過線上線下的有序配合,為用戶提供空閑車位查詢、車位標(biāo)記預(yù)約、停車引導(dǎo)等功能。系統(tǒng)的整體結(jié)構(gòu)如圖2所示。
系統(tǒng)主要采用ZigBee數(shù)據(jù)傳輸、MQTT消息推送、Node.js數(shù)據(jù)服務(wù)、移動客戶端等關(guān)鍵技術(shù)。
3.1ZigBee無線傳感網(wǎng)絡(luò)
在智能停車系統(tǒng)中,下位機(jī)采用超聲波傳感器探測距離,從而判斷車位上是否有車輛泊入。通過Arduino控制器操縱傳感器采集數(shù)據(jù)經(jīng)由ZigBee網(wǎng)絡(luò)傳遞至PC上位機(jī),數(shù)據(jù)在上位機(jī)上進(jìn)行預(yù)處理(消除噪聲)后,最終遞交至服務(wù)器。另一方面,除了接收和處理來自下位機(jī)的數(shù)據(jù),上位機(jī)也可以接收服務(wù)器控制信息,并通過ZigBee網(wǎng)絡(luò)發(fā)送控制信息至Arduino控制器,最終由Arduino來控制硬件動作,實(shí)現(xiàn)反向控制,因此,系統(tǒng)中不僅可以通過移動終端獲取傳感器數(shù)據(jù)實(shí)現(xiàn)在線查看車位的功能,也能通過手機(jī)操作控制系統(tǒng)硬件,實(shí)現(xiàn)預(yù)約車位的功能。超聲波傳感器與Arduino控制器、 ZigBee與上位機(jī)均采用串口通信協(xié)議交換數(shù)據(jù)。
3.2MQTT消息推送
智能停車系統(tǒng)要求數(shù)據(jù)能自主雙向流動,即上位機(jī)與服務(wù)器通信過程中,一方面當(dāng)傳感器數(shù)據(jù)由于車輛位泊入或者離開發(fā)生變化時,上位機(jī)能主動通知服務(wù)器,服務(wù)器接收新數(shù)據(jù)并存儲。另一方面,用戶發(fā)送反饋數(shù)據(jù)去操作車位時,服務(wù)器能主動通知上位機(jī),上位機(jī)再將用戶控制指令數(shù)據(jù)傳遞至ZigBee網(wǎng)絡(luò),進(jìn)而通知Arduino控制器操作相關(guān)硬件。由于HTTP協(xié)議具有被動性,在此過程中,單純地使用HTTP協(xié)議只能保證傳感器數(shù)據(jù)被正確提交至服務(wù)器,但無法保證服務(wù)器數(shù)據(jù)變化時能主動通知服務(wù)器,除非使用客戶端長輪詢的方式,即在上位機(jī)不斷地發(fā)送HTTP請求獲取最新的服務(wù)器數(shù)據(jù)。但是這種方式非常耗費(fèi)系統(tǒng)資源,對一個物聯(lián)網(wǎng)系統(tǒng)代價(jià)比較大,因此選用擁有“消息訂閱機(jī)制”特點(diǎn)的MQTT協(xié)議實(shí)現(xiàn)服務(wù)器到上位機(jī)的通信更加合理。
消息隊(duì)列遙測傳輸(Message Queuing Telemetry Transport,MQTT)采用輕量級發(fā)布和訂閱消息傳輸機(jī)制,支持雙向消息推送[7]。在MQTT協(xié)議中有訂閱者、發(fā)布者和代理三類角色,前兩種以MQTT客戶端的形式來展現(xiàn),后一種以MQTT代理服務(wù)器的形式展現(xiàn)。訂閱者和發(fā)布者的通信由MQTT代理來協(xié)調(diào),具體運(yùn)行機(jī)制是:MQTT代理服務(wù)器維護(hù)各個MQTT客戶端之間的關(guān)系,當(dāng)某一客戶端發(fā)布消息時,代理服務(wù)器會首先接收消息,查詢訂閱該類型消息的用戶,并將消息轉(zhuǎn)發(fā)給訂閱者,訂閱者便可主動收到消息推送。智能停車系統(tǒng)中采用MQTT協(xié)議進(jìn)行服務(wù)器到上位機(jī)的反向通信,PC上位機(jī)訂閱服務(wù)器發(fā)布的數(shù)據(jù)庫更新的消息,一旦數(shù)據(jù)庫更新事件發(fā)生,便發(fā)布消息主動通知上位機(jī),上位機(jī)再做相應(yīng)處理。通信模型如圖3所示,上位機(jī)PC和服務(wù)器均運(yùn)行著MQTT客戶端,用于消息的訂閱或發(fā)布,某個MQTT客戶端一旦發(fā)布消息,MQTT代理服務(wù)器便會將其轉(zhuǎn)發(fā)給相應(yīng)的訂閱者。
本系統(tǒng)在上位機(jī)上采用基于Python的開源工具Paho實(shí)現(xiàn)MQTT客戶端,與運(yùn)行于服務(wù)器中的MQTT代理服務(wù)器進(jìn)行交互,完成服務(wù)器到上位機(jī)的消息推送;使用HTTP協(xié)議實(shí)現(xiàn)上位機(jī)到服務(wù)器的通信,當(dāng)傳感器數(shù)據(jù)的變化超過一定閾值時發(fā)送HTTP請求,將數(shù)據(jù)提交給服務(wù)器。總的來說,通過HTTP協(xié)議與MQTT協(xié)議,數(shù)據(jù)可以在服務(wù)器與上位機(jī)之間自主雙向流動。
3.3Node.js數(shù)據(jù)服務(wù)
服務(wù)端采用Node.js技術(shù),可實(shí)現(xiàn)服務(wù)掛載、數(shù)據(jù)操作、數(shù)據(jù)分發(fā)等多種功能。
(1)服務(wù)掛載。在Node.js環(huán)境中可以同時掛載MQTT代理服務(wù)器和HTTP服務(wù)器,滿足服務(wù)器自主推送消息到上位機(jī)的需求,也允許上位機(jī)發(fā)送HTTP請求來提交傳感器數(shù)據(jù)。在Node.js環(huán)境中,可采用Mosca[8]搭建MQTT代理服務(wù)器,同時創(chuàng)建MQTT客戶端,在數(shù)據(jù)庫更新時發(fā)布消息,通知上位機(jī)執(zhí)行執(zhí)行相應(yīng)動作。
(2)數(shù)據(jù)操作。MongoDB是一種NoSQL數(shù)據(jù)庫,基于分布式文件存儲,可以存儲比較復(fù)雜的數(shù)據(jù)類型,適用于大數(shù)據(jù)查詢服務(wù)。在智能停車系統(tǒng)中,服務(wù)器接收到傳感器數(shù)據(jù)后按照一定規(guī)則將傳感器數(shù)據(jù)映射為車位的占用狀態(tài)信息,以JSON格式表示,存儲于MongoDB。
(3)數(shù)據(jù)分發(fā)。Webservice為運(yùn)行于不同系統(tǒng)或平臺的應(yīng)用提供了一套交互規(guī)范,RESTful Webservice因其輕量、高效、易用、易設(shè)計(jì)等特點(diǎn),在移動互聯(lián)網(wǎng)應(yīng)用中使用廣泛。使用Node.js平臺的輕量級Web框架Express,可設(shè)計(jì)符合REST規(guī)范的API,方便快捷地進(jìn)行數(shù)據(jù)分發(fā)和共享。手機(jī)等移動客戶端調(diào)用REST API可以從數(shù)據(jù)庫中獲取車位信息,展示在移動設(shè)備上。
總之,在Node.js環(huán)境下,各項(xiàng)功能可以便捷地實(shí)現(xiàn)[9],其整體組織結(jié)構(gòu)如圖4所示。
3.4移動客戶端技術(shù)
使用Java、Swift、React Native[10]等技術(shù)可開發(fā)各個平臺的App,通過調(diào)用服務(wù)器提供的REST API 獲取車位狀態(tài),并使用第三方SDK集成一些實(shí)用的功能,例如,使用百度地圖SDK為App集成地圖和導(dǎo)航功能[1112];使用支付寶SDK可以為App集成在線支付功能,停車收費(fèi)通過移動支付技術(shù)完成。因此,用戶通過App可以快速查看停車場的布局圖和停車位的當(dāng)前占用信息,提前預(yù)約車位,進(jìn)行高效的停車管理,緩解城市停車壓力。
4結(jié)論
本文通過對現(xiàn)有停車系統(tǒng)的分析,結(jié)合當(dāng)前物聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)先進(jìn)技術(shù),根據(jù)O2O模式提出了一種智能停車系統(tǒng)的整體架構(gòu),并重點(diǎn)對其中的關(guān)鍵技術(shù)進(jìn)行了研究。該系統(tǒng)可提供空余車位在線查看、車位在線預(yù)約、用戶停車引導(dǎo)、附近停車場推薦和智能計(jì)費(fèi)系統(tǒng)等功能,實(shí)現(xiàn)停車場自動化管理,緩解日益增長的汽車保有量帶來的城市停車壓力。
依據(jù)信息技術(shù)的發(fā)展趨勢,未來智能停車場主要從以下幾個方面進(jìn)行深化。
(1)打破信息孤島。依賴于互聯(lián)網(wǎng)技術(shù),停車場之間數(shù)據(jù)共享,構(gòu)建統(tǒng)一物聯(lián)平臺,進(jìn)行資源整合,使停車資源得到有效利用。
?。?)實(shí)現(xiàn)高度自動化。通過移動支付自助繳費(fèi),使用傳感器技術(shù)感知車輛泊入并自動計(jì)費(fèi),使用計(jì)算機(jī)視覺等技術(shù)實(shí)現(xiàn)快速識別。逐漸實(shí)現(xiàn)停車場無人化管理,節(jié)省人力資源。
(3)精確的停車誘導(dǎo)。通過傳感器定位技術(shù)自動生成停車場布局圖,為用戶提供更精確的停車誘導(dǎo)、車位引導(dǎo)和反向?qū)ぼ嚨裙δ堋?/p>
?。?)移動終端支持更多功能,如停車位自動導(dǎo)航、自動繳費(fèi)、按照停車位反向?qū)ぼ嚨裙δ堋?/p>
隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,停車系統(tǒng)會變得越來越智能,“城市停車難”的問題也會逐步減緩。
參考文獻(xiàn)
?。?] 郭 騰. 智能停車管理系統(tǒng)的研究與實(shí)現(xiàn)[D]. 北京:北方工業(yè)大學(xué),2015.
[2] 姚雄. 信息孤島問題及PLM解決方案[D].南京:南京航空航天大學(xué),2005.
?。?] 黨蟒. 一種露天停車場管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].鄭州:鄭州大學(xué),2014.
[4] 李揚(yáng)威,焦朋朋. 城市智能停車管理系統(tǒng)研究[J].交通信息安全,2014,32(4):160-164.
[5] 蔡文晶. 基于ZigBee技術(shù)的無線數(shù)據(jù)采集系統(tǒng)[D].杭州:杭州電子科技大學(xué),2011.
?。?] 盧益清, 李忱.O2O商業(yè)模式及發(fā)展前景研究[J].企業(yè)經(jīng)濟(jì),2013(11):98-100.
?。?] COLLINA M, CORAZZA G E, VACELLICORALLI A. Introducing the QEST broker: scaling the IoT by bridging MQTT and REST[C].2012 IEEE 23rd International Symposium on Personal Indoor and Mobile Radio Communications (PIMRC), 2012:36-41.
?。?] Mcollina. MQTT broker as a module[EB/OL].(2016-05-08)[2016-06-26]https://github.com/mcollina/mosca.
?。?] TILKOV Stefan. Node.js: using JavaScript to build high performance network programs[J]. IEEE Internet Computing,2010,14(6):1-15.
?。?0] A JavaScript library for building user interfaces[EB/OL].(2016-05-07)[2016-06-26]http://facebook.github.io/react/.
?。?1] 肖文漢,吳孝斌.基于百度地圖API的停車場查詢系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24(4):227-230.
[12] 任齊. 基于Android的LBS應(yīng)用研究[D].上海:華東師范大學(xué),2012.