АУДИО Простой FM-радиоприёмник на модуле RDA5807m и Arduino Nanо

Простой FM-радиоприёмник на модуле RDA5807m и Arduino Nanо
Простой FM-приёмник на Ардуино Нано


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

Предлагаю вниманию новичков в радио-деле (мастеров такими поделками не удивить) реализацию FM-радиоприёмника, собранном на Arduino Nano и замечательном крохотном модуле RDA5807m, в котором уместились приёмная высокочастотная часть приёмника (всемирной полосы частот 50 -115 MHz), rds-декодер и предварительный усилитель низкой частоты. Кроме того, модуль имеет интерфейс управления I2C.

Для отображения информации о частоте, названии радиостанций, текстовых RDS-оповещений радиостанций, качества приёма, уровня громкости и т.п., я решил использовать недорогой и популярный у самодельщиков OLED-дисплей SSD1306.
(Важное примечание: рекомендую использовать OLED-дисплей 0,96" 128x64)

От кнопочного управления решил отказаться полностью, заменив его на один энкодер GSMIN AK291.

Для усиления звука в приёмнике использован модуль УНЧ PAM8403, который выводит звук на два компактных 1/4 вт. динамика.

Автономное питание приёмника (на принципиальной схеме не прорисовано) было построено на зарядном модуле для li-ion аккумуляторов. В качестве элемента питания использовал плоский аккумулятор ёмкостью в 1000 мАч.

Приёмник с вышеперечисленной начинкой получился весьма компактных размеров - точно с пачку сигарет - 80x50x25.
Этот "малыш" многое умеет:
  1. Воспроизводит трансляцию станций мирового fm-диапазона.
  2. Всё управление осуществляется одним энкодером.
  3. Автоматически производит настройку на следующую/предыдущую станцию.
  4. Имеет ручную настройку частоты.
  5. Отображает на экране (128 x 64): качество приёма текущей радиостанции; название радиостанции (RDS); уровень установленной громкости; моно или стерео-трансляция; частоту радиостанции; динамику изменения громкости трансляции в изменяющихся по длине горизонтальных разнонаправленных от центра лучей (во, загнул! :) ); текстовые субтитры-сообщения от радиостанции (RDS); время в радио-студии (RDS, как правило, там выставлено бредовое время и за ним никто не следит).
  6. Перестраиваемый экран. Если RDS выключен в настройках приёмника или радиостанция не использует RDS, то экран перестраивается, шрифты увеличиваются, пустоты и пустые поля убираются, чтобы с максимальной наглядностью использовать маленький дисплей.
  7. Увеличение, уменьшение громкости.
  8. Отключение звука (Mute).
  9. Автоматическое отключение экрана и звука через установленный промежуток времени (1, 2, 3, 4, 5 часов).
  10. Принудительное включение/отключение RDS.
  11. Установка чувствительности (низкая, средняя, высокая) для поиска радиостанций.
  12. Сохранение текущей радиостанции в любимые. При следующем включении приёмник сразу же настроится на волну этой радиостанции.
  13. Включение/выключение стерео.
  14. Включение/выключение усиленных басов
  15. Включение/выключение динамической визуализации изменения громкости звуковой трансляции.
  16. Настройка яркости экрана (слабая, средняя, максимальная).
  17. Сохранение всех настроек в энергонезависимую память для восстановления состояния приёмника при следующем включении.
Принципиальная схема приёмника
schemas.jpg

Фотография готового приёмника

fm-radio.jpg screens.jpg

Скетч

В скетче используется ряд библиотек, которые легко устанавливаются через Arduino IDE.
Единственная библиотека требует установки более ранней её версии из-за несовместимости версий. Это библиотека Radio от Matthias Hertel. Следует устанавливать версию 2.0.0.

Актуальная версия: 1.2.

02.01.2025. Исправлена ошибка с регулировкой громкости.

Скачать схему и скетч можно отсюда: https://cloud.mail.ru/public/WKus/P119rnscM
Необходимые библиотеки: https://cloud.mail.ru/public/9Fuo/V8qkTeGpM
 

Вложения

Изменено:

Комментарии

serg2076

✩✩✩✩✩✩✩
28 Сен 2024
11
4
@Eugeniy59, я сейчас питаю ардуино 2-я 18650 соединенными последовательно , т.е 8,4 В при максимально заряженных АКБ, через вход Vin - он расчитан от 5 до аж 20В, Есть платы зарядки на али(), которые заряжают 2 или 3 банки Li-on акб от телефонного ЗУ. Вот только со звуком надо разобраться чтоб от 1 до 15 уровня было все более равномерно.
 

PashaBeat

✩✩✩✩✩✩✩
20 Дек 2024
1
0
А только один скетч из файлов заливать? Или их надо как-то соединить?
 

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
124
124
www.1812.ru
@serg2076, чтобы уменьшить уровни громкости на звуковых входах усилителя я бы порекомендовал подобрать экспериментальным путём резисторы. Подключите сначала переменный резистор на выходе любого звукового канала радиомодуля. При максимальной громкости выставите такое сопротивление, при котором УНЧ не захлёбывется и звучит без искажений. Измерьте тестером получившееся сопротивление на переменном резисторе и подберите резистор близкого номинала на каждый канал.
 

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
124
124
www.1812.ru
@Eugeniy59, запитывать Ардуино Нано лучше от 5 в. Автоматическое отключение модуля DD06CVSA при низком токе - известная проблема. Тут либо использовать другой модуль, либо вешать дополнительную пассивную нагрузку на выход модуля в виде резистора, что не есть хорошо, т.к. ток, проходящий через этот резистор, будет быстрее разряжать аккумулятор.
 

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
124
124
www.1812.ru
@PashaBeat, для Arduino IDE работает такое правило: загружаете ino-файл с таким же названием как и папка проекта. Именно этот файл является главным, остальные ino-файлы автоматически подключатся.
 

S_Sergey_G

✩✩✩✩✩✩✩
23 Фев 2021
167
3
Собрал Ваш проект. Всё завелось с первого раза, без проблем. Но ни одной станции не нахожу. Что то не так с железом или такие условия приема? Должна же хоть какая ни будь станция "пойматься", одно шипение.
 

psyx86

★★★★✩✩✩
31 Янв 2020
439
246
@S_Sergey_G, одна из причин, может быть не рабочий (плохо припаяный) кварц на rda5807. Он же является проблемой, когда фактическая частота приема больше/меньше реальной в режиме автопоиска
 

serg2076

✩✩✩✩✩✩✩
28 Сен 2024
11
4
  1. @S_Sergey_G,антена ещё хоть какая нибудь должна быть, провод сантиметров 30
 

maksland

★★★✩✩✩✩
13 Янв 2019
546
132
Omsk
ну я в свое время купил с десяток, в 2017-2020 они недорого стоили
теперь надо куда то деть :)
гирлянду и генератор сигналов сделал, теперь ваш приемник... разработаю плату и тд и тп
потом на ваше интернет радио в соседнюю ветку :) простое и красивое
 
  • Лойс +1
Реакции: Олег Поляков

maksland

★★★✩✩✩✩
13 Янв 2019
546
132
Omsk
не не ... esp32 это само собой
я Ёрадио повторял, IMG_20250108_162337_821.jpg заморочился с платами и корпусом, не просто VS1053 разводить

ваш попроще будет!
 
  • Лойс +1
Реакции: Олег Поляков

maksland

★★★✩✩✩✩
13 Янв 2019
546
132
Omsk
чпу и 3d принтер очень помогают моим кривым рукам :)
у ваших разработок не менее хороший корпус будет !
 
  • Лойс +1
Реакции: Олег Поляков

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
124
124
www.1812.ru
@maksland, буду с большим любопытством ждать фотографий. У меня с 3d-печатью пока не сложилось, поэтому по-старинке лобзик, надфили, дрель. :)
 

lexo007

✩✩✩✩✩✩✩
9 Фев 2025
2
0
добрый день. У меня вопрос. Собрал все по схеме. компоненты также согласно схемы. Радио запускается, через минуту, иногда через несколько минут начинают издаваться писк из динамиков и радио зависает наглухо.при повторном подключении питания - ситуация повторяется. Пробовал разные подключения и через usb, и через акб, и через Vin и 5v пины на плате. может у кого было такое ответьте. Я грешу на аурдуинку нано по причине нехватки память. при заливке скетча - пишет что занято места 89%. пытался понизить версии библиотек, идет ошибка в скетче. Может быть этот проект не для ардуино нано?
 

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
124
124
www.1812.ru
@lexo007, написано, тестировалось и многими повторялось на Нано. Если есть возможность, попробуйте на другом модуле Нано. Не исключаю вероятности проблем с модулем RDA.
 

lexo007

✩✩✩✩✩✩✩
9 Фев 2025
2
0
@Олег Поляков, ардуино нано клон естественно)))). На днях ещё один придет клон от другого продавца. Попробую и отпишусь.

@Олег Поляков, модуль RDA наверное исключаю,т.к. пробовал два разных потому что грешил сразу на него.