Радиоприёмник из DVB стика за $8 — изучаем SDR с GNURadio

  • Tutorial
Каждый день мы пользуемся множеством радио устройств. Однако редко понимаем, как они работают. Эпоха радиолюбителей фактически прошла, оставив в прошлом любителей спаять приёмник ДВ или СВ своими руками. Да и в методах кодирования техника ушла далеко вперёд. Мы часто слышим рассуждения о взломе умных домов на радио протоколах, о ненадёжности радио связи и т.д. Но многие ли из вас пробовали, например, подслушать Z-Wave сеть умного дома соседа и тем более поуправлять ей? Насколько велика эта угроза для вас?

К счастью в наши дни стали доступны очень удобные средства для работы с радио, а именно SDR.

SDR (Software Defined Radio) позволяет программно перестраивать приёмник и передатчик для работы на различных частотах от 20 до 2000 МГц, после чего произвести обработку сигнала на компьютере с помощью цифровых методов. Это существенно отличает SDR от аналоговых схем радиопрёмников и передатчиков, позволяя легко менять алгоритм обработки полученного сигнала.




Существует множество разных программ для обработки радио сигналов. Я изучил наиболее популярную из них GNURadio. Этот пакет позволяет строить процесс обработки из различных блоков, стыкуя их друг с другом в формате потоковой обработки (pipe). Каждый следующий блок принимает данный от одного или нескольких предыдущих, а вывод передаётся другим блокам.

Под катом я расскажу об основах SDR и GNURadio и о том, как за 8 баксов сделать приёмник AM/FM, китайской управляемой розетки, телеметрии со спутника и всего, что вздумается.



Зачем нам SDR?


Бытовое радио позволяет вам слушать множество станций в различных диапазонах. Однако в эфире есть ещё много всего другого! И вам не нужно никуда подключаться для получения этих данных — эти данные ежесекундно пролетают в эфире мимо вас. Можно сказать, каждый день нас пронзают гигабайты интересных данных. Достаточно их принять и детектировать. Не любопытно ли? Лично мне очень.

Используя SDR передатчик можно ещё и самим создавать радио передатчики. Например, сделать радионяню. Или управлять умными бытовыми устройствами на 433 МГц или даже Z-Wave.

Однако хочется сразу предостеречь: изучите законодательство и решения ГКРЧ на используемые вами диапазоны частот и не нарушайте их!

Лично я пришёл к SDR, уже много лет занимаясь разработкой устройств Z-Wave. Как я уже писал, разработчикам не дают доступ к радио приёмнику-передатчику. Потому мне всегда было интересно, а смогу ли я перехватить сигнал соседской сети Z-Wave или поиздеваться над соседом, включая его приборы (ещё не все устройства Z-Wave имеют шифрование, потому это пока возможно). Ведь настолько же уязвима и моя Z-Wave сеть. Оказалось, это не так просто (пока не смог сделать этого с GNURadio, не используя готовые средства), но надеюсь, я к этому приду и даже напишу в одной из будущих статей. А пока (в следующей статье) будем довольствоваться приёмом команд от пульта к розетке из китайского набора на 433 МГц, а также отправкой команд включения/выключения. Тут протокол оказался в разы проще.

Но вернёмся к азам.

Матчасть


Начнём с небольшого экскурса в теорию. Я предполагаю, что читатель помнит тригонометрию и может самостоятельно погуглить про преобразование Фурье или почитать ссылки, которые я привожу.

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

Например, если мы передаём команды между Z-Wave устройствами, несущая частота будет 869 МГц.

Понятно, что оцифровывать сигнал на такой частоте даже современным компьютерам не под силу — для надёжной оцифровки потребуется запускать АЦП примерно каждые 8 700 000 раз в секунду (если мы считаем 10 отсчётов на период достаточным шагом по времени). Однако в этом и нет смысла, ведь интересует нас совсем небольшая полоса частот 869 МГц ± 200 кГц, т.е. менее 0.5 МГц шириной.

Вспомним, что при умножении на , результат можно представить в виде суммы двух синусоид с частотами и . Если выбрана близко к несущей, то отбросив последнее слагаемое (применив фильтр низких частот — ведь последнее слагаемое содержит удвоенную частоту несущей), мы получаем возможность исследовать низкочастотный сигнал от -200 кГц до +200 кГц, что уже под силу даже микроконтроллеру (например, чипам Z-Wave SD3502 или различным чипам TI или SiLabs). Те, кто помнят устройство старых радиоприёмников, увидят здесь аналогию с гетеродином.

Работа SDR состоит в том, чтобы сгенерировать синтетический сигнал на нужной частоте, перемножить его с отфильтрованным входным сигналом с антенны, пропустить через фильтр низких частота, убрав высокочастотную компоненту, подать на АЦП и далее передать на обработку как есть. Аналогично происходит передача — после ЦАП сигнал умножается с высокочастотным сигналом и излучается антенной.

Блок-схема SDR приёмника показывает, как преобразуется входной сигнал с антенны.



После предварительной фильтрации и умножения входного сигнала на синтетический сигнал (и на сдвинутый на 1/4 фазы, что соответствует переходу от к ), оба получившихся сигнала усиливаются, проходят фильтр низких частот (чтобы убрать наложение высокочастотных составляющих при дискретизации) и оцифровываются. Оцифровка внутри SDR приёмника обычно проводится на скорости 50 МГц (обычно пишут про 50 MSPS, Million Samples Per Second, миллионов отсчётов в секунду), после чего применяется ещё один фильтр, преобразующий поток в нужное количество отсчётов в секунду (обычно не более 2-5 MSPS). Этот последний процесс называется децимацией. Полученные сигналы называют I и Q соответственно.

О децимации
Децимация нужна для «прореживания» входящих отсчётов с целью уменьшения количества данных на единицу времени. Первое, что приходит в голову сделать — это откинуть каждое n-ое значение. Но этого делать категорически нельзя по двум причинам.

Во-первых, такое возможно при желании проредить в целом соотношении, например, 1:2 или 1:3. Но так не получится при желании проредить в 1.5 раза.

Во-вторых, представим, что наш сигнал имеет амплитуды 0 5 10 0 5 10 0 5 10. При прореживании в 3 раза мы отбросим каждое второе и третье значения, получив последовательность 0 0 0. Очевидно, это не соответствует действительности! Мы должны были получить 5 5 5.

Поэтому децимация проводится путём усреднения по нескольким последним значениям. Если требуется прореживание с дробным соотношением, то предварительно проводится интерполяция.


Эти две величины I и Q дают возможность перейти от вещественного сигнала к комплексному представлению , где в общем случае комплексное число, мнимая часть которого говорит о фазе, а действительная об амплитуде. В таком виде математика выглядит значительно проще. Например, указанный сдвиг частоты в таком представлении производится путём простого умножения на .

Важно помнить, что физически значимый сигнал — это действительная часть Re нашего комплексного представления. Однако комплексная форма позволяет выделить амплитуду и фазу.

Железо


Специализированная радиоаппаратура стоит дорого. Однако нам повезло — большинство современных приёмников и передатчиков являются именно SDR, т.е. программно настраиваются на нужные частоты. И некоторые из доступных дешёвых приёмников даже дают доступ к данным с АЦП. Наиболее популярными примерами таких SDR приёмников являются DVB-тюнеры. Наиболее популярными и удобными являются RTL-SDR, основанные на чипах Realtek RTL2832U. На AliExpress их представлено различное множество при средней цене $8 (ищите по словам RTL2832U и R820T или E4000).

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

DVB RTL-SDR стики

Также стоит отметить более профессиональные, но всё ещё доступные железки для игр с SDR: HackRF One и Rad1o badge, сделанный на CCC 2015. Данные железки позволяют не только принимать, но и излучать в широком диапазоне частот.

HackRF OneRad1o Badge

GNURadio Companion


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

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

Какие же действия позволяют делать блоки в GNURadio? Это базовые математические операции над сигналом (сложение/вычитание сигналов, умножение), а также более сложные, например та же децимация, интерполяция, и различные фильтры.

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

Дискретизация и спектр сигнала (опять матчасть)


Пожалуй самыми важными характеристиками при построении блок-схемы обработки сигнала являются sample rate (сколько отсчётов в секунду мы получаем), измеряемая в MSPS и спектр сигнала. Они сильно связаны друг с другом.

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


Такое разложение называется Дискретным Преобразованием Фурье или ДПФ.

Видно, что наивысшая циклическая частота, которая участвует в спектре сигнала, составляет . Ведь sample rate — это количество значений в секунду (N штук), т.е. шаг по времени составляет секунд, а наивысшая частота Гц. Например, если sample rate составляет 2 000 000, то максимальная частота будет 2 МГц. Теперь становится понятно, что для анализа полосы от -200 до 200 кГц нам нужно иметь sample rate не менее 400 000.

Есть ещё одно интересное и неочевидное свойство ДПФ: спектр дискретной функции периодичен, т.е. . Математически это легко доказывается. Почему именно это нам важно? При изучении спектра в окне, отображающим спектр в GNURadio, вы будете часто задумываться о том, что там справа и слева (ведь там должны быть видны спектры соседних радиостанций, подсказывает нам интуиция). Однако это не так, вне окна спектр повторяется точно так же ещё раз, и ещё раз. Но как же соседние частоты и радиостанции? Куда они делись? Информация о них потерялась в тот момент, когда мы с определённой частотой дискретизации (sample rate) оцифровали сигнал вокруг несущей.

Теперь, надеюсь, стало понятно, из каких соображений необходимо выбирать sample rate: спектр изучаемого сигнала должен уместиться в спектральную ширину окна, соответствую выбранному sample rate. У большинства SDR sample rate не может превышать 2-5 MSPS.

Весьма хорошо о преобразовании Фурье, ДПФ и БПФ (Быстром Преобразовании Фурье) написано тут.

Итак, мы разобрались, что для вычисления спектра сигнала при помощи ДПФ, значения собираются в последовательность N штук. Каждое следующее значение добавляется, вытесняя самое старое (FIFO).

Практика. FM приёмника на GNURadio


Итак, у меня есть китайский стик на базе RTL2832U и R820T2. Первое, что мы попробуем сделать — это сделать FМ приёмник. Частотная модуляция не самая простая и я сначала хотел всё продемонстрировать на примере амплитудной модуляции. Но увы в диапазоне > 20 МГц нет станций с AM модуляцией.

Откройте GNURadio Companion и в блоке Options сразу выберем WX GUI (самостоятельно изучите интерфейс, предоставляемый QT). Для этого дважды кликните на блок и измените свойство.

Добавьте блок osmocom source и сразу измените значение Ch0: Frequency на freq. GNURadio написана на Python, и в любые числовые поля можно подставлять выражения на питоне. Внимательно следите за типом полей — если это float, то результатом должно быть действительное число, если int, то целое. Обратите внимание, что sample rate уже связана с переменной samp_rate, определённой в отдельном блоке. Измените samp_rate на 2e6, т.е. мы зададим полосу нашего сигнала 2 МГц.

Переменная freq будет задаваться слайдером. Для этого добавьте блок WX GUI Slider, смените ему ID на freq и установите Default, Minimum и Maximum на 100e6, 50e6 и 150e6, соответственно (заметим, что запись 100e6 является валидным числом nbgf float в Python). При движении слайдера значение freq будет меняться от 50 000 000 до 150 000 000 с шагом в 1 000 000 (100 делений, смотри поле Num Steps).

Теперь добавим блок WX GUI FTT Sink (графическое отображение результатов ДПФ). Соедините вентиль in этого блока с вентилем out блока osmocom source. Этим мы указали GNURadio, что вывод одного блока необходимо передать на вход другого блока.

Блок-схема GNURadio


Запустим наш проект. В появившемся окне можно видеть спектр с частотами от -1 МГц до 1 МГц (как мы и заказывали, диапазон 2e6 МГц в соответствии с samp_rate). Но ведь мы смотрим на диапазон 100 МГц, а не -1 – +1 МГц! Всё дело в том, что в SDR уже произошло умножение частот, и поступающий с SDR сигнал действительно уже не имеет информации об исходной частоте. Поэтому для удобства в блоке WX GUI FTT Sink в поле Baseband Frequency укажите тоже значение переменной freq. После перезапуска шкала частот будет выглядеть наглядней.

Итак, подвигайте слайдер в диапазоне 60–110 МГц и понаблюдайте за спектром: вы видите множество FM станций. Также посмотрите, как сильно меняется приём при приближении вашей руки к антенне. Штатная антенна рассчитана на диапазон примерно 800 МГц, и ваше тело изменяет эффективную длину антенны, делая приём лучше.

А теперь предлагаю послушать вашу любимую станцию. FM демодуляция не очень проста в математике, поэтому в GNURadio даже есть готовый блок FM Demod. Ему нужно указать ширину канала и децимацию для выходного аудио сигнала. Последняя должна равняться отношению текущего sample rate к тому, который должен быть у аудио сигнала (48 кГц). Подключите выход этого блока к Audio Sink. Для удобства заведём ещё одну переменную audio_samp_rate = 48000 (это int!) для битрейта звуковой карты, а децимацию int(samp_rate/audio_samp_rate). Но если такой проект запустить и настроить частоту на одну из станций в вашем городе, то вещание станции будет сильно забито шумами. И это понятно, мы забыли выделить одну станцию из всего диапазона.

Добавим между блоками osmocom source и FM Demod ещё один блок Low Pass Filter. Это фильтр низких частот. Настроим его, чтобы он обрезал всё за пределами 100 кГц с переходом шириной 100 кГц (можно потом подобрать параметры получше). Теперь звук будет намного чище. Также если громкости мала, то можно перед Audio Sink добавить Multiply Const для увеличения амплитуды выходного аудио сигнала.

Блок-схема GNURadio


Несколько полезных советов


От одного блока можно передавать данные не только в один, но и в несколько блоков.

При проектировании блок-схем в GNURadio часто удобно добавлять окно FFT Sink и другие средства визуализации. Однако их большое количество изрядно нагружает процессор. Можно, конечно, удалять такие блоки, когда они уже не нужны. Но в GNURadio есть удобная возможность отключить блок, не удаляя его. Это можно сделать из контекстного меню или нажав быстрые клавиши D[isable] и E[nable].

При анализе сигнала от электронных устройств часто нужно нажимать на них на кнопки для получения радио последовательности. Но можно единожды записать последовательность в файл, после чего проигрывать его и отрабатывать блок-схему. Для записи используйте блок File Sink, а для проигрывания File Source. Тут есть подводный камень: при проигрывании из файла GNURadio не знает ничего о скорости, с которой нужно «подавать» данные в остальные блок, и будет пытаться работать на максимальной скорости, загружая процессор. Для ограничения скорости чтения нам нужно добавить специальный блок Throttle, указав желаемый sample rate.

Если нужно сдвинуть спектр вправо или влево на какую-то величину (например, для применения потом Low Pass фильтра), можно умножить сигнал на синусоиду. Для этого воспользуйтесь блоком Signal Source и перемножьте их при помощи Multiply. Ровно так и делается в SDR приёмнике. Например, можно отправить сигнал в две последовательности блоков. В одной сдвинуть на одну боковую частоту, во второй на другую боковую частоту. Далее в оба отфильтровать фильтром низких частот и сравнивать два сигнала. Именно так делается при детектировании частотной манипуляции.

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

При изучении спектров сигналов с некоторыми RTL-SDR вы столкнётесь с постоянным пиком ровно в середине спектра. Причём этот пик не двигается при перестройке частоты, всегда оставаясь посередине. Это явление называется DC spike. Очевидно, эта частота (0 Гц) соответствует константе. Связана она с тем, что в приёмнике перед АЦП бывает присутствует небольшая постоянная составляющая. В GNURadio у блоков osmocom source и RTL-SDR source есть галочка DC Offset Mode, позволяющая убрать эту составляющую.

Помимо записи в файл GNURadio имеет блоки для передачи в UDP/TCP сокеты и получения данных из них. Например, можно даже сделать радио -> UDP broadcast вещание.

Хочется попробовать передачу данных, но пока не обзавелись Hack RF One или аналогом? Не беда. Можно потренироваться использовать Audio Sink с Audio Source. Например, можно научиться передавать данные через ультразвуковые волны, используя микрофон и колонки. Вот пример такого проекта: www.anfractuosity.com/projects/ultrasound-via-a-laptop

Что ещё почитать?


gnuradio.org/redmine/projects/gnuradio/wiki
greatscottgadgets.com/hackrf
habrahabr.ru/post/204310
Z-Wave.Me
0.00
Производитель оборудования Z-Wave
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 47

    +2
    Под катом я расскажу… как за 8 баксов сделать приёмник… китайской управляемой розетки

    А пока (в следующей статье) будем довольствоваться приёмом команд от пульта к розетке из китайского набора на 433 МГц

    image
    Я уже молчу про то, что у соседа может и не быть Z-Wave вообще, и тем более — про "поиздеваться".

    ps. расскажу всем желающим, как слушать/управлять китайскими розетками за $2,5.
      0
      Для "поиздеваться" нужно иметь HackRF One или аналог (у меня Rad1o Badge). Можно и за 2.5 бакса, но здесь о методе, а не о цене.

      С китайскими розетками будем развлекаться в следующей части — там протокол сильно проще, чем Z-Wave и аналоги. Там простая модуляция и примитивная адресация.
        0
        Я на самом деле о том, что ломать чужие лампочки — мягко, говоря, не слишком высокая честь. Впрочем, дело ваше.
          +1
          Да я и не собирался ;) Ведь не ради этого всё делается, а ради понимания, что и как работает. Поверьте, будучи разработчиком Z-Wave устройств, я могу слушать эфир и фабриковать пакеты и без всех этих понтов с GNURadio. Удовольствие не в том, чтобы взломать, а в том, чтобы уметь и понимать степень угрозы.
        0
        расскажи )))
          +1
          Делай раз

          Делай два

          Делай три

          Делай четыре

          Принцип простой: подключаем приемник и передатчик к Arduino (приемник нужен, чтобы прочитать команды имеющихся пультов и больше ни для чего) и пользуемся библиотекой RC-Switch для чтения/передачи команд. Во многих случаях больше ничего не нужно, поскольку китайцы в простейших розетках, выключателях света, датчиках ОПС и реле используют одни и те же кодировщики сигнала (SC/PT2260/2262 и подобные) и одну и ту же амплитудную модуляцию.

          Также есть библиотеки для специфических вариантов розеток, библиотека для радиовыключателей Livolo (китайцы извратились — сделали похоже на распространенную систему SC/PT2260/2262, но со своей загогулиной), плюс с помощью элементарной схемы, Audactiy и собственной головы можно эмулировать множество других протоколов с амплитудной модуляцией.
            0
            Ну, это не интересно. Можно и готовый пульт купить. Интересно же в радио разобраться, а не готовую библиотеку подключить. Весь фан прямо выкинули… ;)
              0
              У меня, если честно, такое ощущение, что вы читаете, но до конца не дочитываете ) Но уж раз так, то: с радио на 433 МГц с амплитудной модуляцией никакого фана. Либо есть несущая — либо ее нет. А дальше либо руками (ага, Audacity), либо с помощью анализатора протоколов, либо с помощью библиотек.


              И вот:

              Фан раз

              Фан два
                +1
                Согласен, согласен, фан есть. Просто я хочу сделать руками то, что в этой RCSwitch запрограммировано.

                Я из тех, кто пока сам ручками не пройдёт весь путь, не прочувствует, как оно устроено.
                  0
                  Не так часто, читая GT возникает желание сорваться с места, цапнуть что то в руки и реализовать написанное — дабы почувствовать как оно "устроено".
                  Данная статья — редкое исключение!
                  Спасибо!
                  С нетерпением будем ждать вторую часть:)
          +2
          Еще можно беспроводным дверным звонком управлять, чтобы уж совсем...

          image
            0
            Можно, но не любым. Я тут столкнулся с тем, что:

            а) китайцы приспособились их делать просто на сдвиге частоты, без кодировки вообще
            б) местные совместно-китайские бренды периодически клепают варианты на 315 МГц, что подразумевает лишнюю пару приемник-передатчик, или же действительно SDR.
          +1
          https://github.com/andersesbensen/rtl-zwave — набор утилит для прослушивания траффика z-wave, как раз для rtl sdr
          https://github.com/AFITWiSec/EZ-Wave — а тут с возможность посылать команды, но нужно уже что-то типа HackRF. Зато в комплекте идут слайды с их презентации, которая была в этом году.
            0
            О! спасибо за ссылки. Второй проект новый, ещё не видел. Первый тестили, работает.

            Но мне хочется сделать всё на GNURadio для более глубокого понимания — проще блоки двигать, понимая, что к чему, чем зарыться в C++. И другим проще анализировать.
            +2
            Про децимацию вы не совсем верно написали.
            Суть не в том, что пропускаются какие-то из значений, а в том, что при простом прореживании произойдёт наложение спектров. А при использовании нескольких последних значений как бы применяется фильтр нижних частот с АЧХ вида sinc(f).
              +2
              Мне кажется, тут оба объяснения верны: усреднение позволяет убрать альясинг от более высокой частоты (у меня в примере "на пальцах" 0 5 10 имеет в 3 раза выше частоту), т.е. наложение более высокой частоты на частоту моего прореживания. Усреднение и есть фильтр нижних частот.

              Ваше объяснение более точно звучит, но совсем не очевидно "на пальцах". Если подскажете, как более корректно описать без влезания в дебри, поправлю текст.
              0
              Фам Нювен одобряет
                0
                А что у него было с SDR?
                  0
                  Он забавлялся с чужим IoT
                +4
                в диапазоне > 20 МГц нет станций с AM модуляцией
                Авиадиапазон 118-138 МГц АМ-модуляция.
                  –1
                  Из дома не слышу их, далеко до а/п, а самолёты над городом не летают. Я хотел найти что-то такое, что все смогут увидеть и поизучать. АМ, конечно, проще сделать из базовых блоков GNURadio (имею в виду не из готовых блоков, а из базовых математических).
                    +1
                    Самолеты на авиадиапазоне с земли слышны за много сотен километров. И притом на "резинку" портативной радиостанции или "сканера".
                      0
                      Я так понимаю, передача идёт не очень часто. Особенно сейчас, ночью, когда самолёты не очень-то и летают. Надо утром попробовать будет.
                        0
                        Сидя в 10км от Внуково, я слышу всю МВЗ, про расстояние врать не буду, но пересечение госграницы я слышал однажды.
                        А еще именно при помощи SDR-свистка я слушал наземные службы Внуково, очень забавные там были иногда разговоры.
                          0
                          Поделитесь, какие частоты. От меня 30 км через бетон златоглавой, т.е. без шансов. Но у друзей в Новопеределкино прямая видимость, можно будет попробовать.
                            0
                            Бетон ничего не значит, диспетчеры всего кроме старта/посадки сидят и вещают из Постниково. Самолёты слышно за 200км устойчиво на крысий хвост, идущий в комплекте со свистком.

                            Частоты авиадиапазона смотрите на радиосканнере, 108-118МГц, а вот частоты наземных служб я не помню, то ли 900 с чем-то, то ли 600. Вообще, передачи все на waterfall очень хорошо видно.
                              0
                              Одно время пытался поймать переговоры, ставил метровую телевизионную антенну — ни земли, ни самолетов. А ADBS координаты свисток дешифровывает.
                                0
                                У меня свисток с вырезанным куском, так что ADS-B мне не доступен, увы…
                                К телевизионной антенне смысла цепляться нет, в ней внутри могут стоять фильтры на диапазон.
                                Найдите частоту подхода ближайшего к вам аэродрома, и попробуйте послушать её на хвост, который идёт с свистком.
                                  0
                                  Кроме согласующий цепей внутри ничего фильтрующего "диапазоны" нет. Может быть усилитель, если антенна активная. А вот диаграмма направленности теле антенны достаточно узкая, по этому нужно достаточно точно знать направление на источник сигнала. Отсюда и тишина в эфире — пока они вещают, ваша антенна в другую сторону смотрит. Повернули в нужную, а там уже замолчали

                                    0
                                    Тупой диполь из комплекта ТВ. FM слушать на ней замечательно — лучше, чем на комплектную антенну свистка. Может и направление, искал хоть поймать аэропорт, если самолеты не ловятся — нашел радиосвязь железнодорожного узла.
                  0
                  А карты погоды со спутников на частоте 137 МГц не пробовали принимать таким образом? У меня прям мечта детства, с тех времен, когда интернет был еще не у всех.
                    0
                    Увы, я не вижу, слабый сигнал, видимо, а антенна у меня совсем не на 2 метровые волны. А резать эту не хочется. Надо разъем такой найти и сделать за окном. Тогда и самолёты будут слышны.
                      +2
                      Принимается без проблем на квадрифолярную антену вынесенную на балкон. Правда при таком расположении связь пропадает, когда спутник экранируется домом. При установке на крыше было бы дольше-лучше-дальше.
                      Если принимать на растяжку или на два полуволновых вибратора, то тик-так со спутника слышен и на подоконнике — но картинку нормальную не получить.
                      Для GNURadio есть скрипт позволяющий принимать LRPT (цифровой поток 137мгц) с Метеора М2 на RTL-SDR. Правда я давно не интересовался его здоровьем и не уверен вещает ли он сейчас в этом формате

                      +2
                      Статья неплохая, но содержит множество технических неточностей.



                      Описание неточностей
                      Важно помнить, что физически значимый сигнал — это действительная часть Re нашего комплексного представления.

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

                      Итак, получив последовательность значений I и Q

                      Комплексный сигнал, то есть.

                      SDR (Software Defined Radio) позволяет программно перестраивать приёмник и передатчик для работы на различных частотах от 20 до 2000 МГц, после чего произвести обработку сигнала на компьютере с помощью цифровых методов. Это существенно отличает SDR от аналоговых схем радиопрёмников и передатчиков, позволяя легко менять алгоритм обработки полученного сигнала.

                      Существенное отличие технологии SDR в том, что SDR-приемники дают доступ к квадратурным составляющим сигнала. Почти все современные приемники (Wi-Fi, Bluetooth, чипы вроде nRFxxxx) производят обработку сигнала именно в квадратуре, но не все дают к ней доступ извне.

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

                      Скорее способ переноса спектра сигнала в область несущей.

                      Понятно, что оцифровывать сигнал на такой частоте даже современным компьютерам не под силу — для надёжной оцифровки потребуется запускать АЦП примерно каждые 8000 раз в секунду (если мы считаем 10 отсчётов на период достаточным шагом по времени).

                      Скорее 869 МГц*10 = 8.7 GSPS.

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

                      Это и есть гетеродинирование.

                      Работа SDR состоит в том, чтобы сгенерировать синтетический сигнал на нужной частоте, перемножить его с отфильтрованным входным сигналом с антенны, пропустить через фильтр низких частота, убрав высокочастотную компоненту, и подать на АЦП.

                      В этом состоит работа аналоговых входных цепей (analog front-end). Само по себе SDR — принцип прямого доступа к квадратурным составляющим с программного уровня.

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

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

                      Теперь становится понятно, что для анализа полосы от -200 до 200 кГц нам нужно иметь sample rate не менее 400 000.

                      В случае вещественного сигнала значимые компоненты расположены до частоты Котельникова/Найквиста, а дальше зеркально повторяются. В случае комплексного сигнала используются все выборки.

                      К слову, это одно из преимуществ квадратурной обработки — каждый канал (I/Q) требует только половину полосы сигнала.

                        0
                        Ё-мое, эта большая портянка должна была быть спойлером...
                          0
                          Со многим согласен, хотя в некоторых местах вы явно перфекционизмом занялись — цель была сделать чтиво попроще и понятным хотя бы автору ;)

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

                            Об упрощении
                            Я бы вообще не стал вдаваться в природу синфазной и квадратурной компонент (I/Q) — это материал для отдельной статьи. Просто не грузить этим читателя, если мы предполагаем, что он изначально мало знаком с темой. Далее, формулировка "способ преобразовать низкочастотный сигнал в высокочастотный" наводит на мысли об умножении частоты, в то время как имеется в виду перенос информации с одной несущей на другую. И так далее...


                            Не знаю, честно говоря, как тут принято, я все же не завсегдатай этого ресурса. Пускай кто-нибудь более знающий укажет, как следует поступить. Сама-то статья несомненно интересная, ибо, насколько я могу судить, про GNU Radio на русском написано не так много.
                          0
                          Что еще почитать:
                          www.rtl-sdr.com — все о RTL2832U включая ссылки на необходимый софт
                          www.flightradar24.com/build-your-own — собираем adb-s приемник для flightradar24
                          play.google.com/store/apps/details?id=marto.androsdr2&hl=en — при наличии root и OTG можно подцепить к android-смартфону
                            0
                            На базе SDR можно сделать осциллограф?
                            Как нибудь попроще, для чайника?

                            (гугл, яндекс отвечают односложно, в виде 3 вариаций одного и того же на 50+ страницах).
                              0
                              Для низких частот осциллограф "делается" из звуковой карты.
                                +1
                                Не нужно так делать.
                                Обыкновенный осциллограф умеет работать с сигналами частотой 0 Гц, т.е. от постоянного тока и выше.
                                У DVB-свистков минимальная частота сигнала — мегагерцы (HackRF обещают от 1 МГц, у китайцев наверняка больше на порядок).
                                Т.к. "в быту" наиболее интересны сигналы от 0 и до сотен килогерц, подобные железяки не помогут никак...

                                Из дешёвых решений поищите слово "saleae" и "usbee".
                                  0
                                  Seleae — насколько я знаю, логический анализатор. Это как бы не совсем осциллограф. Usbee — да, может и осциллографом и генератором и анализатором спектра работать
                                  0
                                  Из них прямо "из коробки" получаются анализаторы спектра :)
                                  0
                                  Прочитал статью «как поставить GNU Radio под виндовс». Грусть-тоска: куча зависимостей, всё из исходников, чуть другая версия — и ничего не собирается. И это в официальной документации!
                                  Есть у кого опыт, донглы эти нормально в виртуалку пробрасываются? Там трафик-то немаленький, и к задержкам критичный…
                                    0
                                    Оно и на Ubuntu не на всех версиях нормально работает. Сейчас специально поставил виртуалку для GNURadio, чтоб её не трогать и не ломать. Нормально всё пробрасывается. У меня VirtualBox, всё ок.
                                      0
                                      Не переодически юзал gnuradio с 13 по 15 ubuntu, из явных траблов было то что скрипты иногда хотят релизы питона отличные от системного. Или из репозитория качается версия одна, а скрипт написан под другой релиз с отличными библиотеками.
                                    0
                                    Статья отличная!
                                    Теперь вопрос: какая средняя погрешность в фазосдвигающем сплиттере (90 град.)?

                                    Only users with full accounts can post comments. Log in, please.