Найти тему
Электроника, ESP32, Arduino

FM RDA5807M автоматический поиск станций, басы, энергосбережение и другие плюшки

Оглавление

В предыдущих статьях были разобраны: подключение RDA5807M, RSSI (Receive signal strength indicator) и RDS (Radio Data System). В этой статье разберем остальные возможности модуля. Напомню что работа с ним ведется в среде Arduino IDE с помощью библиотеки Radio

GitHub - mathertel/Radio: An Arduino library to control FM radio chips like SI4703, SI4705, RDA5807M, TEA5767.

Полная документация на библиотеку доступна по этой ссылке

Установка границ диапазона для RDA5807M:

  • Диапазон принимаемых частот 50 - 115МГц
  • Выбираемый шаг изменения частоты: 200кГц, 100кГц, 50кГц, 25кГц

Теоретически эта штуковина может принимать радиостанции в УКВ диапазоне (ЧМ-вещание в полосе частот 65,9—74 МГц УКВ1/FM1), а практически проверить не могу, так как в моем регионе на УКВ уже давно ничего не вещают.

Определить границы диапазона частот можно отправив две команды:

Результат работы
Результат работы

Библиотека по умолчанию работает в диапазоне FM (ЧМ-вещание в полосе частот 87,5—108 МГц УКВ2/FM2). Переопределить границы диапазона можно с помощью оператора:

  • radio.setBand(RADIO_BAND_FM); // FM band 87.5....108 MHz (USA, Europe) selected.)
  • radio.setBand(RADIO_BAND_FMWORLD); // FM band 76....108 MHz (Japan, Worldwide) selected

Если в вашем регионе доступен только FM, а переезжать в Японию вы не собираетесь, с этими настройками специально можно не заморачиваться.

Из документации на RDA5807M по выбору полосы:

  1. 87..108МГц
  2. 76..91МГц
  3. 76..108МГц
  4. 65..76МГц или 50..65МГц

Библиотека поддерживает работу с вариантом 1 (по умолчанию) и 3.

Алгоритм автоматического поиска станций:

Поскольку модуль цифровой, а не аналоговый с помощью RSSI можно организовать автоматический поиск радиостанций.

Для перемещения по диапазону в верх или вниз относительно текущей частоты, на которую настроен радио-модуль RDA5807M существует 2 оператора.

  • radio.seekUp(false);
  • radio.seekDown(false);

Шаг по умолчанию 100кГц. В большинстве стран частоты радиостанций разнесены на 200кГц или 100кГц, поэтому менять его нет никакого смысла.

Те же операторы с параметром true

  • radio.seekUp(true);
  • radio.seekDown(true);

будут искать именно частоту радиостанции вверх или вниз по диапазону относительно текущей настроенной частоты. Однако сами по себе эти операторы вместе с радиостанциями находят и кучу мусора....

Классическое решение - при нахождении чего-то похожего на радиостанцию, узнать уровень сигнала, обратившись к данным структуры RSSI:

Если (info.rssi > некое значении) тогда "это точно радиостанция"

но у меня лучше отработала другая "фишка" - индикатор появления стереозвука, так как все доступные мне радиостанции вещают в Stereo.

Если (info.stereo == true) тогда "это точно радиостанция"

Тогда получается:

  • устанавливаем модуль на частоту начала диапазона;
  • ищем первую с начала диапазона радиостанцию;
  • запоминаем первую найденную частоту радиостанции;
  • в бесконечном цикле ищем все остальные радиостанции в диапазоне;
  • как только снова натыкаемся на первую найденную - выходим из цикла.
Код для получения списка радиостанций в Вашем регионе при отправке символа 's'
Код для получения списка радиостанций в Вашем регионе при отправке символа 's'
Все частоты 14 местных FM радиостанций были найдены быстро, точно и без мусора.
Все частоты 14 местных FM радиостанций были найдены быстро, точно и без мусора.
  1. 87.5 DFM
  2. 87.9 Радио Дача
  3. 91.0 Радио ENERGY
  4. 100.7 Вести ФМ
  5. 101.2 Авторадио
  6. 101.6 Европа Плюс
  7. 102.1 Русское Радио
  8. 102.5 Радио Маяк
  9. 103.0 Ретро FM
  10. 103.9 Дорожное радио
  11. 104.6 Радио Трансмит
  12. 105.0 Радио Шансон
  13. 105.4 НАШЕ Радио
  14. 106.7 Радио Вера

Выключение звука (MUTE)

Полностью выключить звук можно только с помощью этой функции
Полностью выключить звук можно только с помощью этой функции

Переключение режима работы СТЕРЕО/МОНО

Пригодиться если у радио будет одна колонка - оба канала звучат одинаково, можно использовать любой из них - значение по умолчанию MONO!!! не забудьте включить STEREO в секции Setup
Пригодиться если у радио будет одна колонка - оба канала звучат одинаково, можно использовать любой из них - значение по умолчанию MONO!!! не забудьте включить STEREO в секции Setup

Усиление басов ВКЛ/ВЫКЛ

Просто забавная штука - но басы действительно чуть чуть усиливает -значение по умолчанию выключено!
Просто забавная штука - но басы действительно чуть чуть усиливает -значение по умолчанию выключено!

Режим энергосбережение (отключение внутренней РАДИОЭЛЕКТРОНИКИ RDA5807M)

Модуль подключенный к линейному входу ПК (читай внешнему усилителю) потребляет около 20mA вне зависимости от установленного уровня громкости.

Энергопотребление RDA5807M
Энергопотребление RDA5807M

С помощью команды:

  • radio.term();

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

Энергопотребление RDA5807M спящий режим
Энергопотребление RDA5807M спящий режим

Но! модуль будет продолжать отвечать по шине I2C и поэтому можно вернуть его обратно в работу заново проинициализировав. Также необходимо будет выполнить настройку на частоту и восстановить уровень громкости - функционал пригодится при создании "аудио-комбайнов".

Отправка w - перевод в спящий режим, Отправка e - возвращение в работу.
Отправка w - перевод в спящий режим, Отправка e - возвращение в работу.

Автоматическое уменьшение громкости звука когда модуль не настроен на радиостанцию.

-11

Режим активируется командой

  • radio.setSoftMute(true);

и значительно снижает громкость шипения когда производится настройка на радиостанции. Можно включить прямо в секции Setup и забыть.

P.S: от писка на малой громкости удалось полностью избавиться припаяв прямо на модуль (между + и -) электролитический конденсатор 1000мкф*6.3V

-12

Цена удовольствия на Ali чуть больше 30 рублей....

Пример кода с "плюшками" качайте тут

RDA5807_TEST_PLUSKI.zip

Ссылки на предыдущие статьи по функционалу RDA5807M:

Оглавление канала доступно по этой ссылке:

Всем удачи!