FM-радиоприёмник на Arduino с модулем RDA5807M: подключение и управление

RDA5807M на Arduino — компактный FM-приёмник с отличным качеством звука. Модуль работает по I2C, поддерживает стерео, RDS, цифровую громкость. Диапазон 50–115 МГц, питание 2.7–3.3В. Управление кнопками: переключение станций, громкость. Вывод на дисплей Nokia 5110: название станции, частота, уровень громкости. Проект для портативного радио, будильника или интеграции в умный дом. Низкое потребление, простая сборка на макетной плате.

RDA5807M Arduino FM радио Nokia 5110 кнопки

Возможности RDA5807M

Стерео выход, RDS (название станции), цифровая громкость 0–15, поиск станций, сохранение пресетов. Антенна — провод наушников. Поддержка наушников или динамика. Низкое потребление для батарейного питания. Интеграция с дисплеем для отображения информации.

Компоненты

  • Arduino Uno/Nano
  • RDA5807M модуль
  • Дисплей Nokia 5110
  • 4 кнопки
  • Резисторы 10 кОм (pull-up)
  • Наушники или динамик

Подключение

  • VCC → 3.3V Arduino
  • GND → GND
  • SDA → A4
  • SCL → A5
  • L/R → GND (моно) или динамик
  • Антенна — провод наушников
  • Кнопки → D2–D5 с pull-up
  • Nokia 5110: стандартное подключение (CE, DC, DIN, CLK, VCC, BL, RST, GND)

Библиотеки

Radio (для RDA5807), PCD8544 (Nokia 5110), русификатор шрифта.

Скетч Arduino

#include <radio.h>
#include <RDA5807M.h>
#include <PCD8544.h>

RDA5807M radio;
PCD8544 lcd;

const int btnVolUp = 2;
const int btnVolDown = 3;
const int btnNext = 4;
const int btnPrev = 5;

float stations[] = {87.5, 88.0, 90.5 /* ... */};
char* names[] = {"Станция1", "Радио2" /* ... */};
int current = 0;
int volume = 8;

void setup() {
  radio.init();
  radio.setBand(RADIO_BAND_FM);
  radio.setVolume(volume);
  radio.setMono(false);
  radio.seekUp();
  lcd.begin(84, 48);
  updateDisplay();
}

void loop() {
  if (digitalRead(btnNext) == LOW) { current++; if (current > 11) current = 0; radio.setFrequency(stations[current]); updateDisplay(); delay(300); }
  if (digitalRead(btnPrev) == LOW) { current--; if (current < 0) current = 11; radio.setFrequency(stations[current]); updateDisplay(); delay(300); }
  if (digitalRead(btnVolUp) == LOW) { volume++; if (volume > 15) volume = 15; radio.setVolume(volume); updateDisplay(); delay(200); }
  if (digitalRead(btnVolDown) == LOW) { volume--; if (volume < 0) volume = 0; radio.setVolume(volume); updateDisplay(); delay(200); }
}

void updateDisplay() {
  lcd.clear();
  lcd.print(names[current]);
  lcd.print("\nFreq: "); lcd.print(stations[current]);
  lcd.print("\nVol: "); lcd.print(volume);
}
Управляет FM-радио через модуль RDA5807M и отображает информацию на LCD PCD8544.
Кнопки btnNext/btnPrev переключают станции по массиву stations.
Кнопки btnVolUp/btnVolDown регулируют громкость (0–15).
После каждого действия обновляется дисплей с именем станции, частотой и уровнем громкости.
Задержки delay(200–300) предотвращают дребезг кнопок.

Настройка и работа

Запишите 12 станций в массив. Кнопки переключают пресеты и громкость. Дисплей показывает название, частоту, уровень. Антенна — провод наушников для лучшего приёма. RDS для названий станций (если поддерживается).

Расширение

Добавьте поиск станций, сохранение в EEPROM, RDS-вывод, меню. Интеграция с часами или будильником.

Заключение

RDA5807M — отличный модуль для FM-радио на Arduino. Качественный звук, простое управление, дисплей. Готово к портативному радио или интеграции в проекты.

FAQ — RDA5807M на Arduino

Почему нет звука?

Проверьте наушники/динамик, антенну (провод), громкость (volume 1–15), питание 3.3В.

RDS не работает?

Не все станции передают RDS. Используйте radio.getRDS() для чтения.

Поиск станций?

radio.seekUp()/seekDown() — автоматический поиск с остановкой на сигнале.

Сколько станций сохранить?

До 20–30 в массиве. Для большего — EEPROM или SD-карта.

Моно/стерео?

radio.setMono(true/false) — принудительно моно для слабого сигнала.

Дисплей Nokia 5110 русский шрифт?

Добавьте русификатор (массив символов) в библиотеку PCD8544.

Питание от 5В?

Модуль 3.3В — используйте регулятор или 3.3V пин Arduino.

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