АУДИО Простой 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.

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

Вложения

Изменено:

Комментарии

Сотнег

★★★★★★★
15 Янв 2020
4,193
1,460
В скетче используется ряд библиотек, которые легко устанавливаются через Arduino IDE.
Единственная библиотека требует установки более ранней её версии из-за несовместимости версий. Это библиотека Radio от Matthias Hertel. Следует устанавливать версию 2.0.0.
Если хотите, чтобы проект жил долго и не приходилось постоянно отвечать на вопросы типа "почему не компилируется" или "где теперь скачать библиотеку" стоит вместе со скетчем положить папку с полным набором нужных библиотек.

Иначе они либо обновятся и станут несовместимыми со скетчем (как Radio от Matthias Hertel), либо вообще вдруг исчезнут.
 

Геннадий П

★★★★★★✩
14 Апр 2021
1,927
619
44
FM-приёмник на Ардуино Нано
Читая по началу думаешь, что обработкой сигнала будет заниматься сам микроконтроллер (где то видел схемы нестандартного применения в качестве радиоприемника, но сразу не могу найти), но по сути статью нужно называть "FM-приёмник на RDA5807m", что уже не так необычно смотрится, т.к. подобных схем в интернете очень много.
 

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
99
103
www.1812.ru
@Геннадий П, учёл, название изменил.
Специально посмотрел здесь на форуме есть ли подобные реализации. Не нашёл. Поэтому решил опубликовать тут свой старый проект.
 

Alex_Sen

✩✩✩✩✩✩✩
30 Окт 2022
12
2
@Геннадий П,

У меня есть USDX SDR трансивер обработкой занимается ардуина И на прием и на передачу формирует SSB сигнал в диапазоне 3.5-30 МГц (и АМ и ФМ тоже, но сильно криво) если интересно найдите в сети и посмотрите Просто супер проект на мой взгляд Код открытый Провел на этом трансивере сотни радиосвязей со множеством стран в прошлом году и даже выполнил итальянский диплом WRTС Жаль сейчас совсем нет времени заниматься радиосвязью и антеннами
 

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
99
103
www.1812.ru
Чуть-чуть подправил принципиальную схему. Забыл добавить соединения на аналоговые входы A0 и A1.
 
Изменено:

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
99
103
www.1812.ru
Для улучшения качества приёма добавил к приёмнику простой антенный усилитель, собранный на одном высокочастотном транзисторе s9018 (кт325в).
amp.jpg
Схема усилителя взята из интернета:
amp1.jpg

В результате добавления усилителя качество приёма значительно улучшилось.
 
  • Лойс +1
Реакции: knopaleo

Геннадий П

★★★★★★✩
14 Апр 2021
1,927
619
44
@Олег Поляков, А если бы на вход еще полосовой фильтр поставили - еще лучше было бы, а так он все подряд усиливает, и нужное и ненужное.
 

Deniskyn

✩✩✩✩✩✩✩
11 Ноя 2019
2
1
Ув. автор, добавьте сюда ИК пульт плс, и при питании от АКБ показомер заряда акума. Готов тетсить)
 
  • Лойс +1
Реакции: vitsom18

Moldik

✩✩✩✩✩✩✩
27 Дек 2023
8
0
Присоединяюсь к просьбе @Deniskyn, и был бы интересен вариант с кнопками вместо эенкодера, для мелкого исполнения.
 

samand587

★✩✩✩✩✩✩
31 Май 2021
90
22
Собрал, отличное радио. Радио модуль поставил RDA5807FP, распаянный под I2C управление, и дисплей 0,96"(из наличия). Возможно на 1,3" и по крупнее надписи, а на моем очень мелко.
Уважаемый автор! Не рассматривали ли Вы возможность замены дисплея на большую диагональ? Спасибо!
 

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
99
103
www.1812.ru
@samand587, спасибо за повтор проекта и доброжелательный отзыв!
Пожелания фиксирую, но пока совсем нет времени на модернизацию радио.
Пока дошли руки лишь для улучшения электронной шарманки и на сборку, написание и тестирование своего интернет-радио, отличного от проектов Ka-radio и Ё-radio. В этом проекте использую дисплей большего размера с диагональю 1,8 дюймов.
 

samand587

★✩✩✩✩✩✩
31 Май 2021
90
22
...тестирование своего интернет-радио...
Я повторял практически все интернет-радио, размещенные на форуме 4PDA. Если не секрет, то поделитесь, пожалуйста, материалами Вашего радио. Наверное лишний тест не будет вреден!
 

Android645

✩✩✩✩✩✩✩
18 Мар 2024
2
0
Скажите пожалуйста, можно ли заменить энкодер в данной сборке на 3х контактную качельку для mp3 плееров, нужно ли будет менять скетч?
И можно ли подключить к усилителю выход на 3.5мм разъём вместо динамиков?
С Ардуино только начал знакомиться, решил попробовать ваш пример.
 

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
99
103
www.1812.ru
@Android645, замена энкодера на кнопки возможна, но без изменения скетча тут не обойтись.
Разумеется можно задействовать соответствующие пины mp3- модуля для вывода звука на усилитель через линейный выход.
 
  • Лойс +1
Реакции: Android645

SMIT47

✩✩✩✩✩✩✩
5 Апр 2024
2
2
Всем добра! Возникла проблема: скет компилируется без ошибок, загружается, но дисплей не отображает ни чего (черный экран).
При этом с тестовыми скетчами всё работает.
 
  • Лойс +1
Реакции: Android645

SMIT47

✩✩✩✩✩✩✩
5 Апр 2024
2
2
Да, ещё раз проверил. Библиотеку и тест перенёс в папку со скетчем. Тест работает , а программа нет. И в тесте и программе изменил скобки на кавычки
 
  • Лойс +1
Реакции: Android645

Eugeniy59

✩✩✩✩✩✩✩
11 Апр 2024
4
0
Уважаемый автор, а реально ли приделать к этой схеме еще и блютуз приемник, чтобы с телефона как блютуз колонку использовать?
Хочу переделать старый мини приемник в современное чудо, но плюсом прикрутить еще и блютуз. Места внутри навалом.
И еще впопросик, на фото довольно большой дисплей, а можн ли замнить его на дисплей по меньше? шириной 40 мм высотой примерно 12 мм? такой дисплей идеально подходит на место где раньше в этом приемнике были часики (где надпись sunny)
 

Вложения