Переделываем ICOM PCR1000 в SDR приемник.

Посвящается участнику форума radioscanner.ru STABO,
которому я дал обещание написать эту статью,
и чьи напоминания не давали спать моей совести.
🙂

Как я уже писал в предыдущей заметке, я удачно победил приемник PCR-1000 и смог им управлять из GnuRadio. Все прекрасно, но вот хочется удобств. Хочется видеть спектр, и не упускать интересные вещи происходящие на пару килогерц от той частоты на которой ты сейчас находишься. В родном софте для PCR1000 имеется возможность видеть спектр. Изучив ситуацию поглубже я обнаружил что все данные для отображения на спектре передаются непосредственно через COM порт, а программа лишь рисует пики. Повозившись немного с этими данными, и попробовав их отобразить, я плюнул на это дело и решил искать обходные пути. И этот путь был найден.
Разглядывая SDR приемники в интернете, я наткнулся на простенький приемник Soft66Lite, котрый использует в качестве АЦП звуковую карту компьютера. «А это мысль!», подумал я, «если этот приемник выдает в аудиокарту I/Q сигнал, то я с легкостью смогу ввести эти данные в GnuRadio».
Вырисовывается следующая схема:
pcr1000-sdr1
Предварительно нам нужно будет сделать следующее:
1) Сделать вывод IF (промежуточной частоты) для PCR1000
2) Перенастроить Soft66Lite на работу с промежуточной частотой PCR1000.

Начнем с модификации приемника.
Изучив опыт других владельцев данного приемника я взял в руки отвертку, паяльник и приступил к вскрытию.
ICOM PCR1000IMG_20150131_164846Почитав разные мнения в Интернете, я не стал допаивать еще один конденсатор как описано в статье выше, а припаялся после имеющегося.
IMG_20150131_165018Выкидываем заземляющий болт, и ставим вместо него SMA разъем.
IMG_20141122_145127
Далее займемся подгонкой SDR приемника под наши нужды.
Естественно надо было его сначала заказть, и собрать. Так же на eBay были приобретены кварцы на 10.7 Мгц (я не стал морочиться с умножением частоты, решив просто опираться на кварц)
Кварц 10.7 МгцВ Soft66Lite присутсвует сменный блок фильтра. В комплекте к Soft66Lite уже шли пару фильтров под распостраненные любительские диапазоны. Но для нашей внештатной частоты придется рассчитать новый фильтр. Так как в Soft66Lite используется фильтр Баттерворта, воспользуемся данным онлайн-калькулятором для расчета.

Soft66LiteВот так выглядит Soft66Lite готовый работать квадратурным смесителем.

Соединив PCR1000 и Soft66Lite я бросил взгляд, на ноутбук, и задумался. Все классно, кроме одного. Линейного входа-то в ноутбуке нет! Придется искать USB звуковую карточку с линейным входом. Осмотр ближайших магазинов и Яндекс.Маркета выявил печальную картину — есть либо копеечная фигня с входом только для микрофона, либо адова техника для Серьезного Применения за Серьёзные Цены. Ну, не беда «заграница нам поможет». Снова заглядываем на eBay и находим подходящую вещь — USB звуковушка C-Media, аж с поддержкой частоты дискретизации в 96 kHz, и SPDIF. Данная звуковая карта отлично опознается Linux как

ID 0d8c:0102 C-Media Electronics, Inc. CM106 Like Sound Device

0d8c:0102 C-Media Electronics, Inc. CM106 Like Sound Device 0d8c:0102 C-Media Electronics, Inc. CM106 Like Sound Device

Настроим систему на захват с линейного входа.

Запустим настройку микшера командой

sudo alsamixer

alsamixer1

В текущий момент показываются настройки встроенной звуковой карты. Нажмем F6 и выберем USB Sound Device (так наша китайская звуковушка представляется системе)

alsamixer2

Убедитесь что настройки выставлены соответствующе. В разделе «Воспроизведение» у PCM Capture Source должно быть выставленно «Line», а в разделе «Захват» у PCM и Line должны быть выставленны соответствующие уровни.

alsamixer3alsamixer4

Следующий шаг — определить, какое имя устройства нам надо будет указать в качестве источника сигнала в блоке «Audio Source». Для этой цели я использую программу Audacity. Запускаем ее (а если ее нет, то устанавливаем сначала), и раскрываем в ней меню выбора источника записи (рядом со значком микрофона).

AudaCityКак видите, тут представлена наша USB звуковая карточка, и рядом с ней в скобках указан номер устройства. Именно он нам и потребуется в дальнейшем. Кстати, можете проверить, правильно ли мы выбрали устройство. Подключите к линейному входу какой-нибудь источник сигнала (к примеру телефон или плеер) , и нажмите кнопку записи в Audacity. Вы должны увидеть что сигнал захватывается.

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

Запустим GnuRadio и соберем граф как показано на рисунке. Пояснения я дам ниже.

GnuRadio SDR

Первый блок в графе — Audio Source. Этот блок было настроен для работы с нашей звуковой картой указанием в поле «Device Name» значения «hw:1,0». Также наш аудиоблок был отконфигурирован на использование 2 выходов: для левого и правого канала. Далее у нас идет блок Float to Complex. Как понятно из названия, этот блок берет два входных Float значения, и конструирует из них одно комплексное.   Следующий блок в схеме — Moving Average, он реализует простой фильтр скользящего среднего и используется для небольшого снижения уровня шума.  Этот блок я добавил чуть позднее, в процессе использования, и впринципе данная схема может обойтись без него. К выходу Float to Compex я так же подключил WX GUI Waterfall Sink, блок реализующий водопад.
К блоку Moving Average подключен блок ФНЧ, ширина которого может регулироваться выпадающим меню filter_with. К выходу ФНЧ подключены спектронализатор, и блок Selector. Назначение спектроанализатора ясно, а вот Selector требует пояснения. Данный блок (а точнее блоки) работает как переключатель потока данных. У этого блока может быть множество входов и выходов, но в любой момент времени активен может быть только один вход и один выход. За номера активного входа и активного выхода отвечают параметры «Input Index» и «Output Index» соответственно.
audiosdr3Вход в нашем случае один, а выходов два. Активный выход настраивается выпадающим меню «mod_type».
Далее у нас на каждой ветке висит по блоку демодулятора. На первой ветке — NBFM демодулятор, на второй — AM. Тут мне кажется тоже все ясно. Выходы блоков демодуляторов подсоединены ко второму Selector’у, входы которого так же управляются выпадающим меню «mod_type» Совместное переключение селекторов обеспечивает работу только одной ветки демодуляции. К селектору прицеплен последний блок — Audio Sink, который непосредсвенно выводит демодулированный сигнал на колонки.

Ну что же. Наступает торжественный момент. Попытка запуска. Стартуем нашу программу управления из предыдущей статьи, выставляем в ней тип модуляции WBFM и ширину полосы в 230kHz (по моим ощущениям, это положительно сказывается на выводе ПЧ). Включаем ICOM, и запускаем наш свежесозданный SDR приемник. 🙂

GnuRadio SDRВот как-то так это и выглядит. На картинке показано текущее состояние дел в эфире на частоте 127.800 Мгц. Полоса на водопаде — АТИС нижегородского аэропорта (SNR не удивляйтесь, принималось это все на кусок провода).

Итак, что я могу сказать в качестве заключения:

1) Да, это работает.
2) Шумы на порядок сильнее чем при прослушивании просто ICOMа. Но тут видимо виноваты: паршивый монтаж, отсутствие экранов на всех элементах и соединительных проводах. Вероятно если все хорошо заэкранировать и зафильтровать, то шумы снизятся.
3) В процессе работы схемы из динамика раздаются щелчки. Насколько я знаю, причиной этого является переполнение буфера выводящей звуковой карты. Интересно то, что под FreeBSD щелкало меньше и чем под Linux. С проблемой щелчков надо еще покопаться.
4) Как и ожидалось, частоту семплирования в 96kHz карта держит. Но плохо. Сигналы дальше чем 40 кГц от центральной частоты теряются в шуме. Интересно было бы посмотреть на другие карточки, не настолько китайские.

Скачать граф SDR приемника.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *