0

我正在尝试解调来自 nRF24L01+ 收发器芯片(连接到我的 Arduino)的 GFSK 信号。到目前为止,我一直遵循本指南: https ://www.bitcraze.io/2015/06/sniffing-crazyflies-radio-with-hackrf-blue/#comment-38046

..并设法手动解调一个包(我发送'martijn'的地址和消息显然可以恢复): https ://drive.google.com/open?id=0B9CJ42CGPiF2TWoyelRmWldZcU0

但是,现在我想接收数据包并在它们进入时对其进行解码。有人已经为这项工作制作了解码器,但不知何故找不到我的 nRF24 数据包: https ://wiki.bitcraze.io/misc:hacks:hackrf

我用于发送数据包的 Arduino 代码如下:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>

RF24 radio(9,10);
const uint64_t pipe = 0xe7e7e7e7e7;

char package[] = "martijn";

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.setDataRate(RF24_1MBPS);
  radio.setChannel(95);
  radio.openWritingPipe(pipe);
  radio.enableDynamicPayloads();
  radio.setAutoAck(true);
  radio.powerUp();
}

void loop() {

  radio.write(&package, strlen(package));
  delay(1);

}

基本上我只想使用 GNU Radio Companion 来获取 nRF24 数据包,并将它们的二进制数据发送到一个文件中。我可以编写自己的解码器。但是,我不知道如何从传入信号中获取此二进制数据。

(bitcraze网站上的评论也是我的)

如果有人可以帮助我(甚至指出我正确的方向),我会非常高兴。提前致谢!

4

1 回答 1

1

之后,Quadrature Demod您必须使用时钟恢复块。M&M Clock RecoveryGNU Radio 应该可以完成这项工作。该块将显着提高解码性能。

但是,您必须注意此块所需的一些参数。最重要的是'欧米茄'。'Omega' 粗略地说对应于每个符号的样本数。例如,如果您的 GFSK 波特率为9600,而您从硬件传入的信号为96000,则每个符号对应 10 个样本。omega可以是任何浮点数。但是请注意,时钟恢复不适用于大omega值。所以尽量omega跟上8.0。为此,请适当调整硬件采样率或进行一些重新采样。

之后Clock Recover只需使用“二进制切片器”块。这会将浮点数转换为0's 和1's 的位。使用该Pack K bits块,您可以将比特流转换为字节流,可以使用“文件接收器”轻松保存到文件中。

是接收器的一个很好的分步教程FSKGFSK仅添加了一个高斯滤波器,因此它们的过程完全相同。

于 2016-07-28T16:55:31.980 回答