logo资料库

《Zigbee入门与实践》第五章 Zigbee组网实战入门.pdf

第1页 / 共76页
第2页 / 共76页
第3页 / 共76页
第4页 / 共76页
第5页 / 共76页
第6页 / 共76页
第7页 / 共76页
第8页 / 共76页
资料共76页,剩余部分请下载后查看
ZigBee无线传感器网络入门
前言
Zstack协议栈
什么是ZigBee协议栈
如何使用ZigBee协议栈
ZigBee协议栈的安装、编译与下载
一个简单的无线传输组网实验
建立一个全新的Zstack工程
协调器编程
终端节点编程
测试步骤与效果
ZigBee数据传输实验剖析
数据发送
数据接收
Zigbee 数据包的捕获
ZigBee数据包的结构
本实验数据分析
数据收发无线组网实验
首先提出要求
操作系统编程及分析
公共头文件的编程及分析
协调器的编程及分析
终端的编程及分析
测试步骤与效果
无线开关3组灯实验组网实现
首先提出设计要求
建立一个全新的工程的方法
操作系统编程及分析
公共头文件的编程及分析
协调器的编程及分析
终端的编程与分析
测试步骤与效果
JIAJIEKEJI ZigBee 无线传感器网络入门 佳杰科技 Dan 2012 H T T P : / / J I E L O V E D A N . T A O B A O . C O M /
http://jielovedan.taobao.com/ 佳杰科技 目录 ZigBee 无线传感器网络入门 .............................................................................................. 3 前言.......................................................................................................................... 3 5.1 Zstack 协议栈 .................................................................................................. 4 5.1.1 什么是 ZigBee 协议栈 ........................................................................... 4 5.1.2 如何使用 ZigBee 协议栈 ........................................................................ 4 5.1.3 ZigBee 协议栈的安装、编译与下载 ....................................................... 5 5.2 一个简单的无线传输组网实验......................................................................... 6 5.3.1 建立一个全新的 Zstack 工程.................................................................. 7 5.3.2 协调器编程 ........................................................................................ 11 5.3.3 终端节点编程..................................................................................... 23 5.3.4 测试步骤与效果 ................................................................................. 32 5.3.5 ZigBee 数据传输实验剖析 ................................................................... 32 5.3.6 数据发送............................................................................................ 32 5.3.7 数据接收............................................................................................ 34 5.3.8 Zigbee 数据包的捕获 ......................................................................... 35 5.3.9 ZigBee 数据包的结构 .......................................................................... 37 5.3.10 本实验数据分析 ................................................................................. 38 5.3 数据收发无线组网实验 ................................................................................. 40 5.4.1 首先提出要求..................................................................................... 40 5.4.2 操作系统编程及分析 .......................................................................... 41 5.4.3 公共头文件的编程及分析 ................................................................... 43 5.4.4 协调器的编程及分析 .......................................................................... 44 5.4.5 终端的编程及分析.............................................................................. 51 5.3.11 测试步骤与效果 ................................................................................. 54 5.4 无线开关灯实验组网实现.............................................................................. 56 5.4.1 首先提出设计要求.............................................................................. 56 5.4.2 建立一个全新的工程的方法................................................................ 57 5.4.3 操作系统编程及分析 .......................................................................... 59 5.4.4 公共头文件的编程及分析 ................................................................... 61 5.4.5 协调器的编程及分析 .......................................................................... 62 5.4.6 终端的编程与分析.............................................................................. 67
http://jielovedan.taobao.com/ 佳杰科技 ZigBee 无线传感器网络入门 前言 本章教程讲授思路是,从实战出发,提出设计要求,然后开始协调器,终端的编程。一 步一步的完成要求,并对代码进行分析。我们将 会对用到的函数加以详细的解释说明,配 套开发板可以直接下载完成的组网代码进行结果的测试。 ZigBee 无线传感器网络涉及电子、电路、通信、射频等多学科的知识,这对于 入门级学习来说,无形中增加了学习难度,很多读者看协议、射频电路……学了半年甚至更 长的时间,但是连基本的点对点通信都无法实现,更别说根据对 ZigBee 协议的理解来实现 正常的无线网络部署工作了。 基于此原因,本书推荐另一种学习思路,不是将学习重点放在复杂的 ZigBee 协议、射频、天线等知识,而是直接进行 ZigBee 无线网络点对点通信的学习,基本 思路是:从发送端发送一个数据,接收端接收到数据后校验收到的数据是否正确, 并给出相应的指示。很简单的功能,但是这里涉及以下问题:  数据在协议栈里面是如何流动的;  如何调用 ZigBee 协议栈提供的发送函数;  如何使用 ZigBee 协议栈进行数据的接收;  如何理解 ZigBee 协议栈;   如何利用 ZigBee 协议栈提供的函数来实现基本的无线传感器网络应用程序开发;  系统硬件对 ZigBee 协议都提供了哪些支持。 ZigBee 协议栈是采用分层的思想,各层都具有哪些功能; 一个看似简单得不能再简单的实验引起了读者对于 ZigBee 无线传感器网络技 术方方面面的思考,也正是由于上述思考,笔者才鼓起勇气带领读者去探究 ZigBee 无线网络的技术内幕,触摸那神圣的无线通信世界,感知那“传说中”的无线传感 器网络,读者的 ZigBee 无线传感器网络开发之旅由此开始…… 本章只是带领读者从功能上理解协议栈,并没有给出具体的概念性的知识点, 展示了 ZigBee 无线网络中的数据传输过程,并没有对 ZigBee。协议栈进行深入的讨 论,在本书第 6 章中会对 ZigBee。协议栈的构成及工作原理进行讨论,本章的主要目的是使 读者对 ZigBee 协议栈开发有个感性的认识。 注意,本章用到的实验,都有完成好了的程序代码在本章文件夹里可以找到。大家可以 先下载程序,观察执行效果,然后再开始分析,一步一步看程序代码是如何实现的。本章所 涉及的程序都是组网完成,不牵涉路由器,这会在后面提到。 在开始实验之前,有几点设计准备在前面提到过,这里 Zstack 安装的路径为 D:\ZStack-CC2530-2.3.0-1.4.0 安装的版本为 2.3.0-1.4.0,不同版本的协议栈会有所差异。 IAR 开发软件采用的是 IAR Assembler for 8051 8.10.3 (8.10.3.40338),版本信息在 IAR 软件中 的 Help 栏的 About 栏的 Product info 中查看最顶部的编号。本实验的程序代码在文字提及的 地方采用方框包围,提及的分析代码采用编号标注。 程序代码 1 分析代码
http://jielovedan.taobao.com/ 佳杰科技 5.1 Zstack 协议栈 进行 zigBee。无线传感器网络的开发,首先面临的问题是什么?是 ZigBee 协议 栈,以及由此引发的如下问题: ZigBee 协议栈和 zigBee 协议是什么关系;   如何使用 ZigBee 协议栈进行应用程序的开发。 下面对上述问题进行逐一讲解。 5.1.1 什么是 ZigBee 协议栈 协议定义的是一系列的通信标准,通信双方需要共同按照这一标准进正常的数 据收发;协议找是协议的具体实现形式,通俗的理解为用代码实现的函数库,以便于开发人 员调用。 ZigBee 的协议分为两部分,IEEE 802.15.4 定义了物理层和 MAC 层技术规范,ZigBee 联 盟定义了网络层·安全层和应用层技术规范,ZigBee 协议栈就是将各个层定义的协议都集合 在一起,以函数的形式实现,并给用户提供一些应用层 API,供用户调用。 注意:虽然协议是统一的,但是。的具体实现形式是变化的,即不同厂商提供的协议 钱是有区别的,例如:函数名称和参数列表可能有区别,用户在选择协议找以后,需要学习 具体的例子,查看厂商提供的 Dert10 演示程序、说明文档(通常,实现协议栈的厂商会提供 一些 API 手册供用户查询)来学习各个函数的使用方式,进而快速地使用协议栈进行应用程 序的开发工作。 使用 ZigBee 协议栈进行开发的基木思路可以概括为如下三点:  用户对于 ZigBee 无线网络的开发就简化为应用层的 C 语言程序开发,用户不需要  深入研究复杂的 ZigBee 协议栈; ZigBee 无线传感器网络中数据采集,只需要用户在应用层加入传感器的读取函数即 可;  如果考虑到节能,可以根据数据采集周期进行定时,定时时间到就唤醒 ZigBee 的 终端节点,终端节点唤醒后,自动采集传感器数据,然后将数据发送给路由器或者 直接发给协调器。 5.1.2 如何使用 ZigBee 协议栈 既然 ZigBee 协议栈已经实现了 ZigBee 协议,那么用户就可以使用协议栈提供的 API 进 行应用程序的开发,在开发过程中完全不必关心 ZigBee 协议的具体实现细节,只需要关心 一个核心的问题:应用程序数据从哪里来到哪里去。 下面举个例子,当用户应用程序需要进行数据通信时,需要按照如下步骤实现: ①调用协议栈提供的组网函数、加入网络函数,实现网络的建立与节点的加入; ②发送设备调用协议栈提供的无线数据发送函数,实现数据的发送; ③接收端调用协议栈提供的无线数据接收函数,实现数据的正确接收。 因此,使用协议栈进行应用程序开发时,开发者不需要关心协议栈是具体怎么实现的(例 如:每个函数是怎么实现的.每条函数代码是什么意思等),只需要知道协议栈提供的函数实 现什么样的功能,会调用相应的函数来实现自己的应用要求即可。
http://jielovedan.taobao.com/ 佳杰科技 afStatus_t AF DataRequest(afAddrType_ t *dstAddr, 技巧提示:在 TI 推出的 ZigBee 2007 协议栈(又称作 Z-Stack )中数据发送函数如下: 1. 2. endPointDesc t *srcEP uintl6 cID, 3. uintl6 len, 4. uint8 *buf, 5. uint8 *translD, 6. uint8 options, 7. 用户调用该函数即可实现数据的无线发送,当然,在此函数中有 8 个,用户需要将每个 参数的含义理解以后,才能达到熟练应用该函数进行无线数据通信的目的。 uintB radius) AF_DataRequest()函数中最核心的两个参数:  3.uint16 1en—一发送数据的长度;  4.uint8 *buf——指向存放发送数据的缓冲区的指针。 至于调用该函数后,如何初始化硬件进行数据发送等工作,用户不需要关心,ZigBee 协议栈己经将所需要的初始化工作初始化了,这就类似于学习 TCP/IP 编程时,用户只需要 调用相应的数据发送、接收函数即可,而不必关心具体的网卡驱动(如 DM9000, CS8900 网卡 是如何接收数据的)的具体实现细节。 5.1.3 ZigBee 协议栈的安装、编译与下载 ZigBee 协议栈具有很多版本,不同厂商提供的 ZigBee 协议栈有一定的区别,本书选用 ZigBee 2007 协议栈 ZStack-CC2530-2.3.0-1.4.0(可以在 TI 的官方网站下载)需要安装以后才 TI 公司推出的 ZigBee 2007 协议栈进行讲解。 能使用,下面讲解安装步骤 从 TI 官方网站下载 ZigBee 2007 协议栈 ZStack-CC2530-2.3.0-1.4.0.exe,双击 ZStack-CC2530-2.3.0-1.4.O.exe,即可进行协议栈的安装,默认是安装到 C 盘根目录下。 在路径 D:\ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples GenericApp\CC2530SB 下找 到 GenericApp.eww,如图 4-1 所示,打开该工程即可。 打开该工程后,可以看到 GenericApp 工程文件布局,如图 4-2 所示。 在图 4-2 所示的文件布局中,左侧有很多文件夹,如 App, HAL, MAC 等,这些文件夹对应 了 ZigBee 协议中不同的层,使用 ZigBee 协议栈进行应用程序的开发,一般只需要修改 App 目录下的文件即可。
http://jielovedan.taobao.com/ 佳杰科技 图 4-1 GenericApp.eww 工程路径 选择不同工程 还没有编译前 程序部分 分层 提示:关于协议栈的编译与下载,请读者结合 4.2 节的数据传输实验进行学习,通过具体的 实例来展示协议栈开发的基本流程是笔者推荐的学习方法。 图 4-2 GenericApp 工程文件布局 5.2 一个简单的无线传输组网实验 尽管到此为止,读者对 ZigBee 协议的基本内容都不了解,甚至 ZigB ee 协议栈是什么也
http://jielovedan.taobao.com/ 佳杰科技 可能存在诸多的疑问与不解,但是笔者也是从这些“困难”中走出来的,也理解此时读者的心 情,与其阅读那“深奥”的 ZigBee 协议栈,不如通过一个数据传输实验来对 ZigBee 协议以及 ZigBee 协议栈建立一个形象、直观的认识,这将有助于读者对 ZigBee 协议的理解。 数据传输实验的基本功能:两个 ZigBee 节点进行点对点通信,ZigBee 节点 2 发送“LED” 三个字符,ZigBee 节点 1 收到数据后,对接收到的数据进行判断,如果收到的数据是“LED", 则使开发板上的 LED 灯闪烁。数据传输实验原理图如图 4-3 所示。这就是一个简单的无线传 输组网实验。 “LED” ZigBee 无线网 络 ZigBee 节点 2 终端节点 图 4-3 数据传输原理图 5.3.1 建立一个全新的 Zstack 工程 ZigBee 节点 1 协调器 在 ZigBee 无线传感器网络中有三种设备类型:协调器、路由器和终端节点,设备类型 是由 ZigBee 协议栈不同的编译选项来选择的。 协调器主要负责网络组建、维护、控制终端节点的加入等。路由器主要负责数据包的路 由选择,终端节点负责数据的采集,不具备路由功能。 在本实验中,ZigBee 节点 1 配置为一个协调器,负责 ZieBee 网络的组建,ZieBee 节点 2 配置为一个终端节点,上电后加入 ZigBee 节点 1 建立的网络,然后发送“LED”给节点 1 。 打开 D:\ZStack-CC2530-2.3.0-1.4.0\Projects\zstack\Samples 目录,这里是我们需要建立工 程的地方,在该目录下,以及有了 3 个文件夹,分别是“GenericApp”“SampleApp”“SimpleApp”。 下面介绍如何建立一个新的自己的 Zstack 工程。工程名为 TestA 复制 GenericApp,到本目录下。 将文件夹改名为 TestA 复制粘贴后得到的文件夹
http://jielovedan.taobao.com/ 佳杰科技 打开 TestA\Source 路径如下图。 修改这 3 个文件名称,如下图所示。 打开路径 TestA\CC2530DB,将里面的文件改为 用记事本打开这 3 个文件,替换其中的 GenericApp 为 TestA,然后保存。 点击全部替换
分享到:
收藏