3

我试图弄清楚是否有一种有效的方法来找出 rf24 无线电的管道地址。为了让两个无线电通信,它们必须在同一个通道上并且具有相同的读写管道地址。

我现在能想到的唯一方法是使用蛮力,消除搜索次数的最简单方法是至少知道无线电频道——我认为这是最容易的部分。理论上(我猜),我可以将我的“搜索”收音机设置为正确的频道,将其设置为仅“收听”,然后尝试一个又一个地址。但这是低效的,因为地址可以是任何 40 位十六进制值。所以有 2^40 个可能的键——我不想一次花 2 周时间来寻找“监听”地址。

有没有更好的办法?有没有办法向通道发送信号并获取该通道上可用的所有管道地址?基本上除了我的方法之外的任何东西。

编辑1:

我想知道是否有一种方法可以修改像这样的扫描仪:https ://github.com/TMRh20/RF24/blob/master/examples/scanner/scanner.ino以便捕获所有“可见”数据包给定频道,然后找出地址。根据 nRF24L01(+) 规范“数据包包含前导码、地址、数据包控制、有效负载和 CRC 字段”。这会将可能的地址数量缩小到很少。

4

3 回答 3

4

或者您可以执行以下操作:

虽然设备/节点地址被指定为 5 个字节 eq。40bits,你可以只指定第一个字节。在这种情况下,剩余的 4 个字节成为有效载荷的一部分。

然后,您必须只听 256 个键 (2^8) 而不是 2^40。

于 2016-11-03T22:12:53.190 回答
0

大警告,我从未使用过 nRF24L01,只是刚刚浏览了数据表,所以我所说的可能是胡说八道。


似乎您希望能够为您的项目使用“任何”管道地址,但希望能够简单地将设备“委托”到您的网络中。我看到您正在尝试同时解决三个领域:

  1. 管道地址解析(和可能的选择)
  2. 渠道选择
  3. 寻找并加入网络。

我要假设的事情:

  • 为管道地址选择实际值超出了范围。

建议

我推荐你:

  • 选择一个特殊的(或一组特殊的)管道地址用于通告网络信息(例如,可能是 0xCAFEF00D 种类)
  • 定期以只读方式宣传(即信标)在单个通道上连接所需的信息。例如,这将通告信标节点正在读取的管道地址。
  • 让您的“加入”节点侦听此信息以找出他们应该写入的地址。
  • 当一个节点加入时,它应该包含写回它所需的信息。也许还应该在这里进行另一次协商,其中信标和加入节点协商一组可供使用的替代管道地址。
  • 扩展您的实施以利用多个通道(可能仅用于数据或可能同时用于数据和网络管理)。

多渠道

使用多个信道是明智的,主要是为了避免多径干扰。然而,它通常伴随着不得不多次执行网络管理的权衡(即从上面的整个“搜索网络、协商连接等”过程)。我建议先在一个频道上进行一些工作,但请记住多频道问题。一旦您开始使用多通道功能,明智的做法是再次拥有一个通道子集(或仅一个)用于网络管理以简化搜索过程。

于 2016-07-05T14:26:23.910 回答
0

我想我想出了我的答案。

于 2016-07-09T18:20:32.137 回答