Радиоприёмник FM диапазона

Собрал радиоприёмник FM диапазона. Как обычно, цель была «собрать что-нибудь полезное и по пути изучить что-нибудь новое». Волнующую новизну этому проекту придавал микроконтроллер STM32 с которым до сих пор я не работал, хотя в закромах лежат несколько штук разных отладочных плат и программаторов. Ещё очень хотелось использовать провод наушников в качестве антенны, как в промышленной аппаратуре.

Мозгом схемы стал микроконтроллер STM32F103. Выбор был очень прост — у меня они есть. Я уже делал попытку разобраться с этой архитектурой, но безуспешно. К счастью, прогресс не стоит на месте и можно без особых проблем использовать фреймворк Arduino, который берёт на себя все начальные настройки при старте — в прошлый раз именно это меня и остановило.

Первый вариант был собран на модуле TEA5767 — их полно на Алиэкспресс. Управление по шине I2C, дополнительной обвески нужно не очень много, стоят недорго.

Модуль TEA5767

Увы, модуль оказался не слишком хорошим. Частота постоянно куда-то «уплывает», сигнал теряется.

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

Модуль RDA5807

Ещё пришлось поэкспериментировать с фильтром для разделения антенного и аудио-сигнала. Самый очевидный вариант — отправить общий провод и оплётку наушников на землю через индуктивность, а высокочастотный сигнал в приёмник — заработал, но принимал только две самых сильных радиостанции и то, с помехами. Проблема решилась с добавлением ферритовых фильтров на оба аудио-канала. Оказалось, есть прямо специальные фильтры как раз на диапазон 100 МГц, на схеме они обозначены F1 и F2. Так сигнал с другого конца не утекает в аудио усилитель.

Схема подключения RDA5807

В остальнм схема проста и очевидна — микроконтроллер, питание от литиевого аккумулятора, зарядка при помощи TP4054 через разъём USB Type C. Экран — OLED 128×32. Для управления — джойстик. Влево-вправо — выбор станции, вверх-вниз — громкость.

Готовая плата радиоприёмника

Экран умеет показывать частоту приёма, уровень сигнала, заряд батареи. Еще в нём есть RDS — название станции и программы в текстовом формате. Но его пока заставить работать не получилось — по большей части показывает кракозябры.

Плата радиоприёмника с экраном

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

Управление микросхемой приёмника, экран, кнопки — всё управляется уже готовыми библиотеками, нужно было просто связать всё в единую прошивку.

Завершил проект напечатанный на 3Д-принтере корпус яркого зелёного цвета. Без изысков — прямоугольная коробочка с закруглёнными углами.

Готовый радиоприёмник в корпусе

Весь проект занял полгода с небольшим — с первого раза не получилось, пришлось делать четыре или пять вариантов схемы, пока всё не заработало (почти) как надо. Так и не удалось заставить купленные неизвестно где и когда микроконтроллеры правильно показывать напряжение батареи, видимо они не оригинальные и аналого-цифровой преобразователь там больше для красоты. RDS глючит, как я писал выше. Но это уже ерунда, пользоваться вполне можно и так.


« Предыдущая статья Остров Нордернай / Norderney
Следующая статья » Сравнение датчиков MH-Z19B и SCD41