嚴冬,朱柏寒,張森
(重慶郵電大學 工業物聯網與網絡化控制教育部重點實驗室,重慶400065)
目前,物聯網(Internet of Things,IOT)正呈現飛速發展的態勢。本文介紹一種無線多頻段WSN 網關,可通過以太網或者移動通信網絡,監控多個頻段的無線傳感器子網節點的運行情況。
本文設計的系統在感知層采用4個頻段的無線傳感器網絡節點。各頻段子網通過一個多頻段網關裝置接入到網絡層。用戶可以通過監控終端監控現場數據,監控終端既可以是固定的PC機,也可以是移動的3G 設備。同時,網關還具備良好的擴展性,網關可以同時接入多個頻段的WSN網絡。多頻段WSN網關系統結構框圖如圖1所示。
網關的主控制單元采用ARM9芯片S3C2440A,主頻400 MHz,外擴64 MB SDRAM、64 MB NAND Flash。微處理器的外設數據控制器(PDC)向串行外設提供DMA通道,使其與片內以及片外存儲器讀寫傳輸數據時不經過處理器。

圖1 多頻段WSN網關系統結構框圖
網關3G 網絡接入端采用USB接口,實現與3G 網絡的通信;無線傳感器網絡子網接入端分別是2.4GHz子網接入模塊、780 MHz子網接入模塊、470 MHz子網接入模塊和433 MHz子網接入模塊,各子網模塊都是通過串口實現與網關主控制單元的通信。以太網控制部分整個網關的結構框圖如圖2所示。
由于S3C2440A 芯片自身只有3 通道的串口。而4個頻段的子網接入模塊都是采用串行通信接口,ARM9芯片本身不能滿足本系統需求,所以需要利用外圍擴展芯片,設計串口擴展電路來滿足系統的需求。本設計采用TI公司的TL16C554A 芯片,通過并行數據線和地址線擴展出來4路全功能串口。

圖2 多頻段WSN網關硬件結構框圖
TL16C554A 芯片是8 位數據寬度,TL16C554A 的D0~D7引腳與ARM9芯片直接相連,讀寫信號是直接連接的。TL16C554A 的引腳INA、INTB、INTC、INTD分別接在主控制芯片的引腳INT0、INT2、INT3、INT4,這樣擴展的各通道串口就能通過中斷獨立地工作。
將S3C2440A 的地址線A0~A3 與TL16C554A 的A0~A3 直接相連。S3C2440A 的nGCS2 作為譯碼器74LS139的片選信號。74LS139 的輸入端分別接地址線A4~A5。根據譯碼器譯碼,實現地址分配,再通過ARM芯片地址映射。外擴的4通道串口的物理地址為
通道A——0x10000000~0x10000008
通道B——0x10000010~0x10000018
通道C——0x10000020~0x100000028
通道D——0x10000030~0x10000038。
主控制芯片通過訪問這些地址就能訪問外部寄存器,即TL16C554A 芯片片內寄存器地址。多頻段子網接入部分接口電路如圖3所示。
3G 網絡接入部分采用USB接口的華為ET128無線網卡。接入接口使用USB-HUB芯片AU9254A21,它是一款單芯片USB 集線器控制器。AU9254A21 采用12 MHz無源晶振,為芯片工作提供獨立的時鐘。3G 網絡接入部分接口電路如圖4所示。
網關通過以太網口發送數據包的原理是:處理器先將待發送的數據存入到內部存儲器,提供發送緩沖區的首地址和數據長度,然后執行發送命令,由DM9000A 將數據按TCP/IP協議格式發送到物理鏈路上。
因以太網信號電平與以太網控制器信號電平不同,所以在硬件電路實現上需要在控制器與RJ-45接口間增加一個網絡變壓器,網絡變壓器采用TRC9016。

圖3 多頻段子網接入部分接口電路
電信號通過網絡變壓器轉換,然后經RJ-45接口接入以太網,從而完成數據發送過程。DM9000A 主要完成數據包和數字電信號之間的相互轉換。

圖4 3G網絡接入部分接口電路
網關的軟件環境采用的是嵌入式Linux系統。移植好的Linux2.6.24 源碼已經包含了以太網控制器DM9000A、USB接口芯片等芯片的驅動。因此,軟件部分只需要設計串口擴展芯片TL16C554A 的驅動程序以及Linux環境下的應用程序即可。
Linux2.6.24內核提供了統一的設備驅動模型。多串口設備驅動的注冊,流程如圖5所示。
根據網關硬件接口的情況修改、移植通用驅動代碼后,通過相關的配置,定制和編譯網關所需的內核映像文件。內核編譯采用的交叉編譯器版本為armlinux-gcc3.4.1,使用make menuconfig ARCH=arm 命令進入內核配置圖形化界面,選擇和PPP(Point-to-Point,點對點協議)有關的選項,添加系統對PPP功能的支持。界面如圖6所示。配置完成以后,保存設置,退出內核配置圖形化界面。使用命令:make uImage ARCH=arm CROSS_COMPILE=arm-linux-.編譯完成以后,會在源碼包的arch/arm/boot路徑下生成內核映像文件uImage,如圖7所示。

圖5 多串口設備驅動的注冊流程圖

圖6 Linux下PPP的管理和配置界面

圖7 配置完成后生成的映像文件
本設計中通過TD-SCDMA 網絡接入Internet。WSN 子網的某一節點在上電后,網關分配給其一個16位的短地址,使其在子網中標識自己,然后周期性地發送其采集到的數據。網關收到傳感器節點傳送過來的數據之后,進行IEEE 802.15.4協議與以太網協議的轉換,為了向網絡設備提供透明的接口和區分串口數據的來源,需要制定統一的數據幀格式,所以協議轉換后加上slip的幀頭,通過串口設備發送給ARM。
ARM 在解析了slip 幀頭之后交給上層以及MAC層,解析以太網頭,然后上交給適配層,適配層將對完整的IPv6數據進行壓縮或者分片。數據在IPv6層根據鄰居發現,找到要發送的網絡,并且進行路由轉發,經過在MAC層加上相應的MAC頭后,經TD模塊發送到TD-SCDMA通信網。這樣,從子網到TD網絡的數據轉發結束。
3.3.1 PPP協議簡介
PPP是一種提供兩個實體之間數據包傳輸的鏈路連接設計的鏈路層協議。這種鏈路具有全雙工操作、實現流量和差錯控制等功能,并按照順序傳遞數據包。可以通過撥號或者專線方式,讓客戶端和服務端建立起一種點對點的連接,傳遞數據。
3.3.2 建立撥號連接
在Linux系統中,通過PPP可以將主機與一個PPP服務器連接并進入該服務器所連接的網絡資源,就好像直接連上那個網絡一樣。建立一個PPP連接上網主要有以下步驟:第一步是調用會話程序。然后會話程序通過發送AT 指令給3G模塊,完成撥號、身份驗證、配置等工作。最后,客戶端的pppd程序與服務器端的pppd程序進行握手,建立好連接,相互傳遞數據。多頻段網關建立網絡連接流程圖如圖8所示。

圖8 多頻段網關建立網絡連接流程圖
由于數據來源于4個頻段子網匯聚節點的串口,因此網關的應用程序采集多頻段子網匯聚節點數據部分設計上采用Linux系統中的多設備讀取機制select(I/O 多工機制)來實現對多個串口的監聽。多串口采集數據的流程如圖9所示。
圖10為PPP撥號成功后超級終端顯示的Linux系統信息截圖,撥號目標上位機地址是222.182.101.220,從圖中可以看出,PPP撥號成功,并且獲得了TD 網絡分配的IPv4地址10.81.185.15,遠程服務器IP為192.200.1.21。

圖9 多串口采集數據的流程圖

圖10 PPP撥號成功的Linux系統信息圖
網數據信息圖略——編者注。WSN 子網數據信息通過網關發送到公網后,TCP/UDP客戶端成功接收顯示的WSN 子網數據信息。
隨著物聯網時代,TD-SCDMA 將促進物聯網有效發揮無縫通信的巨大威力,該方案充分利用了互聯網和無線通信公用網絡資源,將無線傳感網技術、嵌入式技術、TD-SCDMA 通信有機地結合起來,成功設計了WSN/TD 網關,實現了無線傳感網與TD-SCDMA 網絡的融合,在實際應用當中取得了良好的效果。
本文為期刊縮略版,全文見本刊網站www.mesnet.com.cn。
[1]張毅.物聯網的體系結構與應用[J].中國高新技術企業,2011(8):95-96.
[2]曹建州.3G 技術及其在通信中的應用[J].中國高新技術企業,2009(16):117-118.
[3]L Atzori,A Iera,G Morabito.The Internet of Things:A Survey[J].Computer Networks,2010,54(15):2787-2805.
[4]物聯網“十二五”發展規劃[EB/OL].[2012-09].http://wenku.baidu.com/view/ed351b5b804d2b160b4ec027.html.
[5]國家工業與信息部.關于發布《微功率(短距離)無線電設備的技術要求》的通知[EB/OL].[2012-09].http://www.miit.gov.cn/n11293472/n11295310/n11297428/11637344.html.
[6]胡振國.基于ARM 的嵌入式軟硬件系統設計與實現[D].成都:電子科技大學,2010.
[7]張大波.新編嵌入式系統原理——應用與設計[M].北京:清華大學出版社,2010:38-39.