APP下载

基于物联网的照明控制系统—ARM客户端软件设计

2015-01-17曾妍

电子设计工程 2015年2期
关键词:窗体服务端网关

曾妍

(四川信息职业技术学院 四川 广元 628040)

基于物联网的照明控制系统以ZigBee、单片机、传感器、C#和PHP程序设计为主要技术手段,包括照明控制单元、ZigBee无线传输层(含网关)、PC展示及控制层3个层次的现场控制单元、CC2430无线传输网络、ARM网关硬件单元、ARM网关客户端软件、基于C#的服务端软件、基于PHP的展示软件等6个子系统,用于实现一套模拟城市照明控制系统。

本课题首先规划了WSN协调器与ARM网关的串口通讯协议及ARM客户端与PC服务端的TCP/IP通讯协议,然后基于Windows CE 6.0操作系统,运用C#编程语言开发了ARM的客户端软件。经测试,客户端软件实现了按规划的协议将协调器上传数据发往服务端和将服务端下发数据发往协调器的功能,性能稳定,具有一定的实用价值。

1 需求分析

1.1 物联网照明控制系统的组成及工作过程

1.1.1 系统组成

物联网照明控制系统由感知层子系统、传输层子系统、应用层子系统三个部分组成,如图1所示。其中,感知层子系统由开关量照明控制节点组成。传输层子系统包括基于CC2430的ZigBee无线传输网和基于TCP/IP的局域网传输网。应用层子程序系统由运行于服务器上的服务端软件及其它展示软件组成,本系统包括Web展示软件和服务器Server软件。如图1所示。

图1 物联网照明控制系统的组成Fig.1 The composition of the network lighting control system

1.1.2 系统运行过程

在物联网照明控制系统中,所有感知层节点的控制指令均由应用层子系统通过服务端下发给传输层ARM网关客户端,然后由ARM处理器通过串口下发给CC2430协调器,再由后者通过ZigBee无线网络下发给CC2430终端节点。执行的操作指令主要包括注册网络、获取网络参数、下发控制指令等3个方面。

1)注册网络

系统启动后,CC2430协调器首先建立无线网络,路由器和终端节点在发现网络后,会主动加入网络,并上传网络参数(物理地址、网络地址、节点类型等)。

2)获取网络参数

系统运行中,为及时发现掉线节点,系统会周期性去询问节点,要求返回网络参数。获取网络参数的流程。

3)下发控制指令

当需要改变各被控对象的运行状态时,系统就需要下发各类控制指令。

1.2 ARM客户端软件的功能需求分析

ARM网关[1]是传输层子系统的核心设备,主要完成数据转发、协议转换、命令代理和映射、本地存储等功能,支持无线传感器网络内部数据协同和汇聚,支持ZigBee接入、TCP/IP网络接入,从而桥接无线传感器网络与互联网。

ARM客户端软件[2]主要用于实现接收ZigBee无线传感网络协调器上传的数据,然后发送到服务器。同时,对于服务器下发的一些控制命令进行解析,并通过串口传输到无线网络的协调器。

ARM网关整体上采用分层设计方案,体系结构如图1所示。硬件部分主要包括ZigBee通信节点、S3C2440 ARM主控模块、USB及网络等外设模块。软件部分包括软件支持层、应用层。图2中,软件支持层由硬件驱动、Windows CE操作系统以及支持Z-Stack的协议栈等构成。应用层由地址适配层、应用协议层、业务逻辑应用程序三部分构成,地址适配层用于Zigbee地址和以太网IP地址与应用层地址的映射,应用协议层是用于规范节点通信的数据帧格式,二者相互配合可实现节点间数据的透明传输。

图2 ARM网关的体系结构Fig.2 The system structure of ARM gateway

本课题所需开发的是软件部分的应用层软件,涉及协议转换、数据转发、人机交互等功能,宜采用软件设计中的三层架构进行软件开发。所谓三层架构,是指数据访问层、业务逻辑层以及窗体表示层。本课题主要涉及业务逻辑层和窗体表示层的设计与功能实现。

2 通信协议规划

2.1 通信协议规划原则

1)透明传输,将控制与传输分离。协议的规划不宜采用按功能方式规划,而应采用分层方式实施,以便明确边界。对于本系统而言,整个协议从下自上为分三层,如图3所示。

图3 自定义协议的层次结构Fig.3 The hierarchical structure of custom protocol

2)本系统WSN类型节点由协调器、路由器、传感器节点三种组成,拓扑结构有树状形、星形网络等。由于本系统控制点不多、分布范围较窄,故采用星形网络拓扑结构。支持ZigBee无线网广播、点对点通信。

2.2 ARM网关通讯协议详细帧格式规划

ARM网关通讯协议[3]详细帧格式规划包括注册网络、获取网络参数、返回网络参数、下发操作指令、上传操作结果等协议的规划。

1)注册网络通讯协议

注册网络[4]是指当终端节点或路由器新加入网络后,主动向上级节点发送源节点网络参数的过程。从信息流向来看,注册网络的信息是由CC2430终端节点出发,经协调器转发至PC。

2)获取网络参数通讯协议

获取网络参数是PC根据人机交互需要,通过WSN协调器下发获取网络参数指令,终端节点或路由器收到指令后,向上级节点返回源节点的网络参数。本系统中只有当节点自动注册网络失败时,才从服务器手动发送指令获取节点网络参数。从信息流向来看获取网络参数包括从PC到客户端,再由客户端发往协调器,最终到路由器和终端节点的下行发送指令,以及上行返回网络参数两个方面。

3)返回网络参数通讯协议

当节点收到由客户端转发来自服务端的获取网络指令后,自动向客户端返回节点的网络参数,再由客户端向服务端返回数据。

4)下发操作指令通讯协议

本系统中PC下发控制指令,是通过WSN协调器下发开灯或关灯指令,终端节点或路由器收到指令后,向上级节点返回源节点的执行结果。从信号流向来看,指令是由PC发出,经串口发送到客户端,再由客户端经串口将指令送入WSN协调器,然后下发到终端节点。

5)上传操作结果通讯协议

本系统中控制上传控制指令,是通过WSN协调器上传到PC下发选择开灯或关灯指令,终端节点或路由器收到指令后,向上级节点返回源节点的执行结果(包括提取到的温度、湿度以及灯光亮度参数)。从信号流向来看,指令是由PC发出,经串口送入WSN协调器,然后下发到终端节点,再经串口传输到单片机。

3 ARM客户端软件设计

3.1 业务逻辑层的设计

业务逻辑层[5]涉及数据处理SerialPortClass.cs,包括搜寻设备可用的串口、打开串口、关闭串口、下发指令并接收数据4种方法。对应方法如表1所示。

表1 SerialPortClass类的方法描述Tab.1 The methods of the SerialPortClass class description

3.2 业务逻辑层的功能实现

1)SearchSerialPorts方法该方法主要用于搜寻设备可用串口,其详细代码如下:public bool SearchSerialPorts(out string[]ports, out string retstr)

{

ports=SerialPort.GetPortNames (); //搜寻可用串口

if(ports!=null)

{

retstr="搜寻到可用串口";

return true;

}

else

{

retstr="无可用串口";

return false;

}

}

2)OpenSerialPort方法

该方法主要用于打开串口,该方法先判断串口是否已经打开(0--打开串口成功;1--串口被占用;2--打开串口异常;3--打开串口失败;),然后在串口未被占用的情况下,打开串口。

3)CloseSerialPort方法

该方法主要用于关闭串口,该方法先判断串口是否已经打开(串口未打开,无需关闭),然后在串口已打开情况下,关闭串口 (0--关闭串口成功;1--串口未打开;2--关闭串口失败;3--关闭串口异常。

4)SendDataToPort方法

该方法主要用于下发指令并接收数据,定义一个byte[]类型封装变量cmd,首先判断串口是否打开。若打开,则通过第一个默认通道发送cmd,并返回true,若未打开,直接返回false。

3.3 窗体表示层的设计

1)添加窗体文件并设计窗体

窗体表示层[6]的设计,在设计器中选择 “项目→添加Windons窗体”,打开“添加新项”对话框。 选择“Windons”模板,添加frmClient.cs窗体,根据需求设计frmClient.cs窗体,如图4所示。

图4 创建frmClient.cs窗体界面Fig.4 Create a frmClient.cs form interface

2)frmClient窗体代码文件(frmClient.cs)的结构

在frmClient.cs中,首先需要定义一些全局变量,实例化有关公共对象,然后编写诸如连接设备(串口)、断开设备(串口)、接收数据、转发数据等事件的处理方法。

3.4 窗体表示层的功能实现

1)frmClient_Load事件处理方法

在frmClient窗体加载事件处理过程中,需搜寻并获取当前可用串口号写入ComboBox控件cbbSerialPort的Items中并显示,并设置默认的波特率。其中,通过调用业务逻辑层的Get_Ports方法获取可用串口。

2)btnConnectCoor_Click事件处理方法

该方法用于连接协调器,首先提取串口名称、波特率,然后实例化一个串口操作对象并调用业务逻辑层OpenSerialPort方法打开串口,如果打开串口成功,则为已经打开的串口添加DataReceived事件并设置串口连接。如果打开串口不成功,则进行错误提示。

3)btnClosePort_Click事件处理方法

该方法用于断开协调器,首先实例化一个串口操作类对象,然后调用业务逻辑层CloseSerialPort方法关闭串口,如果关闭串口成功,则设置串口连接。如果关闭串口不成功,则进行错误提示。

4)btnStartListen_Click事件处理方法

该事件执行启动上传功能,要实现该操作需先实例化客户端和网络数据流,再连接服务端,通过调用SendMessage方法将网关接入到服务器,并通过串口上传数据到服务器,同时调用ReceiveMessage方法接收来自服务器发向协调器的指令。

5)btnStopListen_Click事件处理方法

该事件执行停止上传功能,关闭客户端与服务器之间的传输,并断开网关接与服务器。

6)btnSendToServer_Click事件处理方法

该事件执行手动上传功能,通过调用SendMessage方法手动向服务端上传网关配置。

7)btnCleaeWSN_Click事件处理方法

该事件执行清空WSN无线网络消息的功能。

8)btnClearTcpIP_Click事件处理方法

该事件执行清空TCP/IP局域网消息功能。

4 系统测试

4.1 ARM网关客服端软件功能测试

利用VS20005软件生成SmartHomeClient.exe应用文件,然后连接WinCE 6.0,利用同步软件将SmartHomeClient.exe应用文件复制到WinCE 6.0操作平台,然后打开在WinCE 6.0操作平台中打开SmartHomeClient.exe应用文件。如图5所示。然后连接协调器和服务端,开启“启动上传”按钮,协调器向服务端上传节点数据,服务端下发操作指令,观察网关是否有数据传输。

图5 ARM网关客户端软件界面Fig.5 The ARM gateway client software interface

4.2 系统调试

1)连接服务器

在服务端打开的情况下,开启“启动上传”,连接服务器成功则提示“接入服务器”,并在lbServerMsg中显示来自服务器的信息。

2)组网

在已连接协调器和服务器的情况下,复位节点,通过协调器向网关发送节点信息,再由网关将节点信息转发至服务器,进行组网。

3)服务器下发操作指令

服务器通过网关向协调器发送开灯指令,在已经开灯的情况下,服务器通过网关向协调器发送光照、湿度、温度采集指令。

经测试本系统网关客户端软件,实现了数据的上传和下发功能,达到了设计目的。

5 结束语

本文研究利用ZigBee无线通信技术组建无线网络,并将其使用于教室、走廊、街道的智能照明控制系统中。无线智能照明系统的设计是为了对建筑的照明设备实现集中统一的管理,将建筑的照明设备按场景分类进行控制,并根据室外光照调节照明设备的照度,从而,使建筑以及室内室外都有一个良好的光环境,并能够尽可能的节约能源。在智能照明控制系统中,使用无线通信的方式,可以避免有线电缆的铺设,降低了系统的安装成本与安装难度,同时也便于系统的移动,即可以整体的搬迁至另外的环境中进行使用,这样又在另一层面降低了系统的成本,以及缩短了系统回收利润的时间。为了达到系统所需要的功能与要求,在本设计中利用了成都无线龙公司的无线单片机系统作为系统的硬件开发平台,对系统中的节点设备进行了设计,完成了网络协调器、路由器控制终端设备以及其他网络节点的原理图设计。同时利用软件开发平台IAR环境,进行了系统的主程序设计,以及主程序流程图的绘制。利用Microsoft Visual Studio 2005开发环境对控制系统的设计制作,实现了真正的智能化。

[1]刘孟强,夏晶晶,刘俊辉.C#程序设计案例教程[M].北京:清华大学出版社,2011.

[2]王浩.Windows CE(C#)嵌入式应用开发[M].北京:中国水利水电出版社,2010.

[3]黄嘉辉.C#.NET网络程序设计[M].科学出版社,2004.

[4]宋先斌.C#应用开发[M].北京:清华大学出版社,2010.

[5]郑耀东.C#从入门到实践[M].北京:清华大学出版社,2009.

[6]Scott Meyers.Effective C++[M].北京:电子工业出版社,2006.

猜你喜欢

窗体服务端网关
试谈Access 2007数据库在林业档案管理中的应用
信号系统网关设备的优化
新时期《移动Web服务端开发》课程教学改革的研究
在Windows Server 2008上创建应用
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”
一种实时高效的伺服控制网关设计
巧设WPS窗体控件让表格填写更规范
摸清黑客套路防范木马侵入
WinCE.net下图形用户界面的开发