无线传感器网络实训报告
题 目: 智慧城市沙盘控制系统
专 业: 物联网应用技术
班 级: 物联网12-1
学 号: 0000000
姓 名: X X
指导教师:
二〇##年六月十二日
目 录
第1章 实训项目简介... 1
第2章 系统需求分析... 2
2.1 案例呈现于任务描述... 2
2.1.1 智能家居的系统构成... 2
2.1.2 智能家居安防系统... 2
第3章 系统通讯协议规划... 4
3.1 系统运行流程... 4
3.1.1 注册网络... 4
3.1.2 获取网络参数... 5
3.1.3 下发控制指令... 5
3.2 通信协议规划... 6
3.2.1 规划原则... 6
3.2.2 WSN网络结构... 6
3.1.3 通信协议... 7
第4章 Server服务端软件开发与测试... 13
4.1 三层架构程序设计简介... 13
4.2 开发环境的搭建... 14
4.3 软件开发... 14
4.4 按键功能程序编写... 15
总结... 19
第1章 实训项目简介
本次实训系统以模拟智能家居为载体,它由感知层子系统、传输层子系统、应用层子系统 三个部分组成,如图1所示。
图1 实训系统组成
图中,感知层子系统由开关量控制节点和模拟量控制节点等两类节点组成。其中,灯光 控制节点、风扇控制节点、电源控制节点三类是开关量控制节点;窗帘控制节点、雨棚控制 节点是模拟量控制节点。
传输层子系统是基于 CC2430 的 ZigBee 无线传输网。所有感知层节点的控制指令均由 应用层子系统通过服务端通过串口下发给 CC2430 协调器,再由后者通过 ZigBee 无线网络 下发给 CC2430 终端节点。
第2章 系统需求分析
2.1 案例呈现于任务描述
2.1.1 智能家居的系统构成
一套完整的智能家居系统通常由一个中央控制系统和各子系统组成,如图2-1-1 所示。子系统一般包括门禁系统、远程控制系统、安防系统、背景音乐系统、智能窗帘系统、智能照 明系统、智能家电系统。若业主只要求其中部份子系统功能,可配臵相应子系统控制器代替 中央控制系统,以节约成本。为进一步提升生活品质,一些住宅还配有家庭 AV 系统、家用 中央吸尘及新风系统、宠物设备、智能卫浴系统、车库智能换气系统、自动浇花系统、自动 给排水系统等智能家居子系统。
图2-1-1 智能家居系统结构
2.1.2 智能家居安防系统
住宅的安全永远是放在第一位的,所以家庭安防系统是智能家居中最重要的一套子系统,其基本应用情况如图2-1-2所示。家庭安防系统发展到现在,可实现的功能越来越多,主要有如下几方面:
1)提供无线防区,外接各种安防探测器与警灯、警号,对每一不同的安防探测器具识别功能;
2)实现一键撤布防,紧急求助、布防延时,密码撤防、消警等功能;
3)业主可以通过电话和网络进行远程撤布防,具有联动控制功能;
4)用户与管理中心可查询报警类型、报警点、报警时间、处理记录;
5)触发警情后可通过小区局域网向保安中心报警,同时拨打用户设定的电话号码进行报警;
6)通过家庭智能安防系统,可以实现各个防区与其他家电自动化设备的联动控制。
图2-1-2 家庭安防系统应用示意图
第3章 系统通讯协议规划
3.1 系统运行流程
智能家居系统的运行主要包括注册网络、获取网络参数、下发控制指令等 三方面的操作。
在智能家居系统中服务器与CC2430 协调器之间是通过串口进行通信,两者之间是需要使用统一的波特率、并按指定帧格式收发数据。CC2430 协调器与 CC2430 终端节点之间是通过 ZigBee 无线网络通信的,需要物理地址和网络地址。CC2430 终端节点是通过普通 I/O 口将控制命令转化为控制模块(执行机构)的驱动信号的。
3.1.1 注册网络
系统启动后,CC2430 协调器首先建立无线网络,路由器和终端节点在发现网络后,会主动加入网络,并上传网络参数(物理地址、网络地址、节点类型等)。注册网络的流程如图 3-1-1 所示。
图 3-1-1 注册网络运行流程
3.1.2 获取网络参数
系统运行中,为及时发现掉线节点,系统会周期性去询问节点,要求返回网络参数。获取网络参数的流程如图3-1-2所示。
图3-1-2 获取网络参数运行流程
3.1.3 下发控制指令
当需要改变各被控对象的运行状态时,系统就需要下发各类控制指令,其流程如图 3-1-3 所示。
图 3-1-3 下发控制指令运行流程
3.2 通信协议规划
3.2.1 规划原则
1)透明传输,将控制与传输分离。
2)ZigBee无线网支持广播、点对点通信。
3.2.2 WSN网络结构
1. WSN 类型节点
1)协调器(Coordinator)
在无线传感网络中,有且只有一个协调器节点,它负责选择网络所使用的频率通道、建立网络并将其他节点加入网络、提供信息路由、安全管理和其他服务。
2)路由器(Router)
路由器节点是网络远距离延伸的必要部件。它负责发送和接受节点自身信息;节点之间转发信息;允许子节点通过它加入网络。
3)传感器节点(Sensor)
传感器节点的主要任务就是发送和接收信息,通常一个终端节点处在数据收发状态时可进入休眠状态以降低能耗。
2. 网络拓扑选择本系统的无线网络基于Z-Stack协议栈完成,由于控制点不多、分布范围较窄,故采用星形网络拓扑结构。
3.1.3 通信协议
协议的规划应采用分层方式实施,以便明确边界。对于本系统而言,整个协议从下自上为分三层,如图3-1-3-1所示。
图3-1-3-1 自定义协议的层次结构
1)网络间传输数据流的特点。
表3-1-3-1 数据流特点
2)协议帧格式。
表3-1-3-2 无线网通信协议基本帧格式
3)表3-1-3-2中,各字段含义。
表3-1-3-3 各字段含义
4)帧类型简表。
表3-1-3-4 帧类型简表
5)帧类型详表。
表3-1-3-4 帧类型详表
第4章 Server服务端软件开发与测试
4.1 三层架构程序设计简介
所谓三层架构,是指数据访问层、业务逻辑层以及窗体表示层,各层的主要功能如下:
1. 数据访问层
在三层架构设计中,数据访问层一般用于对数据库进行各项操作,即实现对数据表的 Select、Insert、Update、Delete 操作。本项目不涉及数据库的操作,因此数据访问层的功 能主要是完成串口的操作,包括获取可用串口、打开串口、关闭串口、通过串口收发数据等。
2. 业务逻辑层
业务逻辑层是三层架构中体现核心价值的部分,主要负责业务规则的制定、业务流程的 实现。在本项目中,业务逻辑层的功能主要是完成 SLE4442 卡中三类存储器的读写操作。
3. 窗体表示层
表示层位于离用户最近的最上层,用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
图5-1 项目三层架构设计
4.2 开发环境的搭建
Visual Studio 2005是基于.NET2.0框架的。它同时也能开发跨平台的应程序,如开发使用微软操作系统的手机的程序等。总体来说是一个非常庞大的软件,甚至包含代码测试功能。这个版本的Visual Studio 包含有众多版本,分别面向不同的开发角色。同时还永久提供免费的Visual Studio Express 版本。
1)安装Visual studio 2005或以上版本的集成开发环境软件。
2)安装Framework 2.0。
3)创建实训所需工程文件。
4)利用C#在Visual Studio 2005上进行软件开发。
4.3 软件开发
首先对窗体表示层进行设计:
1)设置窗体固定大小。
2)设置不能随意缩放。
3)设置不能最大化。
4)修改窗体名称。
5)添加工作组,按键等。
6)合理对窗体进行布局,使窗体清晰易懂一目了然。
对按键进行程序的编写:
1)双击需要添加程序的按键。
2)在弹出的程序编写界面编写能实现该按键功能的程序。
3)对程序进行调试修改,以实现按键功能。
4.4 按键功能程序编写
窗体表示画好后,对各个按键的功能进行相应的程序编写,首先串口号和波特率部分进行程序编写,以实现自动检测端口的功能和波特率选择功能;然后对节点开关灯功能进行程序编写,节点部分开关灯有8个按键,分别为“0801节点开灯”、“0802节点开灯”、“0803节点开灯”、“0804节点开灯”、“0801节点关灯”、“0802节点关灯”、“0803节点关灯”、“0804节点关灯”。鼠标双击对应节点按键进行程序编写,例如0801开灯和关灯程序:
/// <summary>
/// 打开0801节点控制的灯
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOpen0801_Click(object sender, EventArgs e)
{
//先检查串口是否打开
if (myport1.IsOpen == false)
{
this.tSLabelState.Text = "亲,串口未打开";
return;
}
//根据通讯协议封装命令
//贞类型
cmd[4] = 0x43;
cmd[5] = 0x50;
cmd[6] = 0x41;
//贞长度
cmd[7] = 0x12;
//物理地址
cmd[8] = 0x08;
cmd[9] = 0x01;
cmd[10] = 0x08;
cmd[11] = 0x01;
cmd[12] = 0x08;
cmd[13] = 0x01;
cmd[14] = 0x08;
cmd[15] = 0x01;
//网络地址
cmd[16] = 0x00;
cmd[17] = 0x00;
//数据包
cmd[18] = 0x00;
cmd[19] = 0x4F;//字符'O'
cmd[20] = 0x4E;//字符'N'
cmd[21] = 0x00;
cmd[22] = 0x00;
cmd[23] = 0x00;
cmd[24] = 0x00;
//连接质量
cmd[25] = 0x00;
//调用串口对象的 方法下发指令
myport1.Write(cmd, 0, 29);
this.tBPortData.Text = "";
foreach (byte ch in cmd)
{
this.tBPortData.Text += ch.ToString("X2") + " ";
}
//接收并处理协调器通过串口反馈的数据
}
/// <summary>
/// 关闭0801节点控制的灯
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnClose0801_Click(object sender, EventArgs e)
{
//先检查串口是否打开
if (myport1.IsOpen == false)
{
this.tSLabelState.Text = "串口未打开";
return;
}
//根据通讯协议封装命令
//贞类型
cmd[4] = 0x43;
cmd[5] = 0x50;
cmd[6] = 0x41;
//贞长度
cmd[7] = 0x12;
//物理地址
cmd[8] = 0x08;
cmd[9] = 0x01;
cmd[10] = 0x08;
cmd[11] = 0x01;
cmd[12] = 0x08;
cmd[13] = 0x01;
cmd[14] = 0x08;
cmd[15] = 0x01;
//网络地址
cmd[16] = 0x00;
cmd[17] = 0x00;
//数据包
cmd[18] = 0x00;
cmd[19] = 0x4F;//字符'O'
cmd[20] = 0x46;//字符'F'
cmd[21] = 0x00;
cmd[22] = 0x00;
cmd[23] = 0x00;
cmd[24] = 0x00;
//连接质量
cmd[25] = 0x00;
//调用串口对象的 方法下发指令
myport1.Write(cmd, 0, 29);
this.tBPortData.Text = "";
foreach (byte ch in cmd)
{
this.tBPortData.Text += ch.ToString("X2") + " ";
}
//接收并处理协调器通过串口反馈的数据
}
总 结
WSN是Wireless Sensor Network的缩写,即无线传感器网络。是由部署在监测区域内大量的廉价微型传感器节点组成,通过无线通信方式形成的一个多跳的自组织的网络系统,其目的是协作地感知、采集和处理网络覆盖区域中被感知对象的信息,并发送给观察者。传感器、感知对象和观察者构成了无线传感器网络的三个要素。
本次无线传感器网络实训的是智慧城市灯光控制系统,实训的内容是对智慧城市沙盘系统进行电路原理分析,系统结构组成分析和控制端口分析及划分,在Visual Studio 2005下用C#程序语言进行控制智慧城市沙盘系统的软件开发,首先进行控制软件的窗体表示层界面的设计,完成相应控制按键的绘制,然后根据划分好的端口对相应的按键进行的程序的编写,以实现对应按键功能的目的。这一步是本次实训知识综合应用的一个体现,只有在理解沙盘系统电路原理和系统结构的基础上才能很好地进行控制软件的编写。
这次实训我们小组四人齐心协力,最终完成了对智慧城市沙盘系统的控制,在一盏盏交通灯、别墅灯、花园灯亮起的一瞬间,整个沙盘看上去是那么的美丽,我们的组员心情也是激动的,美丽的,因为这是我们四人两个星期实训的成果,只有在自己亲自动手做了,最后实现了才能体会到最后的那份喜悦的心情。我体会到了!
最后必须感谢两位老师,正是你们的耐心、细致的教导,我们小组才能看到实训的成果,收获了成功的喜悦。在此向两位老师致以诚挚的谢意和崇高的敬意。