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