查看: 37798|回复: 63

[抛砖引玉]如何学习zigbee -- 无线单片机怎样入门?

[复制链接]
outman 发表于 2010-12-20 17:22:33 | 显示全部楼层 |阅读模式
经常有网友问我这个问题,一直想整理点东西,能给大家点有益的参考。但几次提笔,又几次放下。学习方法的事情确实很难一概而论,而且每个人的起点参差不齐,学习的目的也千差万别,再者适合一个人的方法,不一定适合其他人。所以,本文标题增加了“抛砖引玉”一词,希望大家也把自己的经验分享一下,共同探讨、共同进步。

  [注:本文源自www.feibit.com--“飞比”Zigbee论坛,为尊重劳动者成果,如需转载请保留此行]

  学习zigbee要具备的基础知识,我觉得最重要的就是单片机和C语言的基础了。如果这两点还没入门的话,暂时可以先不看zigbee了。先把谭浩强老师的C语言的书拿来读一读,在电脑上跑跑C语言的程序。然后弄个单片机开发板再来学学单片机,不过值得一提的是,zigbee开发系统本身就是一个单片机系统,所以如果这样的话,倒也不必另外再去买单片机的开发板了,选好一套zigbee的开发板,先当成单片机来用就可以了。

  本文的重点是针对像我自己这样,有过几年单片机开发经验,现在想了解无线射频跟zigbee协议栈应用的朋友。结合自己学习的过程,谈下经历和感受。实际上,我前面写的几篇读书笔记也大概记录了一下自己的学习过程,只是最近很长时间忙于项目,没太有时间去更新。不过,为了不辜负大家的厚爱,我尽量争取以后每个周都能写点东西出来。具体的内容,我会再开一个贴来征求一下大家的意见。

  言归正传,对zigbee的学习(其它的学习我也经常是用这种思路的),归纳起来,就三个阶段:是什么、怎么样和为什么。

  具体来说:
  一、是什么?
  zigbee是什么?zigbee系统包括些什么?它能做些什么事情?它有什么优缺点等等这一系列的问题。当然,从个人来说,学习zigbee的目的是什么?这些问题不搞清楚,学习又从何谈起?或者只能是徒劳无功!这个时候需要泛读一些相关资料,对它的现状,过去与未来有个纵向的了解。另外,对比蓝牙、wifi、z-wave等等一些技术来说,它的优缺点在哪里?它到底适不适合我的应用,或者说应不应该放精力在这上面。

  当然,也许有很多人是不需要考虑这些问题的,或者说别人已经考虑好的了。那就只有一条路--go ahead!

  接下来就会涉及到zigbee本身的一些东西了。比如说zigbee网络有哪些设备,他们之间的功能与区别是什么?网络的结构是怎么样的?网络性能与传输质量是通过哪些参数来衡量的,意义是什么?对一个单个的zigbee设备来说,软件分哪些层次,每层的功能是什么?等等这一类的问题,我想是必须在开始学习前有个大概的了解的。当然,也只能是“大概”。但一层层深入这个过程是必须的!就像画一幅画,先要把轮廓描绘出来,然后再画细节一样。

  遗憾的是,国内鲜有这样的书籍有这样的耐心教大家一笔笔把这幅画画出来。这里还是要再推荐下那本“葵花宝典”--Newnes.ZigBee.Wireless.Networks.and.Transceivers. 这本书的前两章基本都是在讲我前面说的这些问题,简要,但是重点突出。当时看这本书觉得一见如故就是因为这个,我想到哪里,它就在讲哪里。如果不是迫于生计,真想把这本书好好翻译下。第三章以后的内容越来越深入,倒不是特别建议死去啃它。而是直接进入第二个问题:

  二、怎么样?

  在开始这一部分内容之前,我想是时候买一套开发板了。当然也可以通过PC仿真的形式去学习网络层的知识,不过对我个人来说,论文给我带来不了什么东西,哪怕是一点成就感~我对实实在在的产品更感兴趣。理论还是应用到实践中更好玩些~~~

  至于选什么样的开发板,这个因人而异。也许你已经有一套前端的系统了,只要搭配射频收发就可以了;也许你对AVR的单片机特别在行;也许Jennic的技术总监刚好是你大伯的外甥,开发板都不用花钱买的。。。不过,不管是什么开发板,除了硬件功能外,技术资料与支持都是最重要的。顺便为TI打个广告,他们的资料、代码和产品性能来说,都是值得推荐的,尤其是最新的CC2530。

  开发板拿到手了,接下来就是“怎么样”的部分了。就是怎么样去实现第一部分里的内容。当然,一个好的学习方法是从宏观到微观都适用的,在这一部分里,仍然可以从“是什么”、“怎么样”和“为什么”三个方面来下手。首先,看下各个例程都”是什么“,它们各自完成了些什么功能?通过读代码了解”怎么样“完成的。然后通过”猜测“这么做的原因,试着修改下代码,看看是不是按自己的想法来的,进而了解”为什么“。TI提供的协议栈例程非常丰富,大多在本论坛中都有些中文资料可以参考来学习。置顶贴中有个“中文资料总索引”,读者可自行了解。

  值得一提的是前文说的这个”猜测“。不错,zigbee协议不像科学界的难题一定要“猜想”。但它的复杂程度,足以让我们这样学习者以“探索”来形容学习的过程。所以,不能太想一下子深入到细节去,而是先在表象上按照自己掌握的知识,推测一下可能性。改下代码,做个验证。这种方法屡试不爽~

  另外,所谓“工欲利其事,必先利其器“,有些工具的掌握,也是这部分的重点。比如说“packet sniffer",有人翻译为协议分析仪或者抓包器,也有人在网上专门卖这个工具。实际上TI的开发板smartRF05EB与仿真器cc debugger连到一起就是一个packet sniffer了。为避免广告之嫌,就不介绍我们的产品了  这个工具非常有用!zigbee是什么?归纳起来可以这样讲:zigbee就是把一堆数据送到一个网络中指定的地方的一种“协议”。不管是组网、绑定等网络指令数据,还是实际的"payload",其实都是一组有特殊意义的数据而已。packet sniffer就是把空中的这组数据“抓”到电脑里,把意义给你分析出来的一种工具。充分地利用了这个工具,会让你的学习事半功倍的!

  还有一个工具叫z-tool,实际上准确地讲,这个和我们用的“串口调试助手”没有本质的区别。只是,它发送、接收的那些数据是有特殊意义的,pc对zigbee设备的赋值指令、zigbee设备的运行状态反馈等等。详情的使用可以参见:ZStack Monitor and Test(MT)功能简介与Z-tool使用介绍  

  当然,更重要的一个工具就是cc debugger了,单步跟踪,观察变量状态,不再赘述了,玩单片机的都知道这个有多重要。

  三、为什么?
  也许不是很多人对这个问题感兴趣,不过我恰恰是一个从小就对这个问题痴迷的人。这一部分我也讲不了太多,也没有太多人愿意听。不过,先抛开兴趣不谈,更不要谈什么振兴中国电子产业,光是开发产品,我觉得这一点,对一个好的工程师来说也是很重要的。从毕业到现在,一直在做开发相关的工作,八年抗战都差不多要打到胜利了。以我自己开发过程中的经验,诚然一个好的人机交互界面,丰富的应用功能对产品来说非常重要,但最终决定成败的往往是产品的性能,而决定性能的经常是硬件和底层软件。虽然这个工作现在慢慢在转向原厂,对产品工程师的要求不高,但相信很多人都并不甘于这种现状吧?难道你的产品有解决不了的问题,能做的只是请别人吃饭??

  好了,这部分也不继续写了,我的读书笔记后面几篇多少有些探讨。也希望有兴趣的朋友能主动联系我,我们一起把这部分完善了!

-- by outman 2010.12.20 23:58
edline 发表于 2010-12-21 15:08:35 | 显示全部楼层
还是喜欢看你的读书笔记啊。。。。。
文心正 发表于 2011-1-3 21:37:55 | 显示全部楼层
我也不是在为奥特曼老师打广告,真的,每次读奥特曼老师的文章都让我有很深的感触,大学要结束了,选择了自己喜欢的题目,ZigBee无线传感网络,但是我是学电气工程的,虽然关于通信的知识少的可怜,但是我选择了坚持,从飞比的第一篇技术文档到现在,我觉得虽然我没有真正的弄明白ZigBee,但是我一直在努力,我想给自己的大学生活留下最美好的回忆,选择自己喜欢的,学习丛零开始,真的感谢奥特曼老师,谢谢飞比论坛,我会继续努力,正如飞比所说:“为比特插上翅膀,和梦想一起飞翔!”
    希望总是坚持得来的,奇迹总是会出现的!
    希望飞比越来越好,希望越来越多的像奥特曼一样无私奉献的高手加入进来,让飞比飞翔!
xiaoyige 发表于 2011-1-28 09:26:08 | 显示全部楼层
顶顶顶顶顶
dzshy 发表于 2011-2-18 21:50:44 | 显示全部楼层
我是今天才加入这论坛的  觉得还是很不错  订
sunflt 发表于 2011-3-17 14:28:54 | 显示全部楼层
奥特曼是个好老师,恩
zhangsp_nj 发表于 2011-3-24 16:36:06 | 显示全部楼层
人气不是很旺啊!
areswhy 发表于 2011-3-25 20:01:43 | 显示全部楼层
继续努力
areswhy 发表于 2011-3-25 20:02:57 | 显示全部楼层
继续努力
stume 发表于 2011-3-28 19:39:10 | 显示全部楼层
努力学习~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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