微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于ZigBee Mesh网络的无线串口设计

基于ZigBee Mesh网络的无线串口设计

时间:05-24 来源:互联网 点击:

3.3 无线串口程序流程
因为Z—Stack是采用任务轮循机制,GenericApp是属于其中的一个任务,在文件GenericApp.c中的任务初始化函数GenericApp_Init()中添加串口初始化代码,在GenericApp_ProcessEven()函数中添加无线串口收发事件Serial_RecEven和Serial_TranEven的处理函数。图8和图9是GenericApp_Init()函数流程图和GenericApp_ProcessEven()函数流程图。

图中初始化NV Flash是用以储存其他节点网络地址名字对应表。
当节点上电加入ZigBee网络后,便会执行GenericApp_Init()函数,初始化串口,并向网络中的其他节点以广播的方式发送其网络地址和名字。
当网络中的其他节点接收到数据时,便会触发接收数据事件,GenericApp_ProcessEven()函数判断是串口接收数据命令还是储存网络地址命令,如果是前者,便将数据写到串口;如果是后者则先判断是否来自于广播方式发送来的数据:若是则储存该网络地址和名字,并且以单播的方式回馈本节点的网络地址,保证网络中的各个节点都知道其他节点的地址和名字;若不是就储存该网络地址和名字,不用反馈本节点的网络地址和名字。
当GenericApp_ProcessEven()函数检测到Serial_TranEven事件发生时,便读串口并将数据按照约定的格式发送出去。

4 实际测试
4.1 测试1
无功放ZigBee模块W00与W02,如图10~图12所示。

实验环境:足球场,可视距离100 m。实验结果如图12所示。
Node:02 ShortAddress:0x3595是W02加入网络后自动向W00发送网络地址和名字。因为W00是协调器,默认地址为0x00,已预存在各模块中。
4.2 测试2
无功放ZigBee模块W00,W02,W03和W04,实验环境:各大楼之间。如图13所示。

W00与W02、W03能直接通信,W00经过两跳后可与W04,通信,W02经过两跳后可以与W04通信。实验结果截图如14所示。

Node:04 ShortAddress:0xE805是W04入网后向W02发送的网络地址和名字,Node:02 ShortAddress:0x3595是W02节点回馈的网络地址和名字。由实验可知,基于ZigBee的无线串口通信,数据传输稳定、可靠,有效解决长距离串口通信问题。

5 Mesh网络无线串口的特点
(1)能够远距离串口通信。通信距离取决于单个节点的有效传输距离和跳数,一般无功放模块传输距离为100 m,经过5跳可以传输500 m的距离。如果加上功放,单个节点的传输距离为1.5 km,5跳为7.5 km。缺点是加上功放,成本增加。
(2)Mesh网络具有自愈能力,当某条路径被切断,节点会自动寻找另外的路径传输数据,如图15所示。

(3)兼容性好,易安装。简单的串口线连接。由图4可知,从模块中引出4根TTL电平的串口线,直接可以与嵌入式系统连接,或者加上MAX232便可以与PC连接。

6 结束语
利用ZigBee无线技术组成Mesh网络实施串口通信,无线通信距离取决于单跳距离和跳数,而默认最大跳数为20,但多跳的出现会导致数据延时,出现误码。建议跳数控制在5跳之内,此时数据传输稳定、时延短、误码率低,能有效地解决有线串口距离限制的问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top