首先,本人是一名在读本科生,因为要参加本年度的物联网比赛,故需要掌握一定的Z-Stack知识。一周前本人对Z-Stack了解是完全空白,当时连什么是ZigBee都没听说过,不过本人是本校的物理实验室的常驻人员,有一定的单片机基础。经过近一周的学习现在对Z-Stack也只能说是刚刚入门,把自己的学习笔记分享出来,也算给广大菜鸟级入门童鞋一些参考的东西吧。由于本人本来是做海洋类开发的,兼顾单片机嵌入式系统的学习,所以基础知识各方面不比各位程序员,有些稚嫩,甚至可能有些错误,让大家见笑了,也只能是给如我一般的菜鸟入门的时候做一个参考吧。
       好,闲话少叙,下面是我的学习笔记。

一、        基础定义及知识。1、        何为ZigBee,与普通的RF技术有何区别?
ZigBee是一种具有低成本低复杂度低功耗的小范围低速率的无线传输技术。
相对于普通的RF技术,其重要的特点是;
(1) 低功耗,速率低数据量少。、
(2)自组织网络,可适应网络拓扑结构动态变化。
(3)高可扩充,在有协调器加入的情况下,最高可达65535个ZigBee节点。

2、何为IEEE 802.15.4,其特点。
   是ZigBee无限传感器网络通信标准,具有短距离(10m),低功耗,低速率,低成本的特点,支持单跳星形(10m内)和多跳对等(>10m)两种网络拓扑。

3、何为Z-Stack?
   Z-Stack是TI公司开发的ZigBee协议栈,并且经过了ZigBee联盟的认可而为全球众多开发商所广泛采用。Z-Stack实际上是帮助程序员方便开发ZigBee的一套系统,它采用轮转查询式操作系统,包括两个主要流程(如图):系统初始化和执行操作系统。系统初始化完成后,就进入执行操作系统,并且在其中是一个死循环。执行操作系统中主函数即为轮询式操作系统的主体部分,也是我们需要重点开发、调用、掌握的部分。欲知其详,且听下文分解。

有关第一部分的题外话,笔者在学习的时候,还是详细看了ZigBee概述和IEEE 802.15.4通信标准的,不过事后发现,如果只是想达到能调用Z-Stack中的函数进行简单的程序编写,尤其像我们这样为了比赛而准备的短期突击学习来说,并没有太大必要去详细了解这些标准,不过看了这些标准之后,的确会对后面的学习有些帮助。另,为了能看懂一些Z-Stack资料,需要知道很多的名词定义和缩写,这部分我就放在了第四章,如果有看不懂的地方,可以先跳到第四章查询。

二、开发Z-Stack须知。

1、ZigBee的体系,数据及管理的方式和方向。ZigBee网络构架。

上图是ZigBee协议的体系结构。

上图是zigbee网络构架。黑色是协调器,红色是路由器,白色是终端设备。协调器是网络核心、不休眠、FFD,路由器是接力和扩展信号传输范围、不休眠、FFD,终端可选择睡眠或唤醒、可FFD或RFD。

2、Z-Stack在开发ZigBee中起到的作用,使用Z-Stack开发ZigBee我们需要做什么?
   如刚才的ZigBee协议体系图所示,ZigBee中包括很多的层和各个层之间的数据管理信息传输。如此庞大的体系,如果人为手动编写程序将是一个很浩大的工程。而Z-Stack则在其系统中为我们提供了详细的各个子模块的工作程序。那么我们在开发ZigBee项目的时候,其实我们只需要添加三个文件:主文件,主文件的头文件,操作系统接口文件。

3、Z-Stack轮询结构函数工作方式及顺序。
下图是轮询结构工作流程图。进入轮询结构后,Z-Stack开始根据处理任务的优先级一级级向下查询是否有任务要执行,如果需要,就调用该任务的子函数,如果没有就继续询问,最后再循环。这就是轮转查询结构。

第二章题外话:如果说第一章基本是科普的话,是为了让行外人也知道我们在干嘛,那么第二章就是在对行内人科普,我在这一阶段的学习基本就是为了搞懂,对于Z-Stack,我到底要从何处下手,到底那些是需要我修改编译的,哪些是可以直接引用的。而真正开始开发,是在第三章。

三、Z-Stack学习,调用,修改,开发。

1、各层文件意义。
 
(1)        APP:应用层目录,即我们需要开发修改的部分。
(2)HAL:硬件层目录。    (3)MAC:MAC层目录。
(4)MT:监控调试层目录。  (5)NWK:网络层目录。
(6)OSAL:协议栈的操作系统。(7)Profile:AF层目录。
(8)Security:安全层目录。    
(9)Services:设备地址处理函数目录。
(10)Tools:工程配置目录。 (11)ZDO:ZigBee设备对象。
(12)ZMac:Z-Stack MAC导出层接口文件。
(13)ZMain:项目入口函数,对外控制接口函数。
(14)Output:输出文件目录。

2、PANID设定。
   若ZDAPP_CONFIG_PAN_ID值不为0xFFFF时,PANID由其指定,若ZDAPP_CONFIG_PAN_ID为0xFFFF,那么设备将随机加入网络。
通过选择DEFAULT_CHANLIST不同的值可以选择不同频道。
Tools\CC2530DB目录下的f8wConfig.cfg文件中有相应设置。

第三章题外话:目前笔者还在处于学习如何修改APP目录下函数的阶段,虽然有些笔记也做了,但是还无法确定是否正确,就不拿出来误人子弟了。可能已经发出来也有错误,还请大家多多指正,如果反响还不错的话,我会继续更新的。

四、细节知识、名词解释及备注。

1、ZigBee是树寻址,PRO是随机寻址,PRO更适用于变动的网络,如由多个移动终端组成的网络。只有PRO可以支持多对一路由选项。大多数情况下,ZigBee和ZigBee PRO无法在同一网络上同时使用。

2、        自我组态功能:让系统中所有的节点,根据现场的网络讯号状态决定要加入的父节点。

3、描述符:ZigBee网络中的所有设备都有一些描述符,用来描述设备类型和应用方式。描述符的定义和创建配置项在文件ZDOCConfig.h和ZDOConfig.c中完成。

备注:PHY:物理层   MAC:媒体介质访问层    NWK:网络层     APL:应用层 
APS:应用支持子层  AF:应用框架  KVP:键值对服务类型  MSG:报文服务类型
      LR-WPAN:低速率无限个人区域网 DSSS:直接序列扩频 ISM:工业科学医学频段
      CSMA-CA:碰撞避免   GTS:保证时隙    ID:个人域网选择信道和识别符
      SAP:服务接入点 MCPS:数据传输服务 MLME:管理服务 NLDE:数据服务实体
      NLME:管理服务实体   NIB:网络层信息数据库    MLDE:MAC子层数据服务  
      ZDO:ZigBee设备对象   FFD:全功能设备  RFD:精简功能设备
          API:应用程序编程接口   HAL:硬件抽象层

再来个题外话:本人的确是从零开始,所以看到这么简单和初级东西请不要笑我。而且本人也不知道文章中是否有错误瑕疵,如果有,还请大家多多指正,互相帮助共同进步。由于本人近日也在准备比赛而赶进度,所以笔记略显简洁和潦草,日后我会更加丰富和完善一下。如果大家觉得还不错的话,我会继续更新。另外,请注重版权意识,转载请注明出处。
                                                                      ————上海海洋大学A421实验室  小左同学

ZigBee网络示意图.jpg (12.75 KB, 下载次数: 2)

zigbee学习笔记---入门相关推荐

  1. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

  2. Vue学习笔记入门篇——数据及DOM

    本文为转载,原文:Vue学习笔记入门篇--数据及DOM 数据 data 类型 Object | Function 详细 Vue 实例的数据对象.Vue 将会递归将 data 的属性转换为 getter ...

  3. LearnOpenGL学习笔记—入门03:Hello Triangle

    LearnOpenGL学习笔记-入门03:Hello Triangle 0 前言 1 图形渲染管线 2 顶点输入 3 VAO,VBO 3.1 VAO建立 3.2 VBO建立 4 shader 5 绘制 ...

  4. C# 学习笔记入门篇(上)

    文章目录 C# 学习笔记入门篇 〇.写在前面 Hello World! 这篇学习笔记适合什么人 这篇学习笔记到底想记什么 附加说明 一.命名空间 "进入"命名空间 嵌套的命名空间. ...

  5. R语言学习笔记——入门篇:第一章-R语言介绍

    R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...

  6. R语言学习笔记——入门篇:第三章-图形初阶

    R语言 R语言学习笔记--入门篇:第三章-图形初阶 文章目录 R语言 一.使用图形 1.1.基础绘图函数:plot( ) 1.2.图形控制函数:dev( ) 补充--直方图函数:hist( ) 补充- ...

  7. 第三章:zigbee学习笔记之物理层和mac层帧格式分析

    本文原地址:https://blog.csdn.net/tainjau/article/details/81634681 IEEE802.15.4工作组致力于无线个人区域网络(wireless per ...

  8. JS学习笔记——入门基础知识总结

    JS入门基础知识总结1 前言 基础背景知识 一.产生历史: 二.特点: 三.应用方向: 四.Javascript组成: JavaScript书写使用方式 一.行内式(了解即可,项目中不使用,日常练习尽 ...

  9. Python 学习笔记——入门

    文章目录 〇.Python 是什么 一.推荐的教程 二.这篇学习笔记适合什么人 三.环境 1. 操作系统 对于 Windows 对于 Ubuntu 对于其他操作系统 2. Python 对于 Wind ...

最新文章

  1. 【安全】免密登陆SQLSERVER 之 Token 窃取
  2. CVPR 2019笔迹识别论文:逆鉴别网络+八路Attention
  3. ajax jquery php_基于Ajax jquery的使用php登录
  4. linux下yum安装pgsql,CentOS7使用yum安装PostgreSQL和PostGIS的方法
  5. 很久以前的C语言笔记
  6. ArcGIS中栅格数据的金字塔详解
  7. 基于实数编码的参数自适应遗传算法(matlab代码)
  8. 【jQuery学习】—jQuery对象的过滤
  9. 后台访问突然出现一串代码,且不能显示页面
  10. 漂亮的不像实力派--锤子新品“坚果手机”发布会
  11. Let's Encrypt 客户端将由EFF管理
  12. H3C交换机版本升级
  13. Kali linux虚拟机设置1920x1080分辨率
  14. LeetCode 2248、多个数组求交集
  15. MRPT学习(二)——Win10安装MRPT
  16. matlab 图像输入/显示等
  17. 腾讯+字节+阿里面经真题汇总,总结到位
  18. 在线批量无损压缩图片工具
  19. OpenLayers结合Turf实现空间运算
  20. 关于使用python实现AIR724ug连接阿里云平台

热门文章

  1. 趋肤效应和铜皮粗糙度关系以及带来导线损耗影响
  2. 手机通讯常识:什么是五模十三频?
  3. 导出excel,sheetName名字乱码
  4. laravel用户详情及封禁和启用用户api
  5. 【保研日记】本科统计学专业
  6. 【区块链】区块链在金融领域的应用—对全球578家金融机构的调研
  7. 【IM】极光简单的聊天测试
  8. MVC模式计算两个正数的代数平均值与几何平均值
  9. 2021年选择老域名的2点好处和购买老域名的4点技巧
  10. 大数据学习:学习大数据需要多少钱