陳瑋
摘? ?要:文章提出并實現(xiàn)了一種用于車位檢測無線傳感網(wǎng)絡的智能車庫網(wǎng)關。網(wǎng)關硬件由CC2530模塊和ARM系統(tǒng)構成,軟件系統(tǒng)移植Linux系統(tǒng)和Boa服務器,通過串口接收車位采集節(jié)點的數(shù)據(jù)。Boa服務器通過調用CGI腳本獲取串口數(shù)據(jù),最后通過網(wǎng)頁發(fā)布。
關鍵詞:智能網(wǎng)關;ARM; ZigBee;智能車庫;Boa
2018年,我國小汽車保有量已經(jīng)突破2億輛,城市車位管理的智能化已成為需要迫切解決的問題[1]。隨著各種傳感技術及網(wǎng)絡技術的發(fā)展,車庫開始采用Zigbee等無線傳感網(wǎng)實時采集車位信息,該類系統(tǒng)布線簡單、易擴容,適用性強。但ZigBee網(wǎng)絡中協(xié)調器一般不進行數(shù)據(jù)的再處理和發(fā)布[2],需要設計一種智能網(wǎng)關完成協(xié)調器的接收處理并由服務器將車位信息發(fā)布到Internet,4G網(wǎng)絡,方便人們獲得車位信息、合理使用車位。
1? ? 系統(tǒng)總體結構
智能車庫網(wǎng)關有3個功能:(1)車庫內(nèi)部網(wǎng)絡連接到外部網(wǎng)絡的物理接口。(2)檢測模塊、無線傳輸設備、數(shù)據(jù)協(xié)調器等設備控制和管理的平臺。(3)車庫數(shù)據(jù)處理及發(fā)布終端。結合功能需求,網(wǎng)關總體結構設計如圖1所示。車位檢測由ZigBee網(wǎng)絡節(jié)點完成,一般由ZigBee傳輸模塊和前端傳感器組成。網(wǎng)關中設計ZigBee協(xié)調器與檢測節(jié)點組成完整的無線網(wǎng)絡,用來匯總各節(jié)點的車位信息。接收的所有車位節(jié)點信息以一定的幀格式通過串口發(fā)送給ARM平臺進行處理和發(fā)布[3]。
2? ? 系統(tǒng)硬件結構及組成
智能網(wǎng)關硬件主要由ZigBee協(xié)調器和ARM開發(fā)平臺組成。前者主要采用CC2530F256主控芯片,它是用于IEEE 802.15.4,ZigBee等應用的片上系統(tǒng)解決方案,體積小、功耗低[4],可以設置為ZigBee網(wǎng)絡協(xié)調器。網(wǎng)關中通過它集成的RF收發(fā)器來接收車位檢測節(jié)點的數(shù)據(jù)。CC2530F256串行通信接口有兩個,分別是USART0和USART1,設計中USART0通過串口轉USB芯片PL2303與PC機連接用于調試,USART1直接與ARM開發(fā)平臺主控串口連接。
ARM開發(fā)平臺采用TX-2440A,其由主控制模塊、串口通信模塊、以太網(wǎng)接口模塊等組成。主控制器模塊采用S3C2440A,可穩(wěn)定地運行嵌入式Linux系統(tǒng),同時,提供最多3個串口,設計采用UART1與ZigBee協(xié)調器連接,而UART0與PC機連接用于調試。以太網(wǎng)接口模塊采用DM9000芯片,它的驅動可以比較方便地移植到Linux系統(tǒng)。
3? ? 系統(tǒng)軟件設計
軟件設計中,ZigBee協(xié)調器采用Z-Stack協(xié)議棧,應用層設計兩個事件:(1)ZigBee網(wǎng)絡數(shù)據(jù)接收事件,處理ZigBee節(jié)點反饋的信息,取出車位信息。(2)串口轉發(fā)事件,將所有車位信息按一定幀格式打包定時發(fā)送給ARM系統(tǒng)[5]。ARM平臺軟件設計包括系統(tǒng)移植、串口數(shù)據(jù)獲取及處理和網(wǎng)關終端網(wǎng)頁設計。
3.1? Linux系統(tǒng)及Boa服務器移植
選擇Linux系統(tǒng)為ARM平臺上的操作系統(tǒng),它主要由BootLoader,Kernel,F(xiàn)ile System組成,根據(jù)系統(tǒng)的硬件進行相應的移植工作。
Bootloader主要移植工作有:(1)建立網(wǎng)關開發(fā)板項目,修改時鐘頻率和中斷配置。(2)修改和添加網(wǎng)卡相關代碼,使U-boot支持DM9000,添加ping命令宏定義,方便測試網(wǎng)絡。修改網(wǎng)卡MAC地址并給開發(fā)板添加IP地址。
Kernel中主要移植工作有:(1)LCD驅動移植,根據(jù)網(wǎng)關的LCD類型,修改內(nèi)核源碼中已有的LCD驅動,設置LCD的時鐘頻率。配置LCD參數(shù),如.width,.height等。(2)移植DM9000驅動,修改mach-smdk2440.c文件,增加網(wǎng)卡選項。在主板devs.c文件中加入DM9000驅動文件和相關數(shù)據(jù)結構體。修改驅動dm9000.c源碼,添加頭文件、指定中斷觸發(fā)方式,設置MAC地址。
Boa服務器是小巧、高效的Web服務器,是適合嵌入式Linux的HTTP服務器,源代碼開放、性能高。具體的移植步驟如圖2所示。
安裝Boa源碼包后在源碼根目錄下執(zhí)行命令.configure,配置Boa服務器;修改源碼根目錄下的Makefile文件,設置CC=arm-linux-gcc和CPP= arm-linux-gcc;在根文件系統(tǒng)中配置Boa服務器相關目錄,將編寫好的網(wǎng)頁HTML文件存放到/etc/boa/www/目錄;CGI腳本存放到/etc/boa/cgi-bin/目錄。
3.2? 串口數(shù)據(jù)與Boa服務器的交互
ZigBee協(xié)調器接收的車位信息需要網(wǎng)關在Linux下通過ARM平臺的串口讀取,再通過CGI方式與Boa服務器進行交互。
網(wǎng)關設計中,串口1設備位于/dev/目錄下的s3c2410_serial1文件,打開串口是通過使用標準的文件打開函數(shù)open函數(shù)打開,同時,設定串口的工作模式為讀寫方式、無延時模式。串口的波特率設置為57600,8位數(shù)據(jù)位,無校驗位,1位停止位。
串口接收到的車位信息用文檔保存通過CGI與Boa服務器進行交互,CGI是外部應用程序與Web服務器之間的接口標準,CGI允許Web服務器運行外部程序,并將輸出到Web瀏覽器,簡單來說CGI程序使Boa服務器網(wǎng)頁具有交互功能。
本系統(tǒng)CGI程序主要進行了以下設置:(1)在Web服務器中,打開HTML文件,以進行內(nèi)容修改。(2)通過文件方式讀取從串口中得到的車位數(shù)據(jù)。(3)根據(jù)串口數(shù)據(jù)對網(wǎng)頁的表格內(nèi)容進行選擇,標記網(wǎng)頁中要修改的地方。
網(wǎng)關運行后,可在計算機或者任意移動終端的瀏覽器中輸入設置好的IP地址,看到車庫網(wǎng)關網(wǎng)頁。每一個車位用數(shù)據(jù)中的一個位來表示,1代表有車,0表示沒車。經(jīng)測試,停車后網(wǎng)頁對應位置顯示小車圖片。
4? ? 結語
該智能車庫網(wǎng)關發(fā)揮ZigBee無線傳感網(wǎng)絡采集車位信息的優(yōu)勢,將局域網(wǎng)與外部廣域網(wǎng)進行連接。通過ARM嵌入式平臺開源設計的優(yōu)勢,使用程序小、效率高的Boa服務器與網(wǎng)頁進行連接,能起到非常好的交互作用。
[參考文獻]
[1]樊勇,任燕,司博章.基于物聯(lián)網(wǎng)技術的車位檢測系統(tǒng)[J].物聯(lián)網(wǎng)技術,2012(11):29-31.
[2]王慧,謝東,薛保珊,等.遠程監(jiān)控系統(tǒng)中嵌入式網(wǎng)關的設計[J].西昌學報(自然科學版),2018(12):85-89.
[3]林關成.基于STC89C52單片機的車庫智能監(jiān)控系統(tǒng)設計[J].計算機與數(shù)字工程,2018(10):2160-2163.
[4]牛國峰,張明新,鄭金龍.基于ZigBee的物聯(lián)網(wǎng)智能家居設計[J].常熟理工學院學報(自然科學),2018(5):51-54.
[5]李玲,郭曉玲,武仁杰,等.基于NB-IoT及ZigBee的無線傳感器網(wǎng)絡網(wǎng)關設計[J].通信技術,2019(1):234-237.