我正在尝试解调来自nRF24L01 +收发器芯片的GFSK信号(连接到我的Arduino)。到目前为止,我已遵循本指南: 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网站上的评论也是我的评论)
如果有人可以帮助我(或者甚至指出我正确的方向),我会很高兴。提前谢谢!
答案 0 :(得分:1)
在Quadrature Demod
之后你必须使用时钟恢复模块。 GNU Radio的M&M Clock Recovery
应该可以胜任。该块将显着提高解码的性能。
但是你必须注意这个块需要的一些参数。最重要的是&#39; omega&#39;。 &#39;欧米茄&#39;粗略地说,对应于每个符号的样本数。例如,如果您的GFSK波特率为9600
且来自硬件的输入信号为96000
,则每个符号对应10个样本。 omega
可以是任何浮点数。但请注意,时钟恢复不适用于较大的omega
值。因此,请尽量将omega
保持为8.0
。为此,请正确调整硬件采样率或进行重新采样。
Clock Recover
之后只需使用&#39;二进制切片机&#39;块。这会将浮点数转换为0
和1
的位。使用Pack K bits
块,您可以将位流转换为字节流,可以使用&#39;文件接收器轻松保存到文件中。
Here是FSK
接收器的一个很好的分步教程。 GFSK
只添加了一个高斯滤波器,因此两个过程完全相同。