李月恒,楊 帆,孫德輝
(北方工業(yè)大學(xué) 現(xiàn)場總線及自動化北京市重點實驗室,北京 100144)
近些年來,隨著汽車成本的不斷下降以及人均GDP的持續(xù)增長,我國的汽車擁有量急劇增加,在很多城市里出現(xiàn)了停車難的現(xiàn)象,為了滿足停車的需求,出現(xiàn)了各種類型的停車場,但是大部門還是基于PC的傳統(tǒng)停車場管理系統(tǒng),傳統(tǒng)的停車場管理系統(tǒng)把重點放在了計費收費管理上,然而在車位查找、實時性、效率管理方面不盡如人意,很難滿足人們的需求。在本設(shè)計中,不僅把基于無線傳感網(wǎng)絡(luò)的物聯(lián)網(wǎng)技術(shù)應(yīng)用到了智能停車場中,而且結(jié)合了移動互聯(lián)網(wǎng)技術(shù)。
本設(shè)計采用三星公司ARM11內(nèi)核的S3C6410為MCU,設(shè)計了無線網(wǎng)關(guān),網(wǎng)關(guān)的路由器接收各個車位監(jiān)控節(jié)點上安裝的Zigbee模塊發(fā)送來的車位信息,經(jīng)過數(shù)據(jù)的重組和打包將所有節(jié)點的數(shù)據(jù)發(fā)送到中控計算機上與安卓客戶端上。此外所有車位監(jiān)控節(jié)點上安裝的Zigbee模塊內(nèi)置Mesh網(wǎng)協(xié)議棧,該網(wǎng)絡(luò)可以自動監(jiān)測和增加新的節(jié)點。
本設(shè)計主要有四部分構(gòu)成,基于Zigbee技術(shù)的監(jiān)控節(jié)點,用于監(jiān)控空余車位情況;基于ARM技術(shù)的無線網(wǎng)關(guān),用來處理并上傳節(jié)點信息;PC上位機,用于管理人員查看、管理車位信息,計費;智能終端上位機,用于客戶查看空位信息、提前預(yù)約車位、引導(dǎo)客戶到空余車位等。針對上述特定,節(jié)點部分采用內(nèi)置協(xié)議棧的XBee-PRO模塊,網(wǎng)關(guān)部分采用S3C6410為MCU,采用Linux2.6系統(tǒng)。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框圖Fig.1 Block diagram of the system
Zigbee路由節(jié)點由兩部分組成,Zigbee路由器模塊以及超聲波檢測模塊,它們通過RS232接口連接,超聲波檢測模塊用來檢測車位信息,Zigbee路由器模塊用來上傳數(shù)據(jù)。無線網(wǎng)關(guān)包括ARM處理器模塊、Wi-Fi模塊、Zigbee協(xié)調(diào)器模塊。Zigbee協(xié)調(diào)器模塊上電后會組建ZigbeeMesh網(wǎng),Zigbee路由器模塊可以自動檢測到協(xié)調(diào)器并建立連接關(guān)系,Mesh網(wǎng)絡(luò)具有自動組織和不需要人工干預(yù)的特點。無線網(wǎng)關(guān)通過協(xié)調(diào)器向路由節(jié)點發(fā)送查詢命令,超聲波檢測模塊測得車位的狀態(tài)后,會通過路由器模塊自動選擇最佳的傳播路徑,將數(shù)據(jù)通過一跳或多跳傳輸?shù)絽f(xié)調(diào)器,即使路由節(jié)點和協(xié)調(diào)器距離比較遠,數(shù)據(jù)也可以通過中間路由器模塊的轉(zhuǎn)發(fā)到達協(xié)調(diào)器,因此系統(tǒng)對建網(wǎng)的布局要求不高。無線網(wǎng)關(guān)相當(dāng)于數(shù)據(jù)路由器,將節(jié)點傳來的數(shù)據(jù)解析后分別發(fā)送至計算機以及智能終端,并保存至SQLite數(shù)據(jù)庫。車主以及停車場管理人員可以使用智能終端檢查停車場車位信息,根據(jù)導(dǎo)航進行停車。
嵌入式無線網(wǎng)關(guān)部分硬件電路如圖2所示。S3C6410核心板采用高密度6層板設(shè)計,它集成了256M DDR RAM,2GB的NOR Flash,256M Nand Flash存儲器,采用5V供電,在板實現(xiàn)CPU必需的各種核心電壓轉(zhuǎn)換[1-2]。在CPU上運行的是Linux2.6操作系統(tǒng)[3]。系統(tǒng)提供2路RS232,上位機可通過其中一路燒寫程序,配置工作參數(shù),另一路用于和Zigbee協(xié)調(diào)器通信。USB接口可以連接3G無線上網(wǎng)卡使系統(tǒng)可以升級為向公網(wǎng)服務(wù)器提交數(shù)據(jù)。擴展的SD_Card接口有兩個作用,一是給主CPU燒寫Linux系統(tǒng)。二是為了存儲較長時間的數(shù)據(jù)記錄文件[4]。以太網(wǎng)接口可以用來與中控計算機通信,將各個路由節(jié)點的信息上傳到PC上供進一步的分析與顯示。掛接的Wi-Fi協(xié)調(diào)器用來與無線路由器相連,在布線復(fù)雜的情況下可以代替以太網(wǎng)線。此外還設(shè)計了系統(tǒng)狀態(tài)、網(wǎng)絡(luò)狀態(tài)、電源和3個LED用來實時監(jiān)視硬件的工作狀態(tài),一個復(fù)位按鍵用來復(fù)位系統(tǒng)。硬件框圖如圖2所示。
圖2 嵌入式無線網(wǎng)關(guān)硬件框圖Fig.2 Hardware block of embedded wireless gateway
本系統(tǒng)選用美國Digi公司的內(nèi)置協(xié)議棧的XBee-PRO模塊,XBee-PRO模塊的有效通信范圍在室外可以達到1 500 m的傳輸距離。XBee-PRO協(xié)調(diào)器模塊硬件由無線收發(fā)單芯片模塊、LM1117-3.3電壓轉(zhuǎn)換芯片、WRB2405隔離型DC/DC模塊、232串口、電源以及指示燈等組成,硬件電路如圖3所示。協(xié)調(diào)器和路由器在硬件上沒有差別,只不過運行的程序不同。
嵌入式網(wǎng)關(guān)部分主要包括數(shù)據(jù)查詢程序,WIFI與IP配置程序,BOA服務(wù)程序,數(shù)據(jù)包接收與解析程序,數(shù)據(jù)上傳程序,數(shù)據(jù)存儲程序。因為在ARM處理器運行著linux操作系統(tǒng),所以每一個把每個任務(wù)都建立一個單獨的線程,這樣可以更加有效的處理各個任務(wù)。尤其是在節(jié)點比較多的時候,多線程還可以保證查詢的實時性。系統(tǒng)主要程序結(jié)構(gòu)如圖3所示。
圖3 系統(tǒng)主要程序結(jié)構(gòu)Fig.3 Main structure of the system program
數(shù)據(jù)查詢程序會通過Zigbee協(xié)調(diào)器周期性輪流查詢各個節(jié)點的數(shù)據(jù),節(jié)點收到查詢指令后會把節(jié)點數(shù)據(jù)通過Mesh網(wǎng)傳給嵌入式網(wǎng)關(guān),網(wǎng)關(guān)會記錄逆節(jié)點數(shù)據(jù)到嵌入式數(shù)據(jù)庫SQLITE中。除了周期性查詢,當(dāng)用戶發(fā)起查詢指令后,網(wǎng)關(guān)會實時查詢數(shù)據(jù)。嵌入式網(wǎng)關(guān)與Zigbee通過串口進行數(shù)據(jù)傳輸,還可以通過串口發(fā)送配置命令。數(shù)據(jù)庫的數(shù)據(jù)存儲到外置SD卡上,用來保證有足夠的空間。嵌入式網(wǎng)關(guān)的數(shù)據(jù)會通過Socket實時的上傳到客戶端。
網(wǎng)關(guān)掛載的XBee-PRO協(xié)調(diào)器模塊在上電后會自動組網(wǎng)[5]。XBee-PRO模塊具有空、睡眠、命令、發(fā)送和接收5種操作模式。每一種模式都有透明(AT)和應(yīng)用程序接口(API)兩種操作模式。工作在AT模式時,XBee-PRO模塊具有替代串口線的作用,并以字節(jié)為單位操作各種數(shù)據(jù)。而當(dāng)系統(tǒng)工作在API模式時,XBee-PRO模塊收發(fā)的所有數(shù)據(jù)均被包含在特定格式數(shù)據(jù)幀中。API方式包含的功能更全面并兼容AT指令,可以對XBee-PRO進行更加深層次的操作。所以對XBee的操作采用API方式。
工作在API方式時,XBee-PRO模塊收發(fā)的數(shù)據(jù)將被包含在特定格式的數(shù)據(jù)幀中。
本系統(tǒng)定義的路由器模塊發(fā)送車位狀態(tài)的API數(shù)據(jù)幀結(jié)構(gòu)如圖4所示。
幀頭為0x7E固定值,數(shù)據(jù)幀中包含目標的MAC地址及網(wǎng)絡(luò)地址,其中MAC地址固定而且每個模塊都不相同,車位編號為3個字節(jié)。
圖4 車位狀態(tài)API數(shù)據(jù)幀F(xiàn)ig.4 API data frame of parking status
為了方便的配置網(wǎng)關(guān)的IP,在嵌入式網(wǎng)關(guān)移植了一個Boa服務(wù)器[6],Boa相關(guān)的程序包括前端和后端兩個部分,前端主要包括html和JavaScript編寫的用戶界面和對應(yīng)事件函數(shù),后端用來處理html網(wǎng)頁傳送過來的數(shù)據(jù),在處理完成后返回給網(wǎng)頁調(diào)用的函數(shù)需要的數(shù)據(jù),前端再利用收到的數(shù)據(jù)更新頁面。通過圖5所示界面來配置IP和連接WIFI,設(shè)置完之后相關(guān)數(shù)據(jù)均會更新到啟動文件,以保證系統(tǒng)重啟后數(shù)據(jù)不丟失。
圖5 網(wǎng)絡(luò)配置頁面Fig.5 Configuration page of network
在Eclipse環(huán)境下,使用Java語言設(shè)計了安卓客戶端[7],通過WIFI網(wǎng)絡(luò)或者蜂窩網(wǎng)絡(luò),可完成與嵌入式無線網(wǎng)關(guān)的通信,網(wǎng)關(guān)把輪詢到的節(jié)點數(shù)據(jù)處理后實時傳送的客戶端??蛻舳诉€可以發(fā)起指令,通過網(wǎng)關(guān)查詢各車位狀態(tài)信息。用戶不需要到達停車場即可通過客戶端軟件直觀的查看區(qū)域車位占用情況,被占用的呈紅色,未占用的呈灰色。除此之外,還可以對空車位進行預(yù)約,以保證車輛到達時車位還在,網(wǎng)關(guān)會通過每個手機的IMEI號來區(qū)分不同的用戶??蛻舳诉€自動進行停車計費,方便車主查看??蛻舳塑浖缑嫒鐖D6所示。
嵌入式[8-9]無線網(wǎng)關(guān)采用ARM11微處理器和Zigbee通信模塊,使得數(shù)據(jù)傳輸更精準,距離更遠,解決了當(dāng)前系統(tǒng)布線復(fù)雜的問題。實際測試表明,嵌入式無線網(wǎng)關(guān)可與掛接XBee-PRO路由器模塊的檢測節(jié)點順利組成Mesh網(wǎng)絡(luò),客戶端軟件可以簡潔直觀的顯示停車場的車位占用狀態(tài),具有一定的應(yīng)用價值。
圖6 客戶端軟件界面Fig.6 Interface of client software
[1]劉凱.ARM嵌入式接口技術(shù)應(yīng)用[M].北京:清華大學(xué)出版社,2009.
[2]馬忠梅.ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2002.
[3]李亞峰,歐文盛.ARM嵌入式Linux系統(tǒng)開發(fā)[M].北京:清華大學(xué)出版社,2008.
[4]RichardStevens W,StephenA.Rago.UNIX環(huán)境高級編程[M].2版.尤晉元,等,譯.北京:人民郵電出版社,2006.
[5]Hossain E,Kin K.Leung.無線Mesh網(wǎng)絡(luò)架構(gòu)與協(xié)議[M].易燕等,譯.北京:機械工業(yè)出版社,2009.
[6]李磊,楊柏林,胡維華.嵌入式Web服務(wù)器軟件的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2003,24(10):100-101.LI Lei,YANG Bo-lin,HU Wei-hua.Design and implementation of embedded Web server software[J].Computer Engineering and Design,2003,24(10):100-101.
[7]李剛著.瘋狂Android講義[M].北京:電子工業(yè),2011.
[8]孫隴平.嵌入式軟件覆蓋率測試的研究與應(yīng)用[J].現(xiàn)代電子技術(shù),2014(18):67-69.SUN Long-ping.Research and application of embedded software coverage rate testing[J].Modern Electronics Technique,2014(18):67-69.
[9]張凱,李臨生.基于嵌入式ARM下的視頻監(jiān)控系統(tǒng)的實現(xiàn)[J].電子科技,2013(5):34-36.ZHANG Kai,LI Lin-sheng.Realization of a video monitoring system based on embedded ARM[J].Electronic Science and Technology,2013(5):34-36.