王 東,呂文濤
(重慶理工大學 計算機科學與工程學院, 重慶 400054)
隨著汽車保有量的劇增,停車難的問題日益嚴重[1]。我國很多城市對停車位的需求已遠超城市空間的承受能力,繼續增建停車場已無法解決車多位少的問題。因此,對城市里現有停車位統一管理、錯時停車是個很好的舉措。這么做的前提條件是獲取停車位的狀況信息,所以需要一套停車位管理系統。
對停車位的檢測技術有很多種,但每種技術都有弊端。磁感線圈[2]檢測施工難度大、成本高、需要有線供電;超聲波檢測[3]、紅外線檢測[4]、圖像檢測[5]均不能在室外使用且易受溫度、光照、雨雪等環境的影響。選用地磁傳感器[6]檢測停車位,其靈敏度高、體積小、安裝靈活方便、抗干擾能力強,既不受環境因素,如光照、天氣等的影響,又不受外界電磁波的影響。
物聯網無線傳輸技術有WiFi、藍牙、ZigBee和2G/3G/4G,它們的缺點非常明顯,前三者雖然功耗低但傳輸距離近,后三者傳輸距離遠但功耗高。自從出現了LPWAN(lower power wide area network,低功耗廣域網)技術,便可以最大程度地實現遠距離和低功耗的兼顧。作為LPWAN技術的一種——LoRa,全稱“Long Range”,是一種基于直序擴頻技術的低功耗長距離無線通信技術,抗干擾能力強,具有極好的抗多徑衰落性能[7]。
本文結合了地磁檢測技術、LoRa無線通信技術和GPRS通信技術,設計了以停車位為管理核心的停車系統。該系統與現有系統相比的優勢在于:1)組網方式簡單,維護難度小;2)全程無需上位機和人力的參與;3)所有數據匯總到云服務器,便于管理。這些優勢可以有效利用路邊的零散車位,對于解決道路交通狀況,建立良好的交通環境和秩序有著重要的意義。
系統總體結構如圖1所示,由終端節點、匯聚節點(網關)、云服務器和應用軟件組成。終端節點部署在每個停車位,實時監測車輛和車位狀態;它們與匯聚節點采用多對一的星狀拓撲結構,匯聚節點負責接收終端節點上傳的數據并通過GPRS上傳到云服務器;云服務器部署有數據庫(和http Server),為應用軟件提供數據接口;APP、Web、客戶端等應用軟件使用這些數據實現相應功能。

圖1 停車系統總體結構
相較網狀拓撲和樹狀拓撲,星狀拓撲消除了同步開銷和跳數,具有結構簡單、能耗低的特點,能夠很好地滿足物聯網的要求;而且LoRa擴頻技術將傳輸距離增加至3 km,所以可以取消額外的中繼。但是較多的終端節點連接至一個匯聚節點,會導致匯聚節點負擔過重以至于誤碼率增加和網絡癱瘓。因此,可以將其根據區域劃分為多個網絡,每個網絡分配一個匯聚節點,并使不同網絡工作在不同信道,降低信號間的干擾。
終端節點實現對停車位狀態的實時監測,并將狀態數據通過LoRa網絡上傳至匯聚節點。該節點由主控芯片STM8L051F3、地磁傳感器HMC5883L、SX1278LoRa模塊組成,如圖2所示。為每個停車位提供一個電源接口成本太高,管理和維護的費用也較高,所以每個終端節點通過電池供電。

圖2 終端節點硬件結構
STM8L051F3是一款超低功耗的8位MCU,內置8Kb Flash。它有5種低功耗模式,其中最大功耗的模式平均電流僅5.1 μA。
地磁場受經緯度、海拔、溫度等的影響,所以在不同地點數值不同,但是在某一地點的地磁場是趨于穩定的[8]。由于車輛是一塊大的金屬導體,因此車輛的靠近會影響該地的地磁場,導致地磁場發生偏移。而地磁傳感器能夠感知這種變化,進而判斷車輛的狀態和車位的狀態。HMC5883L是Honeywell公司的一款三軸各向異性磁阻(AMR)傳感器[9],可以讀取地磁場在X、Y、Z三軸上的分量,與主控芯片通過I2C接口連接。因為磁場變化的大小表明了車輛對地磁場的干擾程度,所以車輛的存在與否可以通過判斷磁場變化的大小來確定[10]。通過實驗確定一個閾值,有助于忽略旁邊車位的車輛,精確判斷本車位情況。
SX1278LoRa模塊是采用LoRa擴頻調制技術的無線傳輸模塊,可選發射功率、空中速率、信道等參數,支持空中喚醒,休眠時電流僅2.0 μA,通過UART與主控芯片連接。該模塊通過外部引腳設置其工作模式,上電后即加入網絡,并按照內部保存的工作參數工作。
匯聚節點接收終端節點發來的車位狀態信息,將車位狀態用LCD顯示出來,并通過GPRS網絡上傳至云服務器。該節點由主控芯片S3C2416、SX1278LoRa模塊、LCD、GPRS模塊SIM900A組成,如圖3所示。因為SIM900A需要穩定5 V/2 A直流電源,低電壓或低電流都會導致模塊無法正常工作;況且匯聚節點可以放置在管理員處,所以匯聚節點用直流電源供電,不需考慮功耗。

圖3 匯聚節點硬件結構
S3C2416是一款基于ARM926EJ內核的低功耗、低成本、高性能的處理器[11],具有極強的性價比優勢,內置的MMU單元為操作系統的運行提供了保證。
SIM900A是SIMCom公司推出的雙頻GSM/GPRS模塊[12-13],性能穩定、性價比高。與S3C2416的UART連接,通過向模塊發送AT指令來使用SIM900A的TCP/IP協議棧。
本系統自定義LoRa通信協議。終端節點按照一定的格式將所傳內容封裝成幀,然后發送至匯聚節點,匯聚節點按照幀格式解析出所需內容。之后的數據傳輸任務交付于GPRS,由TCP/IP協議完成。
LoRa幀格式如表1,目的地址占2個字節,給每個LoRa模塊分配一個獨一無二的地址;目的信道占1個字節,每個LoRa模塊都有32個信道可供選擇。FEC前向糾錯碼是一些冗余信息,可以提升抗干擾能力,在接收端可以用它來糾錯碼片。幀負載就是要傳輸的有效信息,由停車位號和停車位狀態組成,停車位號使用LoRa模塊自身的地址,停車位狀態直接用0/1表示無車/有車。

表1 LoRa幀格式
另外,因為整個LoRa網絡使用同一信道,多個終端節點同時向匯聚節點發送數據會導致數據沖突。為避免這一情況,采用發送/應答機制,即匯聚節點收到有效信息后向源節點回復收到,若終端節點沒有收到應答幀,則隨機延時一段時間再次發送,直到發送成功。

圖4 終端節點軟件流程
終端節點直接運行裸板程序,采用睡眠-喚醒-睡眠的循環工作模式來降低功耗。喚醒后檢測停車位狀態,若發生變化,則上傳數據至匯聚節點;否則繼續睡眠至下次喚醒,軟件流程如圖4所示。時間片設為1 s(即每隔1 s檢測一次停車位)。
匯聚節點運行Linux操作系統,實現了多任務并發執行,保證了系統長期穩定地運行。
先移植U-boot到Nand Flash,然后燒寫Linux Kernel、制作根文件系統。該節點的軟件是以文件系統中的文件存在的,編寫好后交叉編譯為可執行文件,與根文件系統一起制作成文件系統,并燒錄到Nand Flash。調試時采用NFS的方式掛接文件系統。

圖5 匯聚節點軟件流程
軟件流程如圖5所示,LCD顯示和收發數據并發進行。由UART發送一系列的AT命令啟動GPRS數據傳輸:(1)AT+CSTT啟動任務并設置接入點APN、用戶名、密碼 ;(2)AT+CIICR激活移動場景,發起GPRS無線連接 ;(3)AT+CIFSR獲取本地IP地址 ;(4)AT+CIPSTART =“TCP”,“公網IP”,端口號,與遠程服務器建立TCP連接;(5)AT+CIPSEND發送數據,在回復“>”后輸入數據,最后輸入0x1A 啟動發送。當TCP連接保持的時候,僅進行步驟(5)即可,但若一段時間內沒有數據交互,TCP連接將會自動斷開。我們可以每次發送數據時進行(1)~(5)的步驟,也可以采用持續發送心跳包的方式保持TCP連接,一般間隔30 s。
Linux中“萬物皆文件”,匯聚節點中所有設備都被抽象為Linux中的一個文件。對它們的操作也就是讀寫相應的文件。
收發數據關鍵代碼如下:
#define LoRa_Device "/dev/ttySAC0"
#define GPRS_Device "/dev/ttySAC1"
fd1= open(LoRa_Device,O_RDWR);
serial_init(fd1); //自建函數,初始化串口
read(fd1,buf,100); //終端上傳的數據存入buf
write(fd1,"ok",strlen("ok")); //發送應答
fd2 = open(GPRS_Device,O_RDWR);
serial_init(fd2);
/*啟動GPRS發送的一系列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顯示關鍵代碼如下:
#define LCD_Device "/dev/fb0"
fb_open(fbd,LCD_Device);
fb_draw(fbd,COLOR);

圖6 云服務器軟件流程
//總畫圖函數,利用描點、劃線的基本函數實現。
云服務器采用阿里云,操作系統是CentOS,在上面部署有MySQL數據庫。服務器運行Socket監聽程序,接收GPRS上傳的數據,并存儲到數據庫中,軟件流程如圖6所示。
接收GPRS數據關鍵代碼:
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數據庫操作關鍵代碼:
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);
該系統的開放性體現在:開發不同的應用軟件可以實現不同的功能。比如:繳費功能,從云服務器上得到某車位的車輛停放時間,計算出要繳費的金額,手機APP繳費即可。導航功能,事先在云服務器的數據庫中存儲停車位的位置信息,手機APP調用地圖ADK實現導航。核算功能,管理員在客戶端或Web端登入賬號密碼,查看車位停放歷史、每月收入情況等。
將地磁傳感器放置在停車位旁邊,使得y軸正方向與車輛駛入停車位的方向相同,y軸正方向水平順時針旋轉90°便是x軸,z軸垂直于水平面。測試地磁傳感器與車輛不同距離時磁場的變化量,實驗數據如表2所示。檢測結果表明,將地磁傳感器放在距車輛0.3 m范圍內,閾值設為1.3 gauss,可以有效檢測車輛的存在,并可以過濾掉旁邊停車位車輛帶來的干擾。
搭建系統測試環境:匯聚節點與終端節點點對點傳輸,LoRa模塊工作在433 MHz,發射功率20 dBm,空中速率2.4 kbps。直接由終端節點的控制芯片發送一定量的數據包,匯聚節點收到后顯示在LCD上。為了測試LoRa通信的有效傳輸距離,將終端節點分開放在空地上,然后移動匯聚節點并進行收發測試。測試結果如表3所示,其單跳通信距離遠大于ZigBee、WiFi和藍牙,表明LoRa技術非常適用于低功耗廣域網的構建。

表3 LoRa通信距離測試結果
實驗結果表明,LoRa傳輸的有效距離可達公里級,本文系統實現的LoRa網絡可以實現停車場的車位監測工作。如果分組建網,則可以將傳輸范圍擴大到整個城市。

圖7 停車系統數據庫
車輛駛入和駛出停車位時,終端節點最終將信息上傳至云服務器,云服務器接收后存儲到數據庫。數據庫名為Parking_System,每個停車位對應1張表。3個停車位參與了實驗,如圖7所示。表中每行表示了1次停車行為(一進一出),如圖8所示,time_in表示進入停車位時間,time_out表示離開停車位時間。
測試證明了車輛停放時間被準確記錄到云服務器的數據庫中。
大多數現有智能停車系統的無線傳輸技術選擇的是ZigBee,原因是ZigBee技術比較成熟,有現成的協議棧。小米的智能家居用的就是ZigBee技術。但是ZigBee技術的重要缺點就是單跳傳輸距離近,只能通過增加中繼的方式延長傳輸距離。

圖8 停車位信息表
文獻[14]的中的仿真實驗表明,ZigBee在無中繼節點時只能傳輸80 m,增加了1個中繼后也只有150 m。根據本文LoRa通信測試結果,ZigBee要經過約12個中繼節點才能達到LoRa的傳輸距離。這正是本文系統的優勢所在。
系統完成了物聯網系統的感知層和傳輸層的設計與實現,用地磁傳感器完成底層信息采集,以LoRa技術為核心搭建了底層傳輸網絡,并對應用層軟件設計提出了設計思想。
系統的特點如下:
1) 用地磁傳感器完成底層信息采集,靈敏度高,抗干擾能力強。
2) 采用LoRa技術作為底層傳輸網絡,傳輸距離遠,功耗小,網絡拓撲簡單,減少了額外的中繼成本。
3) 匯聚節點直接添加GPRS模塊,運行操作系統,減少了對上位機以及人力的依賴,自動化程度更高。
4) LCD實現了停車位狀態信息的實時發布,若要用電子終端更加快捷方便地查詢預訂,可以開發相應的應用軟件實現,該系統為上層應用軟件的開發提供了開放性。
[1] 康正寧,周振華.試論“互聯網+停車”模式[J].上海經濟研究,2017(3):115-122.
[2] 夏發欽.利用地感應線圈檢測機動車輛的原理與實現[D].武漢:武漢科技大學,2011.
[3] 劉維波.基于Zigbee無線傳感網絡的超聲波車位檢測系統[D].西安:長安大學,2011.
[4] KRANIG J,MINGE E,JONES C.Field test of monitoring of urban vehicle operations using non-instrusive technologies:Final Report.1997.
[5] 李宇成,嚴娟莉,王目樹,等.利用視頻圖像檢測車位狀態的方法[J].計算機工程與設計,2012,33(1):282-285.
[6] 鄭東旭.基于地磁的智能停車系統設計與實現[D].杭州:浙江大學,2016.
[7] Semtech.WSG_44-Introduction-LoRa-Technology[EB/OL].[2016-12-26].https://www.semtech.com.
[8] 康國發,白春華,高國明.地磁場長期變化和日長十年尺度變化的周期特征[J].地球物理學報,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] 崔遜學,左從菊.無線傳感器網絡簡明教程[M].北京:清華大學出版社,2015:38.
[11] 趙立輝,王京,霍春寶.基于物聯網的智能家居監控系統設計[J].電視技術,2013,37(22):82-84,96.
[12] 梁洪晶,李平.具有領導者的多智能體系統協同控制研究[J].渤海大學學報(自然科學版),2017(3):271-277.
[12] 霍濤,賈振堂.基于STM32和SIM900A的無線通信模塊設計與實現[J].電子設計工程,2014,17:106-110,114.
[13] 岳學軍,劉永鑫,王葉夫,等.基于ZigBee與地磁傳感技術的停車誘導系統[J].計算機應用,2014,34(3):884-887.