Запись и воспроизведение произвольного сигнала 433Mhz

К сожалению, есть довольно большое пространство вариантов:

  1. Проблемы в железе (от брака конкретного экземпляра радиомодуля, до повреждений кабеля, дорожки на плате etc)
  2. Проблемы с настройкой радиомодуля. Чуть менее вероятно, т.к. проблемы одинаковые с совсем разным софтом.
  3. Большие помехи снаружи. В пользу этой гипотезы - много пакетов с хорошим уровнем сигнала. Неожиданно может обнаружится, что у соседей используется какая-нибудь беспроводная камера или еще что-то постоянно вещающее на частоте 433.92 (или близкой к ней).
  4. Антенна находится на пути направленного мощного постоянного сигнала. В пользу этого говорит то, что смещение антенны помогает. Если до выходных ничего не придумаем, нужно родную метеостанцию поместить ровно на текущее место расположения антенны.
  5. Наличие источника сигнала, который сбивает настройки радиомодуля. С этим можно пробовать бороться. Но сейчас у меня стоит настройка “сбрасывать все автоподстройки после каждого пакета”, т.е. не должно так работать…

Что можно попробовать:

  1. Отключить все автоподстройки. Я сделаю версию, где они будут отключатся параметрами, и напишу в какой последовательности запускать
  2. Записать то, что принимает модуль и посмотреть на осмысленность. Я напишу, что запускать и нужно будет переслать мне полученные файлики

Других идей пока нет…

Вариант с антенной может быть такой - у меня разьем антенны стоит на корпусе на верхней его части (горизонтальная плоскость перед клемниками сверху, прям над надписью WirenBoard Smart Home), и провод идет внутри, может внутри что наводит помехи.? Хотя я вроде и вайфай и гсм отрубал. Надо попробовать пигтейл вытащить по самой короткой траектории (но это только в субботу). И такое может быть, но соседи достаточно далеко (более 100м).

Оказалось, что AFC (автоподстройка частоты не используется). Добавил возможность печати регистров радиомодуля (параметр -t), чтобы проверить что нет аномалий. Добавил возможность записи пакетов для последующего анализа (-w <время записи>). Просьба скачать новую версию и запустить:

mkdir Test
cd Test
rm rfsniffer
wget https://www.dropbox.com/s/ymkgz7w69shmwd2/rfsniffer
chmod +x rfsniffer
./rfsniffer -t
./rfsniffer -w 60

После этого прислать /run/Main.log и все файлики capture*

там коаксиальный кабель, у него оплётка на земле, на него помехи точно не наводятся. Имеет смысл проверить, что конец этого кабеля не соскочил с маленького разъёма u.FL на плате

https://www.dropbox.com/s/1p33ex29nki52wm/rf.zip?dl=0 файлики

В общем, это очень похоже на постоянную пакетную передачу… Причем, очень похоже, что это не OOK, а FSK/PSK.

Распределение времени выглядит примерно так (гистограмма, в колонке кол-во сигналов/пауз, попадающих в 50 мкрсек диапазон):


Распределение более или менее одинаково для всех пакетов.

Мы видим “длинные” паузы около 6-7 милисекунд. Это, вероятно, паузы между пакетами.

Внутри пакетов распределение (шаг 5 микросекунд):

Сами последовательности сигналов выглядят следующим образом:

Сигнал от всяких OOK передатчиков выглядит совсем по другому. Там всегда есть четко преобладающие пики (от одного до трех) с нормальным распределением. Здесь пики тоже немного просматриваются, но они не ярко выражены.

Т.е. с высокой уверенностью можно утверждать:

  1. Сигнал действительно есть и он довольно сильный
  2. Вероятность того, что это шум не очень высокая
  3. Маловероятно, что это “отошедший” разъем или что-то типа того

Что можно пробовать делать:

  1. Более точно определить частоту источника помех. Если она отличается от датчиков Oregon - попробовать выключить широкополосное определение сигнала и точно настроится на частоту Oregon
  2. Понять, не является ли сигнал направленным и изменить расположение антенны
  3. Найти источник сигнала и объяснить владельцу, что он не прав… Источником может оказаться какое-нибудь устройство типа https://www.alibaba.com/showroom/433mhz-wireless-gsm-security-camera.html или https://www.alibaba.com/product-detail/Wholesale-433-mhz-Video-Transmitter-Good_1698533331.html. Максимально разрешенная мощность для 433mhz - 10 мВт. Если до него точно больше 100м, то тут пахнет сильно большим уровнем…

Круто.
Пойду пройдусь по деревне в субботу, в окрестностях. Вполне может быть один из соседей.
А может отключить внешнюю антенну, и припаять обратно проводок? Чтобы уровень сигнала от них уменьшить.

Как минимум, стоит отключить антенну и запустить без нее. Если я прав, картинка должна изменится. Данных должно стать сильно меньше и RSSI сильно уменьшиться. Этим мы исключим аппаратные проблемы. Настройки я посмотрел, они совпадают с моими.

Как в деревне искать соседей с передатчиком - не очень представляю. Взять что-то, похожее на спутниковую антенну (таз, например) и экранируя антенну с разных сторон найти направление источника сигнала? :smiley:

Короткая антенна не поможет, уровень помехи похоже выше, чем сигнал датчика :grin:. Есть простой вариант для теста. Можно использовать фиксированную чувствительность приемника(без автоподстройки), уменьшив её до уровня, чтобы не лез шум. Есть вероятность, что после этого сигнал от датчика начнет просачиваться…

Проверил все компоненты системы, посыпал голову пеплом, заменил батарейки в датчиках, поставил антенну поближе, с ближайщего датчика данные пош ли с rssi -97. Второй датчик похоже умер. Есть еще датчиа от vitek, я в свое время нашел его поддержку в rcswitch, могу прислать для включения.

Датчик умеет измерять влажность? Мне было важно проверить работу с датчиком только температуры.
Данные идут регулярно? (Должны примерно раз в 40 сек). Если сигнал слабый или много помех - могут проходить не все посылки.
Датчик vitek можно попробовать прикрутить.

Тот что проверял, только температурный. Данные идут регулярно.

Евгений,

а модуль lirc поддерживает передачу? Насколько я понимаю, оригинальный модуль от rpi позволяет не только принимать, но и принимать сигнал. Для передачи используется тот же DIO2, т.е. аппаратно все должно работать…

Должен поддерживать, не уверен правда, что это хорошо тестировалось.

Надо в DT указать “gpio-send” у передатчика, могу собрать. У вас WB5?

Если указать gpio-send, то перестанет работать прием?

Я пытаюсь найти самый простой способ сделать передачу с использованием “знаний” о расшифровке протокола.

Передавать пакетно несложно, но нужно подбирать правильный bitrate. Причем, вероятно, разный для разных протоколов.

При этом, возможность передавать через lirc драйвер позволяет, по сути, в обратной последовательности собрать пакет и “проиграть его”…

Но это только если нет явных грабель…

Странная штука, есть три датчика температуры-влажности (RST, Oregon и nooLite). Все три находятся в примерно одинаковых условиях и должны показывать температуру и влажность на улице. С температурой все более или менее понятно и разница объясняется солнечной засветкой.

А вот то, что три датчика показывают почти одинаковую температуру и совсем разную влажность выглядит очень странно…

Никто не пытался сравнивать показания по влажности у разных датчиков?

P.S. Данные почти точно получаются правильные…

А разные - это насколько разные? Вообще говоря влажность они меряют же относительную, а она при постоянной абсолютной меняется с температурой. Так что если на датчик светит солнце, то он будет показывать температуру больше, а относительную влажность меньше.

Это как раз понятно. Сейчас у RST t=26.3, h=23; у nooLite t=28.8 а влажность 30 (т.е. в обратную сторону). Oregon неудачно закреплен на металическом каркасе балкона и сильно нагрелся(данные на актуальные).

Но, утром разница температур была меньше градуса, а разница влажности >15%…

в nooLite стоят датчики Sensiron SHT1x, которым я как-то верю больше, чем аналоговой завитушке из проволоки, которые стоят в дешёвых радио-датчиках.

Даже у “хороших” датчиков систематическая погрешность обычно 3% RH и может ухудшаться к границам интервала. У плохих на границах можно ожидать всё что угодно.
В общем 7% разницы у таких датчиков - это, думаю, нормально.

Сделал базовую поддержку пультов и датчиков nooLite.

Бинарник доступен там же, исходники на github актуальные. Если у кого-то есть разные передающие устройства nooLite просьба попробовать. Особенно интересуют пульты, умеющие передавать яркость и цвет.

Код запуска тот же:
mkdir Test
cd Test
wget https://www.dropbox.com/s/ymkgz7w69shmwd2/rfsniffer
chmod +x rfsniffer
./rfsniffer

P.S. Передачу пока не сделал. Есть небольшая заминка с “отладочным” приемным устройством.

А как отправлять радио сигналы? В частности, как отправить сигнал на самые простые китайские переключатели (vhome/ev1527) ? Вроде писали, что все очень просто, но по факту никто ничего не сделал?