摘要:提出了一种基于Android平台的物联网网关方案。该网关通过蓝牙串口通信实现物联网中WSN (无线传感器网络)中心节点和Android网关的数据传输,在Android平台上实现WSN节点信息管理并通过Android的网络资源实现互联网接入,从而在WSN与互联网之间搭建一条透明的数据传输通道,完成对无线节点的数据进行远程和实时的监测控制。
关键词:物联网;WSN;网关
中国已成为第一大移动互联网市场,在移动互联网和物联网的市场非常广阔,这将使得物联网应用借助移动互联网平台深入到各个领域,实现泛在的接入。目前移动互联网平台常见的嵌入式操作系统主要足Linux、WindowsCE、MeeGo、Android、Palm等;其中Android系统的网络集成性很高,被公认为是一个基于Linux内核并针对移动设备的操作系统。
针对移动终端融合物联网具有很大的意义,而物联网接入互联网的瓶颈是网关 本文提出了基于Android平台、采用蓝牙连接物联网的网关方案,从而有效避免了物联网网关的开发瓶颈。
1 基于Android平台的WSN网关简介
星云测控系统是由一个WSN主节点和很多WSN测控节点构成一个分布式的测控系统,用于野外的暂时和长期测量、桥梁检测和大型结构瞬态测试等。基于Android平台蓝牙串口通信的星云测控(WSN)网关结构示意图如图1所示:
网关采用基于Android的带有蓝牙和Wifi/WLAN功能的智能平板,采用蓝牙连接基于STM32W的WSN测控系统主节点;网关将实现显示、存储、人机交互、远距离通信和网络通信等功能。网关软件在Android2.3操作系统下运行,程序在Android Eclipse下开发完成。其工作过程大致为:将网关蓝牙与ZigBee主控节点蓝牙进行配对、连接和数据传输,同时网关通过同一局域网的WiFi连接至远程终端,实现对ZigBee网络测控信息的显示、存储和控制等,实现网关的通信和管理,完成WSN和互联网的双向数据传输和控制。
2 Android平台的物联网网关的设计方案
网关通过蓝牙串口实现与WSN中心节点间的通信,在Android平台上实现WSN节点信息管理并通过Andrid的网络资源实现互联网接入,从而在WSN与互联网之间搭建一条透明的数据传输通道,完成对无线节点的数据进行远程和实时的监测控制。图2为基于Android平台的网关设计框图,Android平台下的物联网网关的软件实现,需要完成以下步骤:
(1)设置蓝牙和Wi—Fi;
(2)发现已经配对或者附近的蓝牙设备;
(3)连接设备;
(4)在不同设备之间传输数据;
(5)使用Wi—Fi通过无线路南连接同一无线局域网,通过Socket建立基于TCP/IP协议的网络通信。
(6)网关实现对WSN的管理。
图3为网关工作流程。 Android的物联网网关的设计实现了以下功能:启动蓝牙、启动Wi—Fi、蓝牙设备是否可见、搜索蓝牙、蓝牙设备的配对与连接、蓝牙串口通信和网络通信和网关管理。
3 Android网关的蓝牙串口通信和网络通信
3.1 Android网关的蓝牙串口通信
“蓝牙”是一种短距离的无线连接技术标准的代称,实质内容就是要建立通用的无线电空中接口及其控制软件的公开标准。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。Android的蓝牙(Bluetooth)协议栈使用BlueZ (Linux官方的Bluetooth栈)来实现对GAP、SDP和RFCOMM等应用规范提供支持,并获得了SIG认证。BlueZ的RFCOMM提供Bluetooth上的串行仿真,这使得串行端口应用程序和协议不加更改地在Bluetooth上运行。RFC OMM模块和用户模式dund的后台进程实现了Bluetooth拨号网络。Bluetooth规范支持针对Bluetooth HCI数据分组的UART(通用异步接收器/传送器)和USB传输机制。BluZ栈同时支持这两个传输机制(drivers/Bluetooth/)。图4为Android Bluetooth部分的关系图。
Android包含了对蓝牙协议栈的支持,这使得蓝牙设备能够无线连接其他蓝牙设备交换数据。Android的应用程序框架提供了访问蓝牙功能API,实现点对点或点对多点的无线交互功能。使用蓝牙API,一个Android应用程序能够实现下列功能:扫描其他蓝牙设备、查询本地蓝牙适配器用于配对蓝牙设备、建立RFCOMM信道、通过服务发现连接其他设备、数据通信和管理多个连接。图5为本设计的蓝牙串口通信流程图。实现了蓝牙设备打开、可见、搜索和连接管理。
3.2 Android网络通信
Android完全支持JDK本身的TCP、UDP网络通信的API,可以使用SeverSocket、Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket、Datagrampacket、MulticastSocket来建立UDP协议的网络通信。本设计采用TCP/IP协议来实现网络通信,通信流程如图6所示。
本设计只实现客户端编程,服务端用SocketTool TCP/IP通信调试工具V2.2在PC端建立。使用Socket来实现客户端的步骤如下:
(1)通过IP地址和端口实例化Socket,请求连接服务器。
(2)获取Socket上的流以进行读写。
(3)把流包装进BufferedReader的实例。
(4)对Socket进行读写
(5)关闭打歼的流程。
关键代码如下:
4 网关的管理功能及实现
网关在应用层实现对WSN的管理,主要包括安全认证、时间统一、监测数据采集、节点定位和远程传输功能,从而实现对现场的实时临控和管理。功能设计如下:
(1)安全认证:协调节点在安全认汪中,将申请节点的ID发给网关,网关查找配置表中的授权入网节;如果该节点ID在表中,则通知协调节点允许入网,否则不允许入网。同时,网关可以显示、添加或修改节点配置表中的授权入网节点。
如图8—1所示,网关插入配置表信息,该实验为四个节点组成的ZigBee网络,节点编号分别为0080E102001BC94D、0080E102001BCE91、0080E102001BC204和0080E102001BCF51。ZigBee组成的无线传感器网络实现点对点通信,网关可以采集到节点数据信息,并用绿灯显示该网络实现的是1号节点和3号节点之间的点对点通信,红灯表明处于非工作状态。
(2)时间统一:在进行时间统一的过程中,首先通过NTP协议对网关校时,并以此时间为基准,把时间发给协调器节点,从而校准协调节点的时间和网内子节点的时间,实现网络中节点的时间统一。如图7(a)所示,网关的最下方显示了NTP协议实现的校时。
(3)监测数据采集:在进行节点定位的过程中,网关可以采集节点数据、提取节点号和RSSI值。如图7(h)所示,上方滚动串口显示了收到的来自ZigBee无线传感器网络的串口数据。
(4)节点定位:ZigBee网络使用RSSI测距法实现节点定位,网关采集节点RSSI值解算出了节点大概位置。
(5)存储监测数据:接收节点监测数据并定期以文件形式保存到本地的SD卡中。如图8—2截取的存储至SD卡的数据传输数据,命名为Bluetooth.txt。
5 测试结果
系统所需的硬件平台为:Android平板电脑一部、BMX蓝牙模块、PC机一台。本实验所需的软件平台为:SSCOM32串口调试助手、Socket Tool网络调试和TCP/UDP开发丁具、Ecplise JAVA开发环境和Android SDK开发包。网络通信设置的IP地址为:192.168.0.190,端口号为:30000。
运行主要结果如图8所示。图8 (a)为设备连接界面,主要实现蓝牙连接和网络连接,触发搜索设备按钮显示设备列表,点击所需设备名称建立蓝牙连接。触发wifi按钮建立网络连接,触发测试按钮,测试通信信道是否建立,建立成功显示”success connection”。该网关实现了双向数据传输和网关管理,如图8(b),8(c)。传输过程分为以下三种情况:
(1)蓝牙设备发送数据给Android网关和远程终端,Android网关和远程终端显示”xi’antechnological universitv”表明测试成功。
(2)Android网关发送数据给蓝牙设备和远程终端,蓝牙设备和远程终端显示“I am Lei Bin”表明测试成功。
(3)远程终端发送数据给Android网关,Andiroid网关显示“Success of socket communication”表明测试成功。网络通信结果如图8(d)所示。
6 结束语
由于采用蓝牙串行通信技术连接物联网,避免了在Android平台上的硬件开发,使得在对现有Android智能平台无需硬件改造及编写底层驱动即可实现无线传感网络管理及和互联网间的数据传输,大大降低了物联网网关的应用难度和成本。
在该设计的基础上,可以进一步实现对无线传感器网络的实时控制,这使得在移动终端融合物联网应用成为可能。