Baychi OpenLRS - дружелюбная ЛРС с широкими возможностями )

baychi
Gapey:

50% медленных пакетов идет в любом случае … просто когда перестают доходить быстрые пакеты ухудшается динамика , для улучшения динамики можно заменить быстрые пакеты медленными , те перейти в режим 100 % медленных пакетов , это вполне можно делать вручную …

Да, это хорошая идея. 1 бит в медленном для перключения всегда можно отыскать.
Хм… А ведь получается, что “быстрый” пакет нужет теперь только для конфигурирования медленного (в том числе ввода FS) или если требуется большое число каналов с большой разрядностью… То есть идея вырождается в просто максимально короткие пакеты на минимально приемлимой динамике, с очень короткими “конфигурационными” вставками (например на максимальнльной скорости 256 кбит , длительностью 1 мс), что-бы еще вблизи приемник мог подстроится под передатчик, а дальше брать только длинные кадры…

Palandreich

Самостоятельное конфигурирование разрядности каналов - это вообще супер!
Мне на коптере требуется, к примеру, 3х10 бит (крен, тангаж и направление), 8 бит на газ, 2 бита на переключение режима, 10 бит на поворот камеры, 5 бит на крутилку для настроек (на обязательно), 1 бит на пищалку. Итого 56 бит. То есть 7 байт, но можно ужать и до 6.

А если научить приёмник делать экспоненту, то на крен, тангаж и направление будет достаточно и 8 бит, тк триммирование не требуется

Gapey

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

baychi
Gapey:

иметь несколько наборов настроек и выбирать кнопкой на паредатчике ???

Именно это. Предлагаю 3 профиля настроек для каждой модели: стандартный, быстрый и точный. Профиль переключается, например, тумблером на передатчике и отсылается постоянно очень короткими кадрами (1-2 мс) на фиксированной частоте, в паузах между основными пакетами, но приемник принимает профиль только первые 30-60 сек, после установления связи и дальше его не слушает (что-б потом не сбиться случайно).
Уникальным для приемника является только ID настроек (16 бит), что-бы отличить свой передатчик или модель от чужого (ID можно поменять кнопкой BIND на приемнике).
Все остальное - структуру пакета, разрядности каналов, количество и набор частот прыжков, скорость, девиацию и период следования он узнает из профиля - быстрого пакета. Им же (и только им) можно поменять настройки FS. В принципе даже такие детали, как “логические каналы” и растяжку хода серв, частоту и мощность маяка можно передавать профилем (приемник вообще не конфигурировать заранее), но можно и оставить вариант настройки с обеих сторон (подумаю).

Palandreich:

А если научить приёмник делать экспоненту, то на крен, тангаж и направление будет достаточно и 8 бит,

Это, думаю, лучше оставить передатчику. А вот “псевдоаналоговые” каналы с 4-8 мпредустатовленными положениеями могут пригодиться - например для закрылков. Настройку (в том числе и триммирование) этих положений можно будет делать перед стартом с посмощью того-же конфигурационного пакета…

PS: А может наоборот - все настройки на приемнике и передатчик под него подстраивается? Что удобнее?

Gapey
baychi:

PS: А может наоборот - все настройки на приемнике и передатчик под него подстраивается? Что удобнее?

тогда приемник будет работать на передачу , чтобы скинуть настройки передатчику , чего не хотелосЪ бы …
а чем не устраивает вариант переливать все настройки при бинде ??? зачем каждый раз слать их с передатчика ???
просто в передатчик под конкретную модель забиваем разрядность всех каналов , соответственно получаем пакет минимально необходимой длины для этой модели , выбираем скорость и получаем оптимальный для данной модели пакет … набору настроек присваивается уникальный ID (16 бит) … приемник биндим на этот ID и в процедуре бинда переливаем в него все настройки … дальше для этой модели можно вообще настройки не менять …
другой набор настроек , другой ID , другой приемник на другой модели …

baychi
Gapey:

тогда приемник будет работать на передачу , чтобы скинуть настройки передатчику , чего не хотелосЪ бы …

Почему? Достаточно передавать их первые секунды. Все равно передатчик включается перед включением приемника.

Gapey:

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

Потому что у меня несколько моделей с разными настройками. И я не хочу каждый раз “перебиндевать” приемник. Считаю “биндом” - уникальный номер связи между моим передатчиком и всеми моими приемниками (что-бы отличить их от чужих пар). И кстати этого бинда в основном протоколе не будет (нет места), там для различения свой-чужой будет только синхрослово и свой набор частот. А вот параметры связи уникальны с точностью до модели (включая скан помеховой обстановки). Поэтому приемник будет говорить передатчику в каком режиме и как передавать каналы.

Gapey:

другой набор настроек , другой ID , другой приемник на другой модели …

Тогда надо переключать на передатчике и номер модели и номер настроек, а это уже трудно…

ССМ=
baychi:

Попробуйте увеличить задержки при проверке режима с 2 до 200 мкс, думаю проблема будет снята. Эти константы надо увеличить в 3-х вызовах delayMicroseconds(2) в функции check_modes файла functions.ino; На гитхабе я уже поправил.

Теперь все ок))) проблемка устранена, спасибо.
Только вот св.диод на приемнике с предыдущими прошифками при включении делал две вспышки, а сейчас просто горит до появленния связи.

Shuricus
baychi:

Кстати, Александр, а вам-коптероводом, сколько обычно каналов требуется?

У меня получается так:
Четыре точных канала - управление.
Один трехпозиционник - полетные режимы.
Одна крутилка - настройка пидов.
Два двухпозиционных тумблера на доп режимы.
Одна крутилка на Тильт камеры.
Один тумблер на пищалку.
Еще один запасной тумблер. (Ракеты, мины, переключение камер).

При этом, обычно все каналы идут по ППМ, кроме трех последних.

baychi

Прежде чем приступать к новому “гибкому” протоколу, внес все последние изменения и дополнения на гитхаб, а так-же доделал режим 3 (обратный порядок 10-ти 11 битных каналов). Прошивки тоже перекомпилил, описания дополнил.
github.com/baychi/OpenExpertTX
github.com/baychi/OpenTinyRX

polarfox

На выходных дошли у меня руки до прошивки моих модулей.Два передающих “оранжа” 0,1Вт и 1Вт(условно 😃),приёмники “оранжи” 2 шт и “хоки” 2 шт.Пришлось несколько раз прочитать и вникнуть в инструкции,перестроиться на особенность управления через терминал,чтобы примерно понять что есть что.Немного повоевал с программатором и ФТДИ-адаптером.Ардуиновская прога периодически не видела програматор.Первая попытка прошивки передающего модуля 0,1Вт оказалась неудачной,долго пытался связать модуль с приёмником,потом интуитивно понял, что проблема в модуле подозрение на криво вставшую прошивку или вообще загрузку,загрузил в него ардуиновский загрузчик(до этого стоял родной,только фьюзы подправлены были),почистил память,и загрузил прошивку по новой.Всё стало адекватно.Сначала я вбивал значения каналов в регистры приёмника такие же самые как и в соответствующих регистрах каналов передатчика.Передатчик предварительно был включён в режиме авто-настройки, т.е. он выбрал каналы на его усмотрение исходя из эфирной обстановки,после этого я переписал значения регистров отвечающих за каналы связи,чтобы вбить их в регистры приёмников.Значение регистра 2(подстройка частоты) на передатчиках и приёмниках было 199.В принципе всё работало,сервы шуршали,маяк работал и т.д.На дальность возможности проверить нет,погода плохая.В одноватный модуль я тупо скопировал значения регистров со 100-милливаттного и он тоже работает.
Но вот сегодня вечером после прошивки приёмника “хок” я решил попробовать “ребинд” приёмника,т.е. чтобы он сам нашёл передатчик.Предварительно на модуле 0,1Вт я занизил мощность(значение регистра =1),оттащил передатчик в другую комнату и приёмник никак не смог настроиться,хорошо принёс передатчик поближе и попытка номер два…Настроился,но значения регистров немного другие,номера каналов совпадают но номера регистров нет.Например регистр 11 на передатчике значение 92,а на приёмнике 63.63-й канал тоже есть но в передатчике он в регистре 17.Далее регистр подстройки частоты тоже поменял значение,вместо 199 стал 195.Попробовал забиндить другой приёмник,значения регистров отвечающих за каналы тоже отличаются и от передатчика и от первого приёмника(в смысле по другому перемешаны номера каналов),сами каналы совпадают просто стоят в других регистрах,регистр 2 имеет значение 192.При этом всё работает нормально,во всяком случае в пределах квартиры.
Так вот у меня вопрос.Как предпочтительней оставить значения регистров каналов и регистра подстройки частоты,вручную их установить или лучше чтобы они установились в автомате?В каком случае связь будет устойчивее?

korwins

Доброе время суток!
Во-первых, спасибо Александру (автору) за большой объем работы по доработке программной части модулей LRS!
Во-вторых, хотелось бы прояснить несоклько моментов по железу: есть у меня старенький передатчик WFLY FT-06, на модели Бикслера приемник Corona 35MHz, все работает вполне нормально. Хочу попробовать канал на 433 МГц, сам радиолюбитель с позывным и имею пару р/ст на 144, 433 МГц. Понимаю, что на эти частоты проще сделать направленную антенну, чем на 35МГц 😃
Вопросы такие:

  1. Я не нашел, какого типа сигнал PPM идет из моего передатчика (JR/Turnigy или Futaba совместимый). Соответственно, принципиально ли это? Планирую взять OrangeRX Open LRS 433MHz Transmitter 1W ( JR Compatible) на HK, паяльник в руках держать умею. Могут быть проблемы, если передатчик т.н. Futaba-compatibe? Если да, то как это можно проверить (осциллограф есть).
  2. Общий набор: OrangeRx Open LRS 433MHz 9Ch Receiver, OrangeRX Open LRS 433MHz Transmitter 1W ( JR Compatible), OrangeRX USB Firmware Update Kit for JR/Futaba Style Transmitter Module - является достаточным для того, чтобы на первых порах получить канал управления моделью на 433? Цена, к сожалению, не на последнем месте…
    P.S. автопилот и ОСД Eagle Tree. Заранее благодарен за ответ
baychi
polarfox:

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

Это нормально. Набор каналов - это кольцо, у него нет начала, а важна только последовательность частот.

polarfox:

Далее регистр подстройки частоты тоже поменял значение,вместо 199 стал 195

И это правильно. У каждого своя модуля индивидуальная подстройка. В данном случа приемник подстроился под передатчик.

polarfox:

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

Регистры частот - без разницы, лишь бы сохранялась последовательность. Подстройка частоты - лучше вычисленная при rebind.

korwins:
  1. Я не нашел, какого типа сигнал PPM идет из моего передатчика (JR/Turnigy или Futaba совместимый). Соответственно, принципиально ли это?

Нет. Более того, подключив передатчик к модулю и включив на последнем отладку (R6=3), Вы увидете сколко каналов идет с РУ и какой у них диапазон, а следовательно и тип.

korwins:
  1. Общий набор: OrangeRx Open LRS 433MHz 9Ch Receiver, OrangeRX Open LRS 433MHz Transmitter 1W ( JR Compatible), OrangeRX USB Firmware Update Kit for JR/Futaba Style Transmitter Module - является достаточным для того, чтобы на первых порах получить канал управления моделью на 433? Цена, к сожалению, не на последнем месте…

Почти. Нужно еще чем-то проверить и при необходимости поправить фьюзы Мег. Если в составе Update Kit есть SPI программатор, то все ОК, если нет, желательно что-бы где-то рядом такой был (правка делается один раз).

korwins

Спасибо, SPI программатор есть, это не проблема. Буду пробовать!

polarfox

Александр,спасибо.Ещё один вопросец.В руководстве к передатчику есть фраза ,касающаяся подстройки частоты:“2 - Freq Corr – индивидуальная поправка частоты. Позволяет точно синхронизировать частоты приемников и передатчиков. Обычно лежит в пределах 180-220. Подстройку можно производить по параметру A= выдаваемым приемником, добиваясь близости значения к 0/255.”
Что это за параметр А?Где его смотреть?Или это аналоговый режим РССИ?

PARSEK
polarfox:

A= выдаваемым приемником

Приемник по UART выдаёт во время работы. Смотреть в терминале.
У меня тоже были проблемы с биндом, после замены RFM23BPS в передатчике, приёмник никак не хотел биндиться с передатчиком, в автомате ловил 1-2 канала только, процесс бинда не прекращался.
Помогло уменьшение регистра 2 в передатчике до 185-190, после этого бинд стал проходить быстро и чётко.

baychi
polarfox:

Подстройку можно производить по параметру A= выдаваемым приемником, добиваясь близости значения к 0/255."

Сейчас еще добавлена команда Fxxx на передатчик и удобнее всего при наличии рации (или частотометра), подстроить передатчик по рации. Например выбставить на ней 433.075 МГц (1-й канал LPD) с минимальным шагом. На передатчике дать команду F0 и по подстраивать смещение кнопками ‘<’ и ‘>’ по чистоте звука. Для запоминания нажать Enter. А приемник уже подстраивать под настроенный передатчик командой rebind или вручную.

тигромух

Я тоже накопил парочку вопросов 😃

Александр, у вас в доке написано, что обычные значения регистра 2 “в пределах 180-220”. Я подстраиваю одноваттный орандж под сканнер в режиме частотомера и получаю лучший результат при значении регистра в 127. И при этом не дотягиваю до точного значения еще около 10кГц.
Соответственно, ребинд нормально не проходит. Находит один или два канала и все.
Если вписать каналы в приемник вручную - все работает, но непонятно как корректировать частоту, ведь команды Fx на приемнике почему-то нет.

Еще поэкспериментировал с таким приемником в качестве источника PPM (для ретранслятора).
Примерно от 0% до 30% стика газа передатчик вообще не реагирует на него, показывая 988. Выше - все ок.
Это какой-то нестандартный PPM? Как-то проверить без осциллографа можно?

BAU
тигромух:

ведь команды Fx на приемнике почему-то нет

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

baychi

Код в регистре 9 (RFMки) влияет на частоту изменением емкости на кварце. Что бы этот механизм работал, старший бит должн быть 1. Так что реальный диапазон регулировки +/- 64 относительно 192-х. Я пока не встречал модулей с коррекцией менее 195 или больше 215. Либо у Вас на RFM ее кварц аномальный, либо кондеры, либо Ввы подстраиваете частоту под неверный источник. Можно попробовать что-то сделать аппаратно, или задействовать регистры поправки частоты.
Команды Fxxx на приемнике нет, но можно туда временно залить прошивку передатчика.
Насчет странного PPM: гляньте какие длительности выдает прошивка в режиме R6=3… Там от 800 мкс ловится.

тигромух
baychi:

Код в регистре 9 (RFMки) влияет на частоту изменением емкости на кварце. Что бы этот механизм работал, старший бит должн быть 1.

Да, я смотрел код и даташит, однако факт. Могу завтра показать табличку изменения частоты в зависимости от регистра 2.

Кажется, нашел источник моих проблем. Это мелкий баг в строчке 662 в rfm22b.ino
Serial.print(fCh%1000);
Вместо 433.075 рисует 433.75. Мне кажется у меня в маяке такой же баг возможен, надо будет проверить 😃
Отстроил с точностью до килогерца. Теперь все нормально, спасибо 😃

baychi
тигромух:

Вместо 433.075 рисует 433.75. Мне кажется у меня в маяке такой же баг возможен

Врядли дело в этом. 700 кГц разности - никаким 9м регистром не перекрыть…
А ошибочку в коде можно заткнуть строчкой
if(fCh < 100) Serial.write(‘0’);
перед
Serial.print(fCh%1000);