如何使用nRF24L01(+)2.4GHz无线收发器

时间:2016-07-02 20:02:24

标签: arduino radio wireless receiver radio-transmission

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

我现在能想到的唯一方法是使用蛮力,消除搜索次数的最简单方法是至少知道无线电频道 - 我认为这很容易。理论上(我猜),我可以设置我的搜索"无线电到正确的频道,只设置为" listen",然后尝试一个接一个的地址。但这样效率很低,因为地址可以是任何40位十六进制值。所以有2 ^ 40个可能的密钥 - 我不想一次花2个星期试图找到"听"地址。

有更好的方法吗?有没有办法将信号发送到通道并获得该通道上的所有管道地址?除了我的方法,基本上什么都没有。

编辑1:

我想知道是否有办法修改像这样的扫描仪:https://github.com/TMRh20/RF24/blob/master/examples/scanner/scanner.ino,以便它捕获所有"可见"给定通道的数据包,然后找出地址。根据nRF24L01(+)规范"分组包含前导码,地址,分组控制,有效载荷和CRC字段"。这样可以将可能的地址数量缩减到极少数。

3 个答案:

答案 0 :(得分:3)

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

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

然后,你只需要听256个键(2 ^ 8)而不是2 ^ 40。

答案 1 :(得分:0)

值得注意的是,我从未使用过nRF24L01,而且刚刚浏览过数据表,所以我所说的可能是胡说八道。

您似乎希望能够使用任何'您的项目的管道地址,但希望能够委托'设备简单到你的网络。我看到你想要立即解决的三个方面:

  1. 管道地址解析(可能选择)
  2. 频道选择
  3. 发现&加入网络。
  4. 我要承担的事情:

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

    <强>推荐

    我建议你:

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

    多渠道

    使用多个渠道是明智的,主要是为了避免multipath interference。但是,它通常需要权衡多次执行网络管理(即整个网络搜索,协商连接等以及上面的过程)。我建议首先在一个频道上工作,但要记住多频道问题。一旦开始使用多个通道功能,再次拥有一个通道子集(或仅一个)用于网络管理以简化搜索过程将是明智之举。

答案 2 :(得分:0)

我想我找到了答案。