Fm модули без ардуино

Еще одно FM радио на RDA5807 под управлением Ардуино

На эту тему было много толковых публикаций, однако я сделал все по-своему, вдобавок создал трехмерную модель корпуса с практичным и оригинальным дизайном. В результате получился вполне законченный проект, достаточно простой для повторения начинающим любителем электроники. Счастливый владелец 3D принтера сможет похвастаться красивой самоделкой, способной конкурировать с фабричной продукцией.

Хочешь разорить друга — подари ему фотоаппарат. Хочешь заставить раскошелиться радиолюбителя — подкинь ему ссылку на китайский модуль RDA5807.

Крохотный квадратик размером около сантиметра и ценой около двадцати рублей. На удивление, внутри вполне приличный цифровой радиоприемник с автопоиском радиостанций и умеющий читать RDS.

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

Стараемся сделать все максимально просто и дешево. Ардуинку берем такую:

дисплей — вот такой:

питание от аккумулятора 18650, а для него такой вот контроллер заряда.

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

Полная электрическая схема получается вот такой.

Вместо дефицитной советской микросхемы К174УН14 применяем доступную TDA2003. Диод D1 нужен, чтобы при максимальном заряде аккумулятора напряжение на модуле приемника оставалось ниже четырех вольт. Надо заметить, RDA5807 не перегорает даже от пяти вольт, но на повышенном напряжении либо вообще не работает, либо ловит всякий шум вместо радиостанций. Для него четыре вольта — уже многовато, по очень хорошему надо бы питать через кренку на 3.3 вольта.

При напряжении ниже трех вольт устройство перестает реагировать на кнопки, поскольку затыкается ардуинка. Но даже при 2.5 вольт RDA5807 стойко держит прежнюю частоту и качество приема не ухудшается.

Если подключить аккумулятор к контроллеру заряда напрямую, то при выключенном USB зарядник превращается в нагрузку, вытягивая из аккумулятора ток примерно в 2 микроампера. Много это или мало — не знаю, но сам факт просто возмутительный. В качестве решения ставим герконовое реле K1, которое при подключении USB замыкает контакты K1.1.

Релюшка самодельная, изготавливается путем намотки в навал эмалированного провода диаметром не более 0,1 мм непосредственно на корпус геркона. Чем больше провода удастся намотать, и чем тоньше он будет — тем меньше будет потребляемый ток. Намотать слишком много, так, чтобы не хватало пяти вольт для срабатывания, адекватный человек не сможет, здравый смысл заставит вовремя остановиться.

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

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

Теперь пишем скетч, библиотеки берем стандартные SSD1306Ascii для дисплея и RDA5807M для радио.

Оказалось, в строке RDS есть хитрости. Там три блока: текущее время, имя радиостанции и собственно сама информационная строка. Я так и не понял, то ли в библиотеке кривой парсер, то ли радиостанция как то не так транслирует текущее время. Вразумительные цифры там появляются далеко не всегда. В результате первый блок был отброшен. А если читать саму строку, выясняется, что там ничего нет, кроме телефонов рекламной службы. Пришлось оставить только имя радиостанции, никакой другой пользы из строки RDS извлечь не удалось. Кроме названия радио, дисплей показывает силу сигнала, заряд аккумулятора и рабочую частоту.

Планировал делать память для рабочих частот, но лень матушка меня остановила. Не захотел я делать много кнопок, оставил всего две: одну для запуска автопоиска, другую для регулировки громкости. С одной кнопки поиск идет по кругу, потому иногда для выбора нужной станции приходится пробегать весь диапазон. К счастью, у нас не слишком много передатчиков, чтобы такой серфинг сильно напрягал.

Регулировка громкости происходит так: при первом нажатии уровень сбрасывается на самый минимум, и далее при каждом последующем нажатии увеличивается на одну ступень. Если возникает пауза более двух секунд — очередное нажатие считается первым. Таким образом, за все про все две кнопки.

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

Как люди жили без 3D принтера я помню, но это была не жизнь, а кошмарный сон. В наши дни корпус можно просто распечатать. Разве что, его надо сперва нарисовать. Но это намного проще, чем разворачивать полномасштабные слесарные работы. Могу поделиться своими моделями, замечу только, что они рассчитаны для динамиков 3-ГДШ-8. Все материалы проекта выложены на GitHub.

Я не маркетолог, но не мог не заметить, насколько мощно модуль RDA5807 стимулирует продажи.

Все происходит за счет цепочки расходов, каждый из которых кажется сущей мелочью. Ардуинка за 120 руб, но только если доставка Super Economy. Иными словами, посылка не отслеживаемая и срок может растянуться на три месяца Хочешь получить трек номер и получить быстрее — заплати побольше. Дисплейчик — тоже 120 рублей — и снова Super Economy. Контроллер заряда совсем дешевый, но продается только пачками, еще сто рублей. Самое дорогое — аккумулятор, разброс цен широкий, но неизбежно более двухсот рублей. Усилитель можно купить готовым модулем, а можно собирать из компонентов самому. В любом случае меньше сотни не получается. Не забываем про динамики — их два, значит дважды по сто рублей.

В моем случае корпус получился очень дешевым. На печать ушло около 40 метров прутка ABS, это на самом деле не так много. Трудно рассчитать, сколько это в деньгах, но явно пустяки. А если решать проблему корпуса как-то иначе, он превратится в самую дорогую деталь, в смысле расходов, и в смысле головной боли.

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

Источник

TEA5767 для всех – добавляем FM радио в свои конструкции.

Настройка на частоту желаемой радиостанции производится при помощи инкрементального энкодера (подойдет модуль для Ардуино). Частота индицируется на 7-мисегментном индикаторе. Встроенная в энкодер кнопка задействована под управление приглушением. На схеме есть неточность – емкость конденсатора C 5 лучше выбрать более 1000 мкФ. Громкость регулируется резистором R 4.

Антенна подключена к модулю не напрямую, а через колебательный контур L 1 C 2. Это необходимо для лучшего согласования антенны и входных цепей микросхемы. Так же колебательный контур играет роль фильтра от внедиапазонных помех – контур настроен на частоту 98 МГц – середина диапазона. Катушка L1 намотана на оправке диаметром 5 мм проводом диаметром 0,4 мм и имеет 9 витков. Отвод делается от 3 витка катушки.

Как я заметил в ходе испытаний и тестов, с контуром L1C2 радиоприёмник принимает намного лучше, даже без антенны, чем если просто подключить антенну ко ВЧ входу модуля.

УМЗЧ построен на микросхеме TDA2822, включенной по мостовой схеме. Диапазон воспроизводимых частот ограничивается диапазоном динамика в интервале 180-12500Гц. Выходная мощность УМЗЧ около 0.7 Вт. Приёмник воспроизводит передачи в режиме моно. Связано это с конструктивными особенностями выбранного мной корпуса. Если необходимо воспроизведение стерео, в 3-м байте бит MS устанавливается в 0, а УМЗЧ в таком случае собирается по канальной схеме.

Источник

Рулим китайским FM-радиомодулем на TEA5767. Датагорская библиотека на C

Приобрел я на пробу радио-модуль на базе микросхемы TEA5767 .
Модуль представляет собой практически законченный приемник. Сам по себе модуль ничего ловить не будет, если только совершенно случайно настройки модуля по умолчанию будут соответствовать какой-нибудь местной станции, но это вряд ли.

Так вот, для того что бы модуль что-то начал ловить, нужно всего-ничего: подключить модуль в соответствии с распиновкой к усилителю и микроконтроллеру и написать прошивку управления модулем.
Во как, раньше приемники паяли, а теперь пишем!

Содержание / Contents

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.

Я не буду описывать TEA5767 , я совсем «некопенгаген» во всяких приёмно-усилительных трактах, синтезаторах частоты и гетеродинах. Я даже не знаю, чем отличается гетерОДИН от гетерДВА! Ну и, как нередко случается у программистов, я подхожу к вопросу абстрактно, для меня модуль — это некий «чёрный ящик» с описанным интерфейсом взаимодействия. Вот о нём и поговорим.

↑ Типы и распиновка модулей на TEA5767

↑ 1. Наиболее удобный модуль с полной обвязкой:

Этот модуль имеет полукруглые контактные площадки с торцов платы: 5+5 = 10 шт., шаг 2 мм. Я реализовывал управление по I2C шине. Для этого вывод «BUSMODE» подключаем к «земле», вывод «WR» можно не подключать.

↑ 2. Обрезанный модуль tt-502x — TEA5767 без кварца:

Часто нерадивые китайцы высылают этот вариант, вместо описанного выше. Вы сразу поймёте, что вас надули, распаковав бандерольку: на платах нет кварцевого резонатора. Радует то, что эти модули вполне рабочие, хоть и потребуют дополнительных телодвижений. Смотрите расширившуюся схему подключения, прикидывайте дополнительные элементы: часовой кварц, резисторы, конденсаторы. Этот модуль также имеет полукруглые контактные площадки с торцов платы: 4+6 = 10 шт., шаг 2 мм.
Я с таким модулем не работал, но чипы одинаковые, так что моя библиотека должна подойти.

↑ Схема демо-платы для TEA5767

Основные компоненты схемы:
• управляющий микроконтроллер ATmega16
• индикатор знакосинтезирующий 1602 на базе HD44780
• управление на энкодере с кнопкой

↑ Фото моей демо-платы в сборе

↑ Управление TEA5767 по I2C шине. Описание регистров на русском

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

Описание регистров, смысл которых я не понял, оставил без перевода. Так что, уважаемые коллеги, если кто-то более компетентен — пишите, вместе статью допилим.

↑ Функции датагорской библиотеки для TEA5767

Теперь пора рассказать про функции библиотеки, их всего пять.
1) tea5767_write (); — функция записи параметров структуры TEA5767WriteRegister в модуль.
2) tea5767_read (); — функция чтения параметров из модуля в структуру TEA5767ReadRegister.
3) tea5767_calc_write_PLL (uint16_t Value); — функция вычисления значения PLL при частоте кварца 32768 Гц, входной параметр — частота в МГц * 100, пример: tea5767_calc_write_PLL (10300) — вычисление значения PLL для частоты 103,00 МГц.
4) tea5767_init (); — начальная инициализация модуля. Можно и не инициализировать, но так как-то user-frendly, подаёшь питание, а там что-то уже играет. Я записываю следующие стартовые параметры:

5) (uint16_t)tea5767_calc_read_PLL (); — вычисляет значение частоты из регистров PLL для чтения.

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

Структура данных для записи — TEA5767WriteRegister

Структура данных для чтения — TEA5767ReadRegister

Структуры имеют битовые поля. Сделано это для удобства пользования библиотекой, мне не требуется применять операции сдвига или какие либо маски для установки/сброса конкретного бита. Например, включение режима «MUTE» осуществляется следующим образом: TEA5767WriteRegister.MUTE = 1.

После того, как необходимые параметры установлены, нужно вызвать функцию tea5767_write (), которая запишет всю структуру в модуль.
Также легко можно считать уровень сигнала из модуля: вызываем функцию tea5767_read (), SignalLevel = TEA5767ReadRegister.LEV
Таким же образом доступны почти все параметры.

Исключение составляют значение PLL, которые занимают больше одного байта в структуре. Но нам и не нужно что-либо записывать или считывать из них вручную. Для управления модулем проще будет задавать частоту. Для этого в библиотеке есть специальная функция, которая вычисляет значение PLL для заданной частоты. Также есть функция, которая производит обратное вычисление частоты из значения PLL, считанного из модуля.

Функции для вычисления PLL используют опорную частоту 32768Гц, такой кварц стоит на модуле. Других я не встречал, поэтому в библиотеке я не предусматривал возможности использования другого кварца.

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

↑ Видео

↑ Файлы

Библиотеки soft-i2c и TEA5767
🎁libs.7z 3.14 Kb ⇣ 135

↑ Итого

В качестве транспорта я использовал стороннюю библиотеку I2C шины. Шина реализована программным образом, мне это удобно потому, что можно подключаться на любые выходы микроконтроллера.

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

Источник

Adblock
detector