張如龍,陳科明,嚴迪科,楊伊利
(杭州電子科技大學電子信息學院,浙江杭州310018)
物聯網是物理空間和信息空間的結合,將所有事物網絡化,實現高效的信息交互方式,是互聯網的延伸和擴展[1]。隨著物聯網產業的快速發展,很多老式的串口設備也需要接入網絡,然而在醫療設備和工業控制中,現場鋪設有線網絡是極其困難的。怎樣讓這些設備不做過大的改動便滿足其聯網需求,成了一個急需解決的難題。面向物聯網應用的UART-WIFI網關,將無線Wi-Fi與串口融合起來,使得符合RS232標準的串口設備可以輕松接入網絡,極大地拓寬了串口的功能,實現物聯網基礎[2]。本文設計的UART-WIFI網關,配置簡單,即插即用,簡化了設備的聯網流程,并提升了設備的智能化水平,具有良好的技術推廣和市場價值。
UART-WIFI網關的核心芯片采用的是臺灣雷凌的RT5350 SOC,系統的主要功能模塊如圖1所示。網關包括標準RS232接口,主要用于同串口設備的數據收發;Wi-Fi功能模塊主要是用Socket進行網絡數據的收發。中間的應用程序主要起轉發數據的作用,并負責相關參數的配置。
網關支持WIFI Direct和802.11n無線標準,STA+AP共存網絡模式以及WPS(Wi-Fi Protected Setup)。系統內部集成完整的TCP/IP協議棧和功能強大的Web Server[3]。同時,本系統內部提供了內部用戶網頁,其HTML語言可自定義,支持第3方云服務功能。

圖1 網關整體架構
網關硬件系統的構成主要有SOC、Wi-Fi收發模塊、串口收發器模塊、電源和外部存儲器,整體硬件原理框圖如圖2所示。

圖2 網關硬件原理框圖
系統處理器選用雷凌RT5350 SOC,該處理器集成了360 MHz的MIPS24KEc內核,擁有16 kB的數據緩存和32 kB的指令緩存,5個以太網口。并且,只需極少的外部組件就可以支持2.4 GHz 802.11 n的無線功能,提供最高達150 Mbps數據傳輸。此外,RT5350有豐富的外設接口,如SPI、I2S、I2C、PCM、UART 等,支持各種應用[4]。
電源部分應用外部5 V直流電源供電,采用MAX687電壓轉換芯片切換到系統所需要的3.3 V工作電壓。系統的存儲由一片DDR SDRAM和一片NOR Flash組成,分別負責內核和應用的動態和靜態存取。
UART-WIFI網關具有透傳模式和命令行模式2種工作模式。透傳模式實現串口的即插即用,所有需要收發的數據都會在串口與Wi-Fi接口之間做透明傳輸,不做任何解析;命令行模式用于處理AT命令,對網關進行參數的設置。命令行模式可通過AT指令切換至透傳模式,透傳模式到命令行模式的切換可通過在一定的時間內輸入相應的字符來實現,具體要求如圖3所示。

圖3 模式切換時序圖
程序在透傳模式下,默認(系統啟動時)情況下處于透傳模式,大致有5個線程:1)主線程主要用于初始化和Socket的接收;2)Sockets接收線程主要用于Sockets數據的接收,每次接收數據都會輪詢所有Socket并判定是否失去連接;3)Uart發送線程主要用于將從Scoket接收的數據發送到串口;4)Uart接收線程主要用于接收串口數據(10 ms自動成幀),并處理切換工作模式;5)Sockets發送線程主要用于將從串口接收到的數據群發到Sockets。不同的線程間的數據交互,用全局變量的單向鏈表list來緩沖,以互斥鎖來控制線程對list的訪問[5];并以同步鎖來控制線程的執行,如只有在Socket收到數據后,Uart才會去發送數據。
在透傳的情況下,串口可在規定時間內發送特定的字符來實現進入命令行模式。在命令行模式下,Sockets接收線程的接收數據,由Uart發送線程拋棄;Uart接收線程收到數據時,不設置同步鎖,Scokets發送線程不會處理數據,此時,串口數據的收發都由Uart接收線程處理,不進行轉發[6]。其初始化總流程如圖4所示。
傳統網關又稱協議轉換器,實現網絡層之上的網絡互聯,僅適用高層協議不同的兩個網絡互聯。
然而物聯網的快速發展,使得物與物之間也有了相互連通的需求,由此物聯網網關應運而生。物聯網網關是連接傳統通信網絡和感知網絡的紐帶,也能在不同的感知網絡間進行協議轉換。
本文設計的UART-WIFI網關可以將串口設備連接至互聯網,實現更廣闊范圍的通信。在雷凌公司提供的SDK的基礎上,進一步進行開發,使得UART-WIFI網關的功能強大,且操作簡單。
AP+STA即UART-WIFI網關同時支持一個AP接口和一個STA接口。網關的STA接口和路由器相連,并通過Socket與互聯網中的服務器通信。同時手機、平板電腦等都可以連接到網關上的AP接口,彼此互相訪問或連接到互聯網。
這個功能使得傳統的串口設備可以方便快速的相互組網,并可以與近年火熱的云服務進行信息的交互[7]。
UART-WIFI網關支持豐富的AT+指令集,可以通過串口或Wi-Fi對網關的參數進行配置,并采用獨立的通信協議,簡化操作,使得普通用戶也可以輕松通過手機客戶端配置網關連接至路由器。此時網關通過Socket自動連接至互聯網,串口數據和Socket數據互相透明傳輸[8]。手機客戶端配置流程如圖5所示。

圖4 程序總體流程圖

圖5 客戶端一鍵配置聯網流程圖
此結果為UART-WIFI網關的串口和Wi-Fi間數據相互透明傳輸能力的測試。網關的串口和STM32串口相連,波特率為115200 b/s,STM32在收到特定數據幀結束符后,將數據幀從串口返回;Android客戶端連接Wi-Fi至網關,通過Socket(TCP連接)在一定的時間間隔發送特定長度的數據幀至網關,另一線程接收返回的數據幀,并對數據進行比對。測試結果如表1所示。

表1 網關數據透傳能力測試結果
實驗針對數據的丟包、粘包和拆包的情況進行測試,由于TCP是可靠的連接傳輸方式,故幾乎不存在丟包現象。從表1可以看出,UART-WIFI網關存在粘包現象,從實驗過程分析,粘包主要發生在STM32串口發送數據到網關串口的過程,在連續發送一幀數據過程。可能分好幾次接收,接收間隔可達5ms;同時串口本來就是低速率數據傳輸,無法跟上Socket的數據傳輸速率,故在此環節造成數據的粘包。
不過在低速率、小數據量方面,UART-WIFI網關可以勝任數據的透傳。數據幀大小100 Byte,發送間隔為100 ms,已經可以滿足很多的工業控制或智能家居。
本文針對傳統串口設備的聯網需求,研究并設計了一款基于RT5350的UART和WIFI相互透傳的網關。在當前物聯網飛速發展的背景下,本網關成本低、易部署,可以滿足串口設備快速聯網的需求,將擁有廣闊的市場空間。
[1]孫其博,劉杰,黎葬,等.物聯網:概念、架構與關鍵技術研究綜述[J].北京郵電大學學報,2010,33(3):1-9.
[2]王希朝,張毅,程鵬.面向物聯網應用的UART-WIFI網關設計[J].微型機與應用,2013,32(8):1-4.
[3]Ralink Technology Corporation.RALINK AP SDK 4.0.0.0 USER'S MANUAL[EB/OL].[2012 -02 -22].http://www.mediatek.com/en/products/connectivity/wifi/home-network/wifi-ap/rt5350/.
[4]Ralink Technology Corporation.RT5350 Preliminary Datasheet[EB/OL].[2010 - 11 -25].http://www.mediatek.com/en/products/connectivitywifihome-network/wifi-ap/rt5350/.
[5]田澤.嵌入式系統開發與應用[M].北京:北京航空航天大學出版社,2005∶17-25.
[6]楊鑄.Linux下C語言應用編程[M].北京:北京航空航天大學出版社,2012∶159-164.
[7]何清.物聯網與數據挖掘云服務[J].智能系統學報,2012,7(3):189-194.
[8]任志健,王鳳,邱澤敏.基于物聯網的透明傳輸移動環境勘探節點設計[J].實驗室研究與探索,2013,32(6):91-96.