我试图弄清楚是否有一种有效的方法来计算rf24无线电的管道地址。为了使两个无线电通信,它们必须位于同一个通道上,并具有相同的读写管道地址。
我现在能想到的唯一方法是使用蛮力,消除搜索次数的最简单方法是至少知道无线电频道 - 我认为这很容易。理论上(我猜),我可以设置我的搜索"无线电到正确的频道,只设置为" listen",然后尝试一个接一个的地址。但这样效率很低,因为地址可以是任何40位十六进制值。所以有2 ^ 40个可能的密钥 - 我不想一次花2个星期试图找到"听"地址。
有更好的方法吗?有没有办法将信号发送到通道并获得该通道上的所有管道地址?除了我的方法,基本上什么都没有。
编辑1:
我想知道是否有办法修改像这样的扫描仪:https://github.com/TMRh20/RF24/blob/master/examples/scanner/scanner.ino,以便它捕获所有"可见"给定通道的数据包,然后找出地址。根据nRF24L01(+)规范"分组包含前导码,地址,分组控制,有效载荷和CRC字段"。这样可以将可能的地址数量缩减到极少数。
答案 0 :(得分:3)
或者您可以执行以下操作:
虽然设备/节点地址被指定为5字节eq。 40位,您只需指定第一个字节。在这种情况下,剩余的4个字节成为有效载荷的一部分。
然后,你只需要听256个键(2 ^ 8)而不是2 ^ 40。
答案 1 :(得分:0)
值得注意的是,我从未使用过nRF24L01,而且刚刚浏览过数据表,所以我所说的可能是胡说八道。
您似乎希望能够使用任何'您的项目的管道地址,但希望能够委托'设备简单到你的网络。我看到你想要立即解决的三个方面:
我要承担的事情:
<强>推荐强>
我建议你:
多渠道
使用多个渠道是明智的,主要是为了避免multipath interference。但是,它通常需要权衡多次执行网络管理(即整个网络搜索,协商连接等以及上面的过程)。我建议首先在一个频道上工作,但要记住多频道问题。一旦开始使用多个通道功能,再次拥有一个通道子集(或仅一个)用于网络管理以简化搜索过程将是明智之举。
答案 2 :(得分:0)
我想我找到了答案。
为了查看来自不同来源的频道中的所有地址,我收到了所有可用的数据包,因为(如编辑我的问题所述),有效载荷数据包包含管道地址。为了做到这一点,必须将接收器置于“混杂模式”。问题是nRF24L01不支持。
有一种方法可以容易出错&#34;使用nRF24L01进行数据包嗅探:http://yveaux.blogspot.nl/2014/07/nrf24l01-sniffer-part-1.html
支持“混杂模式”并因此允许数据包嗅探的接收器(或本例中的收发器)是esp8266 http://wp.dejvino.com/2015/02/how-to-use-an-esp8266-a-jumpstart-tutorial/