Z-STACK综合实验 下载本文

内容发布更新时间 : 2024/5/11 23:40:29星期一 下面是文章的全部内容请认真阅读。

西安电子科技大学实验报告 课程名称: 无线传感器网络开课日期: 2015年9月8日 地 点: E-II-522 实验名称:Z-STACK综合实验 班 级:1303041 学 号: 13030410025 姓 名:冯国军 完成情况: 成绩: 辅导教师: 日期:

实验报告内容:

(1) 实验名称: Z-STACK综合实验 (2) 实验内容:

1、验证Z-STACK基础实验,即初始化协调器并建立网络,下载初始化路由节点,下载初始化终端节点,使终端节点和路由节点接入网络,通过按键,路由节点发送灯闪烁的命令给终端节点使得终端节点闪烁。

2、验证Z-STACK实验,即初始化协调器并建立网络,下载初始化路由节点,下载初始化终端节点,使终端节点和路由节点接入网络,通过按键,协调器,路由节点进行绑定连接,并且互相发送数据,匹配数据。

3、结合1,2,并加入按键功能,实现按下不同的键发送不同的内容,或者按键实现发送不同的指令形成不同的交流传输。

(3) 实验原理:

一、设备类型

在 ZigBee 网络中存在三种逻辑设备类型:Coordinator(协调器),Router(路由器)和End-Device(终端设备)。ZigBee 网络由一个Coordinator 以及多个Router 和多个End_Device 组成。

下图是一个简单的ZigBee 网络示意图。其中节点●为Coordinator, 节点为⊕Router, 节点○为End-Device。

1、Coordinator(协调器) 协调器负责启动整个网络。它也是网络的第一个设备。协调器选择一个信道和一个网络ID(也称之为PAN ID,即Personal Area Network ID),随后启动整个网络。协调器也可以用来协助建立网络中安全层和应用层的绑定(bindings)。

注意,协调器的角色主要涉及网络的启动和配置。一旦这些都完成后,协调器的工作就像一个路由器。

2、Router(路由器) 路由器的功能主要是:允许其他设备加入网络,多跳路由和协助它自己的由电池供电的子终端设备的通讯。通常,路由器希望是一直处于活动状态,因此它必须使用主电源供电。但是当使用树型网络模式时,允许路由间隔一定的周期操作一次,这样就可以使用电池给其供电。

3、End-Device(终端设备)

终端设备没有特定的维持网络结构的责任,它可以睡眠或者唤醒,因此它可以是一个电

池供电设备。

通常,终端设备对存储空间(特别是RAM)的需要比较小。

注意:在Z-Stack 1.4.1 中一个设备的类型通常在编译的时候通过编译选项(ZDO_COORDINATOR和RTR_NWK)确定。所有的应用例子都提供独立的项目文件来编译每一种设备类型。

二、地址类型(Address types)

ZigBee 设备有两种类型的地址。一种是64 位IEEE 地址,即MAC 地址,另一种是16 位网络地址。64 位地址是全球唯一的地址,设备将在它的生命周期中一直拥有它。它通常由制造商或者被安装时设置。在每个路由加入网络之前, 寻址方案需要知道和配置一些参数。这些参数是AX_DEPTH,MAX_ROUTERS 和MAX_CHILDREN。这些参数是栈配置的一部分,ZigBee2006 协议栈已经规定了这些参数的值:MAX_DEPTH = 5,MAX_ROUTERS = 6 和MAX_CHILDREN = 20。

在ZigBee网络中存在三种逻辑设备类型:Coordinator(协调器),Router(路由器)和End-Device(终端设备)。ZigBee网络由一个协调器以及多个路由器和多个终端设备组成。 协调器

协调器负责启动整个网络。它也是网络的第一个设备。协调器选择一个信道和一个网络ID(也称之为PAN ID,即Personal Area Network ID),随后启动整个网络。 协调器也可以用来协助建立网络中安全层和应用层的绑定(bindings)。

注意,协调器的角色主要涉及网络的启动和配置。一旦这些都完成后,协调器的工作就和一个路由器相同。由于ZigBee网络本身的分布特性,因此接下来整个网络的操作就不再依赖协调器是否存在。 终端设备

终端设备没有维持网络结构的职责,它可以睡眠或者唤醒,因此它可以是一个由电池供电的设备。

通常,终端设备对存储空间(特别是RAM的需要)比较小。

(4)实验结果: 按下上键发送本人的学号,按下下键,发送同学的学号或姓名

(5) 关键代码与分析:

#include \#include \#include \#include \#include \#include \#include \#include \#include \#if !defined( WIN32 ) #include \#endif /* HAL */

#include \#include \#include \#include \#include \