Перейти к содержанию
    

Софтовая пакетная передача данных. Синхронизация.

А голос? Рация то неспроста взята.

Вам правильно советуют. Посмотрите все-таки для начала как реализованы многочисленные протоколы физического уровня для передач КВ диапазона, в том числе и для передачи голоса. Такого разнообразия протоколов Вы, наверное, больше нигде не встретите. Затем уже можно и оптимизировать под свои задачи.

Изменено пользователем Serg76

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну голос с цифрой трудно совместить, конечно, и главное трудно отсепарировать на приёме. DTMF не пробовали? Комбинация 0хFE-начало пакета, 0x01, 0x02-десятичные цифры.

 

Именно с него, да еще и с аппаратного хотел начать. Отсоветовали спецы из другого раздела. Сказали, да не парься, напиши низкоскоростной модем. А DTMF - грубо и только от большой бедности. Я только сейяас понял, что половину проблем и потери 2-х недель времени можно было избежать. Но я не жалею. Опыт, полученный в ходе изборетения этого велосипеда бесценен.

 

Вам правильно советуют. Посмотрите все-таки для начала как реализованы многочисленные протоколы физического уровня для передач КВ диапазона, в том числе и для передачи голоса. Такого разнообразия протоколов Вы, наверное, больше нигде не встретите. Затем уже можно и оптимизировать под свои задачи.

 

 

То есть вы советуете цифровой радиомодем, который будет гнать цифру, отделять голосовые данные от телеметрии придется программно, я правильно понял?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Именно с него, да еще и с аппаратного хотел начать. Отсоветовали спецы из другого раздела. Сказали, да не парься, напиши низкоскоростной модем. А DTMF - грубо и только от большой бедности. Я только сейяас понял, что половину проблем и потери 2-х недель времени можно было избежать. Но я не жалею. Опыт, полученный в ходе изборетения этого велосипеда бесценен.

"Напиши модем" - подразумевалось, что есть хоть какой-то опыт разработки таких вещей. Иначе это (разработку модема) надо заказывать разработчикам с соответствующим опытом. Заметьте - никто не утверждал, что это так просто (а реализация с компаратором и измерением длительности между переходами через "0" вообще халтура, делается все ж не так). Или надо брать аппаратный модем (от CML, например) - но это тоже не самое дешевое удовольствие. Ну а DTMF - да, просто. Но медленно до ужаса, а при плохом соотношении сигнал/шум работает весьма паршиво, результат все равно надо фильтровать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Эхх.. 5 страниц на форуме меня разубеждали. Говорили - на фиг тебе цифровой модем, бери рацию и делай модем. Сделал. Теперь говорят, на фиг ты взял рацию и модем, брал бы сразу цифровой радиоканал.

 

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

 

Именно так делается в аппноте от Техаса, которую мне дали в том же разделе в ответ на вопрос - как сделать модем. Я его досконально изучил, реализовал и теперь мне говорят - фигня брат, все делается не так.

 

Чудны дела твои, господи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Именно так делается в аппноте от Техаса, которую мне дали в том же разделе в ответ на вопрос - как сделать модем. Я

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

 

Все ж надо бы было поискать и другие реализации - про КВ/УКВ любительские модемы уже было упомянуто.

 

А делать цифровой радиомодем - это отдельная серьезная работа, весьма сложнее. На готовых радиостанциях можно хотя бы избежать возни с радиочастотной частью. Но да, можно воспользоваться встроенной реализацией собственно цифровой передачи данных (как, скажем, у CC110x). Тем не менее, для оценки перспектив готовые радиостанции проще, благо что скорость требуется небольшая. Ну застряли на модеме - сделайте быстренько с DTMF, хоть что-то живьем получите, а потом уж занимайтесь отдельно (или купите разработку). Определитесь - и, возможно, будете смотреть в сторону цифрового радиомодема. А, может, и не понадобится....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да меня пока устраивает качество. Я правда далеко станции еще не разносил.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да меня пока устраивает качество. Я правда далеко станции еще не разносил.

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

Ну, детектирование начала пакета - это вообще отдельный вопрос. Можно использовать синхропреамбулу и байт (типично - несколько байтов) собственно синхронизации. Но в условиях помех задача усложняется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Объясните мне в чем алгоритмический смысл преамбулы?

У меня детектирование стартового бита как раз не преамбулу и похоже. Я делююа это так:

На передатчике стартовый бит - 6 нулей. А нули и единицы остальных битов - по 6 импульсов соответствующей длины.

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

Если же последний байт давно принят и все флажки сброшены, то ставлю статусный флажок в значение приема стартового бита. Дожидаюсь, пока поймаю подряд 6 нулей. Если во время приема нулей придет единица, считаю это шумом и сбрасываю все флажки.

Как только придет 6 нулей - ставлю статусный флажок в значение начала приема байта.

То есть эти 6 нулей вначале - это и есть своего рода преамбула.Если нет, то как ее анализировать?

 

Мне так видится, что это должно быть следуюим образом - передатчик посылает скажем 100 чередующихся импульсов нулей и единиц. Не бит, а одиночных импульсов соответствующей длины.

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

 

Но минус - стоит в преамбуле одному импульсу неверно детектироваться - программа воспримет его как шум и выкинет.

 

У кого какие идеи? Только не надо писать по готовые решения, про сторонних разработчиков, раз уж я сделал больше половины дела хотелось бы это доработать прежде всего для повышения своего опыта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Объясните мне в чем алгоритмический смысл преамбулы?

Но минус - стоит в преамбуле одному импульсу неверно детектироваться - программа воспримет его как шум и выкинет

Давайте начнем с самого начала. Объясните, какую модуляцию вы используете? И как работает ваш модулятор? Такое впечатление создаётся, что вы пытаетесь передавать NRZ код через радиостанцию, которая не пропускает NRZ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну не знаю, правильно ли это назвать FSK...

За основу взят протокол V.21. Только у меня времянки другие. Но смысл тот же - в течение времени равного одному биту отправляется, а на другой стороне анализируется несколько импульсов. Одна длительность импульсов соответствуте нулю, другая единице.

 

Такое впечатление создаётся, что вы пытаетесь передавать NRZ код через радиостанцию, которая не пропускает NRZ.

 

А у меня складывается ощущение, что код, как бы он ни назывался, рация все-таки пропускает.

 

Модулятор включает рацию, на микрофонный вход подает 0.1 вольтовые импульсы соответствующей длительности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Объясните мне в чем алгоритмический смысл преамбулы?

В радиоканале смысл преамбулы обычно состоит в том, чтобы дать возможность настроиться механизму битовой синхронизации. Поэтому в преамбуле довольно долго передается серия битов 0-1-0-1 и т.д. После этого приемник будет сэмплировать биты правильно и не потеряет настройки, если в потоке не будет длинных последовательностей 0-0-0-.. или 1-1-1-... (это автоматически выполняется, в частности, для манчестерского кода).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну не знаю, правильно ли это назвать FSK...

Модулятор включает рацию, на микрофонный вход подает 0.1 вольтовые импульсы соответствующей длительности.

1) Такая модуляция называется AFSK (audio frequency-shift keying), модуляция тона. Нормальное решение, не так эффективно, как современные виды модуляции, но имеет право на жизнь. Модуляция с разрывом фазы или без?

 

2) Вообще-то, на микрофонном входе обычно стоит конденсатор, и как импульсы одной полярности проходят, не совсем понятно. Если вы говорите, что импульсы проходят, то значит проходят. В смысле вы можете их восстановить на приёмной стороне, я так понимаю. Хотя лучше бы всё-таки подавать двуполярные импульсы.

 

3) Как вы демодулируете?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но минус - стоит в преамбуле одному импульсу неверно детектироваться - программа воспримет его как шум и выкинет.

 

У кого какие идеи? Только не надо писать по готовые решения, про сторонних разработчиков, раз уж я сделал больше половины дела хотелось бы это доработать прежде всего для повышения своего опыта.

А не надо делать столь жесткий анализ преамбулы, чтобы по одному биту вылетало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Там электретный микрофон. К самому микрофону припаян провод идущий от резисторного делителя, на вход которого подаются 5вольтовые импульсы от контроллера. Уж не знаю что там за усилитель, но на выходе рации при включении передачи и тишине на осциллографе изолиния на 2.5 вольтах. При подаче импульсов - колебания от +1.5 до +3.5 вольт.

То есть, обратите внимание - при нуле на пине контроллера - на выходе рации 2.5 вольт. При нуле на выходе контроллера между импульсами - 1.5 вольт. Как будто напряжение раскачивается.

 

Как вы демодулируете?

 

Аппаратная часть - выход рации - мостовой усилитель, приспособленный на 8ми и 16 омные динамики. Напрямую ко входу аналогового компаратора цепляю один их этих выходов. Работает с любым из них. На второй взход аналогового компаратора цепляю 2 резистора, один идет к земле, другой к ножке контроллера. Эти резисторы и ножка нужны для изменения гистерезиса, для борьбы с дребезгом.

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

 

Модуляция с разрывом фазы или без?

Если я правильно понимаю значение этого термина, то с разрывом, но сведенным к минимуму.

То есть я подобрал длины импульсов так, чтобы передача одного бита всегда совпадала с переходом через ноль. Программно же целостность фазы не контроллируется. К слову - когда у меня фаза разрывалась, хуже не было.

 

 

 

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

 

Как? за счет чего? Вот приемник слушает эфир, попался ему ноль - он записал в уме - "ноль", попалась единица - он записал "единица". Каким образом преамбула помогает синхронизироваться с битами?

Может быть то что я описывал в посте 24 про стартовый бит - и есть своего рода преамбула?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...