查看: 4735|回复: 3
打印 上一主题 下一主题

ZigBee(WSN)之初现

[复制链接]
跳转到指定楼层
沙发
发表于 2014-8-13 08:51:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 伊海 于 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:47 | 只看该作者
本帖最后由 伊海 于 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:25 | 只看该作者
本帖最后由 伊海 于 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网卡是如何接收数据的)的具体细节。


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表