FM-радиоприёмник на TEA5767 и Arduino + TFT-дисплей
Полноценный цифровой FM-приёмник с фиксированными станциями, переключением кнопками и выводом названия станции на цветной TFT-дисплей. Звук — сразу на динамики или наушники без усилителя. Готовый проект своими руками за один вечер.
Что понадобится
- 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 с хорошей фильтрацией и автоматической подстройкой частоты. Поэтому даже короткий провод работает как рабочая антенна в городских условиях.