关于ZigBee的学习记录
2015-10-10 10:51
295 查看
将近三四天的时间,把ZigBee通信的一个整体的流程熟悉了一下,在此写这篇博客给大家分享一下,希望大家在以后学ZigBee的时候,能帮助得到大家
当然,我熟悉的基础是在已有ZigBee的模块的基础上去熟悉的!而不是深入的去理解ZigBee的组网原理的,因为在你购买ZigBee的时候,那些协议已经集成在了ZigBee模块之中了。我们所要做的是配置ZigBee模块的一些参数,实现我们想要的网络拓扑结构。当然,如果有同学想深入去理解ZigBee的组网原理,这也是一件很好的事!好了,接下来,我就跟大家谈谈我的一个整体的学习流程吧!
第一 获取ZigBee模块的信息
在使用ZigBee模块时,你得先想好你想要构建一个什么样的网络。明白这一点之后,接下来你需要的看的是,对于你买的ZigBee模块,厂商一般都会给你们关于配置ZigBee的参数的命令文档。对于这份文档,你们要着重看。因为只有修改了ZigBee的配置参数之后,你才能够组成你想要的一个网络结构。ZigBee的配置参数大体如下,因为每个厂商不同,所以配置参数可能会有所区别!
你买的ZigBee模块至少是两个,因为,若是一个,你没法通信,对不对。然后,你可以选其中的一个ZigBee模块插上电脑,然后,可以下载一个ZigbeeCfg这样的软件,其主要的功能是用于获取或修改ZigBee的参数!打开这个软件之后,可以看到ZigBee的基本配置信息如下:
![](http://blog.chinaunix.net/attachment/201411/2/29785572_14148690749dYJ.jpg)
其中,若我们想要和其他的ZigBee模块通信,我们首要保证的是我们的PanID和对方的ZigBee模块的PanID一致,其次要保证的是通道号也要一致!目的网络地址需要改写成对方的ZigBee的本地地址。其他一些参数可以随意。若在单播模式下,则只能向一个人发送,且只能是你写的目的网络地址的那个ZigBee模块的人发送。若在广播模式下,则目的网络地址可以随意,只需保证PanID和通道号即可。若不知道对方的ZigBee的网络地址,通道号和PanID,可以先通过ZigbeeCfg这个软件提前获取。
第二 两模块之间实现数据的收发
通过上一步骤,我们知道,我们可以实现两模块的这种点对点的组网方式了!那么如何才能真正的让我们感受到这种乐趣呢?我们按照第一步骤再配置好两模块的参数之后,分别将两ZigBee连接到电脑的
USB接口,当然,两ZigBee模块可以连接在两台不同的电脑上。然后下载一个串口就可以感受得到数据的收发带来的神奇的效果。
第三 组任意结构的网络的实现
由前两步我们已初步了解了,该怎么用两ZigBee模块进行数据的收发了!那么既然两ZigBee模块可以进行组网了,我们接下来为什么还要进行组网的实验呢?
我们知道,比如我们有多个模块,如果我们想随时跟其中的一个ZigBee模块进行通信,那么我们每次都得手动去修改ZigBee模块的配置信息,你不觉得这样很麻烦吗?我们为何不能让程序去做这一件事呢?答案是当然可以的!要想实现让程序去自行做这一件事,我们首要保证的是先熟悉配置ZigBee模块参数的命令。一般厂商都会给予这么一份资料,自己可私底下好好找。找到之后,可以现在先通过串口自行练习一下各个命令。其中,最重要的命令是:修改目的地址的命令。你想一下,若是能让程序自己去修改ZigBee那个主模块的目的地址,那么在给谁发之前,我们先让程序通过这个命令修改成我们要发的那个ZigBee模块,那岂不就实现了让程序给任意一模块进行发送数据的功能了,是不。
第四 写程序
熟悉了各个命令之后,我们知道,我们的ZigBee是连接在串口上的,最终也是通过串口把数据传输到我们的设备上,这一个环节类似于我们上面用串口调试助手进行数据的收发的一个过程。所以,在此我们对串口的操作要很熟悉,这一部分就是裸机的操作。当然对于有操作系统的一边,就是关于在相应的操作系统下其串口的编程知识了!这一部分就需要大家日后知识的慢慢的一个积累的过程了!好了,今天就分享到这儿,也将近凌晨四点了,我也该趴着休息一会儿了!晚安,各位!
相关文章推荐
- 关于 ZigBee WiFi Bluetooth 的分析
- mysql的性能查询相关
- C++接口实现总结 http://qimo601.iteye.com/blog/1393427
- Struts2版本引起的问题
- unity3d引擎的资源管理机制
- UVA 10829 L-Gap Substrings(后缀数组+枚举区间优化)
- java中时间比较
- wx模块小实例
- iOS9 alert问题
- LinearAlgebra_1
- Android 中 View 炸裂特效的实现分析 <IT蓝豹>
- servlet的转发与重定向
- 详解C中volatile关键字
- arm中的PLL,MPLL,UPLL,FCLK,HCLK,PCLK的作用概述
- 嵌入式软件笔试题
- 嵌入式C和汇编混合编程规则——ATPCS规则
- PHP获得微信用户的OpenID,然后再通过OpenID和access_token查询用户信息
- vs2012的c++工程转vs2010
- IOS开发笔记(11)IOS开发之NSLog使用技巧
- C++析构函数为什么要为虚函数