中科因仑“3+1”工程特种兵精英论坛
标题: ZigBee(WSN)之初现 [打印本页]
作者: 伊海 时间: 2014-8-13 08:51
标题: ZigBee(WSN)之初现
本帖最后由 伊海 于 2014-8-13 09:01 编辑
Zigbee无线传感器网络涉及电子、电路、通信、射频等多学科的知识,这对于入门级来说,无形增加了学习难度,很多读者看zigbee协议、射频电路------- 学了半年甚至是更长的时间,但是连基本的点对点通信都无法实现,更别说根据对zigbee协议的理解来实现正常的网络部署工作了。
基于此原因,本书推荐另一种学习思路,不是将学习重点放在复杂的zigbee协议、射频、天线等知识,而是直接进行zigbee无线网络点对点通信的学习,基本思路:从发送端发送一个数据,接收端接收到数据后校验收到的数据是否正确,并给出相应的指示。很简单的功能,但是这里涉及以下的问题:
l 数据在协议栈里面是如何流动的;
l 如何调用zigbee协议栈提供的发送函数;
l 如何使用zigbee协议栈进行数据的接收;
l 如何理解zigbee协议栈;
l Zigbee协议栈是采用分层的思想,各层都具有哪些功能;
l 如何利用zigbee协议栈提供的函数来实现基本的无线传感器网络应用程序的开发;
l 系统硬件对zigbee协议都提供了哪些支持
注:技术书要有目标,带着问题阅读,理清知识框架,精读
本章的主要目的是使读者对zigbee协议栈开发有个感性认识,从功能上理解协议栈,展示了zigbee无线网络中数据传输过程。
作者: 伊海 时间: 2014-8-13 08:51
本帖最后由 伊海 于 2014-8-13 09:00 编辑
zigbee协议栈进行zigbee无线传感器网络的开发,首先是面临的问题是什么?是zigbee协议栈,以及由此引发的如下问题:
l Zigbee协议栈和zigbee协议是什么关系?
l 如何使用zigbee协议栈进行应用程序的开发?
4.1.1 什么是zigbee协议栈
协议定义的是一系列的通信标准,通信双方需要共同按照这一标准进行数据的收发;
协议栈是协议的具体实现形式,通俗的理解为用代码实现函数库,以便于开发人员调用。
Zigee协议分为两部分,IEEE802.15.4定义了物理层和MAC层技术规范,zigbee联盟定义了网络层、安全层和应用层技术规范,zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层API供用户调用。
注:虽然协议是统一的,但是协议的具体实现形式是变化的,即是不同厂商提供的协议栈是有区别的。如函数名称和参数列表可能有区别。查看厂商的Demo演示程序、说明文档来学习各个函数的使用方式
使用zigbee协议栈进行开发的基本思路可以概括为如下几点:
l 用户对于zigbee无线网络的开发简化为应用层的C语言程序开发,用户不需要深入研究复杂的zigbee协议栈;
l Zigbee无线传感器网络中数据采集,只需要用户在应用层加入传感器的读取函数即可
l 如果考虑到节能,可以根据数据采集周期进行定时,定时时间到就唤醒zigbee的终端节点,终端节点唤醒后,自动采集传感器数据,然后将数据发送给路由器或直接发给协调器。
作者: 伊海 时间: 2014-8-13 08:52
本帖最后由 伊海 于 2014-8-13 08:59 编辑
如何使用zigbee协议栈
既然zigbee协议栈已经实现了zigbee协议,那么用户就可以使用协议栈提供的API进行应用程序的开发,在开发过程中完全不必关心zigbee协议的具体实现细节,只需要关心一个核心的问题:应用程序数据从哪里来到哪里去。
举个例子,当用户应用程序需要进行数据通信时,需要按照如下的步骤实现:
1、 调用协议栈提供的组网函数、加入网络函数,实现网络的建立与节点的加入;
2、 发送设备调用协议栈提供的无线数据发送函数,实现数据的发送
3、 接收端调用协议栈提供的无线数据接收函数,实现数据的正确接收
因此,使用协议栈进行应用程序开发时,开发者不需要关心协议栈是具体怎么实现的(例如:每个函数是怎么实现的,每条函数代码是什么意思等),只需要知道协议栈提供的函数实现什么样的功能,会调用相应的函数来实现自己的应用需求即可。
技巧提示:在TI推出的zigbee 2007协议栈(又称作Z-Stack)中,提供的数据发送函数如下:
afStatus_tAF_DataRequest(afAddrType_t *dstAddr,
endPointDesc_t*srcEP,
uint16 cID;
uint16 len;
uint8 *buf;
uint8 *transID;
uint8 options,
uint8 radius)
用户调用该函数即可实现数据的无线发送,当然,此函数中有8个参数,用户需要将每个参数含义理解以后,才能熟练应用该函数进行无线数据通信的目的。
AF_DataRequest()函数中最核心的两个参数:
uint16len ---发送数据的长度
uint8*buf---指向存放发送数据的缓冲区的指针
至于调用该函数后,如何初始化硬件进行数据发送等工作,用户不需要关心,zigbee协议栈已经将所需要的初始化工作初始化了,这就类似学习TCP/IP网络编程时,用户只需要调用相应的数据发送、接收函数即可,而不必关心具体的网卡驱动(如DM9000、CS8900网卡是如何接收数据的)的具体细节。
作者: lxe 时间: 2014-8-13 10:00
如此高深。。。
欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) |
Powered by Discuz! X3.4 |