Как я пробовал использовать RTL-SDR в качестве дешевого анализатора спектра

11 апреля 2018

После прочтения книжки «The Hobbyist’s Guide to the RTL-SDR» мне особенно запомнился эксперимент с RTL-SDR и генератором шума. По сути, эксперимент этот описывает, как можно использовать RTL-SDR в качестве очень дешевого анализатора спектра. В этом режиме устройство может решать задачи вроде проверки фильтров или определения частоты, на которую рассчитана антенна. Соответствующая глава книги доступна онлайн в блоге rtl-sdr.com. Здесь я коротко перескажу идею и поделюсь своими личными впечатлениями от использования RTL-SDR таким образом. Также в посте вы найдете кое-какие ссылки на дополнительные материалы. Описанные действия с тем же успехом можно повторить для HackRF, LimeSDR и других Software Defined Radio.

Примечание: Если вдруг вы пропустили вводную статью про Software Defined Radio, вот она: Начало работы с LimeSDR, Gqrx и GNU Radio.

Идея заключается вот в чем. Когда вы запускаете Gqrx, то видите в нем какую-то часть спектра. При этом, в один момент времени можно смотреть только на небольшой отрезок частот. Этот отрезок называется полосой пропускания, или bandwidth, и для RTL-SDR составляет 2.4 МГц. А что, если по очереди посмотреть на разные части спектра, и затем склеить результат в одну картинку? Если действовать достаточно быстро, чтобы спектр не успел сильно поменяться, мы увидим весь диапазон доступных нашему устройству частот. Соответствующее сканирование частот с помощью RTL-SDR выполняет утилита rtl_power из пакета rtl-sdr. Для всех остальных SDR существует утилита rx_power из пакета rx_tools.

Хорошо, но причем тут какие-то генераторы шума? А вот причем. Цель этих устройств — достаточно равномерно заполнить весь спектр шумом. А если поставить между генератором и RTL-SDR какой-то фильтр, то мы узнаем, какую часть спектра этот фильтр глушит, и насколько сильно. Подходящий для наших целей генератор можно легко найти на eBay по запросу «bg7tbl noise source». Цена устройства составляет около 18$.

Если же вы являетесь обладателем апконвертера NooElec Ham-It-Up, то можете приобрести для него апгрейд, добавляющий в устройство генератор шума. То, как происходит впаивание апгрейда, можно посмотреть на YouTube в видео Build, test, use the RF noise source on the Ham-It-Up RTL-SDR upconverter. Цена апгрейда составляет 10$.

На следующем фото показан генератор шума, подключенный к RTL-SDR v3 через аттенюатор на 20 дБ:

RTL-SDR v3 соединенный с генератором шума

Будьте осторожны, во время работы генератор довольно сильно греется.

Прежде, чем перейти к тестированию фильтров, нам нужно записать спектр самого генератора шума безо всяких фильтров, так называемый baseline. Как выяснилось, «The Hobbyist’s Guide to the RTL-SDR» тактично умалчивает о некоторых важных нюансах на этом шаге. Во-первых, аттенюатор нужен обязательно. Без него, по всей видимости, RTL-SDR оказывается перегружен и начинает показывать мусор. Во-вторых, шум, выдаваемый генератором, существенно зависит от его температуры. Поэтому после его включения нужно подождать пару минут, и на всякий случай сделать несколько измерений. Таким образом, мы убедимся, что они не меняются со временем. Наконец, в третьих, по умолчанию rtl_power использует autogain, то есть, пытается «умно» подстраивать усиление сигнала. Нам это совершенно не подходит, так как в этом случае baseline будет меняться от запуска к запуску.

Экспериментальным образом я выяснил, что при использовании аттенюатора на 20 дБ, gain’е, выставленном в 15 дБ, и прогретом генераторе картинка каждый раз получается более-менее одной и той же:

rtl_power -f 24M:1766M:1M -1 -g 15 baseline.csv

Сама картинка, построенная в LibreOffice:

Baseline генератора шума

Здесь по оси OX — частота в Гц, а по оси OY — мощность в dBm. У вас график может получиться немного другим, в зависимости от версии RTL-SDR, аргументов rtl_power, конкретного экземпляра генератора шума, и других факторов. Главное, чтобы каждый раз она получалась более-менее одинаковой. Как видите, генератор шума заполняет спектр не так уж и равномерно. И/или у RTL-SDR не хватает чувствительности на высоких частотах.

Давайте теперь попробуем затестить какой-нибудь фильтр. Лично я использовал такой:

Bandstop фильтр от RTL-SDR.com

Подключаем его между генератором шума и RTL-SDR, после чего снова запускаем rtl_power. У меня в результате получились такие графики:

Ослабление сигнала bandstop фильтром

Здесь отображен наиболее интересный диапазон частот от 40 МГц до 160 МГц, так как на другие частоты, как выяснилось, фильтр особо не влияет. Вверху показаны данные, полученные с помощью rtl_power без фильтра (синим цветом) и с фильтром (красным цветом), а внизу — разность двух графиков. Вроде, получилось похоже на правду, фильтр действительно должен вырезать частоты где-то в этом диапазоне. Как я понимаю, RTL-SDR не видит ничего, что ниже -35 dBm, поэтому график получился со срезанной верхушкой.

Из статьи на rtl-sdr.com вы также узнаете, как сделать notch filter для заданной частоты из куска коаксиального кабеля, как определить velocity factor использованного вами кабеля, и как определить частоту, под которую затюнена антенна, при помощи направленного ответвителя (directional coupler). Кстати, на последнюю тему есть потрясающее видео на YouTube: Directional coupler basics & how to sweep SWR of an antenna.

Для себя же я пришел к следующему выводу. Лабораторная работа получилась занятной, но постоянно пользоваться RTL-SDR в таком режиме решительно неудобно. Один запуск rtl_power занимает около двух минут. Затем еще нужно открыть LibreOffice, построить в нем графики, понять, что получается какая-то ерунда, видимо, потому что генератор еще не прогрелся, и повторить заново. Есть интересный проект qspectrumanalyzer, который вроде как автоматизирует часть этих действий. К сожалению, на момент написания этих строк программа работала так нестабильно, что проще уж через rtl_power.

То есть, один раз попробовать можно. Но для серьезной работы лучше обзавестись нормальным анализатором спектра с трекинг-генератором и/или антенным анализатором (КСВ-метром). Устройства эти не слишком дешевы, зато их показаниям вы сможете верить и, что не менее важно, они сэкономят вам немало времени. В качестве неплохого вводного видео об анализаторах спектра можно посоветовать Review of Rigol’s DSA 815-TG Spectrum Analyzer.

Fun fact! Некоторые осциллографы, в частности, Rigol DS1054Z, умеют делать преобразование Фурье (FFT), что тоже показывает спектр. Увы, конкретно в DS1054Z функция эта крайне ограниченная, почти что игрушечная. К тому же, полоса пропускания этого осциллографа совершенно не годится для задач, о которых сейчас идет речь. Если, тем не менее, вы решите поиграться FFT вашего осциллографа, не забудьте о согласовании имедансов. Например, источник сигнала можно подключать к осциллографу через T-образный BNC-коннектор с dummy load на 50 Ом.

А используете ли вы анализаторы спектра, КСВ-метры или что-то подобное, и если да, то какие?

Метки: , .

Подпишись через RSS, Google+, Facebook, ВКонтакте или Twitter!

Понравился пост? Поделись с другими: