FM-радиоприёмник на TEA5767 и Arduino + TFT-дисплей

Полноценный цифровой FM-приёмник с фиксированными станциями, переключением кнопками и выводом названия станции на цветной TFT-дисплей. Звук — сразу на динамики или наушники без усилителя. Готовый проект своими руками за один вечер.

FM radio TEA5767 Arduino

Что понадобится

  • Arduino Uno/Nano/Mega
  • Модуль TEA5767 (готовый с антенной и разъёмом 3.5 мм)
  • TFT-дисплей 1.8″ или 2.2″ (ILI9341/ST7735)
  • 2 кнопки (или тактовые)
  • Динамики 8 Ом 0.5–1 Вт или наушники
  • Антенна (идёт в комплекте или кусок провода 75 см)

Подключение

  • TEA5767 → Arduino:
    • VCC → 5 В (или 3.3 В — работает от обоих)
    • GND → GND
    • SDA → A4
    • SCL → A5
  • Кнопка «Вверх» → D2 + GND
  • Кнопка «Вниз» → D3 + GND
  • TFT по SPI (пример для ILI9341: CS=10, DC=9, RST=8)

Готовый скетч

#include <TEA5767Radio.h>
#include <Wire.h>
#include <TFT_eSPI.h>

TFT_eSPI tft;
TEA5767Radio radio;

const int btnUp = 2;
const int btnDown = 3;

struct Station {
  float freq;
  const char* name;
};

Station stations[] = {
  {87.5, "Радио 1"},
  {90.0, "Радио 2"},
  {101.2, "Юмор FM"},
  {103.7, "Европа Плюс"},
  {106.2, "Русское Радио"}
};
const int totalStations = sizeof(stations)/sizeof(stations[0]);
int currentStation = 0;

void setup() {
  pinMode(btnUp, INPUT_PULLUP);
  pinMode(btnDown, INPUT_PULLUP);
  
  tft.begin();
  tft.setRotation(1);
  tft.fillScreen(TFT_BLACK);
  tft.setTextColor(TFT_WHITE);
  tft.setTextSize(2);

  radio.begin();
  setStation(currentStation);
  displayInfo();
}

void loop() {
  if (digitalRead(btnUp) == LOW) {
    currentStation = (currentStation + 1) % totalStations;
    setStation(currentStation);
    displayInfo();
    delay(200);
  }
  
  if (digitalRead(btnDown) == LOW) {
    currentStation = (currentStation - 1 + totalStations) % totalStations;
    setStation(currentStation);
    displayInfo();
    delay(200);
  }
}

void setStation(int n) {
  radio.setFrequency(stations[n].freq);
}

void displayInfo() {
  tft.fillScreen(TFT_BLACK);
  tft.setCursor(20, 30);
  tft.println(stations[currentStation].name);
  
  tft.setTextSize(3);
  tft.setCursor(60, 80);
  tft.print(stations[currentStation].freq, 1);
  tft.print(" MHz");
  
  tft.setTextSize(2);
  tft.setCursor(100, 140);
  tft.print("Канал ");
  tft.print(currentStation + 1);
  tft.print("/");
  tft.print(totalStations);
}

Установка библиотеки

Менеджер библиотек → поиск «TEA5767» → установить TEA5767Radio by Matthias Hertel

Особенности

  • Громкость не регулируется программно (аппаратно на модуле)
  • Отличный приём даже на короткую антенну
  • Стерео через наушники
  • Легко добавить 20–50 станций
  • Готово к интеграции с часами и будильником

Что можно добавить дальше

  • Будильник по времени (DS3231)
  • Эквалайзер-анимация
  • Поиск станций автоматически
  • RDS (название песни)
  • Питание от батареек + сон

Заключение

TEA5767 + Arduino — один из самых простых и качественных способов собрать настоящий FM-приёмник своими руками. Звук чистый, приём уверенный, управление кнопками, красивый дисплей. Отличная основа для радиобудильника, кухонного радио или портативного приёмника!

FAQ — FM-радиоприёмник на TEA5767 и Arduino

Нужен ли усилитель для динамиков при использовании TEA5767?

Нет. Модуль TEA5767 способен напрямую работать с небольшими динамиками 8 Ом (0.5–1 Вт) либо с наушниками. Усилитель нужен только для громкого настольного прослушивания или подключения больших колонок.

Как подключить TEA5767 к Arduino?

Модуль работает по I2C. Подключите VCC → 5 В (или 3.3 В), GND → GND, SDA → A4, SCL → A5. Антенна — штатная или обычный провод 70–75 см. Работает стабильно даже при слабом сигнале.

Можно ли расширить список радиостанций до 20–50 штук?

Да. Количество станций ограничено только размером массива в скетче. Просто добавьте новые элементы в массив structs: частота и название станции. Переключение будет работать так же, как в примере.

Как изменить громкость на TEA5767?

Громкость регулируется аппаратно — на большинстве модулей есть встроенный аналоговый регулятор. Программная регулировка не поддерживается самой микросхемой TEA5767.

Работает ли TEA5767 от 3.3 В?

Да. Модуль TEA5767 стабильно работает как от 5 В, так и от 3.3 В. Это позволяет использовать его с Arduino Pro Mini, ESP8266 и другими 3.3-вольтовыми платами.

Поддерживает ли TEA5767 RDS (название песни и станции)?

Нет. TEA5767 не имеет функции RDS. Если нужен RDS, используйте TEA5767F, SI4703, SI4732 или RDA5807 — они поддерживают приём текстовых данных.

Можно ли добавить авто-поиск радиостанций?

Да. TEA5767 поддерживает пошаговый поиск станций по уровню сигнала. В библиотеке Matthias Hertel есть соответствующие функции — можно реализовать автосканирование и сохранение найденных частот в массив.

Почему TEA5767 работает даже с очень короткой антенной?

Модуль использует чувствительный FM-тюнер Philips с хорошей фильтрацией и автоматической подстройкой частоты. Поэтому даже короткий провод работает как рабочая антенна в городских условиях.

📁 Скачать примеры