【发布时间】:2019-07-31 23:07:48
【问题描述】:
我正在使用 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 使用相同的新采样率
截止频率 = 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 中的值应该是什么。我看过类似的帖子,但是这有点不同,老实说,我被困在这里了。
如果有任何帮助,我将不胜感激。
【问题讨论】:
标签: gnuradio software-defined-radio z-wave