我正在使用 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中的值应该是多少。我看过类似的帖子,但是这有点不同,老实说,我被困在这里。
我将不胜感激任何帮助。