В предыдущих статьях были разобраны: подключение RDA5807M, RSSI (Receive signal strength indicator) и RDS (Radio Data System). В этой статье разберем остальные возможности модуля. Напомню что работа с ним ведется в среде Arduino IDE с помощью библиотеки Radio
Полная документация на библиотеку доступна по этой ссылке
Установка границ диапазона для 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 по выбору полосы:
- 87..108МГц
- 76..91МГц
- 76..108МГц
- 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) тогда "это точно радиостанция"
Тогда получается:
- устанавливаем модуль на частоту начала диапазона;
- ищем первую с начала диапазона радиостанцию;
- запоминаем первую найденную частоту радиостанции;
- в бесконечном цикле ищем все остальные радиостанции в диапазоне;
- как только снова натыкаемся на первую найденную - выходим из цикла.
- 87.5 DFM
- 87.9 Радио Дача
- 91.0 Радио ENERGY
- 100.7 Вести ФМ
- 101.2 Авторадио
- 101.6 Европа Плюс
- 102.1 Русское Радио
- 102.5 Радио Маяк
- 103.0 Ретро FM
- 103.9 Дорожное радио
- 104.6 Радио Трансмит
- 105.0 Радио Шансон
- 105.4 НАШЕ Радио
- 106.7 Радио Вера
Выключение звука (MUTE)
Переключение режима работы СТЕРЕО/МОНО
Усиление басов ВКЛ/ВЫКЛ
Режим энергосбережение (отключение внутренней РАДИОЭЛЕКТРОНИКИ RDA5807M)
Модуль подключенный к линейному входу ПК (читай внешнему усилителю) потребляет около 20mA вне зависимости от установленного уровня громкости.
С помощью команды:
- radio.term();
в модуле можно отключить всю радиоэлектронику связанную с приемом радио, потребляемый модулем ток при этом, падает практически до нуля.
Но! модуль будет продолжать отвечать по шине I2C и поэтому можно вернуть его обратно в работу заново проинициализировав. Также необходимо будет выполнить настройку на частоту и восстановить уровень громкости - функционал пригодится при создании "аудио-комбайнов".
Автоматическое уменьшение громкости звука когда модуль не настроен на радиостанцию.
Режим активируется командой
- radio.setSoftMute(true);
и значительно снижает громкость шипения когда производится настройка на радиостанции. Можно включить прямо в секции Setup и забыть.
P.S: от писка на малой громкости удалось полностью избавиться припаяв прямо на модуль (между + и -) электролитический конденсатор 1000мкф*6.3V
Цена удовольствия на Ali чуть больше 30 рублей....
Пример кода с "плюшками" качайте тут
Ссылки на предыдущие статьи по функционалу RDA5807M:
Оглавление канала доступно по этой ссылке:
Всем удачи!