浅谈Digi 900HP模块的API模式组网配置

为使无人机编队个体间实现组网通信,需要选用合适的通信模块构建通信网络。经过调研发现,xbee系列的模块或许可以更好的解决机间组网通信问题。
一、xbee pro 900hp模块的基本性能参数
通过查阅相关技术手册,xbee pro 900hp 模块的部分性能如下图所示:
图1 900hp相关性能参数
900hp模块在室内305m内或室外6.5km内的通信速率都能达到200kbps。
对于组网模式,xbee pro 900hp 模块可实现digimesh组网,如下图所示:
图2 900hp组网模式
二、利用软件xtcu配置xbee pro 900hp 模块
配置xbee模块需要用到xtcu软件,该软件界面如下图所示:
图3 xtcu软件
利用软件xtcu对xbee进行参数配置主要参考其用户手册。一般需要配置的参数有:
1、网络id:相当于标识当前xbee模块属于哪个通信网络中;
2、波特率:每个模块必须配置相同的波特率(可以理解为通信速率),且该波特率还要与飞控的波特率一致,这样才能确保正常通信;
3、工作模式:xbee模块间的通信有透传模式和api模式两种。
与zigbee模块类似,xbee模块组网时,也需要网络中有且仅有一个节点模块作为协调器(c),其余节点作为路由器(router)。我们可以先配置好网络中的一个协调器节点和路由节点,然后依次添加新的路由节点到网络中。下面给出具体步骤:
1、首先连接好两个xbee pro 900hp模块(一个协调器和一个路由器)。需要注意的是,在购买该模块时,要同时采购具有usb接口的底板,这样才能方便的连接到电脑上;此外电脑需要安装ch340的驱动,这样连接上模块(可以利用360驱动自动搜索安装)。
2、打开xtcu软件,添加xbee设备。如下图所示,点击搜索按钮:
图4 打开xtcu软件搜索端口
选中端口,点击next:
图5 选中端口
点击finish:
图6 点击finish
等待检测:
图7 等待检测
添加设备:
图8 添加设备
配置参数。点击第一个设备,然后点击参数配置窗口:
图9 选择配置窗口
修改网络id:
图10 修改网络id
图中的红色标记的第2步是写入修改的参数。此外网络id可以自己随便设置,不一定是图中的1234。
利用同样的方法修改网络类型为协调器:
图11 修改模块类型
修改波特率:
图12 修改波特率
将网络改成api模式:
图13 选择api组网模式
以上就将模块配置成协调器了。我们可以导出profile文件,然后用于配置路由器时,只需修改图11步骤的模块类型就行了。导出profile文件的方法如下图所示:
图14 导出profile文件
配置路由器时点击左栏第二个模块,然后点击右栏那个profile人像按钮,选择第一个apply configuration profile,找到之前保存的参数配置文件就能和协调器配置一样的参数,但注意需要按图11的方式将模块类型改为路由器。
图15 改路由端口
下面测试数据传输功能:
选择控制台,连接模块(协调器和路由器都要通过此操作进行连接):
图16 选中控制台
点击“+”号按钮,创建适合api格式的数据包:
图17 添加待发送的数据包
生成符合格式要求的的数据包:
图18 生成符合格式要求的的数据包
注意:图中第二个红色箭头指示的ffff是表示广播该数据包,如果要指定某个节点发送,需要该对方节点的mac地址,mac地址可以从左栏模块信息中看到:
图19 模块mac地址
图18所述步骤点击ok,然后就生成了发送字符串hellow的数据包,之后就可以点击发送:
图20 发送数据包
接收端可查看数据:
图21 接收端查看数据
三、数据通信协议分析
从图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
校验码的计算方式如下:
(1)添加数据包的所有字节,但数据包头0x7e和长度(第二个和第三个字节)除外。
(2)根据结果,仅保留最低的8位。
(3)0xff减去该数量.
对于上述接收包计算过程即为:
数据累加:90 + 00 + 13 + a2 + 00 + 41 + 08 + 01 + 0b + ff + fe + c1 + 68 + 65 + 6c + 6c + 70 + 77 =6e4
保留后八位,即:e4
校验码=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


FPGA中流水线的原因和方式
4种电子元器件损坏的特点分析
中国电信正式开通VoLTE功能用户可以在4G网络下实现通话与上网
您了解电磁波吗?
嵌入式人工智能是什么,如何做嵌入式人工智能
浅谈Digi 900HP模块的API模式组网配置
诚挚邀请 | 开放原子校源行答疑会
杯突实验指导书
数字隔离器选型,从读懂Datasheet开始
马斯克:四季度前公布第二座超级电池工厂,中国电池工厂选址也将公布
油浸式变压器漏油的原因是什么
新型精密链节式输送线简介及优势
人脸识别技术成常态防疫好帮手,谨慎信息泄露风险等
诚邀报名 | 内核Hacker与Mogul邀您共论操作系统技术创新与发展
区块链游戏垂直领域交易所BIT.GAME介绍
FPGA基于非易失性技术的低功耗汽车设计
袁小林:IPO对于沃尔沃的发展是一个新开始
保时捷Panamera“旅行版”Sport Turismo曝光
Pericom的最新产品实现低功耗和高性能目标
小心油浸变压器发火