роботы
робототехника
микроконтроллеры
Главная
Как сделать робота
Новости
Спорт
Статьи
Wiki
Форум
Downloads
Ссылки
Контакты  


 Страниц (3): « 1 [2] 3 »   

> Описание: Реализация протокола связи по радиоканалу
vova_gorskih
Отправлено: 17 Февраля, 2011 - 13:13:17
Post Id



Рядовой


Сообщений всего: 8
Дата рег-ции: Февр. 2011  





Дак там один байт и отправляется: старт бит-номер клавиши в бинарном виде-стоп бит, а потом ждёт нажатия очередной клавиши, пробовал делать так: во флэш память пишу массив из четырёх чисел :
flash int b0[4]={0,0,0,0};
flash int b1[4]={0,0,0,1};
flash int b2[4]={0,0,1,0};
flash int b3[4]={0,0,1,1};
flash int b4[4]={0,1,0,0};
flash int b5[4]={0,1,0,1};
flash int b6[4]={0,1,1,0};
flash int b7[4]={0,1,1,1};
flash int b8[4]={1,0,0,0};
flash int b9[4]={1,0,0,1};

и каждое число из массива отправляю через определённые промежутки времени, на той стороне собираю данные обратно в массив и делаю сверку на сопадение чисел, результат опять никак.
 
 Top
nest Администратор
Отправлено: 17 Февраля, 2011 - 13:15:05
Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  





vova_gorskih пишет:
Дак там один байт и отправляется
нет.
Вы нашпиговали всё что нужно и ненужно в одно место, и только потом начинаете разбирать, почему и как оно работает. Так программы не пишут.

напишите программу, которая отправляет один байт каждую ... секунду, например.
Если она работает и всё принимается верно - то проблема у вас в вашем алгоритме а не в RF-модуле.
 
 Top
vova_gorskih
Отправлено: 17 Февраля, 2011 - 13:19:52
Post Id



Рядовой


Сообщений всего: 8
Дата рег-ции: Февр. 2011  





И в Протеусе и в железе по проводам всё работает корректно, ну в бинарной форме да не смотрел чо по радиоканалу прилетает
 
 Top
Белый Волк Супермодератор
Отправлено: 17 Февраля, 2011 - 19:14:52
Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  





vova_gorskih
Судя по описанию, модуль передатчика точно отправляет что-то, а модуль приёмника точно что-то принимает. То есть на стороне приёмника в каком-то виде есть старт- и стоп-биты. В бинарном виде можно понять, каким именно образом повреждаются данные при передаче: они могут инвертироваться, "растягиваться" во времени (приём 0b11100000 вместо 0b00100000 и т.п.), "сжиматься", либо повреждаться случайным образом.
Передайте по радиоканалу байты:

0b00000001
0b00000010
...
0b10000000

И отпишитесь о результате, если установить закономерность не удаётся.
 
 Top
Группа Инженеров Супермодератор
Отправлено: 17 Февраля, 2011 - 22:27:14
Post Id



Супермодератор


Сообщений всего: 393
Дата рег-ции: Авг. 2008  





Один стартбит? Это Вы очень напрасно, vova_gorskih. При передаче по радиоканалу такая короткая стартовая последовательность не применяется. К тому же, стартовую последовательность желательно иметь, такой, что при сдвиге во времени на +/-1бит получалась максимальная разница между кодами (расстояние Хемминга). Я в таких случаях использую последовательности типа 0AAAAh. А, вот стоповый бит можно и не использовать, если у Вас постоянная длина пакета.

(Отредактировано автором: 17 Февраля, 2011 - 22:38:01)

 
 Top
Белый Волк Супермодератор
Отправлено: 18 Февраля, 2011 - 06:12:23
Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  





Группа Инженеров
Речь о старт и стоп битах в аппаратном UART.
 
 Top
Группа Инженеров Супермодератор
Отправлено: 18 Февраля, 2011 - 10:09:38
Post Id



Супермодератор


Сообщений всего: 393
Дата рег-ции: Авг. 2008  





А, разве Вы Белый Волк, в предыдущем сообщение не по радиоканалу предлагаете байты пересылать? Что-то я не заметил в трансивере, который применяет vova_gorskih, собственного буфера, который работает по протоколу UART. Следовательно в этом модуле «открытые» вход/выход данных, из чего вытекает, то обстоятельство, что передача по радиоканалу происходит с одним стартовым битом.
Если я не прав, поправьте.
 
 Top
Белый Волк Супермодератор
Отправлено: 19 Февраля, 2011 - 16:10:12
Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  





Группа Инженеров
В модуле его нет, Вы правы. Но модуль подключен к аппаратному USART микроконтроллера ATmega8, насколько я понимаю.
Ваше замечание смутило меня, поскольку я разделяю понятия старт/стоп бит при передаче каждого байта по USART и стартовой/стоповой последовательности при передаче пакета данных.
 
 Top
Группа Инженеров Супермодератор
Отправлено: 19 Февраля, 2011 - 21:03:33
Post Id



Супермодератор


Сообщений всего: 393
Дата рег-ции: Авг. 2008  





Вы правы Белый Волк. В UART это старт/стоп бит, при передаче пакета по радиоканалу, это стартовая и стоповая последовательность. Вся разница в типе физического канала и вероятности ошибки. При передаче данных по проводам передаётся и постоянная составляющая, а вероятность ошибки близка к нолю, чего нельзя сказать о радиоканале. Именно поэтому при передаче по радиоканалу в качестве «стартового бита» применяется стартовая последовательность, а для исключения ошибки при передаче длинных последовательностей нолей или единиц применяется Манчестер. Здесь лучше перейти к спектральным терминам, но не хочу «грузить» реципиента.
 
 Top
cjA
Отправлено: 19 Февраля, 2011 - 22:39:11
Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  






Группа Инженеров пишет:
но не хочу «грузить» реципиента.
и одним словом загрузил весь сайт Улыбка


vova_gorskih, ну уже даже не я один это говорю- у вас наверняка есть строгая корреляция между переданными и принятыми значениями, осталось только ее выявить и принятые значения перестанут быть "случайными"
 
 Top
Группа Инженеров Супермодератор
Отправлено: 20 Февраля, 2011 - 00:14:36
Post Id



Супермодератор


Сообщений всего: 393
Дата рег-ции: Авг. 2008  





К сожалению, cjA, принятые данные при одном стартовом бите вряд ли перестанут быть случайными. Встать одним каналом осциллографа на входе модулятора передающей части, а вторым на выходе приёмника, конечно не помешает. Будет хотя бы видно нет ли там инверсии и, что там с соотношением сигнал/шум, хотя бы визуально. Но, вот, пытаться передавать данные в чистом протоколе UART, это номер дохлый. Прикиньте сами, что для удержания режима ожидания в таком случае, потребуется постоянно включённый передатчик, поскольку если его выключить, то шумы на выходе детектора приёмника моментально будут приняты UART-ом как некий код. И что потом с этим случайным кодом прикажете делать?
По-хорошему, помимо длинной стартовой последовательности, пакет защищается контрольной суммой, ещё лучше, когда помимо контрольной суммы применялся корректирующий код. Это нормальный подход к передаче данных по радиоканалу. Если это слишком «грузно», конечно можно «изобретать велосипед», но наигравшись в передачу данных, придёте к вышеизложенному подходу. Не верите? Посмотрите, как организуется связь в таких дивайсах как nRF905 и XE1205.
 
 Top
cjA
Отправлено: 20 Февраля, 2011 - 01:48:56
Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  





не-не, верю, по даташиту для этой сборки рекомендуется аппаратный манчестер.
но на сайте микроники- его нет, не факт что и на Казакова они запросто лежат.
 
 Top
nest Администратор
Отправлено: 20 Февраля, 2011 - 01:55:21
Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  





cjA пишет:
по даташиту для этой сборки рекомендуется аппаратный манчестер.
но на сайте микроники- его нет, не факт что и на Казакова они запросто лежат.

закажите непосредственно у производителя, делов то.
Манчестер можно и ручёнками накодить, там никакой чёрной магии нет.
А можно и свой кодер придумать, было бы желание.
 
 Top
cjA
Отправлено: 20 Февраля, 2011 - 03:52:18
Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  





nest
зачем мне? радиоканал- это для больших расстояний. К тому же понятно что любой работающий бензиновый двигатель излучает по всему радиодиапозону, для того все это излишнее кодирование и нужно.
Если мне когда и будет что нужно- то готовые модули вайфай, блютуз и еще какие метров на пятьдесят уже есть без всякого манчестера.
(Добавление)
nest пишет:
А можно и свой кодер придумать

ну так я и предложил самый простой вариант- посылать байт не один раз , а пятьдесят. А потом по простенькой таблице 10х3 получать нужную кнопку.
10 - количество кнопок
3 - наиболее часто принимаемое значение для этой кнопки.
 
 Top
nest Администратор
Отправлено: 20 Февраля, 2011 - 09:34:35
Post Id



Администратор


Сообщений всего: 4866
Дата рег-ции: Сент. 2009  





cjA пишет:
я и предложил самый простой вариант- посылать байт не один раз , а пятьдесят. А потом по простенькой таблице 10х3 получать нужную кнопку.
посмотрите как выглядит сигнал манчестера и UART при одном и том же байте (оссобенно 0x00 или 0xFF).
 
 Top
Страниц (3): « 1 [2] 3 »
« Делимся опытом »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown