Прошивка для приемников Open/Orange совместимая с LRS Expert 2G/Tiny

Прошивка для приемников Open/Orange совместимая с LRS Expert 2G/Tiny

Открытый проект. Базируется на исходных текстах Open LRS, KHA и моих исследованиях протокола Expert LRS. Исходники, выложены здесь (версия 8):
github.com/baychi/OpenTinyRX

Руководство пользователя - github.com/baychi/…/Руководство-пользователя

Прошивка предназначена для совместной работы приемника Open/Orange LRS с передатчиками LRS Expert Tiny и 2G (2G не проверял, за отсутствием, но должна работать). Прошивка компилируется в 2-х вариантах: под оригинальный приемник Tiny/2G (BOARD_TYPE = 1) и под приемник Open/Orange V2 (BOARD_TYPE = 2)
Все основные функции, включая управление через меню, аналогичны прошивке Tiny/Orange от Expert. Ниже описываются отличия:

Чего нет

  1. Автоматического сканирования эфира и выбора каналов. Эту функцию планирую добавить в софт для ПК. При необходимости, можно загрузить в приемник прошивку Orange/Expert, выполнить автосканирование и биндинг, а затем загрузить данную прошивку – назначение и положение регистров в EEPROM совпадают.

Что добавлено

  1. Контроль за целостностью прошивки и настроек (регистров). При обнаружении несовпадения КС FLASH или EEPROM, приемник выдаст на UART предупреждающее сообщение и будет 30 секунд мигать красным индикатором, прежде чем начать работу. Категорически не рекомендуется пытаться летать в такой ситуации.
  2. Для сброса настроек в положение по умолчанию (заданных в исходном тексте), нужно установить перемычку между 5 и 6 вых. каналам. Подтверждение сброса настроек – 8 миганий красного индикатора.
  3. Поддержка SAW фильтров. Выход GPIO2 RFM может управлять отключаемым фильтром. Регистры 25 и 26 определяют нижнюю и верхнюю границу полосы пропускания фильтра (в номерах каналов). Если текущий номер канала находится в этом диапазоне, на GPIO2 выводится высокий лог. уровень (фильтр включен). В противном случае, а также при работе маяка, фильтр отключается низким логическим уровнем на GPI02.
  4. Настройки маяка. Регистры 19,20,24, определяют частоту маяка (19), максимальный уровень мощности (20,допустимы значения 0-7), соответствующие 4-м посылкам (регистр 20, задает максимум, остальные 3 посылки идут с постепенным понижением мощности до 0) и время в секундах до начала работы маяка (24) после наступления FailSafe. Настройки частоты и мощности введены отчасти для поддержки неотключаемого SAW фильтра, что бы обеспечить попадание маяка в полосу его пропускания и ограничить мощность (обычно не более 10 мВт – код 4). Если регистр 19=255, маяк отключается.
  5. Режим вывода RSSI, как отношения сигнал/шум. На UART, помимо стандартного параметра R=, выдается параметр Rn=ххх. Это уровень шума на данной частоте, измеренный в паузе перед приемом пакета. Параметр Rn=, введен вместо бессмысленного вывода управляющего байта (TT=192). Аналоговый выход RSSI работает в зависимости от настроек регистров 40 и 41. При R40=0 выдается потерянные пакеты (би-би), При R40=>1 и R41=0, выдается стандартный RSSI принятого пакета, при R41=1 выдается отношение сигнал/шум – разность между уровнем пакета и уровнем паузы. Заметил, что пакеты начинают биться, когда отношение сигнал шум меньше 10-15 дБ (20-30 попугаев).
  6. Регулируемое усреднение аналогового RSSI. Значения от 2 до 255 в регистре 40 задают степень усреднения RSSI выдаваемого через аналоговый выход или PWM. Единица усреднения по времени в регистре 40 это приблизительно 32 мс. Так если R40=10, вывод усредняется по 10 последним значениям, на интервале 1/3 сек.
  7. Вывод RSSI в виде PWM/PPM. Если регистр 42 имеет значение от 1 до 12 (макс. кол-во каналов), значение данного выхода заменяется уровнем RSSI (или отношением сигнал/шум в зависимости от значения регистра 41). Уровню 0 соответствует длительность 1000 мкс, уровню 250 – 2000 мкс. При 0-ом значении регистра 42, подстановка запрещена.
  8. Статистика полета в EEPROM. 36 записей с интервалом в 1 минуту (для Mega168 только 16). Каждая запись содержит номер полета, количество пропаданий связи (FS), флаг FS в момент записи, счетчики потерь пактов по 8-ми каналам прыжков, средний уровень RSSI по каждому каналу, средний уровень шума по каждому каналу. Статистику можно после входа в меню. Если вместо номера регистра ввести ‘ss’ будет отражена статистика потерь пакетов и FS. При вводе ‘sl’ выдается статистика уровней сигнала и шума. При вводе ‘se’ архив статистики стирается (прописывается FF-ами). Любое другое сочетание ‘sx’ выдает полную статистику (лучше всего сохранять в файл). Запись статистики включается/отключается регистром 4 (при R4=1 запись включена).
  9. Приемники сателлиты. Если на приемнике Орандж установлена перемычка между 9 и 10 каналом (разъем I2C, для приемника Tiny/2G надо замкнуть 9-й канал на GND), он становится сателлитом (вспомогательным приемником). И вместо обычной статистики передает через UART принятые пакеты. На модели может быть один главный приемник и до 4-х приемников сателлитов. Сателлиты подключаются к главному приемнику цепочкой через интерфейс UART: выход TX первого сателлита подключается к входу Rx главного приемника; выход TX второго сателлита подключается к входу Rx первого сателлита и так далее. Сателлиты не выводят в начале работы заставку, но в течении 5 сек также доступен вход в меню (m). Назначение остальных выходов приемников не меняется (сателлиты продолжают выдавать PPM/PWM если это кому-то может пригодиться). Основной приемник использует пакет от сателлитов, если свой пакет не принят. На выходе UART это отображается строчкой $SAT.
  10. Произвольный выбор первого PWM канала при работе в режиме PPM. Если на каналах 1-2 установлена перемычка, через канал 3 выдается комплексный PPM. Регистр 28 позволяет назначить номер первого приемного канала для выхода 4. Остальные выходы (5-10) будут выводить каналы начиная с R28+1. Значение R28 по умолчанию = 4 (4-й канал на 4-м выходе).
  11. Увеличение хода серв на 150% (как в приемниках 2G от Expert). Регистр 3 задает номер канала, значение которого увеличивается на 150% относительно нейтрали (1.5 мс). Можно задать 2 канала;
  12. Механизм автокоррекции частоты. Если фиксируемое отколнение частоты при приеме пакетов превышает некий порог (5) поправка частоты выводимая через PLL корректируется на эту величину.
  13. Поддержка сторожевого таймера. У Эксперта в приемниках Tiny/Orange этого реально не было.
  14. Определение типа микросхемы ATmega168/328. В зависимости от типа меняется объем статистики.
  15. Измерение уровня шумов. При работе меню команда nfb-fe (или Nfb-fe, или просто N/n) делает замеры уровня шума (RSSI от RFM) по каналам прыжков начиная от fb до fe (0-254), выдавая минимум, среднее и максимум за 200 замеров по каждому каналу. Если ‘N’ заглавная, помимо цифр, выдается псевдографик.
  16. SBUS выход;
  17. Дискретные выхода;
  18. Автоматическая привязка к передатчику.

Что изменено

  1. Выдается 10 PWM каналов (для серв). 8 идет через общую гребенку и еще 2 через 4-х контактный разъем I2C.
  2. Комплексный PPM гонится через 3-й выходной канал, если между первым и вторым каналами установлена перемычка. PWM импульсы при этом продолжают выводится на каналах 4-10. Регистр 28 может задать другой первый канал, через выход 4. Остальные – последовательно от 4-го.
  3. До приема первого целого пакета, выходные сигналы PWM/PPM отсутствуют (нет импульсов вообще). Как это принято в большинстве современных LRS. И маяк не запустится, до первой связи. После получения первого пакета, именно он, а не состояние FS, выводится на сервовыходы.
  4. После потери связи, синхронный прием пакетов (31.5 мс на канал) поддерживается в течении 2 сек (константа в config.h). И только после этого переходим в режим сканирования (250 мс на канал).
  5. Маяк взят из прошивки KHA. Гонится 4-е тональных посылки длительностью по 0.5 сек, разного тона на разной мощности. Между посылками пауза 5 сек. Управление маяком через регистры 19-24, как описано выше.
  6. В состоянии FS все индикаторы гасятся, это позволяет экономить энергию в режиме маяка. Работа маяка отображается 4-мя короткими вспышками красного индикатора.
  7. Вместо параметра D=57, выводится S=xx - счетчик записей статистики/минут от старта (если она разрешена).
  8. Предусмотрен выход из меню. Ввод q (или Q) вместо номера, ведет к началу обычной работы приемника.
  9. Ускорен старт приемника. При включенном передатчике он запускается примерно за 0.5 сек.
  10. При отсутсвии принятых пакетов (строки $RLxx), дополнительн выдается номер канала C= и уровень шума Rn=.
  11. Причесанно меню, добавлены внятные комментарии к регистрам. Неиспользуемые регистры не отображаются (хотя их можно менять).
  • 8000
Comments
tusik

А с родным передатчиком Open/Orange работать будет?

baychi
tusik;bt104530

А с родным передатчиком Open/Orange работать будет?

Одновременно - нет, разумеется.
Грузите оригинальную прошивку и будет работать с родным передатчиком.

Necromant

Супер, отличные нововведения! А сложно ли через UART организовать соединение двух приемышей “master\slave” для работы в режиме диверсити? Как вариант получать со второго приемыша PPM и какой-нибуть бит информирующий о сработавшем Failsafe. Мастер в случае потери связи(допустим 5-10 пакетов пропуска) нюхает бит связи на втором приемыше, и если у того связь есть(у слэйва тоже надо снизить количество пакетов до фэилсэйва, допустим до 5), то берет значения PPM и гонит их на свои выхода до появления целых пакетов.

baychi
Necromant;bt104536

А сложно ли через UART организовать соединение двух приемышей “master\slave” для работы в режиме диверсити?

Да, нечто подобное планируется. Сейчас обдумываю приоритеты. 😃

Necromant

два диполя в горизонт бросить на крыло крестом - клевая связь будет. И ничего вверх и вниз не торчит. Да еще и с видео разную поляризацию получим. 😃

baychi
Necromant;bt104538

два диполя в горизонт бросить на крыло крестом - клевая связь будет. И ничего вверх и вниз не торчит. Да еще и с видео разную поляризацию получим. 😃

Добавил сателлиты. 😃

ВладимирВл

Приобрел оранжОпенЛРС приемник и попробовал Вашу прошивку под Эксперт2Г…работает вроде неплохо.
Но в редактировании исходников и некоторых тонкостях ПВМ-ППМ и РФМ разбираюсь очень плохо. Отсюда ряд вопросов возник(помидорами не кидайтесь плз).
Какой алгоритм и приборы необходимы для подбора второго регистра? Я так понял это точная настройка частоты приемника(корректировка заводского разброса параметров радиомодуля, кварцев и т.д.)…
По регистрам настройки РССИ - какие значения вбить для подключения к большинству ОСД(которые меряют по величине напряжения)? Так понимаю для сглаживания показаний необходим фильтр на выходе РССИ приемника? Типа RC…какие номиналы подойдут?
РССИ снимать с одноименного выхода приемника?
На приемнике два светодиода, оба красных. Один отображает принятые пакеты, второй пропущенные - судя по логике их морганий?
Если нет SAW фильтра, значения регистров его настройки корректно оставить как 255?
Заранее спс за потраченное время!

baychi

2-й регистр: Включаете передатчик на средней мощности, даете ему прогреться минут 5. Затем включаете приемник, подключенный к терминалу ПК. Несколько секунд смотрите статистику, затем нажимаете м и входите в меню. Если параметр А= близок к 0 (меньше 3-х) или 255 (больше 252), то можно ничего не менять. В противном случае лучше подстроить 2-й регистр. Запишите в него 0 и выйдите из меню (q). Затем клавишами < и > подгоните значение А= к 0/255 и нажмите Enter.

По мганию диодов - все правильно понимаете. Красный еще мигает, когда маяк передает. Или в начале при неисправности настроек или программы.

Если нет SAW, то без разницы как стоят его регистры.

ВладимирВл

По РССИ подробностей не подскажите?

baychi

На выходе RSSI предпологается RC фильтр - конденсатор 0.1-1 мКф в дополнении к 1 кОм резистору. Это для ШИМ. Плюс программное усреднение RSSI: я использую коэффициент 7-10.

ВладимирВл

Спасибо за информацию.

ВладимирВл

А на передатчик Оранжа прошивка не планируется с данным протоколом?

baychi

Да. Как раз сейчас делаю. Основное уже работает. Выложу в открытый доступ, как только добавлю то, чего нет у Эксперта.

Shuricus

12. Механизм автокоррекции частоты. Если фиксируемое отколнение частоты при приеме пакетов превышает некий порог (5) поправка частоты выводимая через PLL корректируется на эту величину.

Александр, не смог осилить этот пункт. Это с подстройкой АФЦ как-то связано?

И такая идея возникла - можно ли написать софтово, что бы приемник сам выполнял автоматическую подстройку АФЦ по команде?

baychi

AFC - это автоподстройка частоты самой RFMки. Она, естественно, включена. При ее работе, помимо подтяжки своей частоты к частоте передатчика, вычисляется погрешность - насколько пришлось подтянуть.
Я беру эту погрешность, усредняю, и когда она стабильно превышает 5 туграков (примерно 2.5 кГц), ввожу дополнительную поправку частоты в кварц. Тем самым стремлюсь, что-бы AFC работала с минимальным отклонением. Как бы облегчаю ей жизнь. И тем самым сохраняю максимальную чувствительность.

Shuricus

То есть это автоподстройка автоподстройки? 😃

А все же настройку AFC можно реализовать автоматом, вместо ручного процесса? Программа же может сама отследить смещение и прописать нужное значение в регистр? Или это уже лишнее?

baychi

Да.
В регистр подстройки кварца RFMка сама не пишет.
Моя программа приемника - пишет. Собственно это и есть, программный AFC, в дополнение к аппаратному.

Shuricus

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

Shuricus

Перепост на тему фьюзов:

FD (оно же 05 или любое другое сочетание xxxxx101b )- это главное для целостности настроек и прошивки.
Остальное, если работает, можно не трогать.
DA вместо DC - это размер загрузчика 1024 байт вместо 512. Я использую megaload - ему надо даже меньшьше 256 байт…
C FF вместо DE не очень понял - так как младшие 4 бита определяют истоник тактирования. Но вроде и то и другое - работает нормально.

feosky

Не понимаю почему не могу забиндить приемник Оранж к tiny lrs expert.
Пробовал с джампером и через rebind. Бинда нет.

UPD: Разобрался, автопоиска, то нет )))

gpp

Кто-нибудь может собрать прошивку для приемника 1w от Orange?