Fm приемник rda5807m как подключить

Простой FM-радиоприемник на Arduino UNO и RDA5807M

Узнаем, как вы можете слушать местные радиостанции с помощью RDA5807M, Arduino UNO, OLED-экрана и динамика.

В этом проекте мы будем использовать FM-приемник RDA5807M для прослушивания некоторых местных радиостанций с помощью Arduino. Кроме того, мы также отобразим текущую радиостанцию на OLED-экране.

FM-приемник RDA5807M

RDA5807M

Этот чип имеет мощный цифровой аудиопроцессор с низким ПЧ, а это значит, что вы можете напрямую слушать звук через наушники. Однако если вы хотите подключить его к динамикам большего размера, вам может потребоваться схема усилителя звука. Я буду использовать простой портативный динамик со встроенным усилителем звука для этого проекта.

Распиновка RDA5807M

Оборудование

Программное обеспечение

Схема соединения

Подключите радиоприемник RDA5807M к Arduino UNO, как показано ниже.

Вы можете использовать одножильный провод или телевизионную/радиоантенну для данного ресивера в качестве антенны. Rout (правый аудиовыход) и Lout (левый аудиовыход) модуля RDA5807M можно подключить через гнездовой разъем аудиоразъема 3,5 мм. Для этого вы можете сделать дополнительный кабель, как я сделал на картинке ниже.

Используя макет, подключите OLED, как показано ниже, и соедините три кнопки последовательно, используя резисторы по 10 кОм. Кнопки подключены к аналоговому выводу A0 Arduino. Дисплей OLED и модуль FM-приемника используют те же SDA и SCL, что и Arduino.

Когда все оборудование подключено примерно так должно выглядеть ваше устройство:

Исходный код

После проверки всех соединений загрузите исходный код, скопировав и вставив приведенный ниже код в Arduino IDE.

Теперь настройтесь на популярные радиостанции в вашем районе, нажав правую кнопку. Вы сможете увидеть текущий диапазон FM на экране OLED. По умолчанию приемник будет использовать автонастройку.

Если качество звука низкое, вы также можете попробовать отрегулировать антенну, чтобы получить лучший сигнал.

Источник

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

Однажды на страницах Aliexpress наткнулся на интересную и недорогую микросхему – RDA5807m. Это FM тюнер, в распоряжении которого имеется I 2 C интерфейс, стерео выход звука, цифровые настройки громкости звука, частоты радиостанции, поддерживается RDS. Такое радио часто можно встретить в формате модуля, на котором расположена микросхема тюнера, кварц на частоту 32,768 кГц и пара конденсаторов – ничего особенного просто чуть удобнее паять. И в честь этой покупки предлагаю рассмотреть конструкцию на микроконтроллере несложного радиоприемника.

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

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

Схема радиоприемника на базе тюнера 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, которыми можно настраивать частоту радиостанции или перебирать список радиостанций для города Минска.

READ  Ps3 как подключить джойстик к приставке

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

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

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

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

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

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

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

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

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

READ  Как подключить роуминг мегафон через личный кабинет

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

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

Источник

Про Ардуино и не только

пятница, 8 ноября 2019 г.

Радио на RDA5807M. Часть 1

В интернет магазинах распространен модуль RRD-102v2, на котором распаяны RDA5807M, кварцевый резонатор и пара компонентов обвязки. В данной статье я опишу как подключить этот модуль к Ардуино и что нужно знать для создания радиоприемника на его основе.

Характеристики RDA5807M

Распиновка и подключение к Ардуино

Распиновка RRD-102v2

Подключение RRD-102v2 (RDA5807M) к Ардуино

Выводы SDA и SCL модуля подключаются к одноименным выводам Ардуино. Для платы Uno это пины A4 и A5 соответственно. Их уровни превышают напряжение питания RDA5807M, но это не критично, микросхема отлично работает без преобразователя уровней. Питание берем с вывода 3v3.

Интерфейс управления

Здесь я хочу обратить внимание на имеющуюся в технической документации неточность (даташит на эту микросхему вообще очень мутный): в ней говорится, что I2C адрес микросхемы 0x10h, что внутренние адреса ее регистров не видны и что чтение и запись выполняются последовательно, начиная с фиксированного стартового адреса (0x0Ah для чтения, 0x02h для записи). После каждой операции чтения/записи происходит инкремент внутреннего счетчика и очередная операция будет выполняться уже для следующего регистра. Так до тех пор, пока внутренний счетчик не дойдет до верхней границы 0x3Ah, после этого он вернется к своему начальному значению.

На самом деле RDA5807M отзывается на три I2C адреса, в чем легко убедиться, воспользовавшись I2C сканером:

I2C адреса RDA5807M

Адрес 0x10h используется для последовательного обращения к регистрам, как было описано выше.
Адрес 0x11h позволяет обращаться к произвольным регистрам.
Адрес 0x60h позволяет работать с RDA5807M в режиме совместимости с TEA5767.

Упоминание адреса 0x11h можно найти в документе RDA5807P_ProgManual_1.0. Хоть он и предназначен для другой микросхемы, но практически всё применимо и для RDA5807M. Ниже приведен фрагмент из данного документа, описывающий формат I2C обмена при использовании адреса 0x11h:

Формат обмена с RDA5807M по I2C адресу 0x11h

Как можно видеть, при записи в режиме произвольного доступа первым передается адрес интересующего регистра (REGISTER ADDRESS), затем старший и младший байты данных. Для чтения содержимого регистра из RDA5807M микроконтроллер сначала передает его адрес, затем считывает старший и младший байты. Чуть позже я приведу пример чтения/записи регистров, а пока разберемся с их назначением.

Регистры RDA5807M

Управление работой RDA5807M заключается в обращении к его регистрам: изменяя одни регистры, мы производим необходимые нам настройки; из других можно читать различную информацию (флаги, данные RDS и т.д.). Регистры 16-разрядные, их адреса и назначение приведены в даташите. Описание весьма скудное, поэтому я решил сам «пощупать» каждый регистр, чтобы понять какой бит за что отвечает. Для этого была написана следующая программа:

READ  Как подключить усилитель мощности к ресиверу
Управление работой RDA5807M с компьютера

Данная программа читает значения регистров RDA5807M, отображает в удобном виде и позволяет изменять их, щелкая мышью по элементам управления. Ардуино при этом выступает в роли посредника между программой на компьютере и RDA5807M, для этого в нее должен быть загружен соответствующий скетч (вы найдёте его в программе по кнопке «Скетч для Ардуино»). Очень рекомендую попробовать данную программу, чтобы разобраться с назначением регистров. Скачать ее можно здесь. И, чтобы совсем не осталось вопросов по управлению RDA5807M, привожу описание регистров на понятном языке.

Программирование RDA5807M

Давайте начнем с простенького скетча. Если вы попробуете управлять RDA5807M из моей программы, то обнаружите, что для того чтобы заставить его работать достаточно установить несколько битов: ENABLE, DHIZ, DMUTE, SEEK. Установка последнего запустит поиск радиостанции. Эти же действия можно выполнить программно при помощи следующего скетча:

Подключите RDA5807M к Ардуино по приведенной ранее схеме и залейте в нее скетч. Приемник выполнит поиск и настроится на первую найденную радиостанцию. Бит Tune при этом сбрасывается. Нажатие кнопки Reset на Ардуино и повторное выполнение функции setup будут снова устанавливать этот бит, инициируя поиск следующей станции. Работает? Двигаемся дальше.

В примере скетча выше мы записали в регистр 02h заранее определенное значение. На деле такое требуется редко, разве что для инициализации некоторых регистров. В основном же значения регистров формируются в процессе работы программы при изменении отдельных битов. В таких случаях удобно использовать константы, содержащие номера этих битов или маски для их установки. Ниже приведен пример такого скетча. Он позволяет настроиться на конкретную радиостанцию, установить громкость и получить RSSI.

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

Чтобы настроить RDA5807M на интересующую частоту необходимо установить значения BAND и SPACE и затем изменять только значение CHAN. Итоговая частота определяется по формуле:
F = BAND + CHAN * SPACE.

В скетче используются определенные по умолчанию BAND и SPACE (87..108МГц и 100кГц соответственно). По ним можно определить значение, которое должно быть записано в биты CHAN для получения интересующей частоты. Не забывайте при записи CHAN устанавливать также бит TUNE.

Для изменения громкости значение регистра 05h считывается из RDA5807M в переменную. Затем осуществляется сброс битов VOLUME. И уже после этого можно устанавливать новое значение громкости и записывать результат в регистр.

Для получения RSSI выполняются обратные действия: в считанном из регистра 0Bh значении сбрасываются все биты, кроме содержащих RSSI. Затем результат сдвигается вправо, чтобы младший бит RSSI оказался в младшем разряде переменной. Так мы получим нужное нам значение.

Теперь, когда описаны основные приемы управления RDA5807M, можно приступить к программированию. Нужно лишь определиться с функционалом и интерфейсом.

Добавим LCD дисплей и энкодер

Да, я люблю использовать в своих проектах LCD2004 с I2C интерфейсом и энкодер вращения. Это уже привычные для меня элементы создания пользовательского интерфейса. Используя их, я могу сосредоточиться на текущей задаче, а не заморачиваться с изобретением велосипеда. Поэтому сейчас я добавил их в схему:

Схема радио с дисплеем и энкодером

Источник

Поделиться с друзьями
Как подключить и установить...
Adblock
detector