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


#41

Нужно инициализировать трансивер, чтобы перевести его Continuous mode.
Пример есть в /usr/lib/wb-homa-ism-radio/test_raw.py

Если его выполнить при выключенном демоне wb-homa-ism-radio - появятся данные на lirc0… Но на самом деле, есть куча настроек, которые можно и нужно крутить…

Открытые для меня вопросы:

  • Синхронный/асинхронный режим? По идее асинхронный, но…
  • Частота дискретизации, если синхронный?
  • Шейпинг?
  • Частота ресивера? Что-то у меня все больше подозрений, что нужно шевелить в стороны от 433.92
  • Нормирование сигнала (OOKPEAK, OOKFIX)?

#42

jq есть в репозитории wheezy-backports

echo "deb http://http.debian.net/debian wheezy-backports main" >> /etc/apt/sources.list.d/wheezy-backports.list
apt-get update
apt-get install jq

Динамическая загрузка DT-оверлеев поддерживается в ядре 4.1 (у нас в репозитории это ветка dev/v4.1.15), а так же требует dtc со специальными патчами (при сборке ядра из указанной ветки, правильный dtc будет в scripts/dtc/). Также если собирать ядро скриптами из репозитория build_kernel, бранча dev/v4.1.15 - все соберется в deb-пакеты, включая правильный dtc который можно запускать на WB.
Если подключаете к разъемам для внутренних модулей расширения, можете сделать по аналогии с https://github.com/contactless/wb-hwconf-manager/blob/master/modules/wbe-i-w1.dtso - это простой модуль, использующий два GPIO. wb-hwconf-manager при загрузке обрабатывает этот файл tcc, производя замену макросов SLOT_*(x) на реальные пины соответствующего слота, компилирует его в DTBO (исходник), и грузит в ядро через configfs, вручную это что-то вроде такого:

mount -t configfs configfs /sys/kernel/config
conf=/sys/kernel/config/device-tree/overlays/wb5-mod1\:my-lirc-dev/
mkdir $conf
cat my-lirc-dev.dtbo > $conf/dtbo

Подробная инструкция по работе с wb-hwconf-manager и созданию своих DT-оверлеев будет на днях.


#43

Команды хелпера confed-tojson и fromjson нужны только для веб-интерфейса. Вручную попросить hwconf-manager загрузить оверлей можно так:

wb-hwconf-manager init <slot> <module>

где slot - определение слота из slots/.def без расширения, module - названия модуля из modules/.dtso (тоже без расширения). Если ваш dtso не использует уже определенные слоты, можно создать пустой .def.


#44

Судя по всему для работы lirc-драйвера не хватает мощности процессора.

Ниже приведены две картинки. На обоих сигнал с радипульта, повторяющийся 5 раз. В каждом случае мы видим довольно длительные пропуски сигнала. Т.к. у этих пропусков примерно одинаковая длительность и они бывают как НОЛЬ, так и ЕДИНИЦА, то очень похоже что в эти момент kernel driver теряет процессор и перестает откликаться на прерывания от пина, к которому подключен радиомодуль.


#45

А у вас случайно не идёт паралельно какой-нибудь опрос чего-нибуд по RS-485?


#46

Да, конечно идет!

Подключен WB-MR11, он может влиять?


#47

Вот к сожалению да. Неприятный баг, совсем недавно поймали и исправили. Попробуйте или остановить опрос или обновить ядро, может быть правда в этом дело.


#48

Да, предварительно, похоже остановка wb-homa-modbus решает проблему…
И вроде бы после обновления ядра не повторяется даже с работающим modbus

P.S. Хотя не уверен. Вроде как длинные пропуски ушли, но сигнал все равно странный


#49

Да, проблема точно полечилась. На уровне ядра все стабильно. Это картинка от беспроводного датчика движения:

Это от пульта Livolo:

Проблема в том, что хоть сколь-нибудь стабильную картинку удается получить в режиме OokThreshType=fixed и низкой чувствительности приемника. Заставить нормально работать OokThreshType=peak пока не получается.


#50

А в чём конкретно проблема с peak? Не определяет конец пакета?


#51

В /dev/lirc0 ничего не падает. Пробовал различные настройки, но хоть сколь-нибудь значительных успехов пока не достиг. В наилучшем варианте дальность приема еще меньше, чем в режиме fixed…


#52

Нашел неприятный баг, который похоже портил мне жизнь. В lirc0 переодически меняются местами 0 и 1. Т.е. записываешь сигнал, делаешь декодер. Тестируешь на записанных пакетах - все вроде норм. А потом раз и не работает… Записываешь, смотришь, а 0/1 (delay/pulse) поменялись местами.

Сейчас удалось добиться стабильной работы с датчиком темп/влажности от метеостанции RST. С пультами Livolo по-прежнему проблема. У них очень короткие сигналы и дисперсия больше разницы значений. Пытаюсь научить rfm более четко “обрезать” сигнал.


#53

в смысле все 0/1 меняются местами?
А какие длины бит у livolo, для понимания?


#54

Встречалось такое, это фильтр глитчей на GPIO подглючивает.
Добавил в драйвер флаг для его отключения и прописал его в DTS для rfm69-девайсов, вот deb, попробуйте: http://lexs.blasux.ru/dump/linux-image-4.1.15-imxv5-x0.1_4.1-imxv5-x0.1%2Bwb20160410114031_armel.deb


Датчик движения 433 МГц от какой-то сигнализации данные от которого видны в /events/wb-homa-rcd/protocols/raw
Ну а всетаки будет ли когда нибудь заявленная в рекламе поддержка китайского 433 МГц оборудования?
#55

А какие длины бит у livolo, для понимания?

100 и 300 us (eкороткий/длинный) причем оба (пауза/пульс)
500 us разделитель (пульс)


#56

Пакет поставил, перегрузился, посмотрю, отпишу


#57

С новым пакетом вообще пропал /dev/lirc0 (

Как вернуть обратно?


#58
apt-get install --reinstall linux-image-4.1.15-imxv5-x0.1

#59
root@wirenboard:~# apt-get install --reinstall linux-image-4.1.15-imxv5-x0.1
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Reinstallation of linux-image-4.1.15-imxv5-x0.1 is not possible, it cannot be downloaded.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@wirenboard:~# apt-get install  linux-image-4.1.15-imxv5-x0.1
Reading package lists... Done
Building dependency tree       
Reading state information... Done
linux-image-4.1.15-imxv5-x0.1 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

root@wirenboard:~# apt-cache search linux-image| grep linux-image
.....
linux-image-4.1.15-imxv5-x0.1 - Linux kernel, version 4.1.15-imxv5-x0.1 on armel
....

apt-get update естественно делал


#60

install --reinstall пытается переставить ту же версию
remove и install помогли