Easyelectronics.ru

Электроника для всех
Текущее время: 27 сен 2020, 03:21

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 10 апр 2015, 13:25 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 фев 2011, 21:32
Сообщения: 138
Добрый день.
Некоторое время назад пытался организовать радиоканал между парой STM8 при помощи раздербаненного дверного радиозвонка и его кнопки. Кодирование 1 и 0 осуществляется шириной импульса. Прилагаю картинку, чтоб не тратить слова.
Так вот, примененный метод кодирования показал худшие результаты, чем метод кодирования спец микросхем того самого радиозвонка. В пределах квартиры вероятность ошибки возросла настолько, что 32-байтная посылка доходила примерно в 10% случаев. Тогда как имеющиеся китайские микросхемы срабатывали в 100% случаев. По частоте посылок сказать пока не могу, код дома. Что сделать? Увеличить/уменьшить скорость? Удлинить посылку с 8 до 128 бит? В перерывах между байтами виден шум, частота сильно загажена.


Вложения:
oscill.JPG
oscill.JPG [ 234.72 Кб | Просмотров: 9255 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 10 апр 2015, 13:46 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
Можно подцепиться логическим анализатором и записать сигнал, принимаемый приемником. Далее проанализировать при каких обстоятельствах и как портится пакет. Далее модифицировать протокол.
Можно попробовать сделать такое кодирование
Изображение
Он более устойчив к изменению ширины импульсов, которая точно проявляется в процессе радиопередачи.
Так же если есть возможность, записать семпл сигнала, как передает родной звонок, а именно посмотреть параметры преамбулы, какая ширина сигнала и паузы используется. Может вы используете слишком длинные или слишком короткие импульсы.

_________________
elisey.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 10 апр 2015, 14:14 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 фев 2011, 21:32
Сообщения: 138
Из средств просмотра у меня только старенький осциллограф и аудиокарта компа).
Смотрел посылки китайца - посылки не 8 бит, а значительно больше. И формат похож на показанный Вами. То есть промежутки между битами все по 600 мкСек, единица длинее нуля и всё? Вы пробовали это на практике?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 10 апр 2015, 15:19 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2012, 00:31
Сообщения: 1799
Откуда: Новокузнецк
alm604 писал(а):
Из средств просмотра у меня только старенький осциллограф и аудиокарта компа).
Смотрел посылки китайца - посылки не 8 бит, а значительно больше. И формат похож на показанный Вами. То есть промежутки между битами все по 600 мкСек, единица длинее нуля и всё? Вы пробовали это на практике?

А то что я привел это используется для передачи по инфракрасному каналу. Но там весьма похожие проблемы. Я делал похожее для ИК, за тем исключением, что импульсы у меня всегда одной длины (200 мкс), в то время как пауза тишины после импульса для кодирования единицы - 200 мкс, для нуля - 600 мкс. То есть различие в 3 раза. Инфракрасный приемник при плохом приеме очень сильно искажает длины импульсов и пауз, но в общей сложности период между импульсами получается весьма стабильный. Тайминги я такие взял из даташита на ИК приемник. Для вас могут быть совсем другие тайминги. Их можно попробовать подсмотреть у китайца. Так же немаловажна длина преамбулы.

Вот еще есть по теме.

_________________
elisey.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 10 апр 2015, 15:26 
Старожил

Зарегистрирован: 23 ноя 2010, 20:08
Сообщения: 1098
Откуда: тебя ебёт?
Проанализировать можно и без анализатора, чисто в уме осознав природу процесса. Физику.
Через которую природу в этом процессе ошибка ровно одна: сигнал инвертируется заменяется некоторым значением в течение Х пикосекунд, начиная с момента У. И такая ошибка будет иметь место не один раз в час, а сто раз в секунду. И да, числа Х и У случайны.

Если пытаться кодировать как написано - тогда уже очевидно, ширину чего будет измерять приёмник вместо "импульса"? Или ещё не очевидно?

---

Вспоминаем слово "уарт".
Но те тот уарт, который "чтобы текст передавать на экран компьютера по USB", а тот, в котором делается несколько семплов на каждый бит и по их совокупности решается - нулевой это бит или единичный.
Таким уже можно пытаться принимать отдельные биты.

Но: для работы уарту нужно знать а) момент начала и б) длительность бита.
Чтоб семплировать один и тот же бит десять раз подряд, а не три раза предыдущий бит и семь раз последующий.
А что принимается приёмником, если передатчик выключен? Если передатчик даже не существует ещё, не изготовлен? И что такое "момент начала (самого первого) бита"?

---

"Стартануть" уарту помогла бы преамбула 010101010101... меандр.
Приёмник замечает равномерно (причём с заранее известным приёмнику битрейтом) меняющийся сигнал и догадывается - щас может начаться реальный пакет, а вот здесь и здесь границы битов.

Ладно, стартанули. Поняли границы битов. Готовы к приёму пакета.
А как понять начало пакета? Ну по условному маркеру, как ещё... по какой-то заранее известной приёмнику последовательности, отличной от меандра 010101010101.
Как нашли маркер, так и сразу после его окончания начинаются реальные биты.

---

То есть теперь уже понятны границы не только битов, но и байтов.
Но остался ещё нюансик - часы в приёмнике и часы в передатчике... тикают сколь угодно похоже, но не одинаково!

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

первый бит - девять семплов правильные, а десятый семпл уже попал на границу между битами
второй бит - ...
...
двадцать четвёртый бит - опаньки приехали?

---

Как будем решать: а пусть приёмник подкорректирует своё мнение о реальном битрейте с учётом фактически распознанных границ битов!
Логика плюс арифметика равно магия.

Но вот например такая последовательность данных: 0010000000110011111111000 - и как будем корректировать мнение о битрейте?
Синий кусок -это шесть, семь или восемь подряд идущих нулей? А если вспомнить, с чего всё началось, или хотя бы перечитать всё с начала? А если с самого начала?

https://yandex.ru/yandsearch?&text=%D0% ... 0%B5%D1%80

---

... ну и когда уже окончательно разрулены все биты, байты и пакет в целом - тогда всё, но не всё.
Прошла длинная помеха (холодильник включился). Один раз в час. А потом три раза за пять минут.
Итого природа ошибок какая в общем случае? Часть пакета будет заменяться последовательностью подряд идущих одинаковых бит в случайном количестве, начиная с случайного места.
И это будет не авария, а нормальная работа в штатном режиме (хотя при чём здесь Соединённые Штаты Америки?).




Цитата:
по инфракрасному каналу
А там уже немного другая природа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 10 апр 2015, 16:38 
Старожил

Зарегистрирован: 20 мар 2010, 17:31
Сообщения: 1394
Откуда: Челябинск
_noise писал(а):
Проанализировать можно и без анализатора, чисто в уме осознав природу процесса. Физику.
Через которую природу в этом процессе ошибка ровно одна: сигнал инвертируется заменяется некоторым значением в течение Х пикосекунд, начиная с момента У. И такая ошибка будет иметь место не один раз в час, а сто раз в секунду. И да, числа Х и У случайны.

Если пытаться кодировать как написано - тогда уже очевидно, ширину чего будет измерять приёмник вместо "импульса"? Или ещё не очевидно?
https://yandex.ru/yandsearch?&text=%D0% ... 0%B5%D1%80

Ссылку лучше поменять на https://ru.wikipedia.org/wiki/%D0%A4%D0 ... 0.B8.D0.B5

Ну и почитать соответсвующие книжки про передачу дискретных данных по физическим каналам, самосинхронизирующиеся коды.
Хотя "манчестера" на мой взгляд - вполне хватит....


_noise писал(а):
... ну и когда уже окончательно разрулены все биты, байты и пакет в целом - тогда всё, но не всё.
Прошла длинная помеха (холодильник включился). Один раз в час. А потом три раза за пять минут.
Итого природа ошибок какая в общем случае? Часть пакета будет заменяться последовательностью подряд идущих одинаковых бит в случайном количестве, начиная с случайного места.
И это будет не авария, а нормальная работа в штатном режиме (хотя при чём здесь Соединённые Штаты Америки?).
Цитата:
по инфракрасному каналу
А там уже немного другая природа.

разные помехи - разные и ошибки. Не зря все книжки про передачу данных начинаются с характеристик помех :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 10 апр 2015, 16:39 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 фев 2011, 21:32
Сообщения: 138
Спасибо за ответы! Весьма развернуто.
Я делал так: Приемник посадил на ногу с внешним прерыванием и как только оно наступало (а это происходило постоянно, частота загажена), прерывание отключалось и МК начинал считать попугаев. С каждым попугаем он проверял состояние этой ноги. Если число попугаев переваливало за 6000 (в моем примере с моими частотами МК), считалось, что это, вероятно, стартовый импульс "своего" передатчика. Далее МК ожидал лог1 (инверсия там у меня). Если до 6500 попугаев он не наступал, считалась ошибка, счетчик попугаев сбрасывался. Если же лог1 все же успела прийти, включался второй счетчик попугаев и считал уже этот временной промежуток. ЕМНИП, предел от 500 до 600. Но это не важно. Далее подразумевалось, что должен пойти первый байт из посылки. Два счетчика считали попугаев попеременно, после чего их значения сравнивались и выносился вердикт "виновен или нет". После того, как байт оформлялся, он сбрасывался в ОЗУ. На это время в программе передатчика отводилось чуть больше времени на лог0 в пакете между байтами. Ну, чтоб приемник успел все это провернуть. При приеме одновременно происходило сравнение адреса. Первые 16 байт - адрес. Не знаю, много ли... Было пару ложных срабатываний. Я повесил на событие совпадения адреса процедуру звукового сигнала - за 3 часа простоя пару раз пикнул. Не хорошо. Девайс будет заботиться о безопасности, а тут вон оно что! Вот этот факт и заставил меня пересмотреть протокол.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 10 апр 2015, 16:46 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 фев 2011, 21:32
Сообщения: 138
И, да... Поставил комп на аудиозапись, подключил к приемнику и смотрел как приемник видит свой передатчик... Между байтами (а иногда и между битами) проскакивали иголки. Видимо, все же, частота передачи бит маловата. Приемник-то сверхгенеративный, успевает отстроиться от частоты, видимо... Ну и ловит что-то соседнее. Когда код писал, боялся, что приемник не успеет все обработать, что ошибок кучу наделает. Наверное, надо скорость повысить...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 10 апр 2015, 16:50 
Старожил

Зарегистрирован: 20 мар 2010, 17:31
Сообщения: 1394
Откуда: Челябинск
alm604 писал(а):

кстати, передавать двумя частотами - не вариант?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 10 апр 2015, 20:43 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 фев 2011, 21:32
Сообщения: 138
Смысле двумя частотами? Двумя несущими или а-ля DTMF?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 11 апр 2015, 01:57 
Старожил
Аватара пользователя

Зарегистрирован: 05 фев 2010, 16:57
Сообщения: 2193
Откуда: Нальчик
Я себе такой вариант запилил... (проверял на mega8)
http://asis-kbr.ru/forum/viewtopic.php?f=13&t=211


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 11 апр 2015, 02:22 
Старожил

Зарегистрирован: 30 авг 2010, 00:02
Сообщения: 926
Модернизируя автосигнализации менял аппаратный декодер на программный прием контроллером. Дальность действия как минимум не уменьшалась. А за счет подстройки передатчиков и приемника, дальность дополнительно увеличивалась на 20-50%. От алгоритма дешифрации очень многое зависит - дальность, задержка реакции, устойчивость приема (при удержании кнопки нажатой нет пропусков). Кодограмма такая, как стартовом сообщении.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 11 апр 2015, 08:44 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 фев 2011, 21:32
Сообщения: 138
ShadS - спасибо за исходники, поковыряю на досуге.
анкер - не понял по поводу стартового сообщения. То есть Вы кодировали так же, как и я? Кстати, применение моего девайса то же, что и вашего)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помехозащищенный алгоритм передачи данных по радиоканалу.
СообщениеДобавлено: 11 апр 2015, 12:44 
Старожил

Зарегистрирован: 30 авг 2010, 00:02
Сообщения: 926
alm604 писал(а):
анкер - не понял по поводу стартового сообщения. То есть Вы кодировали так же, как и я? Кстати, применение моего девайса то же, что и вашего)

Временная диаграмма похожая, но кодировала микросхема в брелоках, я только декодировал контроллером. Назначение писал - автосигнализации, там посылка покороче.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB