реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Алгоритм отлова пакета в радио канале. Help pls!
G.Simenon
сообщение Dec 12 2016, 16:48
Сообщение #1





Группа: Участник
Сообщений: 9
Регистрация: 12-12-16
Пользователь №: 94 601



Ранее не приходилось работать с радиоканалом (любитель я), а когда попробовал, обнаружил большое количество шумов, мешающих выделить данные. Отсюда и вопрос.

Насколько могу сейчас понять, задачи две - распознать в потоке шумов саму посылку и синхронизироваться с частотой и тактами модуляции.
Видимо, преамбула предназначена для распознавания посылки и определения частоты модуляции, а последующий синхроимпульс - для определения "точки отсчета" последующих бит данных (тактов).

Гугление выдает не рассказы об алгоритмах, а то, что использует эти алгоритмы, как законченные модули. После чтения всего, что выдал гугль, сложилось лишь самое общее представление о том, как такие алгоритмы строятся. Но его маловато для написания своего алгоритма.

Насколько понимаю сейчас, все методы делятся на две группы. В одной из них, уровень сигнала сравнивается (по интервалам таймера) с предполагаемым в N-раз чаще (2, реже - 3), чем он должен меняться. Если смена уровня сигнала происходит раньше или позже, чем должно быть, считается, что на входе не посылка, а шум. Во второй группе алгоритмов используется не прерывание по таймеру, а Input Capture, то есть, замеряется реальная длительность импульса, которая сверяется с ожидаемой. Если она отличается слишком сильно, импульс считается шумом.

Помогите разобраться, pls, как лучше подступиться к задаче. Если есть что почитать об этом - оч. хорошо, если есть примеры кода - еще лучше.
На данном этапе я даже не могу оценить, какой из двух методов какие преимущества/недостатки имеет. Например, как методы первой группы позволяют учитывать разницу между скоростью тактирования передатчика и приемника? В общем, темный лес пока. sad.gif

Ткните в правильном направлении, pls.

Сообщение отредактировал G.Simenon - Dec 12 2016, 16:51
Go to the top of the page
 
+Quote Post
krux
сообщение Dec 12 2016, 16:53
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



на каких скоростях планируете работать, и на чем потом реализовывать? микроконтроллер или FPGA?
поскольку общие принципы похожие, но подход и методы радикально разные.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
G.Simenon
сообщение Dec 12 2016, 17:02
Сообщение #3





Группа: Участник
Сообщений: 9
Регистрация: 12-12-16
Пользователь №: 94 601



Цитата(krux @ Dec 12 2016, 17:53) *
на каких скоростях планируете работать,
на чем потом реализовывать? микроконтроллер или FPGA?


1 - 9600 - 19200, приблизительно
2 - на м/к. В настоящий момент - на АтМеге.
Go to the top of the page
 
+Quote Post
G.Simenon
сообщение Dec 15 2016, 14:39
Сообщение #4





Группа: Участник
Сообщений: 9
Регистрация: 12-12-16
Пользователь №: 94 601



Похоже, что с Input Capture возни больше в части пропуска помех. Noise Canceler пропускает только помехи короче 4 системных тактов, поэтому, если на Input Capture Pin придет помеха длиннее, то, чтобы исключить ложный захват, придется складывать захваченное значение длительности с предыдущей и оставаться в том же режиме захвата (falling/rising edge)?
Кто-нибудь пробовал то и другое, может подсказать в каком направлении двигаться?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 15 2016, 17:08
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(G.Simenon @ Dec 15 2016, 16:39) *
...может подсказать в каком направлении двигаться?

Подаете на UART. Преамбула делается под захват UART-ом сначала битовой, а потом байтовой синхронизации, потом в протоколе захват фрейма с данными.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
G.Simenon
сообщение Dec 15 2016, 17:52
Сообщение #6





Группа: Участник
Сообщений: 9
Регистрация: 12-12-16
Пользователь №: 94 601



Цитата(zltigo @ Dec 15 2016, 17:08) *
Подаете на UART.

Ширина импульсов бывает некратная, да и плавает она. Плюс ограничения UART на формат фрейма, ему стартбит нужен низкий, в сигнале же следующий бит, после уже принятых UARTом, может оказаться высоким.
Софтово бы решить.

Сообщение отредактировал G.Simenon - Dec 15 2016, 17:54
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 15 2016, 18:05
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(G.Simenon @ Dec 15 2016, 19:52) *
Ширина импульсов бывает некратная, да и плавает она.

Не принципиально. В реальной проводной линии проблемы принципиально такие-же. Выделение байта у сколь-нибудь приличных реализаций UART по нескольким отсчетам.
Цитата
Плюс ограничения UART на формат фрейма, ему стартбит нужен низкий, в сигнале же следующий бит, после уже принятых UARTом, может оказаться высоким.

Повторяю: "Преамбула делается под захват UART-ом сначала битовой, а потом байтовой синхронизации". Так что все решается. Естественно, передатчик тоже UART, ну и то, что он "A" решает и проблему различия битовой частоты.
Цитата
Софтово бы решить.

Софтово будете разбираться наличием битовой и байтовой синхронизации и выделением фрейма. А всем остальным железка займется.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
G.Simenon
сообщение Dec 15 2016, 18:16
Сообщение #8





Группа: Участник
Сообщений: 9
Регистрация: 12-12-16
Пользователь №: 94 601



Цитата(zltigo @ Dec 15 2016, 18:05) *
Естественно, передатчик тоже UART, ...

Увы, передатчик не UART.

Цитата(zltigo @ Dec 15 2016, 18:05) *
Софтово будете разбираться наличием битовой и байтовой синхронизации и выделением фрейма. А всем остальным железка займется.
Ах, вот как, софтом определять моменты включения UARTa... звучит сложнее, чем просто софтовая реализация.

Спасибо за вариант.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 15 2016, 18:24
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(G.Simenon @ Dec 15 2016, 20:16) *
Увы, передатчик не UART.

А что? Тогда огласите что за кодировка идет в канале? Синхронный? Асинхронный? Как формируется фрейм, который предстоит выделять? Битстаффинг?
Цитата
Ах, вот как, софтом определять моменты включения UARTa... звучит сложнее, чем просто софтовая реализация.

Причем тут какое-то неведомое "включение UART"?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dm37
сообщение Dec 15 2016, 18:27
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 14-08-16
Пользователь №: 92 949



Один из первых проектов был похож на ваш (RXQ1-433 + AT90S2313 + IAR, любительская разработка, использовали на своём предприятии для телеметрии).
Правда нам пришлось ввести байтстаффинг для устойчивой синхронизации начала пакета и заточен на наш протокол. Т.е. пока устройство не примет весь пакет, не проверит crc, не передаёт его по rs485 (ну и так же обратно). Код, конечно, не идеальный (давно это было в 2003), но устройство рабочее и можно посмотреть как мы это реализовали тогда.
Прикрепленные файлы
Прикрепленный файл  radio.7z ( 41.03 килобайт ) Кол-во скачиваний: 11
 
Go to the top of the page
 
+Quote Post
G.Simenon
сообщение Dec 15 2016, 18:34
Сообщение #11





Группа: Участник
Сообщений: 9
Регистрация: 12-12-16
Пользователь №: 94 601



Zltigo, Вы для меня слишком "гуру" - мне без примера непонятно, какое решение Вы имеете ввиду. Увидеть бы что-то из этой серии...

Dm37, спасибо за пример!

Сообщение отредактировал G.Simenon - Dec 15 2016, 18:36
Go to the top of the page
 
+Quote Post
dm37
сообщение Dec 15 2016, 18:41
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 14-08-16
Пользователь №: 92 949



в своё время рассматривал в основном два метода кодирования сигнала манчестер и вроде 4b/5b, почитайте о них.
Go to the top of the page
 
+Quote Post
G.Simenon
сообщение Dec 15 2016, 18:55
Сообщение #13





Группа: Участник
Сообщений: 9
Регистрация: 12-12-16
Пользователь №: 94 601



Цитата(dm37 @ Dec 15 2016, 18:41) *
... манчестер и вроде 4b/5b, почитайте о них.
Спасибо. С манчестером сталкивался, с "4b/5b" нет. Почитаю.

Сообщение отредактировал G.Simenon - Dec 15 2016, 18:56
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 15 2016, 23:53
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dm37 @ Dec 15 2016, 20:41) *
в своё время рассматривал в основном два метода кодирования сигнала манчестер и вроде 4b/5b, почитайте о них.

Это не о том совсем, если я хоть что-то понимаю о пишет Автор.

Цитата(G.Simenon @ Dec 15 2016, 20:34) *
Zltigo, Вы для меня слишком "гуру" - мне без примера непонятно, какое решение Вы имеете ввиду. Увидеть бы что-то из этой серии...

Я как бы пытался вопросы задать. Не получив ответа не могу понять что конкретно Вы хотите sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
V_G
сообщение Dec 16 2016, 00:27
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



UART'ом не стоит путать человека, надо привязываться к виду модуляции. В случае с ЧМ нельзя подавать uart-овские сигналы напрямую на модулятор: будет плавать постоянная составляющая. Потому либо Манчестер (легко декодируется Атмегой, но раширяет полосу вдвое), либо FSK/FFSK/GMSK на этих скоростях. С программой повозиться придется, да и далеко это будет от оптимального приемника. Но выпускаются модемы для этих способов (можно поискать у CML), либо DSP.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th August 2025 - 20:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01555 секунд с 7
ELECTRONIX ©2004-2016