Проекты        Главная

USB FM тюнер для компьютера
    Этот FM тюнер предназначен для прослушивания на компьютере радиостанций транслируемых в эфире FM диапазона (87 - 108 МГц). Он разработан максимально простым чтобы его могли изготовить даже начинающие, не имеющие большого опыта в сборке электронных конструкций. Тюнер состоит из двух готовых плат. Первая плата известна как Blue Pill и основана на микроконтроллере STM32F103C8T6. Такое название плата получила потому что была также красная версия и это отсылка в фильму Матрица в котором Морфеус предлагал Нео выбрать синюю или красную таблетку.
Blue Pill
Эта плата отвечает за коммуникацию с компьютером по USB, оцифровку звука и управление по шине I2C радиомодулем - платой с микросхемой RDA5807M, являющейся однокристальным стерео FM-приемником с поддержкой RDS.
RDA5807M
Их нужно соединить согласно схеме.
Схема

Схема максимально упрощена и в ней присутствуют только необходимые компоненты. Например отсутствует LC фильтр в питании радиомодуля. Практика показала что его влияние на уровень помех незначительное и для упрощения его можно исключить из схемы.
Один из вариантов сборки - расположить плату FM-радио с обратной стороны Blue Pill, поместив между ними изоляционный материал - изоленту, а если ее нет подойдет например плотная бумага. Выглядит сборка таким образом.
Схема сборки
Оранжевый провод "Antenna" это обычный медный провод покрытый изоляцией, длиной 20 - 50 сантиметров. Одной стороной он подключен к радиомодулю, а вторая никуда не подключена и используется для приема радиосигнала.
Выводы VCC и GND радиомодуля подключены на плате Blue Pill к точкам перемычек Boot, на которых присутствует необходимое напряжение для питания.
Резисторы R1 и R2 в SMD исполнении припаяны контактным площадкам выводов B5, B6 и B7, B8. У них маркировка 472 что означает 4.7 килоома. Их желательно установить, но при их отсутствии или сложности монтажа из-за крошечного размера, допустимо не устанавливать. Внутри микросхемы RDA5807M на выводах шины I2C есть резисторы с номиналом 78 килоом. Это довольно много, но как показала практика, обычно I2C работает без ошибок. Типичные ошибки I2C - невозможность изменить частоту радиостанции. Если такое происходит - резисторы необходимы.
Фото собранного тюнера (без резисторов R1 и R2).

Tuner

Чтобы защитить эту конструкцию от механических повреждений и случайных коротких замыканий если рядом окажется металлический предмет, ее следует поместить в термоусадочную трубку. Для уменьшения высоты конструкции можно демонтировать перемычки BOOT сделает тюнер более плоским и компактным.

В микроконтроллер STM32F103C8T6 на плате Blue Pill необходимо загрузить прошивку (она внизу страницы). Сделать это можно двумя способами.
Первый способ через интерфейс SWD (выводы 3.3, SWIO, SWCLK и GND) подключить отладчик ST-Link и прошить микроконтроллер используя STM32 ST-LINK Utility.Как это сделать можно прочитать например в этой инструкции. Имейте в виду, после подачи питания или перезапуска микроконтроллера кнопкой Reset, есть 20 секунд на перепрошивку. По истечении этого времени, включается режим энергосбережения (отключается процессорное ядро когда нет выполняемых задач, чтобы минимизировать уровень помех для радио и аналогово-цифрового преобразователя) что может помешать подключению SWD отладчика к микроконтроллеру.
Второй способ прошивки - воспользоваться встроенным UART загрузчиком (для его включения предназначены перемычки BOOT) и прошить утилитой STM32 Flash loader demonstrator. Процесс прошивки показан в инструкции.
   
    Для этого тюнера было разработано приложение для операционных систем Windows, Linux и MacOS. Оно не требует установки и не оставляет следов работы в системе. Все файлы сохраняются в каталоге из которого запущено приложение, поэтому для него должны быть права на чтение, запись и исполнение.
Основное окно показано на скриншоте.
Окно приложения

Вверху окна находится заголовок, позволяющий перемещать его по экрану и отображающий название приложения и радиостанции, и содержащий кнопки для открытия окна настроек, фиксации окна поверх других окон, а также сворачивания и закрытия окна. Ниже располагается дисплей, отображающий частоту радиостанции, уровень сигнала, заполнение потокового буфера в процентах и другие данные. Если в настройках включен RDS и радиостанция передает сообщения, появится значок "RDS", а сообщения будут отображаться внизу дисплея под частотой радиостанции. Под дисплеем находится кнопки управления тюнером. Они позволяют включить тюнер, перейти к предыдущей или следущей радиостанции относительно текущей частоты или в списке. Правее располагается регулятор громкости, а за ним кнопка отключения звука (функция Mute). Рядом с ней кнопка начала и остановки записи трансляции в файл, который сохраняется в папке SoundSaves, расположенной рядом с приложением. Под регулятором громкости находится кнопка показа / скрытия списка радиостанций. Это позволяет скрыть список если он не нужен. Ниже находится таблица со списком радиостанций. Двойной клик левой кнопкой мышки по строке в таблице приведет к переключению на выбранную радиостанцию. Клик правой кнопкой мышки откроет контекстное меню предоставляющее возможность добавить, отредактировать или удалить радиостанции в таблице. Так же в нем присутствует возможность сортировки радиостанций по частоте и имени. Некоторые функции этого меню продублированы кнопками находящимися под таблицей. Кнопка в виде замочка, позволяет заблокировать или разблокировать функцию ручной сортировки списка радиостанций (не поддерживается в MacOS). При разблокированной функции, можно мышью перетаскивать строки таблицы. Кнопка в виде лупы запускает поиск радиостанций. При этом производится сканирование всего FM диапазона и обнаруженные радиостанции добавляются в таблицу.
При первом запуске приложения, будет выбрана частота 87.0 МГц, на которой вероятнее всего нет радиостанции. Необходимо произвести поиск радиостанций (кнопка с картинкой лупы) или нажать на одну из кнопок - "Предыдущая радиостанция" или "Следующая радиостанция".
    Приложение добавляет значок в трей. Двойной клик левой кнопкой мышки по значку, отобразит или скроет основное окно. Клик правой кнопкой мышки отобразит меню.

Меню
Верхний пункт отображает / скрывает основное окно. Пункт "Мини окно" отображает на экране небольшое окно,  в котором продублированы основные элементы управления тюнером.

MiniWindow

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

Пункт меню "Настройки" откроет окно.
Setting App

Установленная галочка в "Анимация в главном окне" разрешит на дисплее приложения отображение пикового индикатора звука, анимацию значка записи и прохождения данных через буфер потокового воспроизведения. В списке "Язык" можно выбрать желаемый язык приложения. По умолчанию доступны только русский и английский, но можно добавить другие поместив в папку "Lang" файл локализации. В области "Запуск" можно включить запуск приложения при загрузке операционной системы (поддерживается только в Windows) и автоматическое включение тюнера при старте приложения, а также разрешить только одну копию приложения. Эта настройка привязана к папке, из которой запущено приложение.
В области "Трей" можно разрешить сворачивать и закрывать окно тюнера в трей. При этом оно исчезает с экрана. Если установлена галочка "Отображать сообщения" (поддерживается только в Windows), часть сообщений информационного типа (например, уведомление об отключении тюнера от USB) будут отображаться в виде уведомлений трея вместо показа в окне.
Область "Мини окно" содержит настройки небольшого окна. Можно настроить степень его прозрачности, а также разрешить становится непрозрачным при наведении курсора мышки (поддерживается только в Windows). Чтобы другие окна не скрывали мини окно, следует установить галочку "Поверх остальных окон". При установленной галочке "Информация о радиостанции", при наведении курсора на область отображения частоты, будет показано название радиостанции, уровень сигнала и другая информация.

Вкладка "Тюнер" окна настроек.
Setting Tuner

На ней можно выбрать серийный номер тюнера. Если к компьютеру подключено несколько тюнеров будет использован только с выбранным серийным номером.
Если не установлена галочка "Выкл. статусный светодиод" при работе на плате тюнера будет мигать светодиод. При установленной галочке, он будет выключен. Функция RDS позволяет принимать текстовые сообщения от радиостанций. Учтите что для приема сообщений нужен хороший уровень радиосигнала и эта функция увеличивает уровень цифровых помех от микроконтроллера что заметно если у радиостанции слабый сигнал.

Вкладка "Звук" окна настроек.
Setting Sound

При необходимости можно выбрать модуль воспроизведения (Windows это WASAPI, DirectSound и другие), и звуковую карту через которую будет осуществляться вывод звука и отрегулировать баланс звука.
В области "Усиление звука" можно задать уровень программного увеличения громкости выполняемого при обработке звукового потока. Оно требуется поскольку аналогово-цифровой преобразователь микроконтроллера имеет разрядность 12 бит, а вывод звука в компьютере осуществляется с разрядностью 16 бит и без усиления (преобразования 12 бит в 16) звук будет тихим. Функция автоматической регулировки усиления позволяет ограничить уровень звука и тем самым избежать искажений если задано слишком большое усиление. Она также может выровнять громкость радиостанций, если она отличается, но для этого должен быть установлен достаточный уровень усиления.
В области "Запись" можно выбрать формат аудиофайла - WAVE или MP3 (поддерживается только в Windows) и включить подтверждение начала и окончания записи. Для записи в формате MP3 в системе должен быть установлен "MP3 Encoder" для Audio Compression Functions операционной системы Windows. Проще всего это сделать, установив K-Lite Codec Pack.
Для демонстрации качества звука было записано несколько музыкальных композиций из одной из радиостанций используя встроенную функцию записи. Эти музыкальные записи только для ознакомления и чтобы не нарушать авторские права их нужно удалить сразу же после прослушивания!

Приложение версии 1.4.120.

Windows x86
Windows x64
Windows ARM64
Linux Debian 12 x86
Linux Ubuntu 20 - 22 x64
MacOS x64

В Linux по умолчанию нет доступа к USB устройствам и необходимо запускать приложение с прами root. Или добавить разрешение для этого тюнера, распаковав архив в папку /etc/udev/rules.d/ Для распаковки понадобятся права root.

Прошивка версии 1.4.120 для STM32F103C8T6, которая также подойдет для STM32F103CBT6.
С STM32F103C4T6 и STM32F103C6T6 она не совместима прежде всего из-за меньшего объема оперативной памяти. С китайскими клонами работа тюнера не проверялась.

Задать вопросы и обсудить эту конструкцию можно на форуме.


Проекты        Главная