- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于Web Services的嵌入式农业物联网测控系统
摘要:目前农业物联网测控系统数据交换普遍采用基于socket的简单通信。为解决使用socket通信产生的数据交换复杂,系统耦合性大的问题,将Web Services技术应用到linux的嵌入式农业物联网测控中,并给出了测控系统体系结构及软、硬件实现方法。Web Service技术使得嵌入式测控系统有了标准的数据表示格式和数据交换协议,提高了开发效率,便于系统修改、定制,实验结果表明,该系统性能稳定,无线数据采集与设备控制能达到实际需求,具有较高的实用性。
物联网ZigBee技术以其低成本、低功耗、高可靠性的特点被广泛应用于农业测控系统中,实现了无线数据采集和控制。孙玉文等设计了基于嵌入式ZigBee技术的农田信息服务系统,韩华峰等设计了基于ZigBee网络的温室环境远程监控系统等等。尽管我国农业物联网方面的应用有所突破,但依然存在许多问题。目前农业测控系统中ZigBee测控网络与服务器数据交换一般通过嵌入式设备使用socket通信,数据被透明的传送至服务器,其数据格式、发送方式、响应方式等都是自定义的私有协议,上层软件的开发者需要根据私有协议处理数据通信。基于socket的简单私有协议使得系统耦合性加大、系统灵活性降低。如果系统内测控的温室类型及数量较多时,数据处理将变得复杂,系统开发的复杂性和成本大大增加。为解决这个问题,将Web Services技术引入到嵌入式测控系统中。Web Services服务不依赖于任何语言和平台,只要遵循相关协议用户就可以像调用本地服务一样调用该服务,而不必了解底层的通信细节。
1 系统总体结构
基于Web Services的嵌入式农业物联网测控系统的总体结构如图1所示。
现场设备中的ZigBee传感器网络、视频采集模块、执行机构控制模块,完成信息采集和设备控制。linux智能网关层是本系统的关键部分,网关通过ZigBee网络收集、存储环境数据,控制现场执行机构,并对外提供数据查询、设备控制等web Services接口,数据传输部分使用无线WIFI网桥连接现场设备与服务器。服务器主要提供数据库服务、业务逻辑管理、用户交互等服务。
2 系统功能模块设计
2.1 ZigBee无线传感网络与无线控制节点
本系统的无线传感网络采用CC2530射频芯片及温湿度、光照、土壤湿度等传感器构成,在ZigBee Pro协议栈的基础上进行应用开发,CC2530结合一个完全集成的、高性能的RF收发器与一个增强型的8051微处理器,提供101 dB的链路质量,具有较高的灵敏度和良好的抗干扰性,使得整个无线传感网络具有低成本、低功耗、网络容量大、采样点布置灵活的优点。
ZigBee网络由一个协调器、一个或多路由设备和多个终端设备组成。协调器是整个网络的核心,负责网络的组建,维护网络的运行,使得各个节点和路由器间相互通信,路由器负责数据的中转,终端设备负责采集传感器数据、控制继外部设备,协调器通过串口与智能网关相连,透明转发数据。
ZigBee终端节点有两部分组成:核心板和扩展版。核心板上主要由CC2530芯片、必需外部电路、天线等组成,主要完成数据传输以及控制扩展板功能,扩展板主要有三种:模拟量采集板、数字量采集板、设备控制板。模拟量采集版主要由电压、电流采集电路组成,数字量采集板主要由RS232、RS485、I2C等数字接口电路组成,设备控制板主要由继电器和PWM接口等组成。根据不同的传感器和控制设备选用不同的扩展版,既增加了ZigBee节点的灵活性又降低了成本和复杂性。
2.2 无线WIFI局域网
在实际生产中温室距离服务器的距离较远且分布离散,如果通过双绞线、光纤等有线方式连接温室中的智能网关和云服务器,不但成本高、布线不便、影响农业生产;3G网络带宽窄、受无线信号影响大,流量费非常昂贵,不适合传输高清视频。考虑视频服务需要较大带宽和智能网关与服务器的距离较远,而无线网桥具有安装灵活、通信带宽较宽、通信距离长(目前无线点对点通信距离可达几公里甚至几十公里)等特点,采用无线网桥连接是较好的组网选择。
2.3 智能网关
2.3.1 智能网关的硬件结构及操作系统
智能网关的硬件系统主要由ARM处理器构成。本系统的ARM处理器是三星公司的S3C6410微处理器,S3C6410是一款低功率、高性价比、高性能的用于移动电话和通用处理RSIC处理器。主要硬件资源及接口包括128M SRAM芯片,256M Nand Flash芯片,一个以太网口、两个USB接口、4个RS232口等其他数字接口。
智能网关上运行经过剪裁的linux 3.0.1版本操作系统,以及YAFFS2可读写文件系统,同时载入串口驱动、USBHost驱动(用以支持U盘、USB WIFI、USB 3G等)、网卡驱动等外设驱动,以支持应用软件运行。
2.3.2 智能网关Web Services服务
Web Services是本系统的重要组成部分,从表面上看,Web Services服务就是一个Web应用程序,它向外界暴露出一个API接口,用户可以通过编程方式在Internet上调用这些Web Services应用程序。从深层次上看,Web服务是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络中被描述、发布、查找、调用。Web Services基于可扩展的标记语言(XML)消息交换,其所使用协议都是开放的标准协议,调用接口更加规范且与平台无关;调用方法采用简单对象访问协议(SOAP),其定义了其消息格式,实现实体间的信息交换;使用Web Services描述语言(WSDL)描述网络服务及其访问信息,WSDL描述了Web Services及其函数、参数和返回值等。
本系统的软件架构如图2:主要有Web Serice接口层、服务抽象层、信息采集与控制层。
1)Web Services接口层
由于嵌入式系统的计算及存储资源有限,本文使用gSOAP轻量级的开源工具实现Web Serices网络接口。gSOAP编译工具提供了一个SOAP /XML关于C/C++语言的实现,屏蔽了SOAP协议的具体实现细节,系统开发者只需关注具体的逻辑实现即可。gSOAP开发工具主要由gSoap编译器和运行时库组成,gSoap编译器包括WSDL解析器(wsdl2h)、存根和框架编译器(soapcpp2),WSDL解析器可以把WSDL文件解析成相应的C/C++的头文件(.h)主要用于Web Service客户端开发,存根和框架编译器根据头文件中函数定义生成存根和框架文件主要用于Web Service服务端开发,stdsoap2.c是运行时库文件,编译时必须包含该文件。本系统中嵌入式网关对外服务,所以只实现服务端程序。开发服端的应用程序的过程如图3所示。
开发服务端程序,用户定义一个C/C++头文件(.h),这个头文件包含服务函数的名称、输入/输出参数和相应的数据类型声明,声明的函数需要在相应的C/C++文件中实现。该头文件经gSoap编译器编译后,即可生成服务端端框架以及WSDL文件。获取传感器参数和控制设备的头文件如图4所示。
这个头文件定义了Web Service的基本属性:通信方式、文字编码、命名空间、服务地址、接口参数声明以及两个服务接口函数ns_sen sor、ns_device。
依据图定义的头文件,按照图服务端开发步骤系统Web服务的实现程序的主要代码如图5所示。
2)服务抽象层
服务抽象层屏蔽不同传感器和可控设备的细节,为gSoap网络接口层提供支持,如图6两个接口函数的具体实现方法就属于这一层。传感器数据来源可能来自数据库、其他进程、或者ZigBee网络等等,而实现一个设备动作(如帘幕收展)因为耗时较长需要创建新进程控制多个继电器协同工作。这就需要将抽象的查询和控制命令解析为具体的实现过程,当新增、修改指令时只需修改本层即可。
3)信息采集与控制层
信息采集和控制层主要完成具体的数据采集和控制过程。信息采集主要指通过ZigBee网络将模拟传感器的电流或电压值转换为数字值或按照通信协议获取数字传感器的测量值。控制主要指根据抽象层的设备控制命令完成具体设备的控制,如控制ZigBee板某个载继电器的闭合或者通过某个PWM接口控制步进电机运转。当有新的物理设备加入时,只需要修改本层代码即可。
2.4 视频监控
由于通用ARM处理器核心不包含DSP视频处理模块,因此如果通过软件实现视频编码及流化,实践表明一般只能实现较低帧率且较低分辨率的输出,画质较差,容易造成CPU占用率高、系统不稳定。如果加入IPC(网络摄像机)专业处理器会造硬件成本和软件研发成本巨大提高。近年来监控产品价格逐渐降低,选择成熟稳定的网络摄像机作为视频监控是较好的方案。网络摄像机一般会提供SDK(软件开发包)这使得视频开发快捷方便。
2.5 应用层
根据软件工程松耦合分层设计思想和农业生产需求额多样性,本系统中的应用层设计划分力应用服务子层、业务逻辑子层以及用户交互子层。每一层都抽象地定义各自的功能以及对外接口。这样每层都可以使用任何开发语言(如C#,Java等)独立地开发,层与层之间通过统一的接口进行通信,目前层与层通信采用了共享数据库数据以及进程间通信技术,避免系统某一层的改变影响其他层。
3 系统运行与测试
本系统已成功应用于江苏某农业科技示范园内的两座玻璃温室。位于办公区的服务器距离温室距离大于500米,通过无线网桥可以流畅的查看高清视频,观察植物生长状况。每个温室内包括DHT21温湿度传感器(单总线)、JTBQ-6光照传感器(电流输出)、S-100H二氧化碳传感器(电压输出),温室具有侧窗、天窗、保温幕等多种设备需要控制,ZigBee控制节点连接了24路继电器模块,以完成复杂的控制过程。
服务器端开发使用.net平台(开个工具为VS2010和SQLServer2008)的C#语言开发,包括数据管理及控制模块和Web网站,数据管理及控制调用嵌入式网关的Web Service接口完成数据采集、存储和设备控制,开发时只需引用gSoap生成的WSDL文件VS2010会自动生成相应的类,开发者只需使用这些类而不必了解具体实现过程,在图5头文件中定义的接口在VS2010中生成的类如图6所示。
Web网站完成与用户交互,用户可以登入网站查看数据,控制设备等,通过视频查看植物生长状况。
4 结束语
本文构建了基于嵌入式Web Services的农业物联网测控系统,实现了大规模的农业测控方案。嵌入式网关通过web Services技术将Zigbee无线测控网络与Internet链接起来,使得的底层设备数据获取与设备控制都有相同的表示方式和操作方法,实现了异构网络的互操作,测控网络获得极大的灵活性,程序设计者都将从复杂的底层数据处理中解脱出来,大大降低了开发和维护的难度。