FM radio приёмник TEA5767 на Arduino

FM radio приёмник TEA5767 на Arduino

Расскажу как сделать FM radio приёмник на модуле TEA5767 используя Arduino и вывести название радиостанции на TFT дисплей. У вас получится качественный радиоприёмник с набором фиксированных станций переключать которые вы сможете кнопками.
Сегодня рассмотрим простой пример создания радиоприёмника с фиксированными частотами. В скетче вы можете прописать абсолютно любое количество станций. В пределах разумного конечно.
Это первое видео про модуль FM приёмника TEA 5767, поэтому не будем его усложнять. Мы выведем на экран дисплея только Частоту на которой работает в данный момент радиоприёмник, название радиостанции, и номер канала. Выбором каналов можно управлять нажимая кнопки вверх и вниз по диапазону. Программно управлять громкостью в этой модели не получится, ну или я не разобрался. Если кто знает, может меня поправить. Сейчас у меня к выходам подключены динамики и звук достаточно громкий даже без дополнительного усилителя. В следующих видео я покажу как подключить внешний усилитель.
На экране у меня осталось ещё место. Я потом покажу как скрестить этот модуль с часами и тогда мы сможем не просто выводить дату и время, а использовать будильники которые будут включать радио в нужное время. Опять повторюсь, что вы не сможете плавно включать громкость по будильнику.

Посмотрим, что нам сегодня понадобится.
Во первых сам модуль радиоприёмника. Он продаётся в двух комплектациях. Первая облегчённый набор, типа сделай сам. Сюда входит чип 5767 и кварц на частоту 32 мегагерца, и небольшая обвязка из деталей. Если вы хотите немного попаять, то можете взять этот набор, но сразу скажу, что это не совсем удобно. Гораздо лучше взять такой комплект как у меня. Сюда входит и гнездо для антенны и сама антенна. Гнездо для стерео наушников, и гребёнка из 4 контактов. На питание и на I2C шину.  Светодиод показывает что устройство работает. Вам надо будет всего лишь вставить в макетную плату и всё готово к работе.
Так же надо будет подключить две кнопки, для перебора диапазонов радио канала. Одна кнопка будет выбирать каналы на увеличение, а вторая на уменьшение. При выборе последнего канала, вы не сможете пойти дальше, и вам надо будет нажимать другую кнопку.
Для вывода информации я использовал TFT дисплей из прошлого урока. Если не знаете как его подключить, то посмотрите этот урок.
Для воспроизведения я использовал вот такие вот колонки. Они конечно не очень хорошие, но слушать можно. Теперь давайте посмотрим как работает приёмник. И я не оговорился, именно посмотрим, так как я записывал его работу на обычный микрофон. Поэтому ни о каком качестве речи быть не может. И к тому же из-за ограничений ютуба, я старался записывать не музыку, а разговоры. Так что вам придётся поверить мне на слово. Качество тех станций которые хорошо принимаются в вашей местности, так же хорошо будут воспроизводиться и в приёмнике.

Ну вот как-то так получилось. Давайте посмотрим схему подключения.
TFT дисплей подключаем по шине SPI. Главное не забудьте, что питание дисплея 3.3 вольта. А так как логика на Ардуино 5 вольтовая, а на дисплее 3 вольтовая, то из надо подключать через делитель напряжения.

Радиомодуль подключается по стандартной схеме к шине I2C. То есть SDA модуля к А4 Ардуино, а SCL подключение к А5.
Кнопки увеличения и уменьшения подключены ко входам D2 и D3 Ардуино. Чтобы не ставить дополнительные резисторы, я в скетче включил внутреннюю подтяжку.
Думаю, что с подключением проблем быть не должно. Переходим к изучению скетча. Но перед этим хочу сказать, что у меня уже есть видео про похожий модуль FM приёмника, а точнее про RDA 57 08. Это модуль я покупал без обвязки и поэтому пришлось паять контакты. Качество работы и приёма сигнала вполне достаточно для работы. Там также как и здесь сделан метод фиксированных станций, а ещё там есть возможность регулировки звука нажатием на кнопки плюс и минус. Так как тогда у меня ещё не было такого дисплея, то я вывел на дисплей от телефона Нокиа.
Открываем скетч. Скачать скетч, библиотеку и другое можно как всегда на моём сайте. Ссылка будет в описании.

Для начала надо установить недостающие библиотеки. В этом видео я буду говорить только про радио. Если не знаете как работать с дисплее смотрите видео про дисплей. Вв можете скачать библиотеку из программвы Ардуино IDE. Для этого переходим в пункт управлять библиотеками и вбиваем слово radio. Так как библиотек с этим словом много, поэтому нам и открылся такой большой список. Листаем почти в самый низ и находим нужную библиотеку. У меня она уже установлена, поэтому я просто закрываю, а вам нужно её установить.
Второй способ это скачать с гитхаба. Найди её можно вот по этой ссылке. Это точно такая же библиотека ч то в первом случае. Нажимаем скачать и скачиваем.
Думаю, что делать дальше и как устанавливать библиотеки вы знает. Ну и последний, третий способ, это скачать библиотеку вместе с примерами с моего сайта.
Сейчас быстро пробежим по скетчу.
Процентов 80 в скетче – это вывод информации на дисплей. Эту информацию я коснусь только слегка, так как наша тема радио.
Здесь указываем, что у нас будут 2 кнопки и они подключены к выводам 2 и 3 ардуино. Ими мы будем менять сохранённые в массивы радиостанции.
В эту переменную загружаем частоту любимой радиостанции. Она будет всегда играть при включении Ардуино и после перезагрузки.
Создаём счётчик для значений массива и присваиваем ему значение 0. Это значение будет меняться при нажатии кнопок, прибавляться или уменьшаться.
Ну и наконец самый главный массив в нём мы будем хранить названия радиостанций и их частоту. Важно не перепутать. Количество частот должно быть равно количеству названий. Их может быть большое количество, например 20 или 30 и больше.

В setup мы включаем для кнопок внутреннюю подтяжку к + питания. Так как мы не ставили дополнительные резисторы и без подтяжки у нас на кнопке в выключенном состояние может быть неопределённое значение, которое может меняться случайным образом.
Эти строчки кода устанавливают цвет фона для 5 строк дисплея, на которых я вывел информацию. Можно было это не делать, но так вроде поинтереснее.
Здесь инициализируем радио модуль, включаем отладочную информацию и присваиваем функции фиксированное значение радиостанции, которое мы указали вначале.
А здесь мы фиксируем значение кнопок и если они нажаты, то их значение изменяется, прибавляется или уменьшается. Так как кнопки у нас сидят на земле, то и при нажатии они имеют низкое значение. То есть LOW, а в отпущенном состоянии имеют высокое значение, то есть HIGH, так как они у нас притянуты к плюсу.
Здесь мы получаем частоту , а затем, выводим её н экран дисплея. Для того чтобы вывести название радиостанции, нам понадобится возможность выводить русский шрифт. Как это сделать я рассказывал раньше. Выводим текст обернув его в функцию utfrus().
То же делаем с текстом Канал. А вот цифры выводим просто так. Так как любой массив начинается с нуля, нам надо прибавить единицу к счётчику. А то как-то не красиво будет смотреть канал- 0.
Место для времени и погоды я оставил на следующий урок, в котором подключу модуль времени и какой-нибудь датчик температуры.
Модуль времени нам понадобится для будильника который будет включать радио по утрам, или для таймера, который сделает тоже самое, или отключит радио когда вы уже уснёте.
В общем ещё есть над чем поработать.

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

radio fm RDA5807M и arduino. Подключение, настройка, описание
FM radio приёмник TEA5767 на Arduino
Вседиапазонный AM/FM/SW/LW - Si4735
Сравнение модулей радиоприемников FM RADIO RDA5807M, FM RADIO TEA5767 и AM/FM/SW/LW Si4735
Скетчи