1. 引言

在物联网技术应用的知识体系中,Zigbee无线组网技术是非常重要的一环,也是大家感觉比较难以掌握的一个部分。Zigbee无线组网技术之所以让你感有学习难度,不是因为它真的复杂,仅仅是它看起来很复杂而已,让人望而止步。另一方面则是Zigbee技术在应用层面上将硬件和软件完成融为一个体系,要求开发人员既要有扎实的硬件技术,又要有清晰的软件思维

目前,尽管有不少关于Zigbee无线组网的技术书籍写得非常棒,但对于初学者入门来说可能还是有点难。由于工作需要和形势所迫,我自己摸索着学习Zigbee无线组网技术。其入门过程可谓一波三折,碰过不少障碍,走过不少弯路,吃过不少苦头。所以,在这里结合自己学习Zigbee技术的过程,和大家分享一下学习体会,探讨一下学习路线。大家互助互勉,共同进步。

2. 关于Zigbee与Z-Stack

明明看的是关于Zigbee协议的技术教材,为什么里面的内容讲的却是Z-Stack协议栈的内容呢?相信有不少初学者都要这样的疑问。Zigbee是基于IEEE 802.15.4标准的低功耗局域网协议。该协议的物理层(PHY)和介质访问层(MAC)由IEEE 802.15.4标准来定义;网络层(NWK)和应用层(APP)则由Zigbee联盟来定义。Z-Stack是TI公司提供的一套符合Zigbee协议标准的协议栈用户可以使用其提供的程序框架和API函数进行应用项目的开发。该协议栈经过了Zigbee联盟的认可,并且被全球很多企业作为商业级协议栈。实际上,Z-Stack只是一个半开源的协议栈,其中的MAC层ZMAC层并没有全部开源,但用户可以使用其提供的API来调用相关的库函数。

简单来说,Zigbee是一个符合国际标准的协议,而Z-Stack则是实现该协议的具体代码如果前者是一个建筑图纸,那么后者就是按照图纸修建的建筑物。所以,学习基于CC2530芯片的Zigbee无线组网技术,实际上就是学习Z-Stack协议栈的结构和运行机理,并且在其基础上进行项目开发。

3. 学习Z-Stack协议栈的基本思路

古语有云:物有本末,事有终始,知所先后,则近道矣

在进行Z-Stack协议栈的具体学习之前,必须先掌握CC2530芯片的开发流程及几个基础外设的应用。如果没有这方面的硬件基础,在看HAL层中的代码,你会觉得自己在看天书。在项目应用开发中,会因为应用场景的不同,使用不同的硬件电路,这个时候,不但要求你能够读懂硬件底层的代码,还要能够根据硬件的不同设计底层代码。

对于Z-Stack协议栈,最好先从整体上掌握其程序架构,通过分析Z-Stack的代码,把任务标识符、任务初始化函数、任务事件列表和任务事件处理函数列表几个关键的代码的关系理清楚,从根本上理解OSAL的运行机理,并掌握任务、事件、消息等基本概念。然后理解其任务的调度算法,把事件的产生和事件的处理的来龙去脉弄清楚,最后,自己能够根据项目需求创建任务,处理事件。这个可以参考本人博文《一图读懂ZStack协议栈的核心思想与工作机理》

上述的两部分内容看起来跟Zigbee无线组网没有多大的关系,而然,你要进行Zigbee无线组网技术的开发,又离不开上面两个部分的内容。当你比较扎实的掌握了上面两部分内容之后,就可以很顺利进行无线组网和无线数据传输。至于信道、PANID、协调器、路由器、终端设备、广播、单播、组播、绑定等概念和应用,那都是水到渠成的事情了。

我觉得可以把Z-Stack理解为:Z-Stack = OSAL + CC2530 + RF

从总体上看,Z-Stack协议栈是一个用OSAL操作系统通过任务轮询方式来管理CC2530底层硬件和IEEE 802.15.4无线网络的体系结构。那么,你要学习Zigbee无线网络应用的基本路径也就清晰了。

4. 学习Z-Stack协议栈的参考路线

从我自己的学习过程来看,学习Z-Stack协议栈可以分为三个部分:CC2530微控制器的硬件基础开发、OSAL操作系统的基本应用和Zigbee组网应用开发。在CC2530微控制器的基础学习中,我们掌握其中几个最基础的功能模块就可以了,至于DAM传输、Flash读写和低功耗控制等,你在后面的项目开发中,碰到什么再学什么,没有太大困难的。

【CC2530基础的学习内容参考】:
 1-IAR开发环境的建立与项目开发流程。
 2-通用I/O端口的输入和输出控制。
 3-中断系统及外部中断应用。
 4-定时/计数器原理及其应用。
 5-串行接口原理及其应用。
 6-ADC工作原理及其应用。
 7-CC2530基础技能综合实训案例。

OSAL是一个基于轮转查询方式的操作系统。在OSAL操作系统的学习过程中,我们要掌握的是如何在OSAL中实现对CC2530基础模块的控制。对于一些没有操作系统概念或者没有具体接触过操作系统的人来说,那是有一定难度的。而然,你要真正的踏进Zigbee无线网络应用的大门,这是必经之路。

【OSAL基础的学习参考内容】:
 1-理解OSAL的运行机理及相关概念。
 2-基于OSAL的跑马灯程序。
 3-自定义任务的创建及事件处理。
 4-基于OSAL的按键驱动及任务同步。
 5-基于OSAL的串口数据收发应用。
 6-基于OSAL的ADC数据采集。
 7-基于OSAL的基础技能综合实训案例。

最后才是基于IEEE 802.15.4无线网络应用的学习。在这里并不是单一内容的学习,而是结合前面两个部分的内容,对Z-Stack协议栈进行系统性的综合应用学习。

【Zigbee组网的学习参考内容】:
 1-基于BasicRF的点对点通信。
 2-Z-Stack协议栈的结构及基本概念。
 3-Z-Stack协议栈中的HelloWorld。
 4-Z-Stack协议栈中的三种通讯方式。
 5-Z-Stack协议栈中的绑定技术。
 6-Z-Stack协议栈中的多点自组织网络。
 7-Z-Stack协议栈的基础技能综合实训案例。

5. 个人学习体会

在应用层面上,Zigbee无线网络技术的难点不是射频数据收发部分,也不是网络组建管理部分, 但需要开发者具备硬件开发基础和软件编程思维。在阅读Z-Satck协议栈代码过程中,有大量的数组、指针、结构体、宏定义、条件编译等内容,所以要求开发者有扎实的C语言功底,如果你有阅读过操作系统源码的经验的话,那会事半功倍。

技术书籍是需要看的,最好结合着源码来看。虽然技术书籍可以带你从整体上认识Z-Satck协议栈,但是会比较抽象,离开源码你无法形象地摸清其中的脉络。在阅读书籍和源码的时候关键是理解,而理解的最好方法是动手编写代码进行验证。你可以首先运行最原始的Z-Stack协议栈,让它跑起来。在这个过程中,你可以设置一些断点,看看程序的运行路径,可以加深你对概念的理解。然后,你可以试着按照书上或者你自己的构想,修改代码,出现错误就找出原因;运行成功你的理解又会前进一步。就这样一步一个脚印的慢慢迈向Zigbee无线网络ying应用的大门。这时候有人就会说,没有开发板怎么办?我只能回答你:“放弃吧”。学习Zigbee无线网络技术最起码你需要三个开发板。呵呵呵...有兴趣的话,不妨考虑一下小蜜蜂自行制作的Zigbee开发板哦

在学过程中遇到问题怎么办?简单,网上搜索就会有很多资料,而且都很不错的,基本上能解决入门学习的所有问题。实际上,有很多博客文章记录了作者遇到问题和解决问题的过程,非常有针对性,对初学者来说非常有帮助,而且很多是技术书籍没有讲到的。在学习过程中,利用技术书籍和技术博客,结合Z-Stack协议栈源码,边理解边实践,我相信您会很快的掌握其技术要点和开发技能的。

广东职业技术学院  欧浩源 <小蜜蜂老师>  ohy3686@qq.com】

【Zigbee精华教程01】Zigbee无线组网技术入门建议与学习路线相关推荐

  1. Java 从入门到高级学习路线

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Java 从入门到高级学习路线 <一>1.Jvm 部分 Jvm 内存模型.Jvm 内存结 ...

  2. 机器学习入门到进阶学习路线

    机器学习入门到进阶学习路线 参考:https://mp.weixin.qq.com/s/f-v-NUW7pTbVF9Sa3A4qUA 1. 定义 机器学习研究的是计算机怎样模拟人类的学习行为,以获取新 ...

  3. mui初级入门教程(一)— 小白入手mui的学习路线

    文章来源:小青年原创 发布时间:2016-05-15 关键词:mui,html5+ 转载需标注本文原始地址:http://zhaomenghuan.github.io... 写在前面 相信很多朋友初次 ...

  4. 黑客零基础入门教程,从入门到精通学习路线规划,看完这篇就够了。

    很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样. 想要成为黑客,却苦于没有方向,不知道从何学起 ...

  5. 3D视觉从入门到进阶学习路线

    01 什么是知识星球? 知识星球是一个高度活跃的社区平台,在这里你可以和相同研究方向的小伙伴一起探讨科研工作难题.交流最新领域进展.分享paper资料.发布高质量的求职就业信息,当然还可以侃侃而谈,吐 ...

  6. 网络安全工程师零基础入门:(企业级)从入门到精通学习路线规划,学完即可就业

    前言 最近总能在网上看到很多诸如:"怎样成为网络信息安全工程师"等相关问题,这可能与近几年网络安全事件频发,国家对于互联网信息安全和互联网舆情的重视程度不断提升有关,似乎网络信息安 ...

  7. 网络安全自学入门:(超详细)从入门到精通学习路线规划,学完即可就业

    很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样. 算上从学校开始学习,已经在网安这条路上走了1 ...

  8. 自学成才,PHP从入门到精通学习路线规划

    目录 一.PHP学习教程 二.PHP快速入门 三.PHP开发环境 四.PHP基本语法 五.PHP实例教程 六. PHP学习面向对象 七. PHP框架学习 八.Linux服务器学习 九. 大并发架构学习 ...

  9. 网络工程师/计算机网络知识如何入门,以及学习路线?

    "网络工程师如何选就业方向?" "网络工程师前景如何?" "身为网络工程师,如何选择适合自己的岗位?" "网络工程师需要进行职业规 ...

最新文章

  1. k8s v1.9.6 超详细搭建步骤
  2. iptables的表和链结构详解
  3. python在化学方面的应用-学材料、化学的要不要担心人工智能抢了自己的饭碗?...
  4. Macbook 中如何通过命令行打开 vscode
  5. ubuntu下安装配置nfs
  6. 汽车之家的安全框架,是如何从0到1搭建的?
  7. STM32F103使用内部Flash保存参数
  8. maven 一个简单项目 —— maven权威指南学习笔记(三)
  9. 同时安装sql server和oracle导致系统启动变慢的解决方案
  10. 开发范式大转移,云原生开发者如何把握技术脉络?
  11. c语言图片添加水印程序,[求助]C语言 bmp文件加上水印
  12. python全栈区别_Python全栈之路-4-list与tuple
  13. AspNet2.0的QuickStart出了
  14. 【转】Simulink中matlab Function模块全局变量的使用方法总结
  15. 前端工程师面试时自我介绍该如何做?
  16. 正则表达式 压缩 HTML 字符串
  17. 深度学习 3d人脸 重建_深度学习实时3D人脸跟踪
  18. 18 - java基初 数组介绍 冒泡排序
  19. 通过MatLab将传递函数离散化
  20. 基于android2.3.5系统:开天辟地Android启动机制[二]

热门文章

  1. 三门外语 精通oracle_《精通Oracle SQL(第2版)》PDF 下载
  2. 【程序源代码】微信小程序商城
  3. 数据结构——树|N叉树之孩子双亲表示法——顺序存储结构+链表
  4. Python拆分PPT文件的方法
  5. 【深度学习】ResNet系列网络结构
  6. 算法工程师的三个境界
  7. windows 查看IP地址或端口是否可以连接-常用命令
  8. 递归算法的时间&空间复杂度!
  9. 淘宝批量下载图片方法
  10. 分类模型-评估指标(2):ROC曲线、 AUC值(ROC曲线下的面积)【只能用于二分类模型的评价】【不受类别数量不平衡的影响;不受阈值取值的影响】【AUC的计算方式:统计所有正负样本对中的正序对】