FM-модуль TEA5767: подключение к Arduino и приёмник с автопоиском

TEA5767 — цифровой стереоприёмник FM-диапазона с управлением по I2C. Разбираем характеристики, подключение к Arduino и сборку радио с дисплеем и кнопками.
Что представляет собой модуль
TEA5767 — плата для сборки цифрового стереофонического FM-радиоприёмника. С микроконтроллером она общается по шине I2C, а на самой плате уже распаяны гнёзда под антенну и наушники. Звук на наушники выводится через встроенный усилитель на микросхеме TDA1308.

Приёмник умеет самостоятельно искать станции. Сканирование прекращается на первой станции, уровень сигнала которой достиг заданного порога, причём этот порог можно менять. Если сигнал слабый, модуль сам переключается из стерео в моно.
| Напряжение питания | 5 В |
| Интерфейс | I2C |
| Адрес на шине I2C | 0x60 |
| Диапазон частот | 76–108 МГц |
| Усилитель для наушников | TDA1308 |
| Поиск станций | есть, с настраиваемым порогом уровня сигнала |
Подключение к Arduino и адрес на шине
Поскольку модуль работает по I2C, для связи с платой Arduino достаточно двух сигнальных выводов. После соединения с Arduino Uno полезно загрузить скетч I2C-сканера: в мониторе последовательного порта он покажет адрес устройства. У TEA5767 это 0x60.


Как настраивается частота
Модулем управляют, отправляя по I2C посылку из пяти байт. В обратную сторону из него можно читать данные — на этом построены автопоиск и определение уровня сигнала.
Для настройки на конкретную станцию хватает одной стандартной библиотеки Wire. Частота в мегагерцах (в примере 105.4) пересчитывается в число по формуле 4 * (f * 1000000 + 225000) / 32768. Старший и младший байты результата записываются в первые два элемента массива, остальные три байта в примере равны 0xB0, 0x10 и 0x00. Затем все пять байт передаются на адрес 0x60 — и приёмник начинает воспроизведение. Основной цикл программы при этом остаётся пустым.
Вывод звука на динамики
Встроенная TDA1308 рассчитана только на наушники. Чтобы получить громкий звук из динамиков, к выходному разъёму модуля подключают отдельный усилитель низкой частоты, а уже к нему — динамики.

Приёмник с дисплеем и кнопками поиска
На базе модуля несложно собрать законченный приёмник: частота найденной станции выводится на экран, а две кнопки запускают поиск вверх или вниз по диапазону. Для такого проекта нужны:
- плата Arduino Uno или Nano и кабель USB
- макетная плата и провода
- модуль TEA5767
- стереоусилитель НЧ
- дисплей LCD WH1602 с интерфейсом I2C
- две кнопки и два резистора по 10 кОм
В скетче используются библиотеки TEA5767, Wire и LiquidCrystal_I2C; дисплей в примере имеет адрес 0x27. При запуске приёмник инициализируется и настраивается на станцию по умолчанию 105.4 МГц, включается подсветка экрана. В цикле программа читает состояние приёмника и выводит в первую строку частоту, а во вторую — режим STEREO или MONO; попутно считывается уровень сигнала. Кнопка на выводе 2 запускает поиск вверх по частоте (search_up), кнопка на выводе 3 — вниз (search_down). Пока поиск не завершён, программа продолжает его обрабатывать и сбрасывает флаг, когда станция найдена.
Если что-то не работает
- Станции не находятся: стоит проверить соединения с Arduino, подключить антенну и перенести приёмник туда, где приём увереннее.
- Звук слишком тихий: нужен внешний усилитель; если он уже есть — проверить подключение усилителя и динамиков к модулю.