Xbee Pro 900HP模块的API模式组网配置

7 篇文章 12 订阅

为使无人机编队个体间实现组网通信,需要选用合适的通信模块构建通信网络。前期曾试用ZIGBEE模块(DRF1605),但其传输速度不能令人满意——每秒最快只能接收10个数据包,320个字节,将近2.4Kbps。近来经过调研发现,XBee系列的模块或许可以更好的解决机间组网通信问题。本篇博客即结合XBee PRO 900HP 模块来记录其基本配置和使用情况。

一、编队通信需求及XBee PRO 900HP 模块的基本性能参数

XBee PRO 900HP 模块的资料可参考已上传 资源文档。在考虑选用编队通信模块时,我们实际上期望其能到达以下几点要求:

  1. 尽量可以兼容发送PX4飞控大部分的mavlink数据包;
  2. 一个数据包至少能发送X,Y,Z三方向位置、速度数据;
  3. 可以实现多机分布式的组网;
  4. 邻近节点间的通信距离最远不小于100米。

对于第一点,PX4飞控中的mavlink通信数据包比较重要有:心跳包-9个字节;姿态数据-28个字节;经纬度-28个字节,传感器数据-64个字节等,因此,所选通信模块容许的数据包负载字节数至少是64个字节;再考虑下通信频率,综合通信频率应不低于50Hz,那么1秒钟最低需传输字节数为3200,即传输速率最低不小于为25.6Kbps。

对于第二点,X,Y,Z三方向位置、速度数据以float32类型计算,单个数据包负载字节数应不小于8*6=48个字节;

对于第三点,需要通信模块可自由设置集群系统中任意两个节点的通信情况,即通信网络拓扑可自由配置;

对于第四点,主要是为了进行室外编队飞行实验。

通过查阅相关技术手册,XBee PRO 900HP 模块的部分性能如下图所示:

XBeePRO900HP相关性能参数

图1 XBeePRO900HP相关性能参数

上图表明XBee模块在室内305米内或室外6.5km内的通信速率都能达到200Kbps。此外,在数据手册的58页,我们看到其数据负载长度需要用2~3个字节来存储其数目,也就是说每个数据包至少可传输数据 2 16 = 1024 2^{16}=1024 216=1024字节:
XBeePRO900HP数据包字节长度

图2 XBeePRO900HP数据包字节长度

因此可以满足我们编队开发需要的1、2、4点要求。对于组网模式,XBee PRO 900HP 模块可实现的组网有集中式的组网和分布式的组网,如下图所示:
在这里插入图片描述

图3 XBeePRO900HP组网模式

因此XBee PRO 900HP 模块完全满足我们编队组网的的需要。对了,该模块外形如图4所示:
XBeePro900HP模块

图4 XBeePro900HP模块

二、利用软件XTCU配置XBee PRO 900HP 模块

配置Xbee模块需要用到XTCU软件,该软件界面如下图所示:

XTCU软件

图5 XTCU软件

利用软件XTCU对XBee进行参数配置主要参考其用户手册。一般需要配置的参数有:

  1. 网络ID:相当于标识当前Xbee模块属于哪个通信网络中;
  2. 波特率:每个模块必须配置相同的波特率(可以理解为通信速率),且该波特率还要与飞控的波特率一致,这样才能确保正常通信;
  3. 组网模式:XBee模块间的通信有透传模式和API模式两种。透传模式下,XBeee模块只有主机和从机之分,就和蓝牙一样只有一对模块间通信,不是我们需要的;另一种API通信模式就可以多点之间组网通信,也就是我们需要通信方式。

与ZigBee模块类似,XBee模块组网时,也需要网络中有且仅有一个节点模块作为协调器(),其余节点作为路由器(router)。我们可以先配置好网络中的一个协调器节点和路由节点,然后依次添加新的路由节点到网络中。下面给出具体步骤:

  1. 首先按照图4的方式连好两个XBee PRO 900HP 模块(一个协调器和一个路由器)。需要注意的是,在购买该模块时,要同时采购具有USB接口的底板,这样才能方便的连接到电脑上,此外电脑需要安装CH340的驱动,这样连接上模块(可以利用360驱动自动搜索安装)。
  2. 打开XTCU软件,添加XBee设备。如图6所示,点击搜索按钮:
    打开XTCU软件搜索端口
图6 打开XTCU软件搜索端口

选中端口,点击Next:
 选中端口

图7 选中端口

点击finish:

点击finish

图8 点击finish

等待检测:

等待检测

图9 等待检测

添加设备:
 添加设备

图10 添加设备
  1. 配置参数。点击第一个设备,然后点击参数配置窗口:

 选择配置窗口

图11 选择配置窗口

修改网络ID:
修改网络ID

图12 修改网络ID
图中的红色标记的第2步是写入修改的参数。此外网络ID可以自己随便设置,不一定是图中的1234,但应当是两个字节的16进制数。

利用同样的方法修改网络类型为协调器:

修改模块类型

图13 修改模块类型

修改波特率:

修改波特率

图14 修改波特率

将网络改成API模式(即分布式组网模式):
选择API组网模式

图15 选择API组网模式
  1. 以上就将模块配置成协调器了。我们可以保存参数,然后用于配置路由器时,只需修改图13步骤的模块类型就行了。保存参数方法如下图所示:
    保存参数
图16 保存参数
  1. 配置路由器时点击左栏第二个模块,然后点击右栏那个Profile人像按钮,选择第一个Apply configuration profile,找到之前保存的参数配置文件就能和协调器配置一样的参数,但注意需要按图13的方式将模块类型改为路由器。
    改路由端口
图17 改路由端口

下面测试数据传输功能:

  1. 选择控制台,连接模块(协调器和路由器都要通过此操作进行连接):

选中控制台

图18 选中控制台

点击“+”号按钮,创建适合API格式的数据包
添加待发送的数据包

图19 添加待发送的数据包

生成符合格式要求的的数据包:
生成符合格式要求的的数据包

图20 生成符合格式要求的的数据包

注意:图中第二个红色箭头指示的"FFFF"是表示广播该数据包,如果要指定某个节点发送,需要该对方节点的mac地址,mac地址可以从左栏模块信息中看到:

模块mac地址

图21 模块mac地址

图20所述步骤点击OK,然后就生成了发送字符串Hellow的数据包,之后就可以点击发送:
发送数据包

图22 发送数据包

接收端可查看数据:
接收端查看数据

图23 接收端查看数据

三、数据通信协议分析

从图20可以看出,模块间的通信协议发送包格式为:

数据包头(0x7E)+字长(2个字节)+发送协议类型(0x10)+发送协议ID(0x01)目标64位地址(8个字节,即mac地址)+目标16位地址(FFFE)+广播半径(00)+选项(00)+数据(N个字节)+校验码(1个字节)

对于字长,实际上计数的是排在它之后所有数据字节之和(校验码除外),也就是从协议类型(0x10)到校验码之前的长度,假设实际负载的数据是N个字节的话,那么字长计数值就为:1+1+8+2+1+1+N=N+14;

接收协议与发送协议基本相同,只是目标地址变成了发送源地址。即:
数据包头(0x7E)+字长(2个字节)+接收协议类型(0x90)+来源64位地址(8个字节,即mac地址)+来源16位地址(FFFE)+选项(0xC1)+数据(N个字节)+校验码(1个字节)

注意,接收的字长和发送的字长并不一致,前者比后者少2个字节(少了发送协议ID和广播半径),为N+12。比如某次发送信息要求从A发给B,二者mac地址分别为:

A的mac地址为:00 13 A2 00 41 08 01 0B
B的mac地址为:00 13 A2 00 41 08 01 12

要发送的数据包内容为:

hellpw

其ascll码转化为16进制为:

68 65 6C 6C 70 77

则发送字长为6+14=20=0x14,发送数据包为:
7E 00 14 10 01 00 13 A2 00 41 08 01 12 FF FE 00 00 68 65 6C 6C 70 77 54

接收字长为6+12=18,其数据包为:
7E 00 12 90 00 13 A2 00 41 08 01 0B FF FE C1 68 65 6C 6C 70 77 1B

校验码的计算方式如下:

  • 添加数据包的所有字节,但数据包头0x7E和长度(第二个和第三个字节)除外。
  • 根据结果​​,仅保留最低的8位。
  • 0xFF减去该数量

对于上述接收包计算过程即为:

  1. 数据累加:90 + 00 + 13 + A2 + 00 + 41 + 08 + 01 + 0B + FF + FE + C1 + 68 + 65 + 6C + 6C + 70 + 77 =6E4
  2. 保留后八位,即:E4
  3. 校验码=FF-E4=1B

最后,需要指出,发送端的Xbee模块若成功发送数据还会收到一个反馈,其格式为

数据包头(0x7E)+字长(2个字节)+协议类型(0x88)+16位地址(FFFE)+ 失效重发次数(1个字节)+传输状态(1个字节,成功为00)+ discovery status(1个字节,暂时不清楚用法)+ 校验码(1个字节)

如一次成功的发送得到的反馈可能如下:

7E 00 07 8B 01 FF FE 00 00 00 76

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值