張如龍,陳科明,嚴迪科,楊伊利
(杭州電子科技大學(xué)電子信息學(xué)院,浙江杭州310018)
物聯(lián)網(wǎng)是物理空間和信息空間的結(jié)合,將所有事物網(wǎng)絡(luò)化,實現(xiàn)高效的信息交互方式,是互聯(lián)網(wǎng)的延伸和擴展[1]。隨著物聯(lián)網(wǎng)產(chǎn)業(yè)的快速發(fā)展,很多老式的串口設(shè)備也需要接入網(wǎng)絡(luò),然而在醫(yī)療設(shè)備和工業(yè)控制中,現(xiàn)場鋪設(shè)有線網(wǎng)絡(luò)是極其困難的。怎樣讓這些設(shè)備不做過大的改動便滿足其聯(lián)網(wǎng)需求,成了一個急需解決的難題。面向物聯(lián)網(wǎng)應(yīng)用的UART-WIFI網(wǎng)關(guān),將無線Wi-Fi與串口融合起來,使得符合RS232標(biāo)準的串口設(shè)備可以輕松接入網(wǎng)絡(luò),極大地拓寬了串口的功能,實現(xiàn)物聯(lián)網(wǎng)基礎(chǔ)[2]。本文設(shè)計的UART-WIFI網(wǎng)關(guān),配置簡單,即插即用,簡化了設(shè)備的聯(lián)網(wǎng)流程,并提升了設(shè)備的智能化水平,具有良好的技術(shù)推廣和市場價值。
UART-WIFI網(wǎng)關(guān)的核心芯片采用的是臺灣雷凌的RT5350 SOC,系統(tǒng)的主要功能模塊如圖1所示。網(wǎng)關(guān)包括標(biāo)準RS232接口,主要用于同串口設(shè)備的數(shù)據(jù)收發(fā);Wi-Fi功能模塊主要是用Socket進行網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)。中間的應(yīng)用程序主要起轉(zhuǎn)發(fā)數(shù)據(jù)的作用,并負責(zé)相關(guān)參數(shù)的配置。
網(wǎng)關(guān)支持WIFI Direct和802.11n無線標(biāo)準,STA+AP共存網(wǎng)絡(luò)模式以及WPS(Wi-Fi Protected Setup)。系統(tǒng)內(nèi)部集成完整的TCP/IP協(xié)議棧和功能強大的Web Server[3]。同時,本系統(tǒng)內(nèi)部提供了內(nèi)部用戶網(wǎng)頁,其HTML語言可自定義,支持第3方云服務(wù)功能。
圖1 網(wǎng)關(guān)整體架構(gòu)
網(wǎng)關(guān)硬件系統(tǒng)的構(gòu)成主要有SOC、Wi-Fi收發(fā)模塊、串口收發(fā)器模塊、電源和外部存儲器,整體硬件原理框圖如圖2所示。
圖2 網(wǎng)關(guān)硬件原理框圖
系統(tǒng)處理器選用雷凌RT5350 SOC,該處理器集成了360 MHz的MIPS24KEc內(nèi)核,擁有16 kB的數(shù)據(jù)緩存和32 kB的指令緩存,5個以太網(wǎng)口。并且,只需極少的外部組件就可以支持2.4 GHz 802.11 n的無線功能,提供最高達150 Mbps數(shù)據(jù)傳輸。此外,RT5350有豐富的外設(shè)接口,如SPI、I2S、I2C、PCM、UART 等,支持各種應(yīng)用[4]。
電源部分應(yīng)用外部5 V直流電源供電,采用MAX687電壓轉(zhuǎn)換芯片切換到系統(tǒng)所需要的3.3 V工作電壓。系統(tǒng)的存儲由一片DDR SDRAM和一片NOR Flash組成,分別負責(zé)內(nèi)核和應(yīng)用的動態(tài)和靜態(tài)存取。
UART-WIFI網(wǎng)關(guān)具有透傳模式和命令行模式2種工作模式。透傳模式實現(xiàn)串口的即插即用,所有需要收發(fā)的數(shù)據(jù)都會在串口與Wi-Fi接口之間做透明傳輸,不做任何解析;命令行模式用于處理AT命令,對網(wǎng)關(guān)進行參數(shù)的設(shè)置。命令行模式可通過AT指令切換至透傳模式,透傳模式到命令行模式的切換可通過在一定的時間內(nèi)輸入相應(yīng)的字符來實現(xiàn),具體要求如圖3所示。
圖3 模式切換時序圖
程序在透傳模式下,默認(系統(tǒng)啟動時)情況下處于透傳模式,大致有5個線程:1)主線程主要用于初始化和Socket的接收;2)Sockets接收線程主要用于Sockets數(shù)據(jù)的接收,每次接收數(shù)據(jù)都會輪詢所有Socket并判定是否失去連接;3)Uart發(fā)送線程主要用于將從Scoket接收的數(shù)據(jù)發(fā)送到串口;4)Uart接收線程主要用于接收串口數(shù)據(jù)(10 ms自動成幀),并處理切換工作模式;5)Sockets發(fā)送線程主要用于將從串口接收到的數(shù)據(jù)群發(fā)到Sockets。不同的線程間的數(shù)據(jù)交互,用全局變量的單向鏈表list來緩沖,以互斥鎖來控制線程對list的訪問[5];并以同步鎖來控制線程的執(zhí)行,如只有在Socket收到數(shù)據(jù)后,Uart才會去發(fā)送數(shù)據(jù)。
在透傳的情況下,串口可在規(guī)定時間內(nèi)發(fā)送特定的字符來實現(xiàn)進入命令行模式。在命令行模式下,Sockets接收線程的接收數(shù)據(jù),由Uart發(fā)送線程拋棄;Uart接收線程收到數(shù)據(jù)時,不設(shè)置同步鎖,Scokets發(fā)送線程不會處理數(shù)據(jù),此時,串口數(shù)據(jù)的收發(fā)都由Uart接收線程處理,不進行轉(zhuǎn)發(fā)[6]。其初始化總流程如圖4所示。
傳統(tǒng)網(wǎng)關(guān)又稱協(xié)議轉(zhuǎn)換器,實現(xiàn)網(wǎng)絡(luò)層之上的網(wǎng)絡(luò)互聯(lián),僅適用高層協(xié)議不同的兩個網(wǎng)絡(luò)互聯(lián)。
然而物聯(lián)網(wǎng)的快速發(fā)展,使得物與物之間也有了相互連通的需求,由此物聯(lián)網(wǎng)網(wǎng)關(guān)應(yīng)運而生。物聯(lián)網(wǎng)網(wǎng)關(guān)是連接傳統(tǒng)通信網(wǎng)絡(luò)和感知網(wǎng)絡(luò)的紐帶,也能在不同的感知網(wǎng)絡(luò)間進行協(xié)議轉(zhuǎn)換。
本文設(shè)計的UART-WIFI網(wǎng)關(guān)可以將串口設(shè)備連接至互聯(lián)網(wǎng),實現(xiàn)更廣闊范圍的通信。在雷凌公司提供的SDK的基礎(chǔ)上,進一步進行開發(fā),使得UART-WIFI網(wǎng)關(guān)的功能強大,且操作簡單。
AP+STA即UART-WIFI網(wǎng)關(guān)同時支持一個AP接口和一個STA接口。網(wǎng)關(guān)的STA接口和路由器相連,并通過Socket與互聯(lián)網(wǎng)中的服務(wù)器通信。同時手機、平板電腦等都可以連接到網(wǎng)關(guān)上的AP接口,彼此互相訪問或連接到互聯(lián)網(wǎng)。
這個功能使得傳統(tǒng)的串口設(shè)備可以方便快速的相互組網(wǎng),并可以與近年火熱的云服務(wù)進行信息的交互[7]。
UART-WIFI網(wǎng)關(guān)支持豐富的AT+指令集,可以通過串口或Wi-Fi對網(wǎng)關(guān)的參數(shù)進行配置,并采用獨立的通信協(xié)議,簡化操作,使得普通用戶也可以輕松通過手機客戶端配置網(wǎng)關(guān)連接至路由器。此時網(wǎng)關(guān)通過Socket自動連接至互聯(lián)網(wǎng),串口數(shù)據(jù)和Socket數(shù)據(jù)互相透明傳輸[8]。手機客戶端配置流程如圖5所示。
圖4 程序總體流程圖
圖5 客戶端一鍵配置聯(lián)網(wǎng)流程圖
此結(jié)果為UART-WIFI網(wǎng)關(guān)的串口和Wi-Fi間數(shù)據(jù)相互透明傳輸能力的測試。網(wǎng)關(guān)的串口和STM32串口相連,波特率為115200 b/s,STM32在收到特定數(shù)據(jù)幀結(jié)束符后,將數(shù)據(jù)幀從串口返回;Android客戶端連接Wi-Fi至網(wǎng)關(guān),通過Socket(TCP連接)在一定的時間間隔發(fā)送特定長度的數(shù)據(jù)幀至網(wǎng)關(guān),另一線程接收返回的數(shù)據(jù)幀,并對數(shù)據(jù)進行比對。測試結(jié)果如表1所示。
表1 網(wǎng)關(guān)數(shù)據(jù)透傳能力測試結(jié)果
實驗針對數(shù)據(jù)的丟包、粘包和拆包的情況進行測試,由于TCP是可靠的連接傳輸方式,故幾乎不存在丟包現(xiàn)象。從表1可以看出,UART-WIFI網(wǎng)關(guān)存在粘包現(xiàn)象,從實驗過程分析,粘包主要發(fā)生在STM32串口發(fā)送數(shù)據(jù)到網(wǎng)關(guān)串口的過程,在連續(xù)發(fā)送一幀數(shù)據(jù)過程??赡芊趾脦状谓邮?,接收間隔可達5ms;同時串口本來就是低速率數(shù)據(jù)傳輸,無法跟上Socket的數(shù)據(jù)傳輸速率,故在此環(huán)節(jié)造成數(shù)據(jù)的粘包。
不過在低速率、小數(shù)據(jù)量方面,UART-WIFI網(wǎng)關(guān)可以勝任數(shù)據(jù)的透傳。數(shù)據(jù)幀大小100 Byte,發(fā)送間隔為100 ms,已經(jīng)可以滿足很多的工業(yè)控制或智能家居。
本文針對傳統(tǒng)串口設(shè)備的聯(lián)網(wǎng)需求,研究并設(shè)計了一款基于RT5350的UART和WIFI相互透傳的網(wǎng)關(guān)。在當(dāng)前物聯(lián)網(wǎng)飛速發(fā)展的背景下,本網(wǎng)關(guān)成本低、易部署,可以滿足串口設(shè)備快速聯(lián)網(wǎng)的需求,將擁有廣闊的市場空間。
[1]孫其博,劉杰,黎葬,等.物聯(lián)網(wǎng):概念、架構(gòu)與關(guān)鍵技術(shù)研究綜述[J].北京郵電大學(xué)學(xué)報,2010,33(3):1-9.
[2]王希朝,張毅,程鵬.面向物聯(lián)網(wǎng)應(yīng)用的UART-WIFI網(wǎng)關(guān)設(shè)計[J].微型機與應(yīng)用,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]田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2005∶17-25.
[6]楊鑄.Linux下C語言應(yīng)用編程[M].北京:北京航空航天大學(xué)出版社,2012∶159-164.
[7]何清.物聯(lián)網(wǎng)與數(shù)據(jù)挖掘云服務(wù)[J].智能系統(tǒng)學(xué)報,2012,7(3):189-194.
[8]任志健,王鳳,邱澤敏.基于物聯(lián)網(wǎng)的透明傳輸移動環(huán)境勘探節(jié)點設(shè)計[J].實驗室研究與探索,2013,32(6):91-96.