《无线传感器网络》课程设计报告学号: 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)例如FF 4B 00 00 00 01 ,表示01 号节点的网络地址为004B,发送数据到父节点,其网络地址为00 00(协调器)。
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(RX ON WHEN IDLE)状态下的所有设备。
也就是说,除了休眠模式设备的所有设备NWK_BROADCAST_SHORTADDR_DEVZCZR (0xFFFC) –该信息被发送到所有路由器(包括协调器)。
本实验选择的目的地址为NWK_BROADCAST_SHORTADDR_DEVALL 。
当应用层想发送一个数据包到一个设备组的时候使用组播模式。
为实现组播模式,需设置地址模式为afAddrGroup。
在网络中需预先定义组,并将目标设备加入已存在的组([看ZStack API 文档中的] aps_AddGroup())。
广播可以看作是组播的特例。
在对ZDO_STATE_CHANGE 事件的处理中启动定时器来触发协调器发送数据的事件MY_REPORT_EVT,在对MY_REPORT_EVT 事件的处理中发送数据hello world!,并启动定时器再一次触发MY_REPORT_EVT 事件,进行周期广播或组播。
为实现组播,应在终端或路由节点的程序中注册一个组(注册的组号应与发送数据的目的地址一致),ZStack 中,组是以链表的形式存在,首先需要定义组表的头节点(在p2p_test.c 文件中),定义语句为apsGroupItem_t*group_t;,然后再定义一个一个组group1aps_Group_t group1; ),在初始化函数中对组表分配空间(调用函数osal_mem_alloc),并初始化组号和组名,然后调用aps_AddGroup 将这个组加入到定义的端点应用中(为使用aps_AddGroup 函数,程序中应包含aps_groups.h 头文件)。
2、总体设计协调器节点上电后进行组网操作组网操作,终端节点和路由节点上电后进行入网操作,接着周期向所有节点广播(或部分节点组播)数据包(Hello World ),节点收到数据包后通过串口传给PC,通过ZTOOL 程序观察接收情况。
3、详细设计实验设备及工具硬件:ZX2530A 型CC2530 节点板、USB 接口的仿真器,PC机软件:PC 机操作系统WinXP 、IAR 集成开发环境、ZTOOL 程序实验步骤1.打\Projects\zstack\Samples\SimpleApp\CC2530DB 文件夹下iar工程文件SimpleApp.eww2. 选择工程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 上的串口监控程序查看组网情况。