OrangeRx Open LRS 433MHz TX Module
Господа знающие! Подскажите, пожалуйста, каким образом делается Hopping? То есть, не принципиально (прибавлением номераканала*шаг к основной несущей) - а в общем алгоритме? Как приёмник и передатчик синхронизируют свои переключения частот? Я так понимаю, сетка прыжков заливается в них ещё при программировании. Допустим, передатчик передаёт пакеты по очереди на каждом канале. Если приёмник не синхронно будет прыгать по каналам - он ничего не словит… Или приёмник ждёт пакета на 0 канале (на несущей), и после прихода первого начинает прыгать дальше? Как тогда рассинхрон по времени убрать? Иначе ведь может ошибка накопиться, или можно пакет не с начала начать ловить, а с середины?
Отвечу по прошивке KHA, т.к. с ней разбирался:
- базовая частота и номера каналов прыжков заливаются в приемник при бинде. Если изменить настройки каналов передатчика, а потом снова забиндить - то все будет ловить.
- Само собой, что если не синхронно - то ничего не словит. Но приемник будет ждать на одной из частот, пока не прийдет пакет. Пришел - и дальше по очереди.
- Пакет не с начала, а с середины приемник принять в принципе не может, сам радиомодуль RFM22B так работает, что сначала он ищет преамбулу (серию 0101…0101), потом синхрослово (специальные несколько байт) и только после этого уже идут данные, в конце - контрольная сумма. Если или в преамбуле помеха, или в синхрослове - за пакет это не будет воспринято, и прием данных НЕ начнется. Если прием данных произошел, но контрольная сумма не совпадет (для этого достаточно что бы 1н бит был “не такой”) - пакет будет воспринят как неверный и он также не повлиляет ни на что.
Так работает сам чип, вне зависимости от прошивки, хоть от Александра, хоть Эксперта, хоть KHA и т.д. У него есть и другие режимы работы (Direct Mode), но железо приемника сабжевой железки его не поддерживает, только передатчик.
Но приемник будет ждать на одной из частот,
На какой из?
Приемник сначала ловит преамбулу (2 байта),
Александр, а у Эксперта 2 байта??? Ппц… Дык тогда понятно, почему нету AFC… Она просто не заработает с преамбулой 2 байта… Гляньте даташит, раздел по AFC. Без антенна диверсити и с AFC преамбула (на сколько я помню) должна быть минимум 28 бит (или что-то такое, но явно не 2 байта). Сейчас даташита нет под рукой, я с медленного инета. Проверьте. На сколько я помню - то так.
Даже если приемник случайно словит середину кадра, CRC не сойдется и пакет будет отброшен.
Шанс что в давнных окажется хотя бы 16 бит 0101…0101, а потом сразу нужное синхрослово - мизерный. Практически нулевой. А без этого чип выставит неверную преамбулу, и перейдет в режим поиска преамбулы, в соотв с его алгоритмом работы. Я бы сказал, что шанс этого чуть-чуть больше шанса встретить на улице динозавра 😃))
Ппц… Дык тогда понятно, почему нету AFC… Она просто не заработает с преамбулой 2 байта… Гляньте даташит, раздел по AFC
Ошибаетесь, AFC достаточно 2 байт.
"When selecting the preamble length, the length needs to be long enough to settle the AFC. In general two bytes of preamble is sufficient to settle the AFC. "
Без антенна диверсити и с AFC преамбула (на сколько я помню) должна быть минимум 28 бит (или что-то такое, но явно не 2 байта).
Наоборот. Это для диверсити требуется более длинная преамбула. Почему Эксперт и не хочет вводить диверсити.
Шанс что в давнных окажется хотя бы 16 бит 0101…0101, а потом сразу нужное синхрослово - мизерный.
В пакете могут встретися любые комбинации данных, в том числе и вышеуказанные. Само по сбе это не редкость. Другое дело, что одновременное сочетание фиктивной преамбулы, синхрослова и случайное совпадения CRC16 - практичести невозможно. Хотя теория передачи информации рассматривает и такой случай. Например в телемеханике есть требования к вероятности приема ложного пакета, как своего, и они лежат на уровне 10^-9 … 10^-12, а это круче, чем 2^32. 😃
Почему Эксперт и не хочет вводить диверсити.
А кто вас сделал мои личным пресс атташе?
Никакого отношения дивесити к преамбуле не имеет вААпще.
Может хватит уже этот бред нести?
Никакого отношения дивесити к преамбуле не имеет вААпще.
"When antenna diversity is enabled, it is
advised to use a 20 bit preamble detection threshold. When the receiver is synchronously enabled just before the
start of the packet, then a shorter preamble detection threshold might be chosen (e.g., 8 bit).
The required preamble length is determined from the sum of the receiver settling time and the preamble detection
threshold. "
Может хватит уже этот бред нести?
Тогда будем разбирать баги в Вашем протоколе. 😃 Наример Ваша дополнительная CRC8 для контроля пакета не защищает байт старших бит канальных импульсов и управляющий байт. Почему?
и чё? ну я же не по этому дивесити не делаю - что я байт один поправить не в силах.
что я байт один поправить не в силах.
Это требует изменения протокола, то есть ведет к неполной совместимости.
И про удилнение преамбулы Вы сами неоднократно писали. Хотите процитирую? 😃
Почему?
“Почему?” ну плохо сдираете! раз такие вопросы задаёте.
Это требует изменения протокола
протокол за час меняется+ еще пол часа портировать на тини и оранж
Добавил статисткику в проект Open Tiny RX.
Пишу по циклу до 35 записей в EEPROM с интервалом 1 минута (можно меньше). Писать во FLASH так просто не выйдет, нужно свой загрузчик лепить, да и запрет прерываний на 10 мс трудно увязвть с общей работой. Поэтому пока EEPROM, ИМХО полчаса для эксприментов с антеннами вполне достаточно.
Для вывода статистики нужно войти в меню и вместо номера регистра ввести s.
Формат вывода (лучше сразу писать в файл) такой:
Last statisics: 902
FN cnt FSn InFS Drops:1 2 3 4 5 6 7 8 RSSI:1 2 3 4 5 6 7 8 Noise:1 2 3 4 5 6 7 8
2 1 0 0 100 99 99 99 99 99 99 99 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 2 0 0 0 0 0 0 1 0 0 1 121 122 121 122 119 121 121 119 27 29 28 32 30 28 28 29
2 3 0 0 0 1 0 0 0 0 0 0 120 118 118 118 118 118 118 116 29 29 29 33 30 28 28 29
2 4 0 0 0 0 0 0 0 0 0 0 119 116 118 115 115 115 116 115 28 29 29 32 29 29 28 30
2 5 0 0 0 0 0 0 0 0 0 0 120 117 118 116 115 115 116 114 28 29 29 33 30 29 28 30
2 6 1 1 71 71 70 70 70 71 70 70 119 115 119 116 116 113 116 113 27 29 29 33 29 28 28 30
2 7 0 1 18 18 18 18 18 18 18 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 8 0 1 18 18 18 18 18 18 18 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 9 0 1 18 18 18 18 18 18 18 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 10 0 1 18 18 18 18 18 18 18 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 11 0 1 18 18 18 18 18 18 18 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 12 0 0 10 10 11 11 11 11 10 11 125 121 122 120 121 119 121 118 28 29 28 33 29 28 28 29
2 13 1 1 58 58 57 57 57 58 57 57 126 123 125 122 124 120 124 119 27 29 28 32 29 28 28 29
2 14 0 1 22 22 23 23 23 23 23 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 15 0 1 18 18 18 18 18 18 18 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 16 0 1 18 18 18 18 18 18 18 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3 1 0 0 6 5 5 5 5 5 5 5 119 119 119 119 120 117 119 117 25 26 25 29 26 25 25 27
3 2 0 0 0 0 0 1 0 0 0 0 118 116 118 114 117 114 117 113 25 26 25 28 25 25 25 26
3 3 0 0 0 0 0 1 0 0 0 1 132 131 131 130 131 129 131 129 25 26 26 29 26 26 25 26
Номер полета (1-99), номер записи полета (1-35), кол-во FS за минуту, флаг нахождения в FS при формированиии записи. Затем 8 счетчиков потерь по каналам прыжков. Затем 8 средних уровней RSSI и 8 средних уровней шумов.
Команда ‘se’ позволяет очистить статистику в EEPROM (рекомендуется сделать разок).
Прошивку с исходниками (версия 3) положил сюда: files.mail.ru/41FEDA32FCDD4B26AA268214645FF1FD
Никакого отношения дивесити к преамбуле не имеет вААпще.
Да неужели? В даташите другое написано…
раз такие вопросы задаёте.
Это я просто подкалываю. 😃 Уверен, что правды от Вас все равно не услышу. Как всегда… 😦
Ошибаетесь, AFC достаточно 2 байт.
Да вроде как нет…
Даташит, страница 47 (chapter 6.7. Preamble Length, таблица 14):
(G)FSK AFC Enabled
Approximate Receiver Settling Time: 2 byte
Recommended Preamble Length with 8-Bit Detection Threshold: 28 bits
Recommended Preamble Length with 20-Bit Detection Threshold: 40 bits
Итого, если у Эксперта преамбула детектится по 1му байту, то рекомендуется 28 бит длинна. Если по 2,5 байтам, то рекомендуется 5 байт длинна. 2 байта преамбула это минимальная возможная длинна, если преамбула будет детектироваться по 1 нибблу (4 битам). С antenna diversity преамбула еще более длинной должна быть.
Что у Эксперта пишется в регистр 0х35h? Какое значение?
Что у Эксперта пишется в регистр 0х35h? Какое значение?
0x22.
AFC работает нормально, это видно по выдаваемой статистике.
PS: Я Вам тоже даташит цитировал, только минимальное значение преамбулы, а не рекомендуемое.
0x22. AFC работает нормально, это видно по выдаваемой статистике. PS: Я Вам тоже даташит цитировал, только минимальное значение преамбулы, а не рекомендуемое.
2ва байта детектирование преамбулы… И при этом еще работает… Гмм… Передатчик точно 2ва байта преамбулу шлет, не больше? Не должно так оно работать, исходя из описания в самом даташите. После детектирования преамбулы чип переключается в более точный по jitter режим, и начинает настраиваться на синхронизацию с передатчиком. Это так называемое receiver settling time. Происходит это после того, как преамбула детектирована, т.е. если передатчик шлет только 2 байта преамбулы, и приемник детектирует 2 байта, то ему не остается время подстроиться, не говоря уже про AFC.
Что в передатчике у Эксперта по длинне преамбулы?
Вы забываете, что там Манчестер.
Что в передатчике у Эксперта по длинне преамбулы?
То-же 0x22 в 35 и 4 в 34о-м.
Добавил в Open Tiny RX поддержку приемников сателлитов. Версия 4 лежит здесь: files.mail.ru/6F0EA2E1DA6343EAB694BCAF9399C132
На модели может стоять один основной приемник и до 4-х приемников сателлитов. Саттелит отличается от обычного приемника перемычкой между 9 и 10 каналом (разъем I2C). Сателлит присоединяется к основному приемнику через разъем UART: Tx сателлита подключается к Rх ножке главного приемника. Если сателлитов несколько они соединяются цепочкой: Tx второго сателлита соединяется с Rx первого, и так далее.
Выход UART Tx главного приемника работает как обычно. Все остальные выхода (PWM/PPM) и режимы у главного приемника и сателлитов работают как обычно.
Обмен между сателлитами и главным приемником - двоичный пакет 16 байт. Обмен защиен CRC8. На скорости 38400 пакет от первого сателлита приходит с задержкой в 4 мс, от второго 8 и т.д (можно включить 115200, будет в 4 раза быстрее). Логика основного приемника проста: если свой пакет не принят, а через небольшое время поступил целый пакет сателлита, используем его вместо своего.
Замечу, что сателлиты не передают главному приемнику номер линка. Поэтому с их помощью можно делать хитрые схемы, типа управления моделью двумя передатчиками, использование одновременно 2-3 каналов связи с разными частотами и даже диапазонами работы. В общем - богатый простор для творчества. 😃
Еще из мелочей в новой прошивке:
- Причесанно меню, добавлены коментарии к регистрам.
- Поправлены ошибки вывода статистики. Объем статистики увеличен до 36 записей.
- Добавлены разные режимы вывода статистики: только потери пакетов (ss), только уровни приема (sl) или все вместе sa (так удобнее смотреть).
- Запись статистики сделана отключаемой (0 в регистре 3).
- Работа маяка сделана отключаемой (FF в регистре 19)
- Саттелит не выводит никакой заставки, но в течении 5 сек можно войти в его меню (m), как и на основном приемнике.
PS: В общем мои доработки софта приемника Tiny близки к заверешению. Осталось проверить порт этой прошивки на оригинальный приемник Tiny от Эксперта и пока все. Если есть у кого пожелания - пишите.
Ну вот, теперь очередь к Диме опять на полгода будет, теперь за сателлитами 😃
Собственно теперь и фильтр не так актуален. понатыкал антенн 4 шт. кто-нибудь и поймает.
Александр СПАСИБО.
бОльшего и желать нечего.
Спасибо.
теперь очередь к Диме опять на полгода будет, теперь за сателлитами
У него удобные сателлиты, кстати, маленькие. И UART вроде есть…
Но данная прошивка пока рассчитана на Орандж. Впрочем, доработать не долго. 😃
У него удобные сателлиты, кстати, маленькие.
вот и я про что. сателлит в плоскость крыла. и три проводка к основному приемнику.
При расстыковке крыльев не нужно ВЧ кабель трогать.
Очень удобно. (для X8 например)
Не говоря об основных преимуществах сателлитов.
вопрос.
скорость UART нужно у Всех приемников и сателлитов ставить одинаковую? ( не отражено в комментариях)
и можно ли выставить 57600 например? (в комментах “можно включить 115200, будет в 4 раза быстрее” звучит как-то или 38400 или 115200.)
скорость UART нужно у Всех приемников и сателлитов ставить одинаковую? ( не отражено в комментариях)
Само собой, одинаковые скорости.
в комментах “можно включить 115200, будет в 4 раза быстрее” звучит как-то или 38400 или 115200.)
Я даже не проверял 115200. Какая разница 1 мс или 4, если цикл приема пакетов 31.5 мс?
Предпочитаю более низкие скорости из-за их потенциальной помехоустойчивости.
Собственно теперь и фильтр не так актуален.
В этом я не уверен. Второй сателлит должен дать значимую помехозащищенность. По прогнозам 6-10 дБ. А вот остальные уже мизер добавят. А если помеха мощная, может глушить всех сразу. Фильтры я пока буду ставить.