易用的物联网网关设计与实现
2015-10-08张如龙陈科明严迪科杨伊利
张如龙,陈科明,严迪科,杨伊利
(杭州电子科技大学电子信息学院,浙江杭州310018)
0 引言
物联网是物理空间和信息空间的结合,将所有事物网络化,实现高效的信息交互方式,是互联网的延伸和扩展[1]。随着物联网产业的快速发展,很多老式的串口设备也需要接入网络,然而在医疗设备和工业控制中,现场铺设有线网络是极其困难的。怎样让这些设备不做过大的改动便满足其联网需求,成了一个急需解决的难题。面向物联网应用的UART-WIFI网关,将无线Wi-Fi与串口融合起来,使得符合RS232标准的串口设备可以轻松接入网络,极大地拓宽了串口的功能,实现物联网基础[2]。本文设计的UART-WIFI网关,配置简单,即插即用,简化了设备的联网流程,并提升了设备的智能化水平,具有良好的技术推广和市场价值。
1 系统整体架构
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 网关整体架构
2 硬件设计
2.1 网关硬件原理框图
网关硬件系统的构成主要有SOC、Wi-Fi收发模块、串口收发器模块、电源和外部存储器,整体硬件原理框图如图2所示。
图2 网关硬件原理框图
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组成,分别负责内核和应用的动态和静态存取。
3 软件设计
3.1 工作模式的设计
UART-WIFI网关具有透传模式和命令行模式2种工作模式。透传模式实现串口的即插即用,所有需要收发的数据都会在串口与Wi-Fi接口之间做透明传输,不做任何解析;命令行模式用于处理AT命令,对网关进行参数的设置。命令行模式可通过AT指令切换至透传模式,透传模式到命令行模式的切换可通过在一定的时间内输入相应的字符来实现,具体要求如图3所示。
图3 模式切换时序图
3.2 程序软件整体架构
程序在透传模式下,默认(系统启动时)情况下处于透传模式,大致有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所示。
4 网关特点
传统网关又称协议转换器,实现网络层之上的网络互联,仅适用高层协议不同的两个网络互联。
然而物联网的快速发展,使得物与物之间也有了相互连通的需求,由此物联网网关应运而生。物联网网关是连接传统通信网络和感知网络的纽带,也能在不同的感知网络间进行协议转换。
本文设计的UART-WIFI网关可以将串口设备连接至互联网,实现更广阔范围的通信。在雷凌公司提供的SDK的基础上,进一步进行开发,使得UART-WIFI网关的功能强大,且操作简单。
4.1 强大的功能
AP+STA即UART-WIFI网关同时支持一个AP接口和一个STA接口。网关的STA接口和路由器相连,并通过Socket与互联网中的服务器通信。同时手机、平板电脑等都可以连接到网关上的AP接口,彼此互相访问或连接到互联网。
这个功能使得传统的串口设备可以方便快速的相互组网,并可以与近年火热的云服务进行信息的交互[7]。
4.2 支持SmartLink智能联网功能
UART-WIFI网关支持丰富的AT+指令集,可以通过串口或Wi-Fi对网关的参数进行配置,并采用独立的通信协议,简化操作,使得普通用户也可以轻松通过手机客户端配置网关连接至路由器。此时网关通过Socket自动连接至互联网,串口数据和Socket数据互相透明传输[8]。手机客户端配置流程如图5所示。
图4 程序总体流程图
图5 客户端一键配置联网流程图
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,已经可以满足很多的工业控制或智能家居。
6 结束语
本文针对传统串口设备的联网需求,研究并设计了一款基于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.