Я использую общий ключ 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 , поэтому у меня 868,7 МГц на исходном блоке RTL-SDR.
КИХ-фильтр частоты Xlating
Центральная частота = - 800 кГц для получения частоты 868,95 МГц (Европа). Если честно, я не уверен, почему я это делаю, и мне нужно объяснение. Я пытаюсь реализовать эти блоки в соответствии с реализацией блоков EZ-Wave для 40 кбит / с-FSK-NRZ (как я предполагаю). Они используют частоту дискретизации 2М и разные конфигурации, чего я не понял.
Taps = firdes.low_pass (1, samp_rate_1, samp_rate_1 / 2,5e3, firdes.WIN_HAMMING) . Я не понимаю, каким должен быть переход bw (5e3 в моем случае)
Частота дискретизации = 19,2e3 , поскольку скорость передачи данных / бод 9,6 Кбит / с и согласно теореме выборки Найквиста-Шеннона частота дискретизации должна составлять не менее удвоить скорость передачи данных, поэтому 2 * 9,6 = 19,2. Поэтому я пытаюсь изменить частоту по умолчанию 2M от источника до 19,2 Кбит / с.
Простой шумоподавитель
Я использую значение по умолчанию (-40), и я не уверен, должен ли я изменить это или нет.
Квадратурный Демод
должен выполнить демодуляцию FSK, и я использую значение усиления по умолчанию. Я не уверен, что это правильный способ демодуляции FSK.
Gain = 2 (samp_rate_1) / (2 * math.pi * 20e3 / 8.0) *
Фильтр нижних частот
Частота дискретизации = 19,2 К для использования той же новой частоты дискретизации
Cuttoff Freq = 9,6k , я предполагаю это согласно https://nccgroup.github.io/RFTM/fsk_receiver.html
Ширина перехода = 4,8 , что также является sample_rate / 2
Восстановление часов ММ
Большинство параметров по умолчанию.
Омега = 2 , потому что samp_rate / baud
Бинарный слайсер
для получения двоичного кода сигнала
Zwave PacketSink 9,6
в случае манчестерского декодирования.
Я хотел бы спросить, что я должен изменить в своих блоках, чтобы добиться правильного приема кадров Z-Wave на всех скоростях передачи данных, модуляции и кодировании. Когда я начинаю получать, я могу видеть сообщения от своих устройств в приемниках FFT и Waterfall. Отладка сообщения не печатает пакеты (как из оригинального решения EZ-Wave), а только
Looking for sync : 575555aa
Looking for sync : 565555aa
Looking for sync : aa5555aa
какое должно быть значение в frame_shift_register , в соответствии с кодом C для манчестерского декодирования (ZWave PacketSink 9.6). Я видел похожий пост, однако это немного по-другому и, если честно, я застрял здесь.
Буду благодарен за любую помощь.