Хабрахабр

Радиоконструктор: FM радио на базе Atmega328-P и RDA5807M

Добрый день, уважаемые хабражители!

Меня зовут Михаил Матвеев, и я хотел бы представить Вашему вниманию проект современного «радиоконструктора», основанного на МК Atmega328 и чипе RDA5807M.

Предыстория

Я думаю, многие из вас не только слышали, но и непосредственно сталкивались с такой платформой, как Arduino. И как показывает моя личная статистика, очень немногие заходят дальше, чем поморгать светодиодами. Когда я познакомился с Arduino в первый раз, меня останавливало то, что не было идей, как именно я бы мог использовать все возможности того же UNO на «полную катушку». Хватило только на сборку простенького робота на двух колёсах и сигнализации. Вместе с тем, хотелось сделать что-то более основательное.

Суровый советский DIY Kit, который при правильной сборке и грамотной пайке даже начинал работать, и ловил радиостанции в различных диапазонах: Юность, Электрон-М и другие. Тогда я вспомнил о своем детстве, в котором были так называемые «радиоконструкторы».

Ни один из таких Kit'ов мне не достался, зато достался ЭКОН-1:

И мне пришло в голову, что было бы неплохо создать современную версию подобного конструктора, чтобы все желающие могли получить удовольствие от только что собранного своими руками девайса. Основной «фишкой» этого конструктора было то, что с его помощью можно было быстро и просто собрать большое количество различных устройств, от простых «пищалок» до вполне полноценного радиоприемника.
ЭКОН-1 — одна из многих причин, по которой я вообще оказался в сфере IT.

Прототип на монтажной плате

Мой друг, талантливый инженер Константин Томаревский, поддержал идею, и мы начали думать о том, как сделать первый прототип.

Идея была в том, чтобы создать FM приемник, которым можно было бы управлять через МК.
Первый прототип был собран на монтажке, и стало понятно, что это работает 🙂

Для самой первой версии были выбраны следующие компоненты:

МК Atmega328P-PU
2. 1. Дисплей Nokia 5110 RDA5807M
3.

Такой микроконтроллер используется в Arduino UNO, соответственно, наше устройство совместимо с UNO на аппаратном уровне.

Этот тюнер имеет следующие возможности: RDA5807M — «сердце» нашего конструктора.

— Технология КМОП
— Монолитный корпус, не требует внешних компонентов (почти)
— Полоса частот: 50-115 МГц
— Шаг между каналами – от 200 до 25 кГц
— RDS/RBDS
— АЦП и встроенный синтезатор частот
— Адаптивное подавление шума
— Цифровой интерфейс (I2C)
— Уровень сигнала (RSSI)
— Усилитель
— Регулировка громкости звука

Он очень прост в подключении и управлении. Дисплей Nokia — черно-белый, 84х48 пикселей.

После пайки на монтажной плате получилось как-то так:

Три кнопки, подключенные к аналоговому входу МК через резисторы, используются для переключения режимов и управления приемником. Было решено использовать Bootloader от Arduino, это позволило сохранить совместимость со всеми многочисленными библиотеками и существенно снизить порог вхождения для тех, кто уже имел какой-либо опыт работы с платформой.
Интерфейс взаимодействия с пользователем реализован следующим образом. Экран, соответственно, отображает информацию о громкости, станции и т.д. Еще одна кнопка служит для перезагрузки МК.

ЛУТ, фоторезист и отладка

После успешных испытаний на монтажной плате мы решили создать ещё несколько прототипов методом ЛУТ (а в дальнейшем — фоторезистом). Также мы решили усовершенствовать приемник, добавив туда ещё один усилитель звука для подключения не только наушников, но и внешнего динамика. Выбор пал на PAM8403, это простой и недорогой усилитель, который требует питания 5В.

Первый прототип, изготовленный методом ЛУТ, выглядел следующим образом:

Количество компонентов на плате увеличивалось — например, мы решили разместить на плате разъем для программатора, чтобы не было необходимости каждый раз извлекать МК для перепрошивки. ЛУТ — хорошая штука для относительно быстрого прототипирования в домашних условиях, но когда дело доходит до двухсторонних плат, начинаются сложности. Так, последующий прототип стал двухсторонним, был изготовлен методом фоторезиста и стал выглядеть намного приятнее:

В сборке:

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

Итоговый прототип, изготовленный нами в домашних условиях, выглядел так:

Заказ печатных плат

В Китае можно заказать печатные платы, выполненные промышленным способом. Стоимость выходит относительно небольшой даже при малых тиражах, а время ожидания (включая доставку) как правило не превышает 2-3 недель.

Так она выглядела: Первую «партию» плат заказали на PCBWay.

При проектировании схемы необходимо учитывать этот момент. Одна из проблем, с которой мы по неопытности столкнулись: металлизация «съедает» значительную часть размера самого отверстия, поэтому некоторые компоненты с трудом «влезали» в нужные отверстия.

Собрали ещё один прототип: По результатам тестирования мы ещё немного доработали конструкцию, добавив несколько конденсаторов для более стабильной работы устройства.

Питание также подаётся при подключении программатора. Разъём USB используется для питания приёмника.

Всё работает!

Прошивка

Отдельно стоит остановиться на прошивке. Она написана на C++ и мы распространяем её по лицензии GPLv3: https://github.com/xtremespb/fm_receiver.Я практически не разрабатывал на C/C++, поэтому (вероятно) код далёк от идеала и может содержать ошибки, но GPL на то и GPL, чтобы можно было его дорабатывать сообществом 🙂

Текущие возможности прошивки включат в себя:

— Ручную и автоматическую настройку станций
— RDS
— Управление громкостью
— Включение режима усиленных басов
— Включение и отключение подсветки дисплея
— Отображение и динамическая визуализация уровня сигнала

В следующей, четвёртой по счёту ревизии, мы сделаем ещё несколько полезных «фишек»: подключим левый и правый каналы к аналоговым входам на МК, что позволить «визуализировать» поступающий аудиосигнал.

Никто не мешает, например, написать какую-нибудь игру (интереса ради я сделал старый добрый Arkanoid) или другую программу, использующую возможности платы. Кстати, возможности устройства не ограничиваются радио!

Production

Разработка устройства от идеи до реализации заняла около 6 месяцев, что, с практически полным отсутствием опыта в данной области, не так уж и плохо.

На данный момент у нас есть около 10 полностью собранных комплектов, которые включают в себя всё необходимое для сборки своего собственного устройства:

5, три кнопки, провода, однорядные коннекторы
— 11 резисторов и 12 конденсаторов, 4 индуктивности, кварц, стабилитрон и светодиод
— Динамик
— Печатная плата — МК Atmega328P-PU
— Преобразователь уровня CD4050BE
— Дисплей Nokia 5110
— Приемник RDA5807M
— Программатор USBasp
— Операционный усилитель LM386N
— Разъемы под МК и программатор
— USB B, Audio Jack 3.

Для сборки понадобится припой, флюс и паяльник, больше ничего не нужно.
Все комплектующие упакованы в небольшую коробку из «крафтового» картона:

Исходники прошивки уже выложены на Github; Gerber-файл, принципиальная схема и инструкция по сборке будут также опубликованы позднее.

Теги
Показать больше

Похожие статьи

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

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

Кнопка «Наверх»
Закрыть