TEA5767 и Ардуино

12-12-2020, 17:48 3 комментариев
Сегодня разбираем и подключаем TEA5767 к Ардуино. Этот FM радио модуль выбран нами для обзора не случайно. Мы всегда стараемся рассказать об интересных решениях, которые экономят бюджет, просты в сборке, надежны при длительной эксплуатации. Герой нашей статьи именно такое устройство!

Малогабаритный микромодуль очень практичен – его можно задействовать во многих современных проектах и начинаниях (например, для реализации сборки цифрового стерео-радиоприемника УКВ-FM диапазона). Как вы понимаете, сложно переоценить удовольствие, которое получает истинный "ардуинщик" от сборки радио своими руками!

Рассмотрим базовые технические параметры:
  • напряжение: 2,5-5V;
  • есть звуковой усилитель для наушников УНЧ TDA1308 (сопротивление в 32Ом);
  • ток: 70-200мА;
  • тип шины: I2C;
  • рабочие частоты: 76 – 108 МГц;
  • температурный диапазон: -20 ... +80°С;
  • размеры: 11 х 12 мм.
Из дополнительных опций можно назвать: поиск радиостанций, корректировка промежуточной частоты, автоматический контроль усиления AGC-цепи, защита от переполюсовки и др.

Подключим радио модуль TEA5767 к Arduino. Для этой цели нам понадобятся такие аппаратные элементы: плата расширения Ардуино UNO, модуль TEA5767, комплект соединительных проводов.

Схема подключения показана на скриншоте:


Для дальнейшей работы и непосредственно программирования понадобится специализированная библиотека Wire. Ее можно отыскать в среде разработки IDE.

Заливаем скетч:

// Подключение библиотеки для I2C
                #include <Wire.h>
 
                // частота воспроизведения
                float f = 105.4;
                // массив для отправки I2C
                byte arr[5]={0,0,0xB0,0x10,0x00};
 
                void setup() {
                Wire.begin();
                // запуск радио
                unsigned int freqB = 4 * (f * 1000000 + 225000) / 32768;
                byte freqH = freqB >> 8;
                byte freqL = freqB & 0XFF;
                arr[0]= freqH;
                arr[1]= freqL;
                Wire.beginTransmission(0x60);
                for(int i=0;i<5;i++) {
                     Wire.write(arr[i]);
                }
                Wire.endTransmission();
                }
                void loop() {;}

Можно добавить к этой схеме динамики для получения более насыщенного звука и дисплей для вывода значений на экран. Обратите внимание, как тогда будут выглядеть сборка и прошивка:


Пример кода:

// Подключение библиотек
 
                #include <TEA5767.h>
 
                #include <Wire.h>
 
                #include <LiquidCrystal_I2C.h>     
 
 
 
                // создание экземпляров
 
                TEA5767 receiver;
 
                LiquidCrystal_I2C displ(0x27,20,4);  
 
 
 
                // служебные переменные
 
                double freq;
 
                int flag = 0;
 
                int dir;
 
                unsigned char arr[5];
 
                int mono;
 
                int lvl;     
 
                void setup() {
 
                Wire.begin();
 
                // запуск радио
 
                receiver.init();
 
                // станция по умолчанию
 
                receiver.set_frequency(105.4);
 
                // запуск дисплея
 
                displ.init();
 
                // подсветка дисплея
 
                displ.backlight();
 
                }
 
                  
 
 
                void loop() {
 
                if (receiver.read_status(arr) == 1) {
 
                    freq = floor(receiver.frequency_available(arr)/100000+0.5)/10;
 
                    mono = receiver.stereo(arr);
 
                    lvl = receiver.signal_level(arr);
 
                    // вывод информации на дисплей
 
                    displ.setCursor(0,0);
 
                    displ.print("FM: "); displ.print(freq);
 
                    displ.setCursor(0,1);
 
 
                    if (!mono)
 
                       { displ.print("STEREO ");}
 
                    else
 
                       { displ.print("MONO ");}       
 
                }
 
 
 
                // поиск станции
 
                if (flag == 1) {
 
                      if (receiver.process_search (arr, direction) == 1) {
 
                          flag = 0;
 
                      }
 
                }
 
 
                // поиск вверх по частоте
 
                if (digitalRead(2)==HIGH) {
 
                    flag = 1;
 
                    dir = TEA5767_SEARCH_DIR_UP;
 
                    receiver.search_up(arr);
 
                    delay(250);
 
                }
 
 
                // поиск вниз по частоте
 
 
                if (digitalRead(3)==HIGH) {
 
                    flag = 1;
 
                    dir = TEA5767_SEARCH_DIR_DOWN;
 
                    receiver.search_down(arr);
 
                    delay(250);
 
                }
 
                delay(100);
 
                }

У нас получилась полноценная радиостанция.

Если у вас что-либо не получается, ничего не работает, советуем переместить устройства в другое место (где сигнал лучше), а также попробовать использовать антенну. Это должно помочь исправить ошибку!
Поделись в социальных сетях:
О авторе
Калугин Антон

Программист микроконтроллеров с 8-ми летним стажем, работал в таких компаниях как IBM, ASUS, Microsoft.

В комментариях с радостью отвечу на ваши вопросы.

Все статьи автора
Похожие новости

Сегодня поговорим о том, как воплотить в жизнь подключение FPM10A к Arduino, что это за модуль, где используется, каковы параметры его работы и т.д. Речь идет...

FM радио модуль стерео RDA5807M для Ардуино - отличное решение для создателей интересных проектов, в которых понадобится FM-радиоприемник. Модуль имеет ряд...

В этой статье мы рассмотрим подключение ADS1115 к Ардуино. Речь идет о 16-битном аналого-цифровом преобразователе, оснащенном 4 входами непосредственно для...

GSM модуль NEOWAY M590 – один из самых простых и бюджетных контроллеров, с помощью которого можно совершать звонки, принимать ∕ отправлять SMS-сообщения, а...

Сегодня рассматриваем подключение VL53L0X к Ардуино, а также основные особенности этого устройства. Датчик выбран нами для обзора не случайно – он вполне...

3 комментария
  1. Александр
    4 апреля 2021 11:05 Александр

    "У вас получилась полноценная радиостанция" -...!!!?
    Насколько я разбираюсь в электронике, здесь полноценный радио... ПРИЁМНИК! ? Стереофонический, с кнопочным управлением и большим дисплеем, только вот чтобы стать радиостанцией, ему кое-чего слегка не хватает. Модуля FM-передатчика, скажем! И хорошо бы с усилителем мощности.

    replyОтветить
  2. Виктор
    9 мая 2021 15:18 Виктор

    День добрый.
    Я в этом деле новичок, от слова совсем. Поэтому прошу, помогите. При компиляции скетча выскакивает ошибка "'direction' was not declared in this scope" и подсвечивается розовым строка " if (receiver.process_search (arr, direction) == 1) {".
    Arduino: 1.8.8 (Windows 7), Плата:"Arduino Nano, ATmega328P (Old Bootloader).
    Что я не так делаю?
    Хочется внучке радио подарить.

    replyОтветить
  3. Алексей
    8 мая 2023 12:31 Алексей

    Виктор,
    Замените,в коде direction на dir

    replyОтветить
Оставить комментарий