帧不在模块中您可以在反汇编窗口_浅谈Digi XBee PRO 900HP远距离无线模块(续)...

本文深入探讨Digi XBee PRO 900HP无线模块在透传和API模式下的通信。在透传模式下,通过设置DH和DL实现定向单播通信。API模式则提供了更多功能,如随时通信、远程AT命令和反馈包判断。示例展示了API模式下发送和接收数据帧的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

浅谈Digi XBee PRO 900HP远距离无线模块(续)

2020-3-15

接上文。

XBee PRO 900HP透传模式通信

要让几个模块组成一个网络,首先要保证网络ID和HP是一样的,另外CM覆盖相同的频点。一般地,只要你是同一型号的模块,采用默认值就行了,只需把网络ID改成你定义的独一无二的网络号。模块会采用64位地址通信,其中SH、SL是模块自身的MAC地址,而DH、DL是透传模式下的目标地址。默认地DH=0,DL=FFFF时是广播地址,因此采用默认参数,网内的模块已经可以互相通信,只不过这是一种广播方式的通信,效率和可靠性相对较低,我们一般需要改成定向单播通信。

我们先来试一下默认的广播通信,在XCTU中,可以点击右上方的终端按钮,把XCTU当成一个串口调试助手来使用。分别点击选中两个模块,并打开串口,用“分离视图”按钮让两个终端显示在桌面的不同区域,在ASCII显示区任意输入字符,可以在另一个终端上看到收到的字符。如下图所示:

9da281b7b686dc28911a31ea0a9a234e.png

接下来我们用定向单播的方法来测一下透传模式,先把分离视图合并,然后切换到配置模式下,在两个模块的DH、DL中分别填入对方的SH、SL,写入模块后,再回到串口终端界面测试结果。可以发现两个模块此时也仍能互通,但此时是向指定地址发送数据而非采用广播模式。

我们也可以在串口终端用AT命令的方式改写参数,在串口终端处输入三个“+”,会弹出一个OK,这时模块已经从工作模式切换到命令模式下,我们可以直接发打AT命令,比如有个NI参数是可以用来给模块命名的,默认是没有赋值的,在弹出OK后,输入ATNINODE1回车来给它赋值NODE1名称。下图是操作结果,分别是设置NI为NODE1,再读一下NI,把结果用WR命令写入flash,用CN命令直接退出命令模式。

95d56604239ef27cc42e0805e3d3f6ac.png

注意如果不用ATCN来退出命令模式,默认约6秒无操作时,模块也会自动退出命令模式而回到透传的工作模式。如果不用默认值,相关的时间和进入命令模式的特殊字符等都可以在AT指令里自定义。

因为透传模式需要用特殊定义的符号和时延组合来进入命令模式,以修改目标地址等,如果在一个网内,需要对不同的模块进行通信,这样的方式显然效率低下,这时我们可以用API模式来进行通信。API模式是一种用命令帧同模块进行交互的通信方式,它不但可以用来随时和任意模快通信,也可以用来设置远程AT命令,收取反馈包等。

下面我们演示一下一个透传的模块和一个API模式的模块的相互通信过程,以加深对API模式的理解。

XBee PRO 900HP API模式通信

API模式具有以下优点:随时与任意模块进行定向通信,随时发送AT指令而不需要进行模式切换,可以识别数据来源,发送结果可以通过反馈包判断,可以远程向其它模块发送AT命令等。

可以说,API模式除了可以做透传模式的所有事情外,还有其它更多功能。在一个网络中,你可以全部用API模式,也可以是中心点用API模式而其它节点用透传模式。要开启API模式,只需把AP参数设置为1或2即可。

在配置模式中,将AP设置为1并写入,切换到终端模式下,可以看到原来的终端窗口被命令帧窗口取代了。点击“+”号按钮,用向导添加一个API帧,比如我们要添加向另一个模块发送数据的帧,在帧向导中的Frame Name给这个帧取名为“frame_0_send1234”,然后点击用帧生成工具来生成帧,在接下来的页面中,选择Frame Type为0x10发送请求帧,在64位目标地址中输入另一模块的mac地址,在RF data中输入“1234”,该工具会自动生成以7E开头的完整的发送命令帧。点击“OK”,并把生成结果用“Add Frame”按钮添加到发送列表中。选中该帧,然后点击“Send Selected Frame”发出该帧,就可以在另一个模块的终端窗口中收到1234字符。

同样地,你可以在透传模式的终端窗口中输入任意字符,在API模式的模块中会以0x90接收帧的方式显示收到的数据。选中每个帧,在“Frame details”中会显示详细的帧字段含义。如下图所示:

b05802440256ac00dee691c8738b5de4.png

其它

Digimesh可以实现自组网,也就是只要网络内各点分布合理,任意的点都可以给别的点当路由。但是如果最近的两个点也很远,边上有基站干扰的情况下,为了实现更远的传输距离,还可以用XBP9B-DP固件,这个固件默认没有自组网功能,但因为RF的速率是10kbps,所以两点间距离更远,但相应的带宽也低些,比较适合多个远距离模块向中心点间的星状网络数据传输。

无人机和一些密集高速通信的考量

许多无人机或是工业通信往往是要用点对多点模式,而不是digimesh。

以某飞控为例,飞控往地面站发送99个字节的数据,每200ms一次,这样算来:

(8+1+1)*99*5=4950bs=4.95kbps,小于10kbps,所以可以使用XBP9B-DP固件

此时,为了提高带宽很实时性,可以做如下设置:

(1)TO=40;代表点对多点模式;

(2)CE=2;节点不做路由,减少CPU和带宽浪费; (3)NH=1;由于不做路由,可以把网络跳点设置为1,一些固件内部像timeout的算法会用到这个参数,减小这个参数以增大带宽。

548a6a30ed5d0f89b9e020c956c18535.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值