王 東,呂文濤
(重慶理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 重慶 400054)
隨著汽車保有量的劇增,停車難的問題日益嚴(yán)重[1]。我國很多城市對停車位的需求已遠(yuǎn)超城市空間的承受能力,繼續(xù)增建停車場已無法解決車多位少的問題。因此,對城市里現(xiàn)有停車位統(tǒng)一管理、錯時停車是個很好的舉措。這么做的前提條件是獲取停車位的狀況信息,所以需要一套停車位管理系統(tǒng)。
對停車位的檢測技術(shù)有很多種,但每種技術(shù)都有弊端。磁感線圈[2]檢測施工難度大、成本高、需要有線供電;超聲波檢測[3]、紅外線檢測[4]、圖像檢測[5]均不能在室外使用且易受溫度、光照、雨雪等環(huán)境的影響。選用地磁傳感器[6]檢測停車位,其靈敏度高、體積小、安裝靈活方便、抗干擾能力強(qiáng),既不受環(huán)境因素,如光照、天氣等的影響,又不受外界電磁波的影響。
物聯(lián)網(wǎng)無線傳輸技術(shù)有WiFi、藍(lán)牙、ZigBee和2G/3G/4G,它們的缺點(diǎn)非常明顯,前三者雖然功耗低但傳輸距離近,后三者傳輸距離遠(yuǎn)但功耗高。自從出現(xiàn)了LPWAN(lower power wide area network,低功耗廣域網(wǎng))技術(shù),便可以最大程度地實(shí)現(xiàn)遠(yuǎn)距離和低功耗的兼顧。作為LPWAN技術(shù)的一種——LoRa,全稱“Long Range”,是一種基于直序擴(kuò)頻技術(shù)的低功耗長距離無線通信技術(shù),抗干擾能力強(qiáng),具有極好的抗多徑衰落性能[7]。
本文結(jié)合了地磁檢測技術(shù)、LoRa無線通信技術(shù)和GPRS通信技術(shù),設(shè)計(jì)了以停車位為管理核心的停車系統(tǒng)。該系統(tǒng)與現(xiàn)有系統(tǒng)相比的優(yōu)勢在于:1)組網(wǎng)方式簡單,維護(hù)難度?。?)全程無需上位機(jī)和人力的參與;3)所有數(shù)據(jù)匯總到云服務(wù)器,便于管理。這些優(yōu)勢可以有效利用路邊的零散車位,對于解決道路交通狀況,建立良好的交通環(huán)境和秩序有著重要的意義。
系統(tǒng)總體結(jié)構(gòu)如圖1所示,由終端節(jié)點(diǎn)、匯聚節(jié)點(diǎn)(網(wǎng)關(guān))、云服務(wù)器和應(yīng)用軟件組成。終端節(jié)點(diǎn)部署在每個停車位,實(shí)時監(jiān)測車輛和車位狀態(tài);它們與匯聚節(jié)點(diǎn)采用多對一的星狀拓?fù)浣Y(jié)構(gòu),匯聚節(jié)點(diǎn)負(fù)責(zé)接收終端節(jié)點(diǎn)上傳的數(shù)據(jù)并通過GPRS上傳到云服務(wù)器;云服務(wù)器部署有數(shù)據(jù)庫(和http Server),為應(yīng)用軟件提供數(shù)據(jù)接口;APP、Web、客戶端等應(yīng)用軟件使用這些數(shù)據(jù)實(shí)現(xiàn)相應(yīng)功能。
圖1 停車系統(tǒng)總體結(jié)構(gòu)
相較網(wǎng)狀拓?fù)浜蜆錉钔負(fù)?,星狀拓?fù)湎送介_銷和跳數(shù),具有結(jié)構(gòu)簡單、能耗低的特點(diǎn),能夠很好地滿足物聯(lián)網(wǎng)的要求;而且LoRa擴(kuò)頻技術(shù)將傳輸距離增加至3 km,所以可以取消額外的中繼。但是較多的終端節(jié)點(diǎn)連接至一個匯聚節(jié)點(diǎn),會導(dǎo)致匯聚節(jié)點(diǎn)負(fù)擔(dān)過重以至于誤碼率增加和網(wǎng)絡(luò)癱瘓。因此,可以將其根據(jù)區(qū)域劃分為多個網(wǎng)絡(luò),每個網(wǎng)絡(luò)分配一個匯聚節(jié)點(diǎn),并使不同網(wǎng)絡(luò)工作在不同信道,降低信號間的干擾。
終端節(jié)點(diǎn)實(shí)現(xiàn)對停車位狀態(tài)的實(shí)時監(jiān)測,并將狀態(tài)數(shù)據(jù)通過LoRa網(wǎng)絡(luò)上傳至匯聚節(jié)點(diǎn)。該節(jié)點(diǎn)由主控芯片STM8L051F3、地磁傳感器HMC5883L、SX1278LoRa模塊組成,如圖2所示。為每個停車位提供一個電源接口成本太高,管理和維護(hù)的費(fèi)用也較高,所以每個終端節(jié)點(diǎn)通過電池供電。
圖2 終端節(jié)點(diǎn)硬件結(jié)構(gòu)
STM8L051F3是一款超低功耗的8位MCU,內(nèi)置8Kb Flash。它有5種低功耗模式,其中最大功耗的模式平均電流僅5.1 μA。
地磁場受經(jīng)緯度、海拔、溫度等的影響,所以在不同地點(diǎn)數(shù)值不同,但是在某一地點(diǎn)的地磁場是趨于穩(wěn)定的[8]。由于車輛是一塊大的金屬導(dǎo)體,因此車輛的靠近會影響該地的地磁場,導(dǎo)致地磁場發(fā)生偏移。而地磁傳感器能夠感知這種變化,進(jìn)而判斷車輛的狀態(tài)和車位的狀態(tài)。HMC5883L是Honeywell公司的一款三軸各向異性磁阻(AMR)傳感器[9],可以讀取地磁場在X、Y、Z三軸上的分量,與主控芯片通過I2C接口連接。因?yàn)榇艌鲎兓拇笮”砻髁塑囕v對地磁場的干擾程度,所以車輛的存在與否可以通過判斷磁場變化的大小來確定[10]。通過實(shí)驗(yàn)確定一個閾值,有助于忽略旁邊車位的車輛,精確判斷本車位情況。
SX1278LoRa模塊是采用LoRa擴(kuò)頻調(diào)制技術(shù)的無線傳輸模塊,可選發(fā)射功率、空中速率、信道等參數(shù),支持空中喚醒,休眠時電流僅2.0 μA,通過UART與主控芯片連接。該模塊通過外部引腳設(shè)置其工作模式,上電后即加入網(wǎng)絡(luò),并按照內(nèi)部保存的工作參數(shù)工作。
匯聚節(jié)點(diǎn)接收終端節(jié)點(diǎn)發(fā)來的車位狀態(tài)信息,將車位狀態(tài)用LCD顯示出來,并通過GPRS網(wǎng)絡(luò)上傳至云服務(wù)器。該節(jié)點(diǎn)由主控芯片S3C2416、SX1278LoRa模塊、LCD、GPRS模塊SIM900A組成,如圖3所示。因?yàn)镾IM900A需要穩(wěn)定5 V/2 A直流電源,低電壓或低電流都會導(dǎo)致模塊無法正常工作;況且匯聚節(jié)點(diǎn)可以放置在管理員處,所以匯聚節(jié)點(diǎn)用直流電源供電,不需考慮功耗。
圖3 匯聚節(jié)點(diǎn)硬件結(jié)構(gòu)
S3C2416是一款基于ARM926EJ內(nèi)核的低功耗、低成本、高性能的處理器[11],具有極強(qiáng)的性價比優(yōu)勢,內(nèi)置的MMU單元為操作系統(tǒng)的運(yùn)行提供了保證。
SIM900A是SIMCom公司推出的雙頻GSM/GPRS模塊[12-13],性能穩(wěn)定、性價比高。與S3C2416的UART連接,通過向模塊發(fā)送AT指令來使用SIM900A的TCP/IP協(xié)議棧。
本系統(tǒng)自定義LoRa通信協(xié)議。終端節(jié)點(diǎn)按照一定的格式將所傳內(nèi)容封裝成幀,然后發(fā)送至匯聚節(jié)點(diǎn),匯聚節(jié)點(diǎn)按照幀格式解析出所需內(nèi)容。之后的數(shù)據(jù)傳輸任務(wù)交付于GPRS,由TCP/IP協(xié)議完成。
LoRa幀格式如表1,目的地址占2個字節(jié),給每個LoRa模塊分配一個獨(dú)一無二的地址;目的信道占1個字節(jié),每個LoRa模塊都有32個信道可供選擇。FEC前向糾錯碼是一些冗余信息,可以提升抗干擾能力,在接收端可以用它來糾錯碼片。幀負(fù)載就是要傳輸?shù)挠行畔ⅲ赏\囄惶柡屯\囄粻顟B(tài)組成,停車位號使用LoRa模塊自身的地址,停車位狀態(tài)直接用0/1表示無車/有車。
表1 LoRa幀格式
另外,因?yàn)檎麄€LoRa網(wǎng)絡(luò)使用同一信道,多個終端節(jié)點(diǎn)同時向匯聚節(jié)點(diǎn)發(fā)送數(shù)據(jù)會導(dǎo)致數(shù)據(jù)沖突。為避免這一情況,采用發(fā)送/應(yīng)答機(jī)制,即匯聚節(jié)點(diǎn)收到有效信息后向源節(jié)點(diǎn)回復(fù)收到,若終端節(jié)點(diǎn)沒有收到應(yīng)答幀,則隨機(jī)延時一段時間再次發(fā)送,直到發(fā)送成功。
圖4 終端節(jié)點(diǎn)軟件流程
終端節(jié)點(diǎn)直接運(yùn)行裸板程序,采用睡眠-喚醒-睡眠的循環(huán)工作模式來降低功耗。喚醒后檢測停車位狀態(tài),若發(fā)生變化,則上傳數(shù)據(jù)至匯聚節(jié)點(diǎn);否則繼續(xù)睡眠至下次喚醒,軟件流程如圖4所示。時間片設(shè)為1 s(即每隔1 s檢測一次停車位)。
匯聚節(jié)點(diǎn)運(yùn)行Linux操作系統(tǒng),實(shí)現(xiàn)了多任務(wù)并發(fā)執(zhí)行,保證了系統(tǒng)長期穩(wěn)定地運(yùn)行。
先移植U-boot到Nand Flash,然后燒寫Linux Kernel、制作根文件系統(tǒng)。該節(jié)點(diǎn)的軟件是以文件系統(tǒng)中的文件存在的,編寫好后交叉編譯為可執(zhí)行文件,與根文件系統(tǒng)一起制作成文件系統(tǒng),并燒錄到Nand Flash。調(diào)試時采用NFS的方式掛接文件系統(tǒng)。
圖5 匯聚節(jié)點(diǎn)軟件流程
軟件流程如圖5所示,LCD顯示和收發(fā)數(shù)據(jù)并發(fā)進(jìn)行。由UART發(fā)送一系列的AT命令啟動GPRS數(shù)據(jù)傳輸:(1)AT+CSTT啟動任務(wù)并設(shè)置接入點(diǎn)APN、用戶名、密碼 ;(2)AT+CIICR激活移動場景,發(fā)起GPRS無線連接 ;(3)AT+CIFSR獲取本地IP地址 ;(4)AT+CIPSTART =“TCP”,“公網(wǎng)IP”,端口號,與遠(yuǎn)程服務(wù)器建立TCP連接;(5)AT+CIPSEND發(fā)送數(shù)據(jù),在回復(fù)“>”后輸入數(shù)據(jù),最后輸入0x1A 啟動發(fā)送。當(dāng)TCP連接保持的時候,僅進(jìn)行步驟(5)即可,但若一段時間內(nèi)沒有數(shù)據(jù)交互,TCP連接將會自動斷開。我們可以每次發(fā)送數(shù)據(jù)時進(jìn)行(1)~(5)的步驟,也可以采用持續(xù)發(fā)送心跳包的方式保持TCP連接,一般間隔30 s。
Linux中“萬物皆文件”,匯聚節(jié)點(diǎn)中所有設(shè)備都被抽象為Linux中的一個文件。對它們的操作也就是讀寫相應(yīng)的文件。
收發(fā)數(shù)據(jù)關(guān)鍵代碼如下:
#define LoRa_Device "/dev/ttySAC0"
#define GPRS_Device "/dev/ttySAC1"
fd1= open(LoRa_Device,O_RDWR);
serial_init(fd1); //自建函數(shù),初始化串口
read(fd1,buf,100); //終端上傳的數(shù)據(jù)存入buf
write(fd1,"ok",strlen("ok")); //發(fā)送應(yīng)答
fd2 = open(GPRS_Device,O_RDWR);
serial_init(fd2);
/*啟動GPRS發(fā)送的一系列AT指令,指令間需要的最小延時不同*/
write(fd2,"AT+CSTT ",strlen("AT+CSTT "));
sleep(1);
write(fd2,"AT+CIICR ",strlen("AT+CIICR "));
sleep(1);
write(fd2,"AT+CIFSR ",strlen("AT+CIFSR "));
sleep(1);
write(fd2,"AT+CIPSTART="TCP","119.23.219.69",4321 ",strlen("AT+CIPSTART="TCP","118.190.93.84",2317 "));
sleep(5);
write(fd2,"AT+CIPSEND ",strlen("AT+CIPSEND "));
sleep(3);
write(fd2,buf,strlen(buf));
sleep(1);
write(fd2,&hex,1);
sleep(3);
LCD顯示關(guān)鍵代碼如下:
#define LCD_Device "/dev/fb0"
fb_open(fbd,LCD_Device);
fb_draw(fbd,COLOR);
圖6 云服務(wù)器軟件流程
//總畫圖函數(shù),利用描點(diǎn)、劃線的基本函數(shù)實(shí)現(xiàn)。
云服務(wù)器采用阿里云,操作系統(tǒng)是CentOS,在上面部署有MySQL數(shù)據(jù)庫。服務(wù)器運(yùn)行Socket監(jiān)聽程序,接收GPRS上傳的數(shù)據(jù),并存儲到數(shù)據(jù)庫中,軟件流程如圖6所示。
接收GPRS數(shù)據(jù)關(guān)鍵代碼:
sockfd = socket(AF_INET,SOCK_STREAM,0);
bind(sockfd,(struct sockaddr* )&server_sockaddr,sizeof(struct sockaddr));
listen(sockfd,MAX_QUE_NUM);
accept(sockfd,(struct sockaddr*)&client_sockaddr,&sin_size);
recv(client_fd,buf,BUFFER_SIZE,0);
MySQL數(shù)據(jù)庫操作關(guān)鍵代碼:
g_conn = mysql_init(NULL);
mysql_real_connect(g_conn,g_host_name,g_user_name,g_password,g_dbname,0,NULL,0);
executesql("set name utf8");
if(state==1)
sprintf(sql,"INSERT INTO No_");
strcat(sql,no);
strcat(sql,"(time_in) VALUES(now())");
else
sprintf(sql,"UPDATE No_");
strcat(sql,no);
strcat(sql,"SET time_out=now() WHERE ISNULL (time_out)");
executesql(sql);
該系統(tǒng)的開放性體現(xiàn)在:開發(fā)不同的應(yīng)用軟件可以實(shí)現(xiàn)不同的功能。比如:繳費(fèi)功能,從云服務(wù)器上得到某車位的車輛停放時間,計(jì)算出要繳費(fèi)的金額,手機(jī)APP繳費(fèi)即可。導(dǎo)航功能,事先在云服務(wù)器的數(shù)據(jù)庫中存儲停車位的位置信息,手機(jī)APP調(diào)用地圖ADK實(shí)現(xiàn)導(dǎo)航。核算功能,管理員在客戶端或Web端登入賬號密碼,查看車位停放歷史、每月收入情況等。
將地磁傳感器放置在停車位旁邊,使得y軸正方向與車輛駛?cè)胪\囄坏姆较蛳嗤?,y軸正方向水平順時針旋轉(zhuǎn)90°便是x軸,z軸垂直于水平面。測試地磁傳感器與車輛不同距離時磁場的變化量,實(shí)驗(yàn)數(shù)據(jù)如表2所示。檢測結(jié)果表明,將地磁傳感器放在距車輛0.3 m范圍內(nèi),閾值設(shè)為1.3 gauss,可以有效檢測車輛的存在,并可以過濾掉旁邊停車位車輛帶來的干擾。
搭建系統(tǒng)測試環(huán)境:匯聚節(jié)點(diǎn)與終端節(jié)點(diǎn)點(diǎn)對點(diǎn)傳輸,LoRa模塊工作在433 MHz,發(fā)射功率20 dBm,空中速率2.4 kbps。直接由終端節(jié)點(diǎn)的控制芯片發(fā)送一定量的數(shù)據(jù)包,匯聚節(jié)點(diǎn)收到后顯示在LCD上。為了測試LoRa通信的有效傳輸距離,將終端節(jié)點(diǎn)分開放在空地上,然后移動匯聚節(jié)點(diǎn)并進(jìn)行收發(fā)測試。測試結(jié)果如表3所示,其單跳通信距離遠(yuǎn)大于ZigBee、WiFi和藍(lán)牙,表明LoRa技術(shù)非常適用于低功耗廣域網(wǎng)的構(gòu)建。
表3 LoRa通信距離測試結(jié)果
實(shí)驗(yàn)結(jié)果表明,LoRa傳輸?shù)挠行Ь嚯x可達(dá)公里級,本文系統(tǒng)實(shí)現(xiàn)的LoRa網(wǎng)絡(luò)可以實(shí)現(xiàn)停車場的車位監(jiān)測工作。如果分組建網(wǎng),則可以將傳輸范圍擴(kuò)大到整個城市。
圖7 停車系統(tǒng)數(shù)據(jù)庫
車輛駛?cè)牒婉偝鐾\囄粫r,終端節(jié)點(diǎn)最終將信息上傳至云服務(wù)器,云服務(wù)器接收后存儲到數(shù)據(jù)庫。數(shù)據(jù)庫名為Parking_System,每個停車位對應(yīng)1張表。3個停車位參與了實(shí)驗(yàn),如圖7所示。表中每行表示了1次停車行為(一進(jìn)一出),如圖8所示,time_in表示進(jìn)入停車位時間,time_out表示離開停車位時間。
測試證明了車輛停放時間被準(zhǔn)確記錄到云服務(wù)器的數(shù)據(jù)庫中。
大多數(shù)現(xiàn)有智能停車系統(tǒng)的無線傳輸技術(shù)選擇的是ZigBee,原因是ZigBee技術(shù)比較成熟,有現(xiàn)成的協(xié)議棧。小米的智能家居用的就是ZigBee技術(shù)。但是ZigBee技術(shù)的重要缺點(diǎn)就是單跳傳輸距離近,只能通過增加中繼的方式延長傳輸距離。
圖8 停車位信息表
文獻(xiàn)[14]的中的仿真實(shí)驗(yàn)表明,ZigBee在無中繼節(jié)點(diǎn)時只能傳輸80 m,增加了1個中繼后也只有150 m。根據(jù)本文LoRa通信測試結(jié)果,ZigBee要經(jīng)過約12個中繼節(jié)點(diǎn)才能達(dá)到LoRa的傳輸距離。這正是本文系統(tǒng)的優(yōu)勢所在。
系統(tǒng)完成了物聯(lián)網(wǎng)系統(tǒng)的感知層和傳輸層的設(shè)計(jì)與實(shí)現(xiàn),用地磁傳感器完成底層信息采集,以LoRa技術(shù)為核心搭建了底層傳輸網(wǎng)絡(luò),并對應(yīng)用層軟件設(shè)計(jì)提出了設(shè)計(jì)思想。
系統(tǒng)的特點(diǎn)如下:
1) 用地磁傳感器完成底層信息采集,靈敏度高,抗干擾能力強(qiáng)。
2) 采用LoRa技術(shù)作為底層傳輸網(wǎng)絡(luò),傳輸距離遠(yuǎn),功耗小,網(wǎng)絡(luò)拓?fù)浜唵?,減少了額外的中繼成本。
3) 匯聚節(jié)點(diǎn)直接添加GPRS模塊,運(yùn)行操作系統(tǒng),減少了對上位機(jī)以及人力的依賴,自動化程度更高。
4) LCD實(shí)現(xiàn)了停車位狀態(tài)信息的實(shí)時發(fā)布,若要用電子終端更加快捷方便地查詢預(yù)訂,可以開發(fā)相應(yīng)的應(yīng)用軟件實(shí)現(xiàn),該系統(tǒng)為上層應(yīng)用軟件的開發(fā)提供了開放性。
[1] 康正寧,周振華.試論“互聯(lián)網(wǎng)+停車”模式[J].上海經(jīng)濟(jì)研究,2017(3):115-122.
[2] 夏發(fā)欽.利用地感應(yīng)線圈檢測機(jī)動車輛的原理與實(shí)現(xiàn)[D].武漢:武漢科技大學(xué),2011.
[3] 劉維波.基于Zigbee無線傳感網(wǎng)絡(luò)的超聲波車位檢測系統(tǒng)[D].西安:長安大學(xué),2011.
[4] KRANIG J,MINGE E,JONES C.Field test of monitoring of urban vehicle operations using non-instrusive technologies:Final Report.1997.
[5] 李宇成,嚴(yán)娟莉,王目樹,等.利用視頻圖像檢測車位狀態(tài)的方法[J].計(jì)算機(jī)工程與設(shè)計(jì),2012,33(1):282-285.
[6] 鄭東旭.基于地磁的智能停車系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:浙江大學(xué),2016.
[7] Semtech.WSG_44-Introduction-LoRa-Technology[EB/OL].[2016-12-26].https://www.semtech.com.
[8] 康國發(fā),白春華,高國明.地磁場長期變化和日長十年尺度變化的周期特征[J].地球物理學(xué)報(bào),2008,51(2):369-375.
[9] seeedstudio.com.3-AxisDigitalCompassICHMC5883[EB/OL].[2016-01-10].https://www.seeedstudio.com/wiki/images/4/42/HMC5883.pdf.
[10] 崔遜學(xué),左從菊.無線傳感器網(wǎng)絡(luò)簡明教程[M].北京:清華大學(xué)出版社,2015:38.
[11] 趙立輝,王京,霍春寶.基于物聯(lián)網(wǎng)的智能家居監(jiān)控系統(tǒng)設(shè)計(jì)[J].電視技術(shù),2013,37(22):82-84,96.
[12] 梁洪晶,李平.具有領(lǐng)導(dǎo)者的多智能體系統(tǒng)協(xié)同控制研究[J].渤海大學(xué)學(xué)報(bào)(自然科學(xué)版),2017(3):271-277.
[12] 霍濤,賈振堂.基于STM32和SIM900A的無線通信模塊設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2014,17:106-110,114.
[13] 岳學(xué)軍,劉永鑫,王葉夫,等.基于ZigBee與地磁傳感技術(shù)的停車誘導(dǎo)系統(tǒng)[J].計(jì)算機(jī)應(yīng)用,2014,34(3):884-887.