Pull to refresh

Software Defined Radio (SDR)

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

Шерлок Холмс (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, который я получил в подарок, использующий в качестве АЦП — звуковую карту ПК, записать своё видео работы я не стал, поэтому выкладываю найденное на просторах ютуба — мой приемник работает точно так же, первая фотка в статье — он и есть
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+40
Comments 32
Comments Comments 32

Articles