Радио модуль TEA5767 FM
Модуль TEA5767 предназначен для сборки цифрового стерео радиоприемника FM диапазона. Подключение к микроконтроллеру по протоколу I2C.
Содержание
- Обзор
- Характеристики модуля
- Подключение к плате Arduino
- Подключение динамиков к модулю TEA5767
- Пример использования
- Часто задаваемые вопросы FAQ
Обзор радио модуля TEA5767 FM
Модуль TEA5767 (рис. 1) предназначен для сборки цифрового стерео радиоприемника FM диапазона. Подключение к микроконтроллеру по протоколу I2C. На модуле установлены гнезда для подключения антенны и наушников. Содержит звуковой усилитель TDA1308 для наушников.
Рисунок 1. Модуль TEA5767.
Модуль TEA5767 может работать в режиме поиска радиостанций. Поиск останавливается при нахождении первой станции, имеющей уровень сигнала определенного значения, которое можно изменять. В случае слабого сигнала приемник автоматически переходит в режим моно.
Характеристики модуля TEA5767
- Напряжение питания : 5 В;
- Интерфейс: I2C;
- Диапазон принимаемых частот : 76 – 108 МГц;
- Функция поиска радиостанций.
Подключение к плате Arduino
Модуль TEA5767 подключается к плате Arduino по протоколу I2C. Для подключения по протоколу I2C используем 2 вывода Arduino.
Подключим модуль TEA5767 к плате Arduino Uno (по схеме рис. 2) и загрузим скетч I2C-сканера. В мониторе последовательного порта определяем I2C-адрес TEA5767, который равен 0x60.
Рисунок 2. Подключение к плате Arduino.
Рисунок 3. Определение I2C-адреса TEA5767 (скетч I2C-сканер).
Управление модулем осуществляется отправкой команд (5 байт) по протоколу I2C. Модуль так же позволяет читать из него информацию для реализации функции автопоиска и уровня сигнала. В листинге 1 показана настройка радио на определенную частоту.
Листинг 1
// Подключение библиотеки для 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() {;}
Подключение динамиков к модулю TEA5767
На выходе УКВ приемника установлена микросхема TDA1308 – звуковой усилитель для наушников. Чтобы подключить к данному разъему динамики и получить громкий звук необходимо использовать усилитель, например показанный на рис. 4.
Рисунок 4. УНЧ для подключения динамиков к модулю TEA5767.
Рисунок 5. Подключение динамиков к модулю TEA5767.
Рисунок 6. Подключение динамиков к модулю TEA5767.
Пример использования TEA5767
Создадим на модуле TEA5767 радиоприемник с поиском доступных радиостанций. Данные о найденной радиостанции будем отображать на экране дисплея, а поиск радиостанций будем осуществлять по нажатии на кнопки (вниз или вверх по частоте).
Нам потребуются следующие компоненты:
- Плата Arduino Uno или Nano – 1;
- Кабель USB – 1;
- Плата прототипирования – 1;
- Модуль FM-радио TEA5767 – 1;
- УНЧ стерео – 1;
- LCD WH1602 I2C – 1;
- Кнопка – 2;
- Резистор 10 кОм– 2;
- Провода.
Схема соединения элементов показана на рис. 7.
Рисунок 7. Схема соединений для радиостанции на Arduino и TEA5767.
Приступим к написанию скетча. Для более удобной работы с модулем создана Arduino-библиотека TEA5767. Данные о найденной радиостанции будем отображать на экране LCD WH1602, по нажатии на кнопок будем осуществлять поиск радиостанций вниз или вверх по частоте.
Содержимое скетча показано в листинге 2.
Листинг 2
// Подключение библиотек
#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);
}
Загружаем скетч на плату Arduino и слушаем радиостанции, кнопками выбираем следующие.
Рисунок 8. Радиостанция в сборе.
Купить обучающие наборы ардуино можно в нашем магазине 3DIY с доставкой по России.
Часто задаваемые вопросы FAQ
- Проверьте правильность подключения модуля TEA5767 к плате Arduino.
- Подключите антенну.
- Переместите радиостанцию в зону уверенного приема
- Для увеличения громкости используйте УНЧ.
- Проверьте правильность подключения усилителя и динамиков к модулю TEA5767.