When engineering is in blood
Show menu Hide menu


@Graveraider Играет песня Гражданской обороны — Некрофилия

@hobbyworld_twit a world war of cthulhu чей?

@turbojedi Клаву хардварную была попытка сделать?


@001iz @Graveraider Всегда был вопрос а как у Evil персонажей могут быть романтики. Там скорее как в KoToR прогибание под свою сторону силы.

@Graveraider @001iz Q: Есть ли в игре романы? A: Да. Вы можете завести роман с 4 компаньонами, 2 из которых бисексуальны.

@001iz Заметки натуралиста, наплыв народу в комиксшопы вот произошел, после теории большого взрыва, где ненавязчиво подавалась идея что у задрота есть деньги, главное втереться к нему в доверие) Но только с хардкором тяжело.
Метки
Попался мне тут в руки стик e4000, я решил его подключить. Но писать об этом слишком скучно, да и получается какая-то Windows TM магия с рассказыванием про то как запустить GUI и нажать там парочку кнопок
Поэтому в статье по мимо подключения SDR Dongle E4000 ,приводится перевод терминов используемых в SDR , а также основные принципы работы GNU Radio.
Я не начинающий радиолюбитель, у меня нет в запасе какого-то опыта, поэтому если Вам что-то не понятно или не нравится пишите, подправим/дополним

Table of Contents
Быстрый старт для E4000
Характеристики
Elonics E4000 — 52 — 2200 MHz with a gap from 1100 MHz to 1250 MHz (varies)
Установка
Ну в общем под Ubuntu все просто нужно PPA,которое под GUI оболочку Gqrx, но туда включено GNU Radio https://launchpad.net/
Затем вставляем донгл запускаем Gqrx
Собственно, запустится GUI который изображен на скриншоте ,это GQRX отдельная разработка , GNU-Radio же позволяет собирать свои интерфейсы, но увы пока ничего качественного сразу не удается, да и это больше запутает. Ниже будут даны определения ,некоторым сокращениям. Также GQRX поддерживает HackRF BladeRF , но это софтина раскрывает лишь малую толику их потенциала.
Также, дальше стоит воспользоваться подробными инструкциями о том как работать с GNU Radio и донглом.
А именно проверка и удаление мешающего на 3.x ядрах модуля ядра dvb_usb\_rtl28xxu ,если он есть конечно
Прослушивание указанной частоты из консоли
Ham it up v1.2 upconverter
Немного о конверторе
Конвертер Ham It Up v1.2 — RF Upconverter For Software Defined Radio высококачественный приемный КВ конвертер Hi-End КВ конвертер (RTLSDR/FUNCUBE)
- Предназначен для любого приемника УКВ с диапазоном 125 MHz to 155 MHz — например RTLSDR.
- Отлично подходит и проверен на ДВ-СВ и КВ в комплекте с RTL-SDR
- Питание от мини USB тип В или +5В .
- Диапазон принимаемых сигналов 100КГц до 50МГц.
- Имеет пассивный высокоуровневый смеситель Miniciruits ADE IP = +7дБм
- Хорошая фильтрация — ФНЧ — LO ДПФ — IF Output ДПФ
- Есть коммутация на обход, Вы можете одним переключением обойти этот КВ конвертер и вернуться к прослушиванию УКВ диапазона.
- ПРЕКРАСНО РАБОТАЕТ с HDSDR и SDRConsole v2
- Нужно сконфигурировать как UP CONVERTER IF — 125 M
Краткая справка по терминам

Чем меньше длинна волны тем больше частота.
У нас в отличии от «буржуев» все через длину волны выражается.
| Диапазон частот | Обозначение английское | Диапазон частот | Виды модуляции | |
|---|---|---|---|---|
| Длинные волны(ДВ) | 148.5-283.5 кГц | Low frequency(LF) | 30 -300 kHz | AM, DRM |
| Средние волны(СВ) | 526,5-1606,5 кГц | Medium frequency(MF) | 300kHz-3MHz | AM, DRM |
| Короткие волны(КВ) | High frequency(HF) | 3-30MHz | AM, DRM | |
| КВ-1 | 3,95-4,00 МГц | |||
| КВ-2 | 5,90-6,20 МГц | |||
| КВ-3 | 7,20-7,45 МГц | |||
| КВ-4 | 9,40-9,90 МГц | |||
| КВ-5 | 11,60-12,10 МГц | |||
| КВ-6 | 13,57-13,87 МГц | |||
| КВ-7 | 15,10-15,80 МГц | |||
| КВ-8 | 17,48-17,90 МГц | |||
| КВ-9 | 18,90-19,02 МГц | |||
| КВ-10 | 21,45-21,85 МГц | |||
| КВ-11 | 25,67-26,10 МГц | |||
| Ультра короткие волны | ||||
| УКВ(Метровые) | Very High Frequency (VHF) | 30-300MHz | FM | |
| УКВ(дециметровые) | Ultra-high Frequency(UHF) | 300MHz-3GHz | ||
| L | 1-2GHz | |||
| S | 2-4GHz | |||
| УКВ(миллиметровые) | Super-high Frequency | 3GHz-30GHz | ||
| C | 4-8GHz | |||
| X | 8-12GHz | |||
| K_u | 12-18GHz | |||
| K | 18-26.5GHz | |||
| Extremely high frequency | 30-300GHz | |||
| K_a | 26.5-40GHz | |||
| Q | 30-50GHz | |||
| U | 40-60GHz | |||
| V | 50-75GHz | |||
| E | 60-90GHz | |||
| W | 75-110GHz | |||
| F | 90-140GHz | |||
| D | 110-170GHz |
| Русская аббревиатура | Расшифровка | Английская аббревиатура |
|---|---|---|
| AM | Амплитудная модуляция | AM |
| ЧМ | Частотная модуляция | FM |
| ЛЧМ | Линейная ЧМ | Chirp |
| ФМ | Фазовая модуляция | PM |
| КАМ | Квадратурная АМ | QAM |
| Continuous wave(morse code) | CW | |
| CW Lower Sideband | CWL | |
| CW Upper Sideband | CWU | |
| Upper Sideband | USB | |
| Lower Sideband | LSB | |
| Спутниковый конвертер | LNB | |
| Цифровое(Аудио)радиовещание | DAB | |
| Набор технологий для DAB | DRM |
Что ловить
Очевидно- радио)))) Иногда можно определить что Вы поймали, что-то не то.
распределения полос частот между радиослужбами Российской Федерации
Небольшой перевод про о базовых концепциях GNU Radio — Источник
Базовые концепции GNU Radio
Это очень простой вводный учебник к GNU Radio. Вам точно понадобится прочесть его , перед чтением чего нибудь ещё. Даже если вы об этом всем, по крайне мере бегло просмотрите, может вы что-то пропустили.
Потоковые графы – and what they’re made of
Прежде чем,мы к чему нибудь приступим, с начало на необходимо понять самые базовые концепции GNU Radio: Потоковые графы и блоки.
Потоковые графы это графы (из теории графов), по которым идут потоки данных. Множество приложений GNU Radio содержат, только потоковый граф и ничего более. Узлы этого графа называются блоками, а потоки данных текут по ребрам его.
Любая фактическая обработка сигнала производится блоками. В идеале каждый блок должен делать только одну работу, этот путь позволяет оставаться GNU Radio модульным и гибким. Блоки обычно пишутся на C++ (также можно писать их на Python); писать новые блоки не очень сложно.
Чтобы как то представить этот рассеянную по топику тему, давайте начнем с примера (все примеры были созданы с помощью GNU Radio companion (GRC) — графический интерфейс к GNU Radio).
Здесь, представлено три блока(прямоугольники). Данные перемещаются с лева на право в данном примере, это означает что они берут начало в аудио источнике проходят через фильтр низких частот и заканчивают свой путь записываясь в файл на жестком диске.

Блоки соединяются через порты. У первого блока нет входного порта, он создает образцы(sample). Такой блок, только с входным портом, называется Исток(source). В аналоговом стиле, последний блок , без выходного порта, называется Сток (sink).
Иногда это смущает: с точки зрения пользователя, аудио блок (также снимает образцы с звуковой карты) и является лишь частью обработчика. Когда мы говорим о Стоках и Истоках, это всегда означает с точки зрения потокового графа.
Так что же происходит здесь. Блок audio source подсоединен к драйверу звуковой карты и выводит аудио образцы. Это образцы дольше обрабатываются в фильтре низких частот. Наконец образцы(сэмплы), передаются в блок который записывает их в WAV файл.
Элементы
В основном, мы называем то что блок выводит — элементом. В предыдущем примере, один элемент это вещественное число представляло один сэмпл произведенный аудиодрайвером. Однако, элемент может быть представлен и в цифровом виде. Наиболее распространенный тип сэмплов это вещественные — real samples (как в примере выше), комплексные — complex samples (наиболее распространенные в software defined radio), целые — integer types и векторы — vectors этих скалярных типов.
Чтобы понять эту концепцию рассмотрим анализ БПФ (Быстрое Преобразование Фурье или FFT). Скажем так, мы хотим выполнить БПФ над сигналом, перед тем как сохранять его в файл. Конечно же нам необходимо некоторое количество сэмплов в одно время, чтобы вычислить БПФ; в отличие от фильтров , оно не работает с одним единственным образцом.
Вот как это работает:

Здесь появился, новый блок названный ‘Stream to vector’. Его особенность в том что выводимое им значение отличатся от того что поступает на вход. Этот блок берет 1024 сэмпла (т.е. 1024 элемента) и посылает их на вывод в виде одного вектора из 1024 сэмплов (т.е. это его элемент ). Комплексный вывод БПФ затем преобразуется как величина площади в реальный тип данных (обратите внимание как мы используем различные цвета портов для указания различных типов данных).
Так что помните: элемент может быть любым, сэмпл, набор битов, заданный коэффициент для фильтра или любой другой.
Вот что вы должны знать:
- Вся обработка сигнала в GNU Radio осуществляется через потоковые графы.
- Потоковый граф состоит из блоков. Блок совершает одну операцию по обработке сигнала,такую как фильтрация, добавление сигнала, превращение,декодирования, доступ к железу и множество других.
- Данные перемещаются между блоками в различных форматах, комплексные или вещественные , целые, числа с плавающей точкой или любой другой заданный вами тип.
- Каждый потоковый граф должен обладать по крайне мере одним Истоком и одним Стоком.
So what does GNU Radio do?
С начала, вот что вы делаете: вы проектируете потоковый граф, выбираете блоки и задаете соединения и сообщаете об этом всем GNU Radio. С GNU Radio вы сталкиваетесь дважды: сперва, оно поставляет вам множество блоков. После того как потоковый граф задан, оно выполняет граф вызывая блоки один за другим и проверяет что элементы передаются от одного блока к другому.
Частота дискретизации
Конечно, если вы читаете эту статью, вы знаете что такое частота дискретизации (если это не так, отправляйтесь к картинке чтобы понять это).
Давайте посмотрим на потоковые графы. В первом примере, аудио источник обладает фиксированной частотой дискретизации 32кб/с. Так как фильтр никак не меняет частоту дискретизации, эта частота используется на протяжении всего потокового графа.
Во втором примере, второй блок (stream to vector) создает элемент каждые 1024 элемента, поступающих на вход. Так что, частота с которой создаются эти элементы в 024 раза меньше, чем та с которой он потребляет элементы (то что на самом деле он производит столько же байт ,сколько и потребляет, здесь не имеет значения). Такой блок называется дециматором(decimator), потому что он прореживает частоту появления элементов. Блок создающих элементы с большей частотой чем та что поступает на вход называется интерполятором (interpolator). Если создание и потребление элементов происходит на одной частоте , это — sync block.
Теперь ,давайте вернемся ко второму примеру. Как уже упоминалось он обладает различными частотами дискретизации на всем потоковом графе. Но какая частота является базовой?
OK, приготовьтесь: нет такой вещи. До тех пор пока нет представления о внутреннем таймере железа который фиксирует частоту, частота дискретизации бессмысленна– только относительная частота (т.е. отношение частот входа к выходу. Ваш компьютер может обрабатывать сэмплы так быстро ,как он хочет (заметьте это может заставить ваш компьютер зависнуть, т.к. 100% ЦПУ будет занято обработкой вашего сигнала).
Вот другой пример:

Прежде всего, что нового мы здесь видим здесь представлены один Сток и два Истока. Каждый порт представляет из себя один из каналов(левый и правый) звуковой карты, которые работают на фиксированной и разной частоте.
Подробнее о блоках (и атомарности) #
Давайте вернемся к блокам. Наибольшая часть GNU Radio это большое количество блоков.Когда вы начнете использовать GNU Radio, вы будете соединять блок за блоком. Рано или поздно Вам понадобится блок, который будет недоступен в GNU Radio, тогда вы лего можете написать его самостоятельно. Это не трудно.
Вопрос в том ,что вы поместите в этот блок? В идеале, блоки должны быть как можно более атомарными; каждый блок должен выполнять только одну работу — этот путь оставляет GNU Radio модульным и гибким. Однако ,иногда это просто не работает. Некоторые блоки , должны будут выполнять несколько заданий одновременно. Вы вероятно найдете компромисс между модульностью и производительностью.
Метаданные
Поток сэмплов может стать гораздо интересней ,если к нему подсоединить интерпретируемые метаданные, такие как время приема, центральная частота, частота дискретизации, или что нибудь специфичное для протокола передачи такие как идентификационная нода.
В GNU Radio, добавление метаданных к потоку осуществляется через механизм называемый метками stream tags. Метка это специфический объект которая соединена со определенным элементом (т.е. сэмплом). Это может быть скаляр любого типа, вектор, список ,словарь или то что укажет пользователь.
Сохраняя поток на диск, метаданные также будут сохранены (смотри также Metadata Documentation Page).
В третьей части было рассказано, как получить доступ к SDR-приемнику посредством языка Python. Сейчас мы познакомимся с программой GNU Radio — системой, позволяющей создать достаточно сложную конфигурацию радиоустройства, не написав ни единой строчки кода.

Для примера рассмотрим задачу параллельного приема нескольких FM-станций на один приемник. В качестве приемника будем использовать все тот же RTL SDR V3.
Продолжение под катом.
Установка
Для начала работы GNU Radio необходимо установить, дистрибутив для Windows можно скачать здесь. Система эта кроссплатформенная, версии есть также под Linux и под OSX (вроде бы GNU Radio успешно запускали и на Raspberry Pi, но 100% гарантии дать не могу).
По сути, GNU Radio это целый фреймворк для цифровой обработки сигналов, в котором программа «собирается» из отдельных модулей. Есть большое количество уже готовых блоков, при желании также можно создавать свои собственные. Сами модули написаны на С++, а для взаимодействия блоков друг с другом используется Python. Желающие могут посмотреть на API более подробно, но на практике это, скорее всего, не пригодится — все действия можно делать визуально в программе GNU Radio Companion.
Система ориентирована на обработку потоков данных, так что каждый блок обычно имеет вход и выход. Далее, соединяя блоки в редакторе, мы получаем готовую систему. Сам интерфейс GNU Radio довольно простой, сложность состоит в понимании того, что делает тот или иной блок. Как говорилось ранее, низкоуровневая работа с SDR имеет высокий порог входа и требует некоторого знания в DSP и математике. Но мы рассмотрим простую задачу, для которой никаких специальных знаний не потребуется. Итак, приступим.
Начало работы
Запускаем GNU Radio Companion, создаем новый проект, тип проекта выбираем WX GUI, добавляем на экран и соединяем два блока, как показано на скриншоте.

Мы видим два типа блоков — Source (источник) и Sink (выход, «слив»). RTL-SDR — это наш приемник, FFT GUI — это виртуальный спектроанализатор.
Переменную Sample Rate устанавливаем в 2048000, это частота дискретизации нашего приемника. Частоту RTL-SDR оставляем по умолчанию равной 100МГц.
Запускаем проект — все работает, мы видим спектр FM-станций. Первая программа для GNU Radio готова!

Если мы посмотрим лог, то увидим такие строки.
Generating: ‘D:\MyProjects\GNURadio\top_block.py’
Executing: C:Python27python.exe -u D:MyProjectsGNURadio op_block.py
Да, мы можем посмотреть файл top_block.py, который сгенерил нам GNU Radio Companion. Истинные джедаи могут писать непосредственно в Python, но требуемый код, как мы видим, довольно большой. Мы же создали его за 1 минуту.
Впрочем, если убрать громоздкую инициализацию, то мы увидим, что ключевых строк кода не так уж много.
Так что в принципе, это можно написать вручную. Но мышью оно все-таки быстрее. Хотя возможность поменять код иногда может пригодиться, если захочется добавить какую-то нестандартную логику.
Принимаем FM-радио
Теперь попробуем принять одну из станций. Как было видно из скриншотов, центральная частота приемника 100МГц и ширина полосы пропускания около 2МГц. На спектре мы видим две станции, на 100.1МГц и 100.7МГц соответственно.
Первым шагом необходимо перенести спектр станции в центр, сейчас он отстоит вправо на 100КГц. Для этого вспоминаем школьную формулу умножения косинусов — в результате будет две частоты, сумма и разность — нужная станция сдвинется в центр, что нам и нужно (а лишнее мы потом отфильтруем).
Создаем две переменные для хранения частоты freq_center=100000000 и freq_1=100100000, также добавляем генератор сигналов с частотой freq_center — freq_1.

Т.к. система построена на базе Python, то в полях ввода параметров мы можем использовать выражения, что достаточно удобно.
Схема в итоге должна выглядеть так:

Теперь необходимо добавить сразу несколько блоков — уменьшить тактовую частоту входного сигнала (она равна 2048КГц), отфильтровать сигнал, подать его на FM-декодер, затем еще раз уменьшить тактовую частоту до 48КГц.
Результат показан на картинке:

Считаем внимательно. Мы делим тактовую частоту 2048КГц в 4 раза блоком Rational Resampler (получаем 512КГц), затем после Low Pass фильтра стоит WBFM-декодер с децимацией 10 (получаем 51.2КГц). В принципе, этот сигнал уже можно подать на звуковую карту, но высота тона будет чуть отличаться. Еще раз меняем тактовую частоту в 48/51, в результате будет тактовая частота 48.2КГц, разницей уже можно пренебречь.
Второй важный момент — тип входов. С приемника поступает комплексный IQ-сигнал (входы-выходы синего цвета), с FM-декодера выходит вещественный сигнал — входы и выходы желтого цвета. Если перепутать, ничего не заработает. Подробнее уже было на Хабре, нам достаточно понять общий принцип.
В общем, запускаем, убеждаемся что все работает. Можно запустить программу и слушать радио. Мы пойдем дальше — у нас же все-таки Software Defined радио — добавим одновременный прием второй станции.
Многоканальный прием
Второй приемник добавляется любимым программистским методом — Ctrl+C/Ctrl+V. Добавляем переменную freq_2, копируем блоки и соединяем их точно также.

Результат вполне сюрреалистичный — две FM-станции можно слушать одновременно. Тем же самым методом (Ctrl+V) можно добавить и третью станцию.
Запись
Слушать две станции оригинально, но на практике мало полезно. Сделаем что-то более нужное, например добавим запись звука в отдельные файлы. Это может быть достаточно удобно — с одного физического приемника можно параллельно записывать несколько каналов.
Добавим к каждому выходу компонент File Sink, как показано на скриншоте.

Windows-версия почему-то требует абсолютные пути файлов, иначе запись не работает. Запускаем, убеждаемся что все нормально. Размер сохраняемых файлов довольно большой, т.к. по умолчанию записывается формат float. Запись в формате int оставлю читателям в качестве домашнего задания.
Получившиеся файлы можно открыть в Cool Edit и убедиться, что звук записался нормально.


Разумеется, число записываемых каналов можно увеличить, оно ограничено только полосой пропускания приемника и мощностью компьютера. Кроме File Sink можно использовать и UDP Sink, так что программу можно использовать для трансляции по сети.
Запуск из командной строки
И последнее. Если использовать программу автономно, например для многоканальной записи, то UI в принципе и не нужен. В верхнем левом блоке Options меняем параметр Run Options на No UI. Запускаем программу еще раз, убеждаемся что все работает. Теперь сохраняем сгенерированный файл top_block.py — мы можем просто запускать его из командной строки, например из bat-файла или из консоли.

Если кому интересно, сгенерированный файл сохранен под спойлером.
Удобно и то, что система является кросс-платформенной, и получившаяся программа может работать на Linux, Windows и OSX.
Заключение
Можно сказать, что GNU Radio достаточно сложная система, не в плане рисования блоков конечно, а в плане понимания того, как все это работает. Но какие-то несложные вещи сделать вполне посильно и интересно. GNU Radio также удобно использовать как «виртуальную лабораторию» для обучения — к любой части схемы можно подключить виртуальный осциллограф или спектроанализатор и посмотреть, как выглядит сигнал.
Если не будет каких-то отдельных пожеланий, тему SDR-приема наверно можно закрыть — все основные моменты уже рассмотрены, да и количество просмотров от первой к третьей части падает почти по экспоненте (хотя еще можно написать про передачу, но оно требует более дорогого «железа» для тестов чем RTL SDR). Надеюсь все же, что некоторое понимание того как это работает, у читателей осталось. Ну и всем удачных экспериментов.
GNU Radio – свободная платформа цифровой обработки сигналов. GNU Radio представляет собой набор программ и библиотек, которые позволяют создавать произвольные радиосистемы, схемы модуляции, формы принимаемых и отправляемых сигналов в которых задаются программно, а для захвата и генерации сигналов применяются простейшие аппаратные устройства.
Проект распространяется под лицензией GNU General Public License version 3. Код большинства компонентов GNU Radio написан на языке Python, а части, критические к быстродействию и времени задержки, написанные на языке С ++, что позволяет использовать пакет при решении задач в режиме реального времени.
В сочетании с универсальными программируемыми приемопередатчиками USRP2, не привязанными к полосе частот и типов модуляции сигнала, платформа может быть использована для создания таких устройств, как базовые станции для GSM-сетей, устройства для дистанционного чтения RFID-меток (электронные удостоверения и пропуски, смарт-карты), GPS-ресиверы, Wi-Fi, приёмники и передатчики FM-радио, TV-декодеры, пассивные радары, спектральные анализаторы и тому подобное.
Кроме USRP, пакет может использовать и другие аппаратные компоненты для ввода и вывода сигналов, например, доступны драйверы для звуковых карт, TV-тюнеров, устройств Softrock, Comedi, Funcube и S-Mini.
В состав также входит коллекция фильтров, канальных кодеков, модулей синхронизации, демодуляторов, эквалайзеров, голосовых кодеков, декодеров и других элементов, необходимых для создания радиосистем. Указанные элементы могут быть использованы как кирпичики для построения готовой системы, в сочетании с возможностями по определению потоков данных между блоками, позволяет проектировать радиосистемы даже без навыков программирования.
«>






