Главная » Arduino » Модуль TEA5767 – FM радио с Arduino и LCD Nokia 5110

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

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

В моем прототипе FM радио с Arduino и LCD Nokia 5110, кроме самого модуля 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)
  • Индикатор питания — синий светодиод
  • Мягкое отключение звука
  • Режим ожидания
  • Автоматический режим поиска радиостанций
  • Режим поиска радиостанции (следующий или предыдущий)

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

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

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

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

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

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

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

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

Тестер транзисторов / ESR-метр / генератор
Многофункциональный прибор для проверки транзисторов, диодов, тиристоров...
Подробнее

Подключение показано на рисунке ниже. Чтобы не слишком путаться, линии 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, тем более что у конкурентов есть такие особенности.

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

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

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

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

Исходный код

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

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

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

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

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



Блок питания 0...30В/3A
Набор для сборки регулируемого блока питания...
Подробнее



3 комментария

  1. Привет! При проверке скетча выдает ошибку. Что можно посмотреть? Спасибо!

    Ответить
  2. Удалось мне залить, пишет «Мало памяти, программа может работать не правильно». У меня NANO

    Ответить
  3. Подключил дисплей и 3231 — полная тишина. Что не так?

    Ответить

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