1

我正在使用 RTL-SDR 通用加密狗来接收 Z-Wave 协议的帧。我使用真正的 Z-Wave 设备。我正在使用scapy-radio并且我还下载了 EZ-Wave。但是,它们都没有为所有 Z-Wave 数据速率、调制和编码实现块。我使用EZ-Wave的原始解决方案收到了一些帧,但是我假设我无法以所有数据速率、编码和调制接收帧。现在我正在尝试根据他们的块来实现解决方案来实现所有这些。

Z-Wave 协议使用以下调制、数据速率和编码:

9.6 kbps - FSK - Manchester 
40 kbps - FSK - NRZ
100 kbps - GFSK - NRZ

这些是我的实际块(现在根本无法接收任何东西):

在此处输入图像描述

例如,我将解释我对接收块的看法

9.6 kbps - FSK - Manchester 

RTL-SDR 源

变量center_freq = 869500000

变量r1_freq_offset = 800e3

Ch0:频率: center_freq_3-r1_freq_offset,所以我在 RTL-SDR 源块上有 868.7 Mhz。

频率变换 FIR 滤波器

中心频率 = - 800Khz以获得频率 868.95 Mhz(欧洲)。老实说,我不确定我为什么要这样做,我需要一个解释。我正在尝试根据 EZ-Wave 实现 40 kbps-FSK-NRZ 的块(我假设)来实现这些块。他们使用 2M 的采样率和不同的配置,我不明白。

Taps = firdes.low_pass(1,samp_rate_1,samp_rate_1/2,5e3,firdes.WIN_HAMMING)。我不明白,什么应该是过渡 bw(在我的情况下是 5e3)

采样率 = 19.2e3,因为数据速率/波特率为9.6 Kbps,根据Nyquist-Shannon 采样定理,采样率至少应为数据速率的两倍,因此 2*9.6=19.2。所以我试图将默认的 2M 从源重新采样到 19.2 Kbps。

简单的静噪

我使用默认值(-40),我不确定是否应该更改它。

正交解调

应该进行 FSK 解调,我使用增益的默认值。我不确定这是否是进行 FSK 解调的正确方法。

增益 = 2 (samp_rate_1)/(2*math.pi*20e3/8.0)*

低通滤波器

采样率 = 19.2k使用相同的新采样率

Cuttoff Freq = 9.6k,我假设这是根据https://nccgroup.github.io/RFTM/fsk_receiver.html

过渡宽度 = 4.8,也是 sample_rate/2

时钟恢复 MM

大部分参数都是默认的。

Omega = 2,因为 samp_rate/baud

二进制切片器

用于获取信号的二进制代码

Zwave PacketSink 9.6

应该曼彻斯特解码。

我想问一下,为了在所有数据速率、调制和编码下正确接收 Z-Wave 帧,我应该对我的模块进行哪些更改。当我开始接收时,我可以在 FFT 接收器和瀑布接收器上看到来自我的设备的消息。消息调试不打印数据包(如来自原始 EZ-Wave 解决方案),但仅

Looking for sync : 575555aa
Looking for sync : 565555aa
Looking for sync : aa5555aa

根据曼彻斯特解码的 C 代码(ZWave PacketSink 9.6) , frame_shift_register中的值应该是多少。我看过类似的帖子,但是这有点不同,老实说,我被困在这里。

我将不胜感激任何帮助。

4

4 回答 4

1

由于 RTL-SDR 加密狗限制(225001 到 300000 和 900001 到 3200000),采样率为 1M。

当前区块: Z-Wave 9.6Kbps|FSK|Manchester 的当前块

我不明白 :

分频 FIR 滤波器的抽头 firdes.low_pass(1,samp_rate_1,40e3,20e3,firdes.WIN_HAMMING)

低通滤波器的截止频率和过渡宽度

时钟恢复 M&M也是如此,因此请考虑其值“随机”。

时钟恢复输出:

时钟恢复 MM 输出

根据您在 ResearchGate 的工作,我试图使用PCB 块。但是,我没有成功,因为我仍然不了解时钟恢复背后的所有科学。

进行两次低通滤波是因为来自scapy-radio的 40Kbps、FSK 和 NRZ 编码的原始 Z-Wave 块是这样制作的(并且有效):

在此处输入图像描述

所以我想我将只是改变一些参数和解码器(Zwave PacketSink9.6)。

我还在这里上传了我当前的块。

于 2019-03-13T11:39:06.823 回答
1

感谢您的回答,我已经更改了采样率。现在我仍在研究 9.6Kbps、FSK 解调和曼彻斯特解码。目前,我的 M&M 时钟恢复的输出如下所示:

在此处输入图像描述

我想问你对这个信号有什么看法。正如我所说,它应该是 FSK 解调,然后我应该使用曼彻斯特解码。我还需要使用 PCB 块吗?初级,我必须做 9.6kbps、FSK 和曼彻斯特,所以如果还有时间的话,我会看看 100Kbps GFSK NRZ。

于 2019-03-12T21:18:32.480 回答
1

让我们看一下GFSK的案例。首先,RTL 源的采样率,2M Baud 是相当高的。对于最大数据速率,100 kbps - GFSK,400 ~ 500kbaud 的采样率就可以了。还有电源静噪块。此块可防止低于某个阈值的信号通过。这不好,因为它过滤了可能包含信息的低功率信号。低通滤波器和 MM 时钟恢复模块之间也存在采样率问题。符号恢复模块的输出应该是 100kbaud(因为对于 GFSK,采样率 = 符号率)。使用 omega 值 2 并向后工作,MM 块的输入应该是 200kbaud。但是,低通滤波器以 2Mbaud 产生样本,是预期的 10 倍。您必须进行适当的抽取。

我曾经为我们的 CubeSat 实现了一个 GFSK 接收器。定时恢复由 PFB 块完成,比 MM 块更可靠。You can find the paper here: https://www.researchgate.net/publication/309149646_Software-defined_radio_transceiver_for_QB50_CubeSat_telemetry_and_telecommand?_sg=HvZBpQBp8nIFh6mIqm4yksaAwTpx1V6QvJY0EfvyPMIz_IEXuLv2pODOnMToUAXMYDmInec76zviSg.ukZBHrLrmEbJlO6nZbF4X0eyhFjxFqVW2Q50cSbr0OHLt5vRUCTpaHi9CR7UBNMkwc_KJc1PO_TiGkdigaSXZA&_sgd%5Bnc%5D=1&_sgd%5Bncwor%5D=0

还可以在此处找到有关接收器的更多详细信息: GFSK 调制/解调与 GNU Radio 和 USRP

M。

于 2019-03-11T10:06:15.467 回答
0

Moses Browne Mwakyanjala,我也在尝试根据你的工作来实现那个东西。

在此处输入图像描述

在此处输入图像描述

也许时钟恢复和曼彻斯特解码存在问题。曼彻斯特解码使用转换 0->1 和 1->0 来编码 0 和 1。如何正确配置时钟恢复以实现曼彻斯特解码的正确采样率和转换?曼彻斯特解码器 (Z-Wave PacketSink 9.6) 能够找到前导码,并且仅以寻找同步结束。

我还想问你,我在哪里可以找到你工作中提到的调制指数“h”?

谢谢

于 2019-03-18T00:32:08.763 回答