Пользователь
0,0
рейтинг
22 ноября 2012 в 21:31

Администрирование → Software Defined Radio (SDR) tutorial

«Подобные технологии могут стоить несметного состояния.
Представьте управление любым устройством… лишь посылая команды при помощи радиоволн.
Это будущее, Ватсон.»

Шерлок Холмс (Sherlock Holmes)-2009

Трудно представить сегодняшний мир без компьютеров и различных электронных устройств. А ведь с момента изобретения транзистора прошло всего 56 лет. При том, что электричеством люди владеют примерно с конца 18 века — просто поразительно как быстро в нашу жизнь ворвались компьютеры, телефоны, интернет и прочие блага цивилизации, так привычные нам, но о которых — лет 30 назад человечество могло только мечтать. Миллионы людей получили в свои руки мощнейший инструмент для самореализации и самовыражения — ведь правда — вы когда нибудь задумывались — как здорово, что мы можем вот просто так взять и реализовать свою идею без каких либо особых материальных вложений? Компьютер позволил умным и талантливым людям реализовать себя, интернет дал доступ к петабайтам информации, позволил миллионам людей общаться друг с другом, находить единомышленников, учиться, осваивать профессии, зарабатывать — и всё это не вставая с кресла… В общем — хватит лирики, в статье речь пойдет о Программно определяемом радио — что это и как оно работает — узнаете под катом

Немного теории (ага — как же говорить о такой сложной штуке без неё)


Начнём, пожалуй, с того, что Максвелл написал свои знаменитые уравнения и анализируя их — предсказал существование радиоволн, которые позже подтвердил Герц. Уравнения эти нам говорят о том, что переменное магнитное поле порождает электрическое, а переменное электрическое — магнитное, образуя электромагнитную волну, которую один раз пустил, выключил передатчик, а волна всё живёт и улетает в пространство. Электрическое поле может породить не только переменное магнитное, но еще и заряд, что следует из уравнения Максвелла (Закон Гаусса)

Заряд порождает поле, если мы возьмем 2 заряда на некотором расстоянии друг от друга и один из них начнём дергать с какой то частотой, то через некоторое время — с такой же частотой начнет дергаться и второй — тут два заряда ведут себя идентично двум поплавкам в воде — если мы хотим передать информацию с одного берега озера на другой — помещаем на обоих сторонах по поплавку и начинаем за один из них дергать — от него начнет распространяться волна, которая через некоторое время дойдет до другого берега и покоившийся до этого на другом берегу поплавок начнет колебаться. В случае с водой — мы можем увидеть саму волну. Электрическое поле — вообще говоря непонятно что такое — его нельзя увидеть, нельзя потрогать, это некая абстракция, при помощи которой всё удобно объясняется, а поскольку увидеть и потрогать мы абстракцию не можем — о её наличии мы можем судить только по действию поля на заряды — по аналогии с поплавками — мы можем смотреть только на поплавок. Если на озере нет ветра — поплавок покоится, когда волны нет, но в реальности такого почти не бывает — дует ветерок — по воде идет легкая рябь, где то плеснула водой рыба или лягушка, рядом с нашим поплавком пристроился еще кто то и начинает дергать им, передавая свою информацию, или кто то кинул камень в воду и от всего этого идут волны, они отражаются от берегов и камней, складываются, усиливают друг друга и ослабляют и обо всей этой композиции событий мы можем судить, лишь смотря на поплавок. Добро пожаловать в радио эфир.

«Мир» «Ленин» «СССР» или — как отправить послание внеземным цивилизациям

Итак — для того, чтобы отправить радиоволну — нам нужно перемещать в пространстве заряд из одной точки в другую с какой то частотой, причем логично, что если мы будем дергать много зарядов сразу — каждый сгенерирует волну, все они суммируются и образуют одну большую мега волну. Так же логично, что чем с большей амплитудой в пространстве мы будем перемещать заряд — тем больше будет амплитуда волны. Наша задача — заставить заряды периодически перебегать из одной точки пространства в другую, причем пока что — в рамках нашей примитивной модели(а сложными моделями я грузить вас не собираюсь) — желательно, чтобы они делали это по прямой.

Ну что — возьмём металлический штырь, распилим в центре и вставим в центр генератор переменного напряжения — во время первого полупериода — на одном штыре будет плюс, на другом 0. Электроны, которые находятся в любом металле и только и ждут, чтобы их пнули — тут же побегут к плюсу, пока не скомпенсируют его и не сделают и на этом штыре 0, но тут наступает второй полупериод и электроны начинают перебегать с одного штыря на другой, проходя через генератор напряжения. Генератор по центру палки конечно хорошо, но не очень удобно( генератор хочется перепаивать, а на крышу вечно лазить неохота). Не проблема — подцепляем к палкам два провода и уводим к себе в квартиру, при этом — провода это тоже антенны, ведь по ним же бегают заряды в пространстве, но провода находятся очень близко и заряды бегут в разные стороны, волны, генерируемые каждым проводом встречаются в противофазе и убивают друг друга, так что рабочей частью остается только штырь и всё выглядит так, будто заряды сами по себе бегают с одного конца антенны на другой. Итак — с передачей разобрались — для приема нам нужно сидеть и ждать, пока придет волна и начнет дергать наши электроны в антенне, те, перебегая с одного конца на другой — пробегут через детектор, у детектора есть какое то сопротивление, на этом сопротивлении ток преобразуется в напряжение, а напряжение мы уже можем мерить и усиливать(на самом деле в реальных схемах далеко не так, но не буду вас грузить такими вещами как волновое сопротивление и согласование линии, вообще это все довольно сложно, так что считайте пока, что создаваемый волной ток пробегает через сопротивление детектора и преобразуется в напряжение) — Итак — мы научились принимать и передавать радио волны — Mission Completed.

Level 2 — Модуляция

Смотреть на дергающиеся в конвульсиях поплавки конечно весело и интересно, но быстро надоедает и хочется поговорить с любимой бабушкой, а мы пока и умеем, что отправлять неосмысленную волну в космос — для того, чтобы передать какую то информацию при помощи волны — её нужно промодулировать — например мы можем дергать поплавок с маленькой амплитудой — это будет соответствовать логическому 0, с большой амплитудой — логической 1. Или можем дергать чаще или реже — главное договориться — что означают наши коды. Теперь немного простой(и не очень) математики — существует 3 типа модуляции:
Амплитудная
Частотная
Фазовая
Картинки можно посмотреть вот в этой статье:
Модуляция а я пожалуй остановлюсь на кое каких моментах из математики, без которых — на мой взгляд понять что то на нормальном уровне — проблематично.
Итак — мы хотим передать какой то меняющийся во времени сигнал

который имеет спектр

и вообще говоря — желательно бы иметь возможность этот спектр перемещать, ведь если мы все будем использовать одну и ту же полосу частот — спектры разных радиостанций будут перекрываться и информация искажаться. Есть технологический фон (например 50 герц от электросети), шум вида 1/f и прочее — в низкочастотной области нам передавать очень неудобно. Кроме того различные частоты имеют различные особенности распространения, что и рассказывается в вышеупомянутой статье. Имея кое какой уровень математической культуры — можно заметить, что если домножить начальную функцию на комплексную экспоненту — спектр сигнала сдвинется на частоту, которая стоит в показателе экспоненты

спектр сигнала после домножения получается следующим:

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

делаем замену по формуле Эйлера


Подставляем, немного преобразуем и получаем нечто такое

И окончательно

Получается, что исходный спектр разделился на два — один уполз вправо, второй влево по оси частот, причем тот, который попадет в отрицательную область частот отражается относительно 0 и в итоге мы получаем такую картинку:

тут есть небольшое несоответствие написанным формулам — дело в том, что я домножал косинус просто на сигнал, а домножают как правило на 1 + mx(t), где m — некоторый коэффициент — тогда получается, что к двум симметричным спектрам еще добавляется несущая частота
Передавать АМ сигнал в чистом виде — нерационально из за избыточности — он занимает в 2 раза большую полосу частот, чем исходный спектр — место в полосе частот дорого, поэтому одно из боковых полос вместе с частью несущей подавляют фильтром —

несущая сама по себе не несет в себе никакой информации — поэтому не страшно если мы её уменьшим, даже сэкономим на мощности передатчика немного.
Ну вот — теперь мы умеем передавать полезный сигнал в нужной нам полосе частот. Главное отличие модуляций друг от друга — помехоустойчивость — амплитудная модуляция передаёт исходный спектр как есть только в другой полосе частот, а в той полосе частот, куда мы двигаем исходный спектр — есть свои помехи, которые суммируются с полезным сигналом и его портят. Кроме того — амплитуда сигнала будет меняться в зависимости от расстояния до передатчика, если есть здания — будут возникать отражения, один и тот же сигнал мы будем принимать с задержкой и слышать эхо. Частотная модуляция занимает бОльшую полосу частот в спектре и за счет этого обладает высокой помехоустойчивостью — если на пальцах — мы размазываем полезную информацию по широкой полосе частот и если на какой то частоте придет помеха, которая испортит сигнал, то она испортит лишь его небольшую часть, потому что сигнал размазан по спектру. На самом деле про модуляции и прочее можно сказать очень много, особенно про передачу цифровых сигналов, но там очень много математики и чтобы особо не пугать — в данной статье более подробно раскрывать вопрос не буду.

Суть технологии SDR

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

но поскольку мы имеем такую штуку как компьютер — мы можем не думать — как бы нам воткнуть пару транзисторов, так чтобы выходной сигнал зависел от входного по нужной нам зависимости — мы просто берем и программируем нужную нам формулу. Только вот нам бы получить сигнал в цифровом виде, чтобы было над чем работать — за это и отвечает SDR. Оцифровывает аналоговый радио сигнал (или наоборот делает аналоговый из цифрового если речь идет о передаче). Как мы помним — сигнал мы передаем в высокочастотной области, а для оцифровки сигнала нам нужно иметь АЦП, который согласно теореме Котельникова должен иметь частоту дискретизации минимум в два раза больше максимальной частоты сигнала. Хотя современные АЦП уже позволяют оцифровывать радиочастотный сигнал напрямую — это немного неразумно — имея возможность перемещать частоту как нам хочется — ставить супердорогую молотилку на 2 ГГц, которая будет оцифровывать сигнал напрямую. Вспомним — как мы вообще получили высокочастотный спектр — домножили на косинус и спектр уехал вверх и вниз на частоту этого косинуса. А что нам собственно мешает сделать то же самое еще раз? Домножаем сигнал с антенны на косинус — снова спектр делится на 2 — один ползет в область низких частот, другой — в область высоких, ВЧ спектр мы обрезаем фильтром, а НЧ — оцифровываем, хоть АЦП звуковой карты — теперь, когда мы можем оцифровывать любую частоту — скорость АЦП влияет только на ширину, оцифровываемой полосы. Ну а дальше — после оцифровки мы уже можем создать свой приемник при помощи программирования — не нужны даже знания радиотехники, только математика, забота радиотехников — чтобы сигнал попал в компьютер. Собственно в следующих статьях, если тема вызовет интерес — собираюсь рассказать, как о железной части SDR приемника, так и о программной, можно еще о современных способах передачи и кодирования информации. Ну и в заключение — вот так вот примерно работает мой радиолюбительский SDR — Softrock RX/TX Ensemble II, который я получил в подарок, использующий в качестве АЦП — звуковую карту ПК, записать своё видео работы я не стал, поэтому выкладываю найденное на просторах ютуба — мой приемник работает точно так же, первая фотка в статье — он и есть
@SlavikMIPT
карма
36,5
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (32)

  • +3
    > Домножаем сигнал с антенны на косинус — снова спектр делится на 2 — один ползет в область низких частот, другой — в область высоких, ВЧ спектр мы обрезаем фильтром, а НЧ — оцифровываем

    Прошлый век. Ныне в моде direct RF sampling ;-)
    Ставится полосовой фильтр, дальше АЦП с частотой дискретизации в 2 раза шире полосы сигнала. В этом и есть смысл SDR — минимизация сложной аналоговой обвязки, как то даунконвертеры и т.д.
    • 0
      ну как оно именно делается — можно уточнить на примере конкретного устройства, в этом SDR примерно так и делается как вы описали, не хотелось просто перегружать статью лишней информацией, хотелось донести суть главную
      • 0
        прошу прощения — невнимательно прочитал ваш комментарий — в этом SDR как раз идет гетеродинирование, используется АЦП звуковой карты — минимизация аналоговой обвязки конечно супер — это пожалуй главное преимущество, но пока что не любую частоту можно оцифровать напрямую, кроме того АЦП такие достаточно дороги
    • 0
      Ну direct RF sampling максимум на сотне мегагерц будет работать без дорогого железа, если дальше по частоте лезть — это ж какая шина нужна будет, чтобы успеть обрабатывать. Да и зачем, если можно поставить какой нибудь MAX2112 за 5 баксов + AD9204 на 20 мегасемплов в секунду за 10 баксов, и работать в диапазоне 1-2 ГГц с полосой в 10МГц? 2 чипа, практически никакой аналоговой обвязки.

      Можете вот тут приобрести готовый девайс 2-канальный. Мужик, который его проектировал, очень хорошо разбирается в свч SDR (половину существующих SDR GPS приёмников он спроектировал), работать должно хорошо.
  • +2
    Электрическое поле — вообще говоря непонятно что такое — его нельзя увидеть, нельзя потрогать, это некая абстракция, при помощи которой всё удобно объясняется, а поскольку увидеть и потрогать мы абстракцию не можем — о её наличии мы можем судить только по действию поля на заряды — по аналогии с поплавками — мы можем смотреть только на поплавок.

    Мелкая придирка, но и без нее никак: свет является электро-магнитной волной, так что увидеть можно… хотя там, конечно, другие предельные случаи и, в утрированном виде, физика несколько не та.
    • 0
      мы видим не поле, а его влияние на рецепторы в нашем глазе, если углубиться — можно и до квантмеха дойти — что значит пронаблюдать что то? нужно, чтобы то, что мы хотим пронаблюдать как то подействовало на наш измерительный прибор и по величине этого воздействия мы делаем заключение о том, что наблюдаем — в случае с водой — волны на воде мы видим из за воздействия кривой поверхности на отраженный свет, свет действует на глаз и мы видим рябь на воде, можем и на поплавок смотреть, суть фразы была в том, что мы должны сделать так, чтобы поле на что то подействовало и это померить иначе пронаблюдать его невозможно
      • +1
        Мы не видим что-либо другое кроме как через влияние э/м-волн с λ≈400÷800 нм на наши зрительные рецепторы.
        Лезть глубже не вижу никакого смысла, а то и до философии с солипсизмом наперевес добраться можно.
  • –2
    Отчётливо слышны нелинейные искажения, связанные с дискретностью.
    • +1
      адепт Тёплого лампового звука?)
      • +1
        Адепт увеличения разрядности и частоты АЦП :)
        • 0
          Угу, кстати стоит отметить, что т. Котельникова-Найквиста работает в сферическом вакууме. Ну и любимая вещица — эффективное кол-во бит (ENOB) частенько совсем не совпадает разрядностью АЦП, которую бАльшими буквами пишут везде, где можно
    • +1
      Вы послушали это видео через аналоговый ютуб и на аналоговом компьютере? Класс, это же дико интересно, напишете статью, как вам это удалось?
      • +1
        Вы шаблонно отреагировали на ключевые слова, не разобравшись в сути. Т.е. вам померещился аналогофил, которым я на самом деле не являюсь. А искажения, про которые я говорю, легко измеряются приборами и предсказываются математически, да и на слух ощущение, будто робот говорит, а не человек. И будет вам известно, что эти искажения намного больше, чем у AAC кодека на ютубе и моей звуковушки.
        • 0
          да это просто ограничение спектра — звуковой спектр шириной 20килогерц, а тут 2-3 всего, чтобы меньшую полосу частот занимать — теряется часть информации об обертонах, плюс неточность настройки на несущую частоту, разрядность АЦП влияет на уровень аддитивных шумов, возникающих после аналогово цифрового преобразования, а частота дискретизации на максимальную оцифровываемую частоту, нелинейные искажения — есть дополнительные гармоники, возникающие там, где их не было изначально — например из за наложения спектров при оцифровке или в аналоговом тракте на нелинейных элементах, про ацп и что происходит с информацией после аналогово-цифрового преобразования я кстати тоже могу много рассказать
          • 0
            В нелинейных элементах в аналоговом тракте появляются кратные гармоники. Был у нас чистый синус 440Гц, а нелинейный элемент взял и добавил в спектр 880, 2640 и т.д. А в видеозаписи я слышу, будто к 440 добавилось некратная гармоника 625, например. В одном аудиоредакторе есть эффект «Квантование». Там можно имитировать искажения, как если бы сигнал имел разрядность 4 бита и частоту дискретизации 5000Гц, например. Причём преобразование идет по самому тупому алгоритму, в результате чего появляется куча некратных исходному сигналу гармоник, которые дают соответствующую «компьютерную» окраску. Ещё такие гармоники появляются при плохом ресемплинге из 44100 в 48000. В этом можно убедиться, скачав известный файл SB_test.wav.

            Думаю, что в программе из вашего видео используются слишком неточные алгоритмы. Увеличение частоты дискретизации может компенсировать неточность алгоритмов.
            • 0
              во первых — эффект, про который вы говорите — типа 4 бита разрядность и 5кГц дискретизация — при такой разрядности сигнал меняется медленно в пределах значения младшего значащего бита, это означает, что сигнал больше становится похож на результат пороговой обработки, а пороговая обработка как раз добавляет нечетные гармоники — второе — при ограничении частоты дискретизации до 5кГц, остается звуковая полоса в 2.5кГц. То есть мы добавляем в сигнал новые гармоники при помощи пороговой обработки и еще убиваем человеческие обертона выше 2.5кГц — получаем голос робота. Современные звуковые карты имеют разрядности около 24 бит — это значит, что значение младшего значащего бита так мало, что сигнал очень быстро меняется в его значении в этом случае — разрядность ацп определяет уровень белого шума, возникающего таким образом при аналогово-цифровом преобразовании и никоим образом не влияет ни на какие искажения, частота дискретизации определяет полосу частот и возможные наложения спектров, если максимальная частота сигнала превышает частоту Котельникова
              • 0
                Версия №2. Конечный спектр немного сдвинут. Т.е. изначально был естественный сигнал, состоящий из 440, 880, 2640 и т.д, а получилось 450, 890, 2650 и т.д., где гармоники уже не являются кратными, из-за чего получается роботизированность голоса.
  • 0
    С FUNcube Dongle не общались? А то хотел прикупить да комментарии напрягли, пол-форума (радиосканнер) ругает, пол-форума хвалит. Ну или вообще какой SDR приёмник посоветуете для использования чисто ради интереса (попробовать хочется в деле)?
    • 0
      неа — на сайте wb5rvz точка com посмотрите — я собирал rx ensemble ii первым — всё работает — форумы так же есть по этим устройствам, мне просто достались оба как подарки — не знаю — можно ли заказть будет в Россию
    • НЛО прилетело и опубликовало эту надпись здесь
  • +4
    Простите, но туториал никакой. Для абсолютных новичков в теории радио приёмопередачи — всё очень размыто и слишком обощено. Для более продвинутых в этой тематике людей — никакой конкретики по SDR. На самом деле тема интересная, и рассказывать есть про что. Вместо этих рассказов увидел пару возгласов о том, как же это круто, что такое есть — просто «teaser», коим на хабре не место.
    По теме:
    1. Сдвиг спектров миксерами был известен ещё задолго до SDR, и не является основной killer-feature в SDR.
    2. При оцифровке высокочастотных сигналов редко пользуются правилом Котельникова.Найквиста, Шеннона — при помощи недосемплирования (downsampling) возможна реконструкция спектров в очень низкочастотном отрезке, который легко оцифровать в дальнейшем.
    • 0
      это вступление к серии статей — просто хотелось рассказать перед углублением какие то основы, почитав вопросы и комментарии в других статьях — понял, что многие в этой теме не знают простейших вещей — поэтому принял решение сначала в общих чертах рассказать про основные принципы передачи сигналов по радио, потом уже более сложные и реально интересные вещи про SDR и цифровую обработку радиосигналов. По поводу размытости и обобщенности — можно было вывалить тут теорию электромагнетизма, но такое читать неподготовленному читателю сложно, да и вообще говоря никчему — достаточно на пальцах объяснить основные принципы, чтобы дальше было понятно о чем идет речь. Сложно сделать так, чтобы и овцы целы и волки сыты — читают хабр, как полные нубы в этой теме, так и спецы — сложно сразу рассказать что то интересное и для тех и для тех
      • +1
        Вы считает неподготовленный читатель без проблем налету разберется с интегрированием? Причем сразу после подергивания поплавка… а давайте умножим интеграл на комплексную экспоненту…
        • 0
          ну подергивание поплавка — это физика, а интегрирование — математика, думаю большинство айтишников с ней знакомо
  • +1
    У Ensemble как и у других SDR использующих звуковую карту компьютера, есть куча проблем:
    1)это софт. софт исключительно глючен и примитивен.
    2)повышенные требования к звуковой, например динамический диапазон. (на диапазоне 7мгц, вещалки работающие чуть выше любительского диапазона тупо перегружают АЦП звуковой)
  • 0
    Вопрос, если с приемником всё понятно (RTL USB Dongle), то есть «дешёвые» решения по SDR передатчикам с возможностью передавать сигнал с шириной полосы около 10MHz?
    Хочется нечто «прицепить» к RC plane'у и через OFDM сделать цифровой downlink.
  • 0
    По пику и названию ожидал увидеть статью про сборку самого девайса, но и так тоже неплохо…
    • 0
      будет и статья про девайс со схемой и разбором — это вступление только
    • 0
      А чего там собирать? Бери да по мануалу паяй, катушки мотай.
      Покупал Ensemble RXTX, комплект скрупулёзно полон: в комплекте даже моточный провод.
  • 0
    !73
    • 0
      73 ra0zhx
  • 0
    Скажите пожалуйста, а как реальный сигнал (напряжение) — «домножают» на синус или косинус?

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