OrangeRx Open LRS 433MHz TX Module
Кстати в прошивке приемника от Эксперта подстройки частоты и тем более температурной компенсации так и не увидел (надеюсь, она есть в передатчике). Регистр АЦП термометра читается один раз в начале работы и просто выводится на экран заставки (T=). В процессе работы один раз (!) делаетс такая штука: на 10 пакетов обнуляется AFC_LIMITER (фактически это запрет автоподстройки для RFMки), на экран выводится af5, а через 10 пакетов ok. И все! Никаого воздействия на 9-й регистр или регистры коррекции частоты не делается. Это фактически тест: свалтся связь при отключенной AFC в RFMке, или нет. ИМХО - это очередной миф Дмитрия. Так-же как “фирменная технология AGC” сводится к установке бита 6 в 69-ом регистре.
Александр, а Вы как-то дизассэмблируете код? Или как Вы его смотрите?
Спасибо всем большое, удалось сконектить orange и Rmilek! Будем вечером испытывать!
а что нужно сделать с приёмником орандж чтоб его в качестве спектроанализатора заюзать ? и каким софтом снимать показания ?
приёмник и програматор ещё едут поэксперементировать не могу , но хочу подготовится
Спасибо всем большое, удалось сконектить orange и Rmilek! Будем вечером испытывать!
не за что , отпишись как связь по сравнению со штатным приёмником, разобрался как rssi с него снять ?
а что нужно сделать с приёмником орандж чтоб его в качестве спектроанализатора заюзать ? и каким софтом снимать показания ?
Скачать это, подключить через подобную штуку.
И сделать вот это.
TX: Put TX into binding mode and connect with GUI (may need to press update once).
RX: put jumper on output pins 3 and 4 (CH2&3 by default). This will force the RX to act as spectrum scanner, both LEDs will be off in this mode.
Отпишусь конечно! С rssi разобрался (правда не я а мой товарищ) в прошивке есть инструкция со схемой! Как сделаю, отпишусь как работает! А для того чтобы сигнал с маяка ловить, я так понимаю рация нужна?
Вы как-то дизассэмблируете код?
Да, любым дизассемблером для Atmeg.
@baychi, Expert
Господа знающие! Подскажите, пожалуйста, каким образом делается Hopping? То есть, не принципиально (прибавлением номераканала*шаг к основной несущей) - а в общем алгоритме? Как приёмник и передатчик синхронизируют свои переключения частот? Я так понимаю, сетка прыжков заливается в них ещё при программировании. Допустим, передатчик передаёт пакеты по очереди на каждом канале. Если приёмник не синхронно будет прыгать по каналам - он ничего не словит… Или приёмник ждёт пакета на 0 канале (на несущей), и после прихода первого начинает прыгать дальше? Как тогда рассинхрон по времени убрать? Иначе ведь может ошибка накопиться, или можно пакет не с начала начать ловить, а с середины?
Допустим, передатчик передаёт пакеты по очереди на каждом канале. Если приёмник не синхронно будет прыгать по каналам - он ничего не словит…
Вот именно поэтому он переключает частоты синхронно. Ему ведь тоже известна последовательность прыжков.
Или приёмник ждёт пакета на 0 канале (на несущей), и после прихода первого начинает прыгать дальше? Как тогда рассинхрон по времени убрать? Иначе ведь может ошибка накопиться, или можно пакет не с начала начать ловить, а с середины?
Перед началом связи приемник переключает каналы медленно, примерно 1 раз за цикл из 8 каналов. Как только первый пакет пойман, начинается синхронное переключение каналов. Даже если часть пакетов теряется, синхронизацию можно удерживать десятки секунд и даже минуты - ведь расхождение частот кварцев не превышает десятков PPM, а с учетом подстройки чатоты - оно еще меньше.
Но обычно через несколько секунд после потери связи, приемник вновь переводят в медленный режим поиска пакетов.
Даже если часть пакетов теряется, синхронизацию можно удерживать десятки секунд и даже минуты - ведь расхождение частот кварцев не превышает десятков PPM
То есть, прыжки делаются не по факту выполнения передачи пакета, а по времени? Ну, тогда с синхрой вроде бы проще. Хотя всё равно не совсем понятен механизм. По логике, передатчик должен иметь довольно широкий кадр, в середине которого находится собственно пакет. Чтобы приёмник успел переключиться и словить пакет не с середины, а с начала?
Хочу впилить hopping в проект OpenBee, а то он там заявлен, но походу не сделан.
По логике, передатчик должен иметь довольно широкий кадр, в середине которого находится собственно пакет.
Данных 16 байт (у LRS Expert). Всего 22 байта. Приемник сначала ловит преамбулу (2 байта), затем проверяет синхрослова (еще 2) и уже потом начинает принимать данные. В конце идет CRC16, так что целостность пакета известна. Даже если приемник случайно словит середину кадра, CRC не сойдется и пакет будет отброшен. Так как поток данных не сплошной - между пакетами есть паузы, рано или поздно прием состоится.
Господа знающие! Подскажите, пожалуйста, каким образом делается 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
Никакого отношения дивесити к преамбуле не имеет вААпще.
Да неужели? В даташите другое написано…