Tea5767 подключение fm стерео

arduinoLab

Подключение FM радиоприемника TEA5767 к Arduino

Про различные модули FM радио на микросхеме TEA5767.

Особенности:

  • Теплый ламповый супергетеродинный приемник FM диапазона.
  • Полоса частот: 76 MHz — 108 MHz.
  • Регулировка громкости и отключение звука.
  • Автоматический поиск станций.
  • Интерфейс I2C.
  • Диапазон напряжения питания: 2.5 — 5.0 В.

Распиновка модулей:

PL102BC-N:

Классический модуль с шагом контактов 2,0мм, подобные модули есть на микросхемах RDA5807M, CL5767P и тд.

В качестве переходника на более привычный наш контактов в 2,54мм, можно использовать кусок макетки.

SCT-104B VER:4.0:

Данный модуль относительно недавно появился на али, его мне прислали за место классической версии. Стоит отметить крайне не удачную компоновку выводов для самодельщиков.

Распиновка получена методом научной прозвони. Запустить модуль мне удалось после «появления» в сети картинки, что ниже.

Обратите внимание на ноги BUSMODE и BEN, их описание, слева.

  • BUSMODE — в даташите это bus mode select input, Выбор интерфейса, I2C или 3-wire, «The I2C-bus mode is selected when pin BUSMODE is LOW,» если нужно I2C, значит нужно соединить с GND. Что нам и нужно.
  • BEN (BUSENABLE, 13 pin) — в даташите это bus enable input, «Before any READ or WRITE operation the pin BUSENABLE has to be HIGH for at least 10 ms.» Если хотим читать или писать, на пине должен быть высокий уровень.
Читайте также:  Колонки пионер ts g1323i

GNT-503_VER2:

Распиновка получена методом научной прозвонки. Не проверялась.

BUS на картинке это 13 нога (BUSENABLE). Угадайте к чему подключен BUSMODE? Ага, модуль рассчитан на работу по 3-wire и по I2C до него не достучатся.

Хотя он удобно напаивается на переходник под SOP.

Подключение к Arduino:

В случаи с классическим модулем.

  • SDA и SCL — Интерфейс I2C, выходы на модулях не подтянуты к питанию и требуют пару резисторов на 10к.
  • VCC и GND — Питание модуля и масса, диапазон напряжения питания 2.5 — 5.0 В, рекомендуемое 3,0 В.
  • OUTL и OUTR — Аналоговый выход
  • ANT — Антенный вход.

В случаи SCT-104B VER:4.0 выход BUSENABLE нужно подтянуть к питанию, в остальном отличий нет.

Для GNT-503_VER2 с его 3-ware, готовые решения мне не попадались.

Его много, много как написанных библиотек, так и проектов. Библиотеку могу порекомендовать эту: https://mathertel.github.io/Radio/html/index.html

Чтобы запустить приемник, достаточно написать несколько команд в регистр, пример ниже.

Купить:

  • Классический модуль RRD-102BC
  • Новая версия SCT-104B VER:4.0
  • Модуль с усилителем для наушников

Также существуют полностью совместимые (включая программно) модули, вроде AR1010, но являются приемниками прямого преобразования с DSP обработкой, с худшей чувствительностью и качеством звучания.

Источник

Рулим китайским 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 ⇣ 124

↑ Итого

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

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

Спасибо за внимание!

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

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

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

Источник

Модуль TEA5767 – FM радио с Arduino и LCD Nokia 5110

в Ардуино, Звук 0 2,194 Просмотров

Популярный и дешевый модуль FM-радио TEA5767 — первый модуль, который я взял для изучения.

В моем прототипе системы, кроме самого TEA5767 использованы и другие необходимые модули:

  • Arduino Pro Mini с ATmega328 для управления
  • Усилитель мощности звука PAM8403, который усиливает выходной (от модуля TEA5767) аудиосигнал и передает его на динамики
  • Цифровой регулятор громкости PT2257
  • Источник питания (3,3 В)
  • ЖК-дисплей от Nokia 5110 (3310) с интерфейсом SPI
  • ИК-пульт дистанционного управления NEC для беспроводного радиоуправления

Характеристики модуля TEA5767

Ниже приведены основные особенности модуля TEA5767 :

  • Напряжение питания: 2,5…5 В
  • Диапазон частот: 76…108 мГц
  • Размер модуля: 31х30 мм
  • Имеет диод для защиты от обратной полярности
  • Наличие датчика фильтрации выходной мощности
  • Интерфейс: I2C (адрес 0x60)
  • Индикатор питания — синий светодиод
  • Мягкое отключение звука
  • Режим ожидания
  • Автоматический режим поиска радиостанций
  • Режим поиска радиостанции (следующий или предыдущий)

Распиновка выводов

Блок-схема FM-радио

Дополнительно я использовал:

1. Модуль RTC с добавленной памятью EEPROM (название модуля: Precise DS3231 AT24C32 RTC clock), управляемый по шине I2C (адрес по умолчанию для DS3231 — 0x68, а для AT24C32 — 0x57). Я использовал модуль RTC, чтобы считывать время и температуру окружающей среды (модуль также измеряет температуру).

В свою очередь, в EEPROM я помещаю данные, которые нужно использовать после повторного включения радио, например, частоту последней выбранной радиостанции. Выбор внешней памяти был продиктован большей надежностью (количеством возможных операций записи в память). Можно также использовать память ATmega.

2. Модуль с регулятором громкости PT2257, который позволяет осуществлять цифровое управление громкостью динамика через шину I2C (адрес по умолчанию 0x88).

Этот модуль можно не устанавливать и использовать только модуль усилителя PAM8403 со встроенным потенциометром, (фото такого модуля можно найти в моей статье, посвященной усилителю PAM8403). Лично меня, правда, смущало наличие этого аналогового элемента, и я сосредоточился на управлении пультом;).

3. Модуль FT232 (на схеме не показан) для программирования Arduino и связи с терминалом на ПК.

Подключение показано на рисунке ниже. Чтобы не слишком путаться, линии I2C (SDL и SDC) я не соединял. При практической реализации, конечно, их следует связывать вместе.

Подключение (схемы) аудиоусилителя PAM8403 и регулятора громкости PT2257 описано в других статьях (см. PAM8403 и PT2257). Связь между микроконтроллером и модулями осуществляется по шине I2C, а с ЖК-дисплея — через программно реализованный SPI.

Что касается вопросов сборки и самого модуля TEA5767, то у него нестандартная компоновка контактных площадок. Я использовал слегка изогнутые позолоченные контакты, а сам макет был перевернут (первое изображение слева), потому что на этой стороне были контактные площадки большего размера.

Функциональность всей схемы

  • Нет аналоговых компонентов
  • ИК-пульт дистанционного управления
  • Выбор станции из списка предустановок
  • Показать название станции из списка предустановок
  • Возможность поиска станций (без сохранения): следующая, предыдущая, все со всего диапазона VHF (опции доступны на уровне меню)
  • Показывать время каждые 5 секунд
  • Отображение по запросу (функция доступна кнопкой дистанционного управления) дата, время, температура окружающей среды
  • Показывает мощность FM-сигнала и громкость динамика (фактически — подавление US PT2257)
  • Отображение типа сигнала: стерео (ST), моно (MN)
  • Отключение звука (mute)
  • Выключение (режим ожидания)
  • Восстановить список предустановленных станций по умолчанию (полезно после поиска станций в диапазоне)
  • Запоминание последнего установленного значения громкости (подавления) PT2257 и его восстановление после повторного включения радио
  • Установка чувствительности автоматического поиска станций (опция в меню)

Название станции, частота, значки мощности сигнала, типа сигнала (стерео / моно), громкости

Данные с модуля RTC (время, дата, температура окружающей среды)

Периодически отображается время при воспроизведении радио

Прототип

Отправной точкой была поддержка радиомодуля, описанная в статье «Complete FM Radio с использованием Arduino, библиотеки TEA5767 и LCD Shield» и представленного там кода.

Основная модификация коснулась использования другого дисплея (с дополнительной информацией) и изменения способа управления на ИК-пульт. Я также значительно упростил выходные цепи, сохранив возможность цифрового управления громкостью.

Идея обработки кода на основе состояний также осталась, хотя сам код сильно изменился из-за других / новых модулей.

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

Оценка работы TEA5767

Слабый встроенный автоматический поиск станций. На практике работает только жонглирование запрограммированными станциями (частотами). Возможно из-за плохой антенны в виде 30 см кабеля.

С другой стороны, здесь нет драмы, потому что на практике я слушаю заранее определенные станции на других радиостанциях (например, по телефону).

Сам радиомодуль мог бы иметь регулятор громкости выходного сигнала и поддержку RDS, тем более что у конкурентов есть такие особенности.

Используемые библиотеки

Модуль FM-радио TEA5767: TEA5767

Регулятор громкости PT2257: Evc_pt2257

Использование вышеуказанных библиотек не вызывало серьезных проблем. Самым сложным для понимания оказался принцип работы дисплея (отображение текста и иконок). Кроме того, его библиотеки занимают довольно много места в оперативной памяти.

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

Работа ИК-пульта также оказалась проблематичной из-за двух разных кодов для одной и той же кнопки, хотя это скорее вопрос аппаратного обеспечения. Подробнее об этой проблеме в статье ИК-пульт дистанционного управления (NEC) с приемником HX1838. Поддержка в Arduino.

Исходный код

Сама программа включает более 1200 строк. В первую очередь я постарался сохранить читабельность и снизить потребление оперативной памяти.

На практике, если я использую радио в своем городе, я ставлю свои любимые частоты и выбираю уже из них. Реализованный поиск каналов (все, предыдущий, следующий) для меня избыточен, тем более что его эффективность не впечатляет. Найденные каналы также не запоминаются / не сохраняются.

Код также включает поддержку последовательного порта, который я использовал для программирования системы и отправки информации на терминал ПК (в виде отладчика).

Из-за проблем с объемом памяти, описанных выше, код также включает поддержку проверки использования ОЗУ на основе библиотеки MemoryFree.

Скачать файл проекта (83,4 KiB, скачано: 233)

Источник

Оцените статью