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

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);

тигромух
baychi:

Врядли дело в этом. 700 кГц разности - никаким 9м регистром не перекрыть…

Ну почти перекрыл же. 😃
Завтра покажу табличку - на работе осталась.
Все завелось после того, как я стал настраивать на .075, а не .75.
Получилось 214 на передатчике и 198 на приемнике (с прошивкой передатчика).

Насчет странного PPM:
PPM5 mode: T=53 Tc=-3 M=324 A=31
988 1199 1200 1201 1753
Еще и не все каналы иногда ловит.

baychi
тигромух:

Насчет странного PPM: PPM5 mode: T=53 Tc=-3 M=324 A=31 988 1199 1200 1201 1753 Еще и не все каналы иногда ловит.

Надо смотреть осциллом.
При отлове логика простая. Все что длиннее 800 мкс и короче 2500 - считается импульсом. Импульс длиннее 2500 мкс - межпакетной паузой.

Вы через PPM через ICP ловите или по прерыванию?
Если по прерыванию вот в этом месте (ppmsbus.ino)
#ifndef USE_ICP1 // неправильный режим - использованиие прерывания
pCntr++; // так как наш драйвер ловит оба фронта
if(!(pCntr&1)) { // половину нужно игнорировать
lastP=pulse;
return;
}
pulse+=lastP;
#endif
попробуйте поменять четность: if(pCntr&1) вместо if(!(pCntr&1)), может что даст?

тигромух
baychi:

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

Даташиты RFM и Si44 немного различаются. В даташите RFM сказано, что старший бит добавляет 3.7пФ к емкости, и по дефолту он в нуле (0x7F = ). А в даташите Si про него сказано только, что он нужен для грубой подстройки частоты и все. По дефолту тоже в нуле (0x40).

Вообще параметр крайне неочевидный: прерывный, нелинейный, да еще и имеет обратное действие: увеличивая значение (емкость), уменьшаем частоту.
Имхо лучше его вообще не трогать, ребинд подгонит его сам. 😃
Табличка.

baychi:

Вы через PPM через ICP ловите или по прерыванию?
Если по прерыванию вот в этом месте (ppmsbus.ino)

По прерыванию. Поменял код, результат такой же.
Еще заметил, что пока стик газа в нуле (988) на остальные стики реакции нет.
Ладно, это неважно, все равно 6-ти канальный ретранслятор - вещь бесполезная 😃

baychi
тигромух:

Вообще параметр крайне неочевидный: прерывный, нелинейный, да еще и имеет обратное действие:

Да, пожалуй в новом проекте, надо будет перейти на подстройку частоты через Frequensy offset (0x73,0x74), там и точность повыше - 156.25 Гц и нелинейности нет.

тигромух:

Поменял код, результат такой же.

По логике и не должно было.

тигромух:

что пока стик газа в нуле (988) на остальные стики реакции нет.

Не меняется код на входе? Или на приемнике. У Вас случайно R4=1 не стоит? Это специальный режим для ретрансляторов = прекращает передачу при отсутствии исходного сигнала, о оно определяется по выходу любого канала за пределы 1000-1999 мкс (рассчитано на настройку FS ретранслятора). Но коль у Вас при нижнем положении стика 988 мкс - эту фичу использовать нельзя.

тигромух:

неважно, все равно 6-ти канальный ретранслятор - вещь бесполезная

Жаль, что загадка осталась. Кто-то еще писал про подобное. А мне повторить не на чем.
Есть один 6-ти канальный ретранслятор. Внизу у него все в порядке. Проблемма когда все 6 каналов на максиммум ставишь (2 мс), он межканальную паузу меньше 2 мс оставляет. 😦
А вобщем-то обычные приемники приемники с sbus или PPM выходом - лучшее решение для ретранслятора. 😃

тигромух
baychi:

Да, пожалуй в новом проекте, надо будет перейти на подстройку частоты через Frequensy offset (0x73,0x74), там и точность повыше - 156.25 Гц и нелинейности нет.

Вы AFC разве не используете? Они же вместе не работают.
А чем плохо просто прибавить поправку в герцах к центральной частоте?

baychi:

Не меняется код на входе? Или на приемнике.

Смотрю на передатчике в отладке PPMа. R4=0. Передача не прекращается, просто все каналы замирают в своих положениях.

baychi:

А вобщем-то обычные приемники приемники с sbus или PPM выходом - лучшее решение для ретранслятора.

Да, я прицелился на 9-ти канальный DSM2 оранж с SBUS 😃

baychi
тигромух:

Вы AFC разве не используете? Они же вместе не работают.

Хочу уйти от AFC в новом протоколе. ИМХО, достаточно будет посткорекции. Нам точность важнее оперативности.

тигромух:

А чем плохо просто прибавить поправку в герцах к центральной частоте?

Строго говоря там не смещение, а kx, и нужно пересчитывать поправку в зависимости от частоты. С другой стороны на RFM69 регистра прыжков вообще нет…

Raider

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

baychi
Raider:

как доработать приемник чтобы показания RSSI не скакали постоянно.

  1. Поставить на выход первого разъема (RSSI) конденсатор в 1 мкФ между землей и сигналом.
  2. Использовать усредение с нужным коэффициентом в регистре 40 (обычно достаточно R40=10).
Raider

Конденсатор неполярный использовать? Или электролит?