Fm радио модуль rda5807m

Наше Радио в Ростове-на-Дону с RDA5807M — DRIVE2

fm радио модуль rda5807m

Спишу написать этот пост! Домучал FM модуль RDA5807M! Ну и хитрожопый же он!
Как писал в прошлом посту модуль программно полностью совместим с модулем TEA5767 и в самом простом случае его запустить в режиме совместимости было не сложно, инфы валом, примеров тоже. Но мне же нужно было запустить его именно как RDA5807M с возможностью выбора диапазона частот 65-76мГц, чтобы поймать Наше Радио на частоте 73,76мГц!

Вся сложность состояла в том, что на этот модуль в интернете есть всего два даташита: один на Китайском языке с иероглифами, второй не очень верный в плане описания регистров и управляющих битов на английском. На помощь пришел форум РадиоКот, где эту тему и обсуждали.

Изначально, найдя пример кода для запуска и даташит я два дня ломал голову пытаясь понять как оно работает! Потому что даташит и команды которые отсылались в примере по i2c были абсолютно разные, а радио запустилось… Ломав голову и гугля набрел на тему в форуме РадиоКот, где один человек и написал про программную совместимость модуля с TEA5767. После чего все стало на свои места и я уже начал разбираться по запуску модуля именно как RDA5807M.

Буквально сейчас модуль запустился на частоте 73,76 УКВ! Пока он умеет играть только эту частоту на максимальной громкости )))) Т.к. не одной кнопки на макетке еще нет и программный код написан тупо на запуск по минимуму. Собственно вот и он:

#include void setup(){Wire.begin();SetFreq();}void loop(){}void SetFreq(){Wire.beginTransmission(0x10); // Адрес чипа RDA5807MWire.write(0b11010000); // 02HWire.write(0b00000101); // 02L 0-бит команда включения приемникаWire.write(0b01010111); // 03H указание частоты настройки 8битWire.

write(0b10011111); // 03L частота настроки биты 7-5, 3-2 биты выбордиапазона, 1-0 биты выбор шагаWire.write(0b00000010); // 04HWire.write(0x00); // 04LWire.write(0b10001000); // 05HWire.write(0b10001111); // 05L 0-3 биты громкость, 7бит включение антенны!Wire.write(0x00); // 06HWire.write(0x00); // 06LWire.write(0b01000010); // 07HWire.

write(0b00000010); // 07LWire.endTransmission();

}

Сам модуль RDA5807M расчитан на подключение высокоомных наушников напрямую, т.е. без какого либо усиления. Управляется от Arduino Nano v3.0.

Пока так, дальше функционал будет расширятся и первым делом проект приобретет экран и кнопки питания и громкости )))

P.S.: для столь маленькой фигни, модуль звучит очень даже неплохо! Не как дешевые Китайские приемники )))

P.S.S.:Докопался до байтов 08L и 08H — позволяют настраивать частоту вручную, с точностью до 0,01МГц. Настроился ровно на 73,76МГц

Источник: https://www.drive2.com/b/1880545/

RDA5807M Stereo Radio Module

Модуль FM радиоприёмника на ИМС RDA5807M (или RDA5807NM).
Чип отлично документирован, может работать совместно с ARDUINO или любым микроконтроллером.

К плате подключается антенна (50 Ом), стерео сигнал выводится непосредственно на наушники или усилитель, настраивается на необходимую частоту приёма (76 – 108 МГц). Питание – 2,7 – 3,6 В.

(рекомендованое напряжение питания – 3В) Достаточная максимальная выходная мощность – выход используется для прямого подключения наушников (32 Ома) или в качестве линейного выхода. 
Управление чипом цифровое, по I2C интерфейсу. 

Модуль программно полностью совместим с модулем TEA5767.

Характеристики FM-тюнера RDA5807m: * Все в одном корпусе, практически не требуется внешних компонентов * КМОП технология* Максимальная полоса частот от 50 МГц до 115 МГц * Настраиваемый шаг между каналами – 200 кГц, 100 кГц, 50 кГц, 25 кГц * Поддерживает RDS/RBDS* Высококачественный АЦП * Синтезатор частот полностью встроен в микросхему * Автоматическая регулировка усиления * Цифровое адаптивное подавление шума * Поддержка выхода звука как в моно, так и в стерео * Индикатор уровня сигнала (Receive signal strength indicator — RSSI) и SNR * Усилитель низких частот * Регулировка звука и функция mute * Цифровой интерфейс I2C * Нагрузка на выходе звукового канала 32 Ом * Встроенный LDO регулятор * Корпус MSOP (10 выводов)

Электрические параметры FM тюнера RDA5807m:

* Напряжение питания — 3 вольта (от 1,8 до 3,6 вольт)
* Температура окружающей среды — от -20 до +75 градусов Цельсия
* Ток потребления в рабочем режиме — до 21 мА
* Ток потребления в спящем режиме – 5 мкА
* Коэффициент нелинейных искажений – 0,15 – 0,2 %
* Максимальная частота I2C – 400 кГц

Размер платы: 11.2х11.2х2.2 мм.

By using the 102BC module, users can directly replace to use, without changing the circuit design. High sensitivity, low noise, strong anti-jamming ability, small size, very few external components (11×11.2mm Max), extremely easy to use. 76-108MHz global FM band (compatible with including Japan 76-91MHz and Europe and the United States 87.5-108.5MHz). I2C serial data bus communication interface, support for external reference clock input mode. COMS technology of single chip integrated circuit fully integrated, power consumption is very low. Equipped with high precision A/D (ADC) and digital frequency synthesizer. The built-in LDO adjustment, low power consumption, wide voltage range (2.7-3.6VDC). Built in noise cancellation, soft mute, bass boost circuit design. High power 32Ω load audio output, headset connected directly, without the need for an external audio power amplifier.

Application is simple, low cost and high performance price ratio.

Источник: http://avrobot.ru/product_info.php?products_id=3151

RDA5807M Радио модуль стерео приёмника – 15 Ноября 2014 – Студия DIY

Главная » 2014 » Ноябрь » 15 » RDA5807M Радио модуль стерео приёмника

Источник: http://studio-diy.3dn.ru/news/rda5807m/2014-11-15-27

RDA5807M новая жизнь старых и новых радиоприемников — DRIVE2

Собрал FM радио приемник.

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

Все эти прошивки и схемы можно найти на форуме Радиомодуль с RDA5807M продлевает жизнь старых радиоприёмников
Перечень программ радиоприёмников.docx — тема развивается и далее …

FM радиоприёмник на MK ATMega8 и RDA5807M с OLED дисплеем SSD1306.Программа для МК ATMEGA8, который работает на частоте внутреннегогенератора 8 Мгц. Версия программы: FM_RDA5807_SSD1306_v3.2.

Основные функции программы:

— Задание режима настройки по умолчанию в файле User_set.asm.— Поиск станций из списка при вращении энкодера и настройка настанцию после остановки вращения.— Автопоиск станций вверх и вниз по диапазону поворотом энкодерапо часовой или против часовой стрелки.— Отображение процесса поиска станции путём вывода на дисплей номераканала или начальной частоты настройки.— Переключение из режима перебора сохранённых станций в автопоиск иобратно производится по нажатию кнопки энкодера.— Опознавание названия станции по её частоте при автопоиске.— Вывод на индикатор частоты и названия станции.— Запись последней частоты настройки в память EEPROM.— При включении начинает работу на сохранённой частоте.— Индикация уровня сигнала на дисплее четырьмя столбиками.— Индикация “Моно-Стерео” светодиодом.— Гашение дисплея через 16 сек. после нажатия на любую из кнопок.— Регулировки громкости нет.Особенностью данной версии программыявляется поиск нужной станции при вращении ручкиэнкодера. При этом в нижней строке дисплеяотображается увеличивающийся или уменьшаю-щийся номер выбираемого канала в том порядке, вкотором он записан пользователем в перечнерадиостанций. При появлении на дисплее нужногономера канала, вращение энкодера нужнопрекратить, после чего производится настройка навыбранную станцию. Эта функция особенно будетудобна в городах с большим количеством вещающихстанций. Так же для удобства поиска, можно присоставлении списка поместить перед названиемстанции её номер в списке.Другой особенностью программы являетсявывод на дисплей начальной частоты, с которой начинается автопоиск станции в режимеавтопоиска. Какого-то особого преимущества это не даёт, но позволяет визуальноконтролировать направление будущего поиска и несколько «оживляет» экран дисплея.Кроме того, введена возможность по желанию радиолюбителя перед прошивкойвыбрать режим настройки на станцию по умолчанию, т. е. при включении радиоприёмникабудет установлен или режим перебора станций или режим автопоиска, в зависимости отзначения константы Seek_Mode, которую нужно установить в файле User_set.asm.

Полный размер

FM-радио на модуле RDA5807M с индикатором SSD1306. Схема с управлением энкодером.

Схема подключения энкодера к Atmega8

Atmega8

Прошивка Atmega8 программой SinaProg

Необходимо установить фьюзы на работу микроконтроллера от внутреннего генератора на 8 МГц. Шестнадцатеричное значение для фьюзов должно быть такое: Low Fuse= E4, High Fuse= DF.

Компиляция прошивки с вашими настройками.
1. Создаём отдельную папку, куда копируем все ассемблерные файлы программы. Название папки не должно содержать кириллицы. Итак в папке лежат файлы:

HD44780_driver.asmI2C_hard_driver.asmUser_set.asmWH1602_ATMega8_enc.asm

m8def.inc

2. Запускаем AVR Studio 4.16, открываем новый проект, в окошко с названием проекта вводим WH1602_ATMega8_enc, ставим птичку напротив чекбокса “Create initial file” . Указываем путь к нашей папке и жмём кнопку “Next”.

Попадаем в следующее окно, где выбираем платформу AVR Simulator и контроллер ATMega8, после чего нажимаем кнопку “Finish” и попадаем в открытый проект.
3.

Подаём команду “Build” и … ву- а- ля! — компиляция готова!

Дополнительно — вариант приемника 50-108 МГц от bulat943:
1. вариант приемника 50-108 МГц с атмега168 и дисплей5110,авто скан, ручная настройка, часы
2. 50-108 Мгц
3. вариант приемника 50-108 МГц

Источник: https://www.drive2.ru/b/489338475649172109/

FM радио модуль RDA5807M

Однажды на страницах Aliexpress наткнулся на интересную и недорогую микросхему – RDA5807m. Это FM тюнер, в распоряжении которого имеется I2C интерфейс, стерео выход звука, цифровые настройки громкости звука, частоты радиостанции, поддерживается RDS.

Такое радио часто можно встретить в формате модуля, на котором расположена микросхема тюнера, кварц на частоту 32,768 кГц и пара конденсаторов – ничего особенного просто чуть удобнее паять.

И в честь этой покупки предлагаю рассмотреть конструкцию на микроконтроллере несложного радиоприемника.

Лот на Aliexpress

Характеристики FM-тюнера RDA5807m:

  • Все в одном корпусе, практически не требуется внешних компонентов
  • КМОП технология
  • Полоса частот от 50 МГц до 115 МГц
  • Настраиваемый шаг между каналами – 200 кГц, 100 кГц, 50 кГц, 25 кГц
  • Поддерживает RDS/RBDS
  • Высококачественный АЦП
  • Синтезатор частот полностью встроен в микросхему
  • Автоматическая регулировка усиления
  • Цифровое адаптивное подавление шума
  • Поддержка выхода звука как в моно, так и в стерео
  • Индикатор уровня сигнала (Receive signal strength indicator – RSSI) и SNR
  • Усилитель низких частот
  • Регулировка звука и функция mute
  • Цифровой интерфейс I2C
  • Нагрузка на выходе звукового канала 32 Ом
  • Встроенный LDO регулятор
  • Корпус MSOP (10 выводов)

Электрические параметры FM тюнера RDA5807m:

  • Напряжение питания – 3 вольта (от 1,8 до 3,3 вольт)
  • Температура окружающей среды – 27 градусов Цельсия (от -20 до +75 градусов Цельсия)
  • Ток потребления в рабочем режиме – до 21 мА
  • Ток потребления в спящем режиме – 5 мкА
  • Коэффициент нелинейных искажений – 0,15 – 0,2 %
  • Максимальная частота I2C – 400 кГц

Схема радиоприемника на базе тюнера RDA5807m:

В качестве микроконтроллера будем использовать ATmega8a. Это очень популярный и общедоступный микроконтроллер. Использовать его можно как в DIP корпусе, так и в TQFP (здесь только расположение выводов различается для этой схемы).

Для продолжительной корректной работы этого микроконтроллера на выводе reset должен быть положительный уровень напряжения, для этой цели используется резистор R1, который подтягивает напряжение питания, создавая надежный потенциал, что предотвращает самопроизвольное перезапускание микроконтроллера. Кнопка S1 предназначена для ручной перезагрузки микроконтроллера.

В качестве тактового генератора используется внутренний RC генератор на частоту 8 МГц. В качестве индикатора в схеме используется ЖК дисплей на базе микроконтроллера PCD8544 или более известен этот экран по названию Nokia 5110 или Nokia 3110. Для подключения такого дисплея к микроконтроллеру не нужны дополнительные компоненты, все соединяется в соответствии со схемой.

Вся схема устройства питается от напряжения 3,3 вольта, которые получаем посредством стабилизатора AMS1117-3,3. Однако для получения звука достаточной громкости необходимо использовать усилитель звука, который питается от более высокого напряжения.

В схеме применен усилитель на базе микросхемы TDA7056B, однако этот усилитель можно заменить на абсолютно любой другой, подходящий для вас. Данный усилитель звука имеет регулировку громкости потенциометром R6. Схема усилителя построена в соответствии с даташитом, хотя ее можно и доработать для более качественного звука.

TDA7056B является моно усилителем, поэтому от модуля RDA5807m берем только один канал звука, либо параллелим их вместе. Если использовать наушники с сопротивлением 32 Ом, то можно слушать радио без усилителя, согласно даташиту на тюнер. Для усилителя на TDA7056B оптимально использовать динамик с сопротивлением 8 Ом.

Модуль радио RDA5807m получает настройки от микроконтроллера посредством цифрового интерфейса I2C. Для работы I2C необходимы резисторы R3 и R5, которые формируют положительный перепад напряжения на линиях передачи данных.

Из особенностей I2C в RDA5807m необходимо отметить, что в модуля нет возможности обратиться к конкретному регистру, чтобы настроить параметры в одном регистре, необходимо перезаписать и все остальные.

После старта I2C и передачи адреса микросхемы с битом чтения или записи указатель регистра автоматически становится на начало регистров чтения или на начало регистров записи и после обращения к одному (первому) регистру указатель автоматически переходит на другой (второй, третий и так далее) регистр. Диаграмму формирования сигналов по линиям I2C для модуля RDA5807m можно посмотреть в даташите, который прилагается в конце статьи. Там же находится и карта регистров радио. Мое мнение, такая организация управления достаточно неудобная, хотя и имеет место быть. Ну и наконец, в схеме есть четыре кнопки – S2 – S5, которыми можно настраивать частоту радиостанции или перебирать список радиостанций для города Минска.

По поводу работы радио. Принимает модуль RDA5807m сигнал радио достаточно уверенно, иногда лучше радио, встроенного в мобильный телефон, иногда хуже.

При этом в качестве антенны использовался кусок провода (примерно 50 см) и к тому же все это располагалось вблизи от WiFi антенны, которая, скорее всего, вносила помехи в прием.

В разное время суток качество сигнала может отличаться по множеству причин.

Все это безобразие собиралось, проверялось на отладочной плате:

Усилитель на TDA7056B собран на отдельной плате в виде небольшого модуля:

Форм фактор модуля RDA5807m не очень удобный, поэтому был изготовлен небольшой переходник на штыревые соединения с шагом между гребенками для установки на беспаечную макетную плату:

Распиновка модуля радио, согласно источникам, изготавливавших этот продукт:

Переходник на штырьки сохраняет порядок расположения выводов исходного модуля.

Ну, и микроконтроллер Atmega8a в минимальной отладочной плате:

В память микроконтроллер изначально записаны 15 популярных радиостанций города Минска (к слову схема адаптирована только к этому городу по сохраненным в памяти частотам радиостанций, однако при желании можно настроить под любой другой город, либо вручную сохранять заданное количество станций).

Перебор сохраненных станций осуществляется кнопками S4 и S5, последняя выбранная станция сохраняется в eeprom и загружается при следующем включении. Обычный поиск радиостанций осуществляется кнопками S2 и S3, шаг составляет 100 кГц.

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

В целом RDA5807m достаточно неплохой тюнер среднего уровня, набор настроек позволяет использовать практически любые функции, связанные с приемом радиосигнала. Размер же самой микросхемы и отсутствие необходимости в обвязке большим количеством дополнительных элементов позволяет встраивать радио почти в любое устройство.

Для программирования микроконтроллера необходимо знать конфигурацию фьюз битов, скриншот из AVR Studio:

К статье прилагается прошивка для микроконтроллера ATmega8a, исходный код в программе AVR Studio 4, даташит на RDA5807m и небольшое видео.

Скачать список элементов (PDF)

Прикрепленные файлы:

  • 59.hex (21 Кб)
  • 59.rar (95 Кб)
  • RDA5807M_datasheet_v1.pdf (757 Кб)

Источник: http://cxem.net/tuner/tuner84.php

Arduino: FM-радиомодуль на микросхеме RDA5807m

разделы: Arduino , RDA5807M , дата: 2 апреля 2017г

Данный модуль на Али торгуется по цене около 20р, и представляет собой полноценный сканирующий радиоприемник FM диапазона с управлением по I2C интерфейсу.

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

    На официальном сайте производителя заявлены следующие возможности чипа:

  1. CMOS single-chip fully-integrated FM tuner
  2. Low power consumption
  3. Support worldwide frequency band
  4. Support flexible channel spacing mode
  5. Support RDS/RBDS
  6. Digital low-IF tuner
  7. Fully integrated digital frequency synthesizer
  8. Autonomous search tuning
  9. Support 32.768KHz crystal oscillator
  10. Digital auto gain control (AGC)
  11. Digital adaptive noise cancellation
  12. Programmable de-emphasis (50/75 μs)
  13. Receive signal strength indicator (RSSI) and SNR
  14. Bass boost
  15. Volume control and mute
  16. Line-level analog output voltage
  17. 32.768 KHz 12M,24M,13M,26M,19.2M,38.4MHz Reference clock
  18. Only support 2-wire bus interface
  19. Directly support 32Ω resistance loading
  20. Integrated LDO regulator
  21. MSOP-10pins

Говоря по-русски, здесь нам обещают управление через I2C интерфейс(400KHz). Поддержку приема текстовых сообщений – RDS/RBDS(последний формат используется исключительно в США). Работа от часового кварца.

Возможность прямого подключения 32-омных(плеерных) наушников. Индикация уровня сигнала – RSSI. Несколько диапазонов FM: Западная Европа, Восточная Европа, Япония, всемирный диапазон). Частотная коррекция(de-emphasis).

Авто-регулировка усиления.

Чип предназначен для использования в сотовых телефонах, автомагнитолах, планшетах, ноутбуках, MP3 и MP4 плеерах.

Однако скачать datasheet с официального сайта не получится. Это видимо особенность всего китайского бизнеса(попробуйте найти datasheet на ESP8266). Неофициальное руководство на английском можно скачать например здесь.

Шина I2C формируется двумя подтягивающими резисторами. Если подключить к модулю питание и воспользоваться мультиметром, то на SDA и SCL можно будет наблюдать высокий потенциал. Это значит, что подтягивающие резисторы для формирования I2C шины не нужны, они уже есть и работают.

Если запустить сканер I2C шины, то обнаружатся три устройства с адресам: 0x20, 0x22, 0xC0. При обращении по адресу 0xC0, устройство работает в режиме совместимости чипа NXP TEA5767.

При обращении по адресу 0x20 устройство работает в режиме блочной записи/чтения. В этом режиме, в начале I2C сессии, указатель адреса при записи автоматически сбрасывается в значения 0x02, при чтении он устанавливается в 0х0А. Если счетчик адреса достигает значения 0x3A, то после он сбрасывается в ноль. Счетчик адреса автоматически увеличивается на единицу при обращении к регистрам.

Регистры 16-битные. Всего функциональных регистров двенадцать: c 0x02 по 0x0F.

При обращении по адресу 0x22 доступен режим произвольного доступа с регистрам. В таком случае протокол работы походит на DS1307, за тем исключением, что регистры двух-байтные, и при операциях записи чтения сначала записывается/читается старший байт регистра, а потом младший. В остальном все тоже самое:

запись произвольного регистра в RDA5897M: 1)начало сессии: формируется START
2)запись байта : посылается адрес 0x22
3)запись байта : посылается адрес записываемого регистра
4)запись байта : записывается старший байт регистра
5)запись байта : записывается младший байт регистра
6)завершение сессии: формируется STOP чтение произвольного регистра в RDA5897M: 1)начало сессии: формируется START
2)запись байта : посылается адрес 0x22
3)запись байта : посылается адрес считываемого регистра
4)завершение сессии: формируется STOP 5)начало сессии: формируется START
2)запись байта : посылается адрес (0x22 + 0х01) // режим чтения
4)чтение байта : считывается старший байт регистра
5)чтение байта : считывается младший байт регистра
6)завершение сессии: формируется STOP

Замечу, что в “неофициальном руководстве” режим произвольного доступа к регистрам не рассматривается.

Карта регистров устройства:

Если подключить к чипу только лишь питание, то так проверить его работоспособность не получится. Чип будет молчать, даже белого шума не услышите. Включить его можно только через I2C интерфейс.

Если на гитхабе в строке поиска ввести rda5807m, то первым выпадет проект за авторством csdexter:

Это библиотека для Arduino. Скачав ZIP архив и распаковав его в папку Arduino/libraries, следует загрузить единственный пример содержащийся в библиотеке:

Это программа управления радиоприемником через UART. Т.к автор, судя по всему из Северной Америки, нам нужно поменять диапазон частот на RDA5807M_BAND_WORLD, чтобы можно было слушать FM диапазон. Там еще есть диапазон RDA5807M_BAND_EAST, т.е. Восточная Европа, но это УКВ диапазон, на котором сейчас никто не вещает.

В README проекта сказано, что т.к. модуль на 3.3V, то подключать его к Arduino следует через преобразователь логических уровней. Но за насколько дней подключения напрямую, у меня с модулем ничего не случилось. Можно сделать вывод, что I2C порт модуля устойчив к 5V логике. Т.о. подключение модуля к Arduino такое:

RDA5807M Arduino GND

После подключения модуля к Arduino и загрузки скетча в микроконтроллер, в наушниках будет такой звук: “Пииииуууу”. Это нормально. Радио включилось, теперь нужно найти радиостанцию.

Управляется модуль через последовательный порт. Послав знак вопроса можно получить подсказку по командам:

По команде s должна найтись станция, и наконец-то пойти звук. Командой f можно напечатать частоту станции, а командой q можно посмотреть уровень приема.

Можно немного доработать конструкцию добавив обработку нажатия трех кнопок, для управления радиоприемником без компьютера. Схему подключения кнопки можно найти здесь: Практическое программирование Arduino/CraftDuino – цифровой ввод – кнопка

Модифицированный скетч:

87 102.0 3.3 “proper”
2f 6″ breadboard jumper wire too. USING THE SKETCH:
Once you've connected the RRD-102 to your Arduino board (and antenna(s), as
appropriate), connect the Arduino to your computer, select the corresponding
board and COM port from the Tools menu and upload the sketch. After the sketch
has been updated, open the serial terminal using a 9600 baud speed. The sketch
accepts single character commands (just enter the character and press 'send').
Here is a list of the acceptable commands:
v/V – decrease/increase the volume
s/S – seek down/up with band wrap-around
m/M – mute/unmute audio output
f – display currently tuned frequency
q – display RSSI for currently tuned station
t – display decoded status register
? – display this list #define BTN_1 12
#define BTN_2 11
#define BTN_3 10 #include #include RDA5807M radio; char command;
word status, frequency; void setup()
{ pinMode(BTN_1, INPUT); Serial.begin(9600); radio.begin(RDA5807M_BAND_WORLD);
} void loop()
{ if(Serial.available()){ command = Serial.read(); switch(command){ case 'v': if(radio.volumeDown()) Serial.println(F(“Volume decreased”)); else Serial.println(F(“ERROR: already at minimum volume”)); Serial.flush(); break; case 'V': if(radio.volumeUp()) Serial.println(F(“Volume increased”)); else Serial.println(F(“ERROR: already at maximum volume”)); Serial.flush(); break; case 's': Serial.println(F(“Seeking down with band wrap-around”)); Serial.flush(); radio.seekDown(); break; case 'S': Serial.println(F(“Seeking up with band wrap-around”)); Serial.flush(); radio.seekUp(); break; case 'm': radio.mute(); Serial.println(F(“Audio muted”)); Serial.flush(); break; case 'M': radio.unMute(); Serial.println(F(“Audio unmuted”)); Serial.flush(); break; case 'f': frequency = radio.getFrequency(); Serial.print(F(“Currently tuned to “)); Serial.print(frequency / 100); Serial.print(“.”); Serial.print(frequency % 100); Serial.println(F(“MHz FM”)); Serial.flush(); break; case 'q': Serial.print(F(“RSSI = “)); Serial.print(radio.getRSSI()); Serial.println(“dBuV”); Serial.flush(); break; case 't': status = radio.getRegister(RDA5807M_REG_STATUS); Serial.println(F(“Status register {“)); if(status & RDA5807M_STATUS_RDSR) Serial.println(F(“* RDS Group Ready”)); if(status & RDA5807M_STATUS_STC) Serial.println(F(“* Seek/Tune Complete”)); if(status & RDA5807M_STATUS_SF) Serial.println(F(“* Seek Failed”)); if(status & RDA5807M_STATUS_RDSS) Serial.println(F(“* RDS Decoder Synchronized”)); if(status & RDA5807M_STATUS_BLKE) Serial.println(F(“* RDS Block E Found”)); if(status & RDA5807M_STATUS_ST) Serial.println(F(“* Stereo Reception”)); Serial.println(“}”); Serial.flush(); break; case '?': Serial.println(F(“Available commands:”)); Serial.println(F(“* v/V – decrease/increase the volume”)); Serial.println(F(“* s/S – seek down/up with band wrap-around”)); Serial.println(F(“* m/M – mute/unmute audio output”)); Serial.println(F(“* f – display currently tuned frequency”)); Serial.println(F(“* q – display RSSI for current station”)); Serial.println(F(“* t – display decoded status register”)); Serial.println(F(“* ? – display this list”)); Serial.flush(); break; } } int val = digitalRead(BTN_1); if(val==HIGH) { Serial.println(F(“Seeking down with band wrap-around”)); Serial.flush(); radio.seekDown(); } val = digitalRead(BTN_2); if(val==HIGH) { if(radio.volumeDown()) Serial.println(F(“Volume decreased”)); else Serial.println(F(“ERROR: already at minimum volume”)); Serial.flush(); } val = digitalRead(BTN_3); if(val==HIGH) { if(radio.volumeUp()) Serial.println(F(“Volume increased”)); else Serial.println(F(“ERROR: already at maximum volume”)); Serial.flush(); } delay(100); }

Здесь первая кнопка дублирует команду s, вторая – v, третья – V. Если стереовыход подключать к компьютерной аккустике, то вторая и третья кнопки будут не нужны. Уровень громкости можно будет регулировать на самой аккустике.

Выглядит все это как-то так:

Теперь Arduino можно запитать от обычной зарядки от телефона. Минимальный FM приемник готов.

поделиться:

Источник: http://www.count-zero.ru/2017/rda5807m/

FM радио модуль RDA5807M

Источник: http://sdelay-samm.at.ua/publ/skhemy/fm_radio_modul_rda5807m/7-1-0-92

Ссылка на основную публикацию
Adblock
detector
15:41RDA5807M Радио модуль стерео приёмника
Радио модуль стерео приёмника вещательного УКВ FM диапазона 50…115 МГцCMOS (КМОП) однокристальный, полностью интегральный FM приёмник с цифровым управлением по шине I2C (IIC).Характеристики:   • Диапазон принимаемых частот: 50…115 МГц;  • Напряжение питания: 2,7…3,3 В;  • Встроенный стабилизатор с низким падением напряжения (LDO);   • Низкая потребляемая мощность: Не более 20 мА при напряжении 3 В;   • Дискретность частоты настройки: 200 кГц / 100 кГц / 50 кГц / 25 кГц;   • Поддержка RDS/RBDS;   • Цифровая “низкая” П.Ч.;   • Встроенный полностью интегральный цифровой синтезатор частоты;   • Встроенная функция сканирования и поиска каналов;   • Встроенный опорный генератор 32,768 кГц;   • Цифровая регулировка уровня (AGC = Auto Gain Control);   • Цифровая система шумоподавления;   • Переключатель: Mono / Stereo;   • Мягкое снижение уровня (Soft Mute);   • Быстрое отключение (High Cut);   • Программируемый de-emphasis: 50/75 мкс.;   • Индикатор уровня сигнала (RSSI = Receive signal strength indicator) и отношения Сигнал/Шум (SNR = Signal to Noise Rate);   • Отключаемый подъём АЧХ в области низких частот (Bass Boost);   • Цифровое управление громкостью и временное приглушение звука;   • Выходные напряжения звуковых частот соответствуют уровням стандартного линейного входа;   • Допустимо прямое подключение к наушникам, с сопротивлением нагрузки не менее 32 Ом;   • Управление по шине I2C (IIC);   • Готовый микро-модуль;   • Шаг выводов: 2 мм;   • Расстояние между рядами выводов: 11 мм;   • Размеры устройства: ~11×11×4 мм;  • Масса: ~0,25 г.Блок-Схема модуля однокристального FM приёмника EM5807MПрактически аналог SI470xПечатная плата модуля, расположение выводов.

PINS NAME I/O Описание 
1 DATA i/o Bus data line input/output
2 CLK Bus clock line input
3 GND Ground
4 NC Not Connected
5 VCC Voltage supply
6 GND Ground
7 L-OUT o Audio Left channel output
8 R-OUT o Audio Right channel output
9 GND Ground
10 ANT I RF input line (Connect to Antenna)

Схема подключения

Даташит на микросхему RDA5807M 

Начальный код для Ардуино

Более полный код приёмника для Ардуино

1) Скачать код I2C FM Receiver;
2) Распакуйте его в файл библиотеки Arduino IDE по пути: .. Arduino-1.0.5 libries.
3) Откройте код прямо с путем: Файл -> Пример -> I2C_FM_Receiver
4) Загрузить код. Обратите внимание, что вы должны выбрать правильный тип платы и COM-port

FM радио модуль RDA5807M

Однажды на страницах Aliexpress наткнулся на интересную и недорогую микросхему – RDA5807m. Это FM тюнер, в распоряжении которого имеется I2C интерфейс, стерео выход звука, цифровые настройки громкости звука, частоты радиостанции, поддерживается RDS.

Такое радио часто можно встретить в формате модуля, на котором расположена микросхема тюнера, кварц на частоту 32,768 кГц и пара конденсаторов – ничего особенного просто чуть удобнее паять.

И в честь этой покупки предлагаю рассмотреть конструкцию на микроконтроллере несложного радиоприемника.

Характеристики FM-тюнера RDA5807m:
Все в одном корпусе, практически не требуется внешних компонентов
КМОП технология
Полоса частот от 50 МГц до 115 МГц
Настраиваемый шаг между каналами – 200 кГц, 100 кГц, 50 кГц, 25 кГц
Поддерживает RDS/RBDS
Высококачественный АЦП
Синтезатор частот полностью встроен в микросхему
Автоматическая регулировка усиления
Цифровое адаптивное подавление шума
Поддержка выхода звука как в моно, так и в стерео
Индикатор уровня сигнала (Receive signal strength indicator – RSSI) и SNR
Усилитель низких частот
Регулировка звука и функция mute
Цифровой интерфейс I2C
Нагрузка на выходе звукового канала 32 Ом
Встроенный LDO регулятор
Корпус MSOP (10 выводов)

Электрические параметры FM тюнера RDA5807m:
Напряжение питания – 3 вольта (от 1,8 до 3,3 вольт)
Температура окружающей среды – 27 градусов Цельсия (от -20 до +75 градусов Цельсия)
Ток потребления в рабочем режиме – до 21 мА
Ток потребления в спящем режиме – 5 мкА
Коэффициент нелинейных искажений – 0,15 – 0,2 %
Максимальная частота I2C – 400 кГц

Схема радиоприемника на базе тюнера RDA5807m:

В качестве микроконтроллера будем использовать ATmega8a. Это очень популярный и общедоступный микроконтроллер. Использовать его можно как в DIP корпусе, так и в TQFP (здесь только расположение выводов различается для этой схемы).

Для продолжительной корректной работы этого микроконтроллера на выводе reset должен быть положительный уровень напряжения, для этой цели используется резистор R1, который подтягивает напряжение питания, создавая надежный потенциал, что предотвращает самопроизвольное перезапускание микроконтроллера. Кнопка S1 предназначена для ручной перезагрузки микроконтроллера.

В качестве тактового генератора используется внутренний RC генератор на частоту 8 МГц. В качестве индикатора в схеме используется ЖК дисплей на базе микроконтроллера PCD8544 или более известен этот экран по названию Nokia 5110 или Nokia 3110. Для подключения такого дисплея к микроконтроллеру не нужны дополнительные компоненты, все соединяется в соответствии со схемой.

Вся схема устройства питается от напряжения 3,3 вольта, которые получаем посредством стабилизатора AMS1117-3,3. Однако для получения звука достаточной громкости необходимо использовать усилитель звука, который питается от более высокого напряжения.

В схеме применен усилитель на базе микросхемы TDA7056B, однако этот усилитель можно заменить на абсолютно любой другой, подходящий для вас. Данный усилитель звука имеет регулировку громкости потенциометром R6. Схема усилителя построена в соответствии с даташитом, хотя ее можно и доработать для более качественного звука.

TDA7056B является моно усилителем, поэтому от модуля RDA5807m берем только один канал звука, либо параллелим их вместе. Если использовать наушники с сопротивлением 32 Ом, то можно слушать радио без усилителя, согласно даташиту на тюнер. Для усилителя на TDA7056B оптимально использовать динамик с сопротивлением 8 Ом.

Модуль радио RDA5807m получает настройки от микроконтроллера посредством цифрового интерфейса I2C. Для работы I2C необходимы резисторы R3 и R5, которые формируют положительный перепад напряжения на линиях передачи данных.

Из особенностей I2C в RDA5807m необходимо отметить, что в модуля нет возможности обратиться к конкретному регистру, чтобы настроить параметры в одном регистре, необходимо перезаписать и все остальные.

После старта I2C и передачи адреса микросхемы с битом чтения или записи указатель регистра автоматически становится на начало регистров чтения или на начало регистров записи и после обращения к одному (первому) регистру указатель автоматически переходит на другой (второй, третий и так далее) регистр.

Диаграмму формирования сигналов по линиям I2C для модуля RDA5807m можно посмотреть в даташите, который прилагается в конце статьи. Там же находится и карта регистров радио. Мое мнение, такая организация управления достаточно неудобная, хотя и имеет место быть. Ну и наконец, в схеме есть четыре кнопки – S2 – S5, которыми можно настраивать частоту радиостанции или перебирать список радиостанций для города Минска.

По поводу работы радио. Принимает модуль RDA5807m сигнал радио достаточно уверенно, иногда лучше радио, встроенного в мобильный телефон, иногда хуже. При этом в качестве антенны использовался кусок провода (примерно 50 см) и к тому же все это располагалось вблизи от WiFi антенны, которая, скорее всего, вносила помехи в прием. В разное время суток качество сигнала может отличаться по множеству причин.

Все это безобразие собиралось, проверялось на отладочной плате:

Усилитель на TDA7056B собран на отдельной плате в виде небольшого модуля:

Форм фактор модуля RDA5807m не очень удобный, поэтому был изготовлен небольшой переходник на штыревые соединения с шагом между гребенками для установки на беспаечную макетную плату:

Распиновка модуля радио, согласно источникам, изготавливавших этот продукт:

Переходник на штырьки сохраняет порядок расположения выводов исходного модуля.

Ну, и микроконтроллер Atmega8a в минимальной отладочной плате:

В память микроконтроллер изначально записаны 15 популярных радиостанций города Минска (к слову схема адаптирована только к этому городу по сохраненным в памяти частотам радиостанций, однако при желании можно настроить под любой другой город, либо вручную сохранять заданное количество станций).

Перебор сохраненных станций осуществляется кнопками S4 и S5, последняя выбранная станция сохраняется в eeprom и загружается при следующем включении. Обычный поиск радиостанций осуществляется кнопками S2 и S3, шаг составляет 100 кГц.

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

В целом RDA5807m достаточно неплохой тюнер среднего уровня, набор настроек позволяет использовать практически любые функции, связанные с приемом радиосигнала.

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

Для программирования микроконтроллера необходимо знать конфигурацию фьюз битов, скриншот из AVR Studio:

Диодный радиоприемник на 65…130 МГц              Радиоприемник на микросхеме TDA7000 (174XA42)