wsn实验报告0909100825郑祖辉.docx
《wsn实验报告0909100825郑祖辉.docx》由会员分享,可在线阅读,更多相关《wsn实验报告0909100825郑祖辉.docx(14页珍藏版)》请在冰豆网上搜索。
wsn实验报告0909100825郑祖辉
《无线传感器网络》
课程设计报告
学号:
0909100825
姓名:
郑祖辉
专业班级:
物联网1001
指导教师:
高建良
一、概述
实验内容及实验目的
无线传感器网络是物联网的基本组成部分,是物联网用来感知和识别周围环境的信息生成和采集系统,传感器网络对信息处理来说如同人体的感觉突触一样重要,为了方便感知和部署并提高网络的可扩展性,传感器网络一般采用无线通信方式,从而形成了节点之间可自组织拓扑结构的无线传感器网络。
本课程设计的目的综合应用学生所学知识,建立系统和完整的传感器网络概念,理解和巩固无线传感器网络基本理论、原理和方法,掌握无线传感器网络开发的基本技能。
本次课程设计的主要任务是无线传感器网络软件仿真与实验箱运用,理解ZStack协议栈,其中:
实验一多点自组织组网实验的实验目的是:
1、理解zigbee协议及相关知识。
2、在ZX2530A型CC2530节点板上实现自组织的组网
3、在ZStack协议栈中实现单播通信。
实验二信息广播、组播实验的实验目的是:
1、理解zigbee协议及相关知识。
2、在ZStack协议栈下实现信息的广播和组播功能。
实验三网络拓扑选择实验目的是:
1、理解zigbee协议及相关知识。
2、在ZStack协议栈下实现网络拓扑的控制。
二、实验原理及设计
一、多点自组织组网实验
1、实验原理
程序执行在进行一系列的初始化操作后程序就进入事件轮询状态。
对于终端节点,若没有事件发生且定义了编译选项POWER_SAVING,则节点进入休眠状态。
协调器是Zigbee三种设备中重要的一种。
它负责网络的建立,包括信道选择,确定唯一的PAN地址并把信息向网络中广播,为加入网络的路由器和终端设备分配地址,维护路由表等。
本实验在Zstack的事例代码simpleApp修改而来。
首先介绍任务初始化的概念,由于自定义任务需要确定对应的端点和簇等信息,并且将这些信息在AF层中注册,所以每个任务都要初始化然后才会进入OSAL系统循环。
在Z-Stack流程图中,上层的初始化集中在OSAL初始化(osal_init_system)函数中。
包括了存储空间、定时器、电源管理和各任务初始化。
其中用户任务初始化的流程如下:
开始
指定任务ID
网络状态初始化
指定目的地址
注册应用对象
结束
用户任务初始化流程图
任务ID(taskID)的分配是OSAL要求的,为后续调用事件函数、定时器函数提供了参数。
网络状态在启动的时候需要指定,之后才能触发ZDO_STATE_CHANGE事件,确定设备的类型。
目的地址分配包括寻址方式,端点号和地址的指定,本实验中数据的发送使用单播方式。
之后设置应用对象的属性,这是非常关键的。
本实验profile标识符采用默认设置,输入输出簇设置为相同MY_PROFILE_ID。
2、总体设计
先启动协调器节点,协调器节点上电后进行组网操作,再启动路由节点和终端节点,路由节
点和终端节点上电后进行入网操作,成功入网后周期的将自己的短地址,父节点的短地址,自己
的节点ID封装成数据包发送给协调器节点,协调器节点接收到数据包后通过串口传给PC,从PC
上的串口监控程序查看组网情况。
发送数据格式为(16进制):
FF源节点(16bit)父节点(16bit)节点编号ID(8bit)
例如FF4B00000001,表示01号节点的网络地址为004B,发送数据到父节点,其网络地址为0000(协调器)。
3、详细设计
实验设备及工具
‹硬件:
DZ2530型CC2530节点板、USB接口的仿真器,PC机Pentium100以上。
‹
软件:
PC机操作系统WinXP、IAR集成开发环境、ZTOOL程序。
实验步骤
(1).打开工程文件夹协议栈实验\2.多点自组网\Projects\zstack\Samples\SimpleApp\CC2530DB下的工程文件SimpleApp.eww。
(2).选择工程编译,生成协调器代码,并下载到ZX2530A开发板。
此节点为协调器节点。
(3).选择工程编译,生成终端节点代码,并下载到ZX2530开发板。
此节点为终端节点。
(4).选择工程编译,生成路由器节点代码,并下载到ZX2530开发板,此节点为路由器节点。
(5).用串口线将协调器节点与pc连接起来,在pc端打开ZTOOL程序。
(ZTOOL程序在zstack安装后自动安装)
(6).开启ZX2530A型CC2530节点板电源。
(7).在ZTOOL程序中观察组网结果。
4、分析及结论
由接收数据的DebugString可以看出图中有两个节点加入了网了,其中一个节点的DEVID是21,网络地址:
4f07,父节点地址是0即协调器。
另外一个节点的DEVID是11,网络地址:
A6F7,父节点地址是4f07即上一节点。
实验中可以试着改变不同节点的位置,然后通过ZTOOL看看组网结果有什么不同。
二、信息广播、组播实验
1、实验原理
当应用层想发送一个数据包到所有网络中的所有设备时使用广播传输模式,为实现广播模式,需设置地址模式为AddrBroadcast,目的地址被设置为下列值之NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)-信息将被发送到网络中的所有设备(包括休眠的设备)。
对于休眠的设备,这个信息将被保持在它的父节点,直到该休眠设备获得该信息或者该信息时间溢出(f8wConfig.cfg中的NWK_INDIRECT_MSG_TIMEOUT选项)。
NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)–该信息将被发送到网络中有接收器并处于IDLE(RXONWHENIDLE)状态下的所有设备。
也就是说,除了休眠模式设备的所有设备NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)–该信息被发送到所有路由器(包括协调器)。
本实验选择的目的地址为NWK_BROADCAST_SHORTADDR_DEVALL。
当应用层想发送一个数据包到一个设备组的时候使用组播模式。
为实现组播模式,需设置地址模式为afAddrGroup。
在网络中需预先定义组,并将目标设备加入已存在的组([看ZStackAPI文档中的]aps_AddGroup())。
广播可以看作是组播的特例。
在对ZDO_STATE_CHANGE事件的处理中启动定时器来触发协调器发送数据的事件MY_REPORT_EVT,在对MY_REPORT_EVT事件的处理中发送数据helloworld!
,并启动定时器再一次触发MY_REPORT_EVT事件,进行周期广播或组播。
为实现组播,应在终端或路由节点的程序中注册一个组(注册的组号应与发送数据的目的地址一致),ZStack中,组是以链表的形式存在,首先需要定义组表的头节点(在p2p_test.c文件中),定义语句为apsGroupItem_t*group_t;,然后再定义一个一个组group1aps_Group_tgroup1;),在初始化函数中对组表分配空间(调
用函数osal_mem_alloc),并初始化组号和组名,然后调用aps_AddGroup将这个组加入到定义的端点应用中(为使用aps_AddGroup函数,程序中应包含aps_groups.h头文件)。
2、总体设计
协调器节点上电后进行组网操作组网操作,终端节点和路由节点上电后进行入网操作,接着周期向所有节点广播(或部分节点组播)数据包(HelloWorld),节点收到数据包后通过串口传给PC,通过ZTOOL程序观察接收情况。
3、详细设计
实验设备及工具
硬件:
ZX2530A型CC2530节点板、USB接口的仿真器,PC机
软件:
PC机操作系统WinXP、IAR集成开发环境、ZTOOL程序
实验步骤
1.打\Projects\zstack\Samples\SimpleApp\CC2530DB文件夹下iar工程文件SimpleApp.eww
2.选择工程MPCoordinator编译,生成协调器代码,并下载到ZX2530A开发板。
此节点为协调器节点
3.选择工程MPEndPoint编译,生成终端节点代码,并下载到ZX2530开发板。
此节点为终端节点。
4.选择工程MPRouter编译,生成路由器节点代码,并下载到ZX2530开发板,此节点为路由器节点。
5.用串口线将非路由节点与pc连接起来。
6.开启ZX2530A型CC2530节点板电源。
7.打开ZTOOL程序,观察各个终端节点的输出结果
4、分析及结论
当地址模式设置为广播模式时(假设终端或路由节点已成功入网),网络中所以的节点都能接收到sink节点广播的信息。
三、网络拓扑选择实验
1、实验原理
ZigBee有三种网络拓扑,即星形、树形和网状网络,这三种网络拓扑在zstack协议栈下均可实现。
星形网络中,所有节点只能与协调器进行通信,而他们相互之间的通信是禁止的;树形网络中,终端节点只能与它的父节点通信,路由节点可与它的父节点和子节点通信;网状网络中,全功能节点之间是可以相互通信的。
在zstack中,通过设置宏定义STACK_PROFILE_ID的值(在nwk_globals.h中定义)可以选择不同控制模式(总共有三种控制模式,分别为HOME_CONTROLS、GENERIC_STAR和NETWORK_SPECIFIC,默认模式为HOME_CONTROLS),再选择不同的网络拓扑(NWK_MODE),也可以只修改HOME_CONTROLS的网络模式(NWK_MODE),来选择不同的网络拓扑,由于网络的组建是由协调器来控制的,因此只需修改协调器的程序即可。
可以设定数组CskipRtrs和CskipChldrn的值进一步控制网络的形式,CskipChldrn数组的值代表每一级可以加入的子节点的最大数目,CskipRtrs数组的值代表每一级可以加入的路由节点的最大数目,如在星型网络中,定义CskipRtrs[MAX_NODE_DEPTH+1]={5,0,0,0,0,0}CskipChldrn[MAX_NODE_DEPTH+1]={10,0,0,0,0,0},代表只有协调器允许节点加入,且协调器最多允许10个子节点加入,其中最多5个路由节点,剩余的为终端节点。
2、总体设计
先配置网络拓扑为星形网络,启动协调器节点,协调器节点上电后进行组网操作,再启动路由节点和终端节点,路由节点和终端节点上电后进行入网操作,成功入网后周期的将自己的短地址,父节点的短地址,自己的节点ID封装成数据包发送给sink节点,Sink节点接收到数据包后通过串口传给PC,从PC上的串口监控程序查看组网情况。
发送数据格式为(16进制):
FF源节点(16bit)父节点(16bit)节点编号ID(8bit)例如FF4B000001,表示01号节点的网络地址为004B,发送数据到父节点,其网络地址为0000(协调器)。
再依次配置网络拓扑为树形网络和网状网络,启动网络进行,进行组网操作。
3、详细设计
实验设备及工具
硬件:
ZX2530A型CC2530节点板、USB接口的仿真器,PC机Pentium100以上。
软件:
PC机操作系统WinXP、IAR集成开发环境、串口监控程序,ZTOOL程序
实验步骤
1.打开工程,将nwk_globals.h中的STACK_PROFILE_ID的值设置为GENERIC_STAR。
2.编译工程,将目标代码通过编程调试板分别下载到协调器节点和多个终端节点和路由节点中,并检查每个节点的长地址,并检查每个节点的IEEE地址(确保长地址为非0XFFFFFFFFFFFFFFFF的有效长地址)。
3.用串口线将协调器节点连接到PC上。
4.打开ZTOOL软件。
5.复位各个节点。
6.在ZTOOL软件上观察组网情况。
7.将STACK_PROFILE_ID的值设置为HOME_CONTROLS,选择网络模式NWK_MODE_TREE。
可以修改CskipRtrs[0]的值和CskipChldrn[0]的值使得sink节点只允许路由节点加入,让终端节点加入路由节点(这种情况下终端节点入网比较困难,若长时间入网不成功,则复位终端节点,重新入网),重复步骤三到七,
8.选择HOME_CONTROLS的网络模式为NWK_MODE_MESH(组成网状网络),重复步骤3到7。
4、分析及结论
当组成星形网络时,所以终端节点和路由节点的父节点地址为00(即协调器节点),当组成树形网络时(已配置协调器节点只允许路由节点加入),先让路由节点加入网络,再让终端节点加入,三个节点组成树状网络(终端节点加入路由节点比较困难,应多次尝试),在组成网状网络时(易于直接组成星形网络)通过协调器节点接收数据得到的网络结构和树形网络结构一致(在涉及路由时才能体现出网状网络来)。
三、实验结果
1、多点自组织组网实验
实验结果截图如下:
各节点情况:
2、多点自组织组网实验
实验结果截图如下:
各节点情况
3、网络拓扑选择实验
实验结果截图如下
各节点情况如下:
四、总结
短短的几天课程设计很快就结束了,时间虽然短暂,但是却暴露了很多问题。
首先是对课程设计的原理没有做到深入的理解,没有完全弄明白课程设计的真正用意,只是在浅层面上,对课程设计进行了一次初步的了解。
其次,一个同样关键的问题是,理论知识与实际实践操作起来大相径庭,往往知道问题所在,但是不懂得如何操作,如何解决。
经过这几天的实践操作,渐渐的对无线传感器网络有了进一步的认知,不再停留在基础的理论知识上。
期间也遇到了许多问题,有硬件方面,也有软件方面的,但是在经过深入探究,以及与组员讨论,咨询老师等以后,都一一的得到解决,最终完成了此次的课程设计,对我来说是一次升华,不但增长了对无线传感器网络的认知,也学会了如何与人协作,如何让力量最大化,让大难题分解解决。