FM-радио на RDA5807. Часть 1
HTML-код
- Опубликовано: 2 окт 2024
- Группа ВК: electro...
Инстаграм: / electronics_in_focus
Исходник проекта для AVR (IAR): bitbucket.org/...
Исходник проекта для STM32 (IAR): bitbucket.org/...
Плата переходника (KiCAD): yadi.sk/d/FY1n...
Обзор светодиодных матриц на MAX7219: • Светодиодные матрицы н...
Обзор матричных клавиатур 4x4: • Матричные клавиатуры
Стерео FM-тюнер с цифровым управлением на RDA5807M: ali.ski/JLhC2Y
Клавиатура 4х4 плёночная: ali.ski/g4Gwh
Светодиодные матрицы 8х8 на MAX7219: ali.ski/f_9MR
RDA5807М этот индексом "М" есть просто RDA5807 он может и без микроконтроллера запускатся.
Что сгорает при переполюсовке, случайно перепутал, модуль умер.
А когда будет продолжение
Интересная микросхема. Мне захотелось сделать приёмник на ней, купил пару штук и начал искать, что да как. Наткнулся на широко известный скетч на испанском языке, тут многие его пользуют. Мне понравилось, что там маленький дисплей Nokia 5110. И всего три кнопки управления. Я минималист, поэтому понравилось.
И вот я стал изучать программу, хотелось понимать, как это работает. К сожалению, нормальный даташит на RDA5807 почему-то скрывается производителем, эти файлы с жёлтым маркером только и попадаются в сети. Поэтому некоторые моменты остались мною непоняты, в их числе, кстати, и отсутствие в таблице двух секретных битов, связанных с использованием антенны. Я тоже прописывал туда нули :) И вот здесь я случайно узнаю назначение этих битов! Очень понравилось, что в ваших программах много комментариев, этим мало кто заботится.
Но самое непонятное - это работа RDS. Пытался копаться в библиотеках Adafruit, но я ни разу не программист, языками не владею, а там сплошняком один язык. Нет, не один, а два: C++ и английский. Последний я "читаю и перевожу со словарём", поэтому трудно. Пока использую эту часть программы "как есть", но не люблю этого.
В общем, сейчас я сделал программу, которая может принимать как FM, так и УКВ диапазоны, с изменением шага сетки частот. Сначала сделал, что все 16 вариантов можно было переключать, но потом отказался от такого, потому что нет там никаких станций, слушать нечего. Кстати, странно, что минимальный шаг сетки 25 кГц, надо 10, если они хотят поддерживать УКВ, а то только ТВ каналы ловятся.
Слушай дружище, не знаю как тебя зовут... А можно приделать к этому приёмнику 2 энкодера. Один управление громкостью, а второй для поиска частоты? Пересмотрел 4 раза твой видос, нихрена не понял. Понял насколько ты глубоко изучил эту микруху и разбираешься в программировании. Мне вот еще интересно - говорят что все приборы на шине айтуси сидят на двух проводах. А вот почему тогда в моей магнитоле между приборами сопротивление порядка 1 килоом?! Если они все сидят на двух проводах?
диполь собери чего мудрить.
по ссылкам ничего нет, обновите плж.
Спасибо, проект понравился. Только вместо матричной клавиатуры я бы подключил ИК приёмник , а кнопки нажимал бы на пульте ДУ.
Сам собрал уже два модуля на rda5807 (использую их для модернизации старых приёмников).Работают хорошо - с лета прошлого года проблем не замечено.
+Konst Nozdrya Спасибо за коммент
Стараюсь писать код модульно. В дальнейшем можно будет переделать управление и индикацию в этом проекте по своему вкусу
Скинь пожалуйста схему платы переходника в pdf
Молодчага, что реализуеш такие проэкты, жду не дождусь реализацию радиомодуля или wifi модуля которые обменивались между собой информацией на расстоянии.
Когда уже вторая часть?
когда будите заниматься RDS наличие хорошей антенны обязательно, иначе идет масса ошибок
и еще качество приема RDS помогает катушка и емкость на входе антенны, согласно даташиту
спасибо за канал, все очень здорово продолжайте в этом направлении
+Andrew Doynikov Спасибо, учту
С хорошей антенной нужен хороший фильтр на входе. Последний можно настроить только имея измеритель АЧХ.
Would you please help me with the coding?
Слушай, ну ты гений!!! Я хочу на этой микрухе сделать приемничек, но походу не светит... 16битные поля... Писец!..Хоть бы ты подсказал чо...
Собрал такой приемник c управлением на Arduino. Проблема с шумом- принимает только сильные радиостанции. Может быть дело в цифровом шуме? Помогите дельным советом.
-Не уверен, что там была музыка. Я от смеха чай на себя пролил
воот
именно поэтому мой проект тюнера (на основе вч-блока от убитой магнитоллы) после завершения, оказался неиспользуемым. пока я его собирал, из эфира ушли пара станций, которые можно было слушать.
No code
Очень понравился Ваш проект, понравился отображением частоты на матричном ирдикаторе и без всяких дополнительных отвлекающих функций: часов, календаря, термометра.
Но никак не могу найти СХЕМУ. Ни в описании, ни в группе вк...только прошивка.
Как собирать то😐
Спасибо за интересный проект, но жаль , что заброшен. Интересно было бы перенести этот проект на ESP8266 или ESP32 с управлением через приложение для АНДРОИДА, и с возможностью записи в память фиксированных настроек частоты станции. Автосканирование нужно в автомобиле, а в квартире в этом нужды нет, разве, что при начальной настройке.
Хорошие антенны, полноразмерный диполь на три метра, или "волновой канал". Три - пять элементов.
Забыли ассемблер где проблем с ошибками битов нет !
А разрезать вдоль бредбоард не судьба?! Самое простое решение. Давно так сделал.
FM антенну круче не встречал. Штатная автомобильная с фольцвагена 2000 года. Развязка по питанию внутри штатного магнитофона, просто через LC цепь. Уверенный приём до 70-90км.
Идеальный вариант - сделать поддержку модуля на rda5807 в программе FLProg (в виде пользовательского блока).
А остальное - управление и индикация - там уже сделано.
я конечно сторонник подобных вещей, но сверхрегенератор на лампе звучит несравнимо лучше.
только вот слушать в эфире нечго
В приёмнике очень важна избирательность! А то будешь одно радио на всех частотах слушать. Капец.
Интересно! Палец вверх! Эта микросхема крута!
Добрый день! Подскажите пожалуйста, на 29:23 ролика там где описывается функция Button и перечисления через if, можно было бы переписать данные перечисления через switch? Ролик понравился, супер)
В принципе можно, нужно будет сравнивать ButtonClick с битовой маской нажатой кнопки
Жалко что два и более лайков поставить нельзя...
Скажи а если закинуть дэмо с определённой частотой или установить нужную частоту можно ли откинуть ардуино,будет работать если питание не сбрасывать?
Только до сброса питания микросхемы приёмника. После подачи питания микросхему приёмника нужно будет заново инициализировать
@@rnadyrshin спасибо братуха за ответ,очень перспективно для моей задумки,типо блютуз гарнитуры замутить мини,скинул с ардуины частоту и на работу,только подзаряжай
замени клаву на энкодер
молодец! Хорошо все сделал и расписал! Держи лайк.
Здравствуйте, подскажите когда вы планируете выпустить вторую часть видео посвещённого модулю RDA5807?!
Не планирую уже
@@rnadyrshin жаль, отличный модуль, можно использовать в системах умного дома мажордома или опенхабе, например в будильниках при отсутствии интернета
Уважаемый автор, скажите пожалуйста, какими должны быть FUSE для AVR?
Нужно выставить тактирование от 8 МГц (от внутреннего RC-генератора или от внешнего кварца). Остальные fuse биты не принципиальны
Спасибо огромное! Ваши наработки забрал к себе в проект, особенно понравилась работа с регистрации в виде структур) очень удобно!
да не за что)
Малогабаритная и максимально простая антенна это обычный диполь.Бывают весьма компактных размеров. Загугли, расчеты есть.
Спасибо!
Там же с антенным усилителем вроде антенна. Нафига она тут? Лучше GP(граунд плейн - плоская земля) сделать. Для ФМ вертикальный штырь 70 см и 3 противовеса такой же длины отходящие вниз под углом 140-145 градусов по отношению к штырю. Противовесы вместе спаять и к оплетке кабеля. Центральный к штырю. На плате оплетку на массу , центральный на вход. Такая антенна примерно 50 Ом , стандартный вход у таких приемников обычно тоже 50 Ом , так что можно без всяких согласующих устройств соединить 50-омным кабелем. У антенны круговая направленость.
Сколько раз можно говорить ардуинщикам всех мастей - проходные конденсаторы, это совсем не то, что вы думаете.
Не знаю. Объяснять не пробовали что имеете в виду?
Проходные конденсаторы, это конденсаторы с конструктивом приспособленным для монтажа в отверстиях в стенках ВЧ блоков и экранов. Либо впаиваются в стенки, либо прикручиваются в них с применением гаек. Проходные - они проходят сквозь стенки. Ставятся в цепи питания.
А конденсаторы между отдельными каскадами - разделительные или межкаскадные.
САМАРА NRJ 102.5
на биквадрате антену
mortalaso!!
А тв может?
Как все по полочкам разложено. Жаль я не умею программировать.
+infocentrist У тебя есть хотябы минимальный опыт с любым языком программирования?
+Электроника в объективе Бейсик. Делал 600 сек на компе)
+infocentrist
Вот и замечательно. Можно начинать изучать язык си)
Есть отличные книги по си (Керниган и Ричи, например). Просто читаешь по 1 главе каждые 2-3 дня, разбираешь примеры, ковыряешь какие-нибудь заведомо рабочие программы, экспериментируешь, постепенно применяя полученные знания. Недели через 2-4 будешь самостоятельно писать простые программы. А с первыми результатами появится мотивация на дальнейшее изучение.
Тут главное не лениться. Нужно определённое упорство.
Что-то я не пойму... Если рда5807 питается от3.3 вольта, значит и ардуино должно питаться от 3.3 вольт?... А разве ардуино про микро можно от 3.3 вольта питать?
Конечно можно, в даташите на микроконтроллер есть график зависимости максимальной рабочей частоты тактирования МК от питающего напряжения
Такс... ещё раз чтобы уточнить!... Я должен ардуино микро и рда5807 запитать от 3,3вольт. Так? Ты говоришь "зависимость максимальной рабочей частоты тактирования" Что это значит? это значит я кварц 16 МГц должен выпаять и прихренарить туда на 8 мегагерц, чтоб ардуино про микро работала без сбоев? Или как? Или перепрограммировать внутри чо надо?
Можно перепаять, а можно FUSE-биты переустановить так, чтобы микроконтроллер тактировался от внутреннего RC-генератора на 8МГц. Но на практике скорее всего заработает и на 16 МГц при 3.3В
... блин... буду пробовать... но во фьюзы не полезу!!!!!! я и так то боюсь программить. Раньше на синклере в бейсике программки писал и те позабыл чо и как
Бл... понапридумают 3.3вольт 5 вольт, а ты ипись как хочешь!!!!!! оказывается ардуино на 3.3 вольта не программится от компа. Нужен переходник какой-то.... заказал на алишке 3.3 вольтовую ардуино нанопро с приблудой программатором... еще 250 рублей в минус... бред...
а про интернет радио не думали?
Неа. Для этого скорее всего придётся подключать к esp внешний I2S-ЦАП, слишком сложно как по мне. Проще для интернет радио использовать микрокомпьютеры
собрал массу приемников на таком модуле
проблем с передачей по шине И2Ц с контроллером запитанным от 5В не было
и микры живые - работают уже больше года без проблем
Здорово, будем знать. Спасибо за коммент
+Электроника в объективе Мне вот больше интересно как ведёт себя адруина с питанием 3В. Нормально?
+vladi g Вполне нормально на частотах до ~10-12 МГц.
Burnout Detector должен быть настроен на 2.7В (на моей arduino так и было).
Ну и, естесственно, 3.3В надо подавать на VCC микроконтроллера (не через 5В стабилизатор, который стоит на платах arduino).
Электроника в объективе
Ясно. Получается, что ты ардуино плату без родного загрузчика используешь? Пишешь на чистом Си. И вот ещё. Смотрю у тебя код очень красивый. Нет в планах уроки программирования делать?
+vladi g Да, все проекты у меня на си.
Про уроки я думал и даже снимал, но пока мне не нравится формат, который получается. Возможно, позже.
Ну и есть идеи по проектам, связанным с обучением. Возможно скоро выкачу на канале
да за такие деньги уже можно готовое радио купить
+Обо всём - Суть то не в готовом устройстве, а в изучении программирования и электроники.
vladi g ну вобщем да, но дорого блин
+Обо всём - купить каждый дурак может
+Обо всём - купить каждый дурак может
где брали инфу о регистрах управления модулем ? з даташита что-то не очень то понятно.
+SergeyD Ну как..в родном даташите и брал инфу. В целом в нём нормально описаны регистры (если закрыть глаза на те неописанные биты, о которых я говорил в видео).
Если есть какие-то конкретные вопросы, пиши, постараюсь помочь;)
Пытаюсь в среде ардуино, ( мне так проще) запрограммировать и управлять радио через библиотеку Wire.h. цель управлять громкостью и басом но вот меняю биты в строке Wire.write(0xB8); ( 1011 1000 ) никаких изменений . как они включаются не соображу.
вот код
#include // I2C-Library
double f_ini=106.2; // Стартовая частота настройки приемника. (Изменяем на нужную).
void setup() // Инициализация.
{
Wire.begin(); // Инициализация двухпроводной шины I2C.
setFrequency(f_ini); // Вызываем фукнкцию загрузки частоты настройки в модуль EM5807M.
}
void loop() // Основной цикл программы
{
// Здесь можем написать программу
}
void setFrequency(double fmhz) // Функция загрузки частоты настройки в модуль EM5807M.
{
int frequencyB = 4 * (fmhz * 1000000 + 225000) / 32768;
char frequencyH = frequencyB >> 8; // Старший байт.
char frequencyL = frequencyB & 0XFF; // Накладываем маску 0xFF на младший байт.
Wire.beginTransmission(0x60); // Адрес чипа RDA5807M
Wire.write(frequencyH); // Старший байт.
Wire.write(frequencyL); // Младший байт.
Wire.write(0xB8); // 1011 1000
Wire.write(0x10); // 0001 0000
Wire.write(0x00); //
Wire.endTransmission(); // формируем I2C-Stop.
}
+SergeyD Насколько я помню, после подачи питания RDA5807 находится в выключенном состоянии (бит Enable = 0), попробуй его выставить в 1 перед тем как устанавливать частоту
+Электроника в объективе по адресу 0x11 ?
+SergeyD
Да, я не могу тебе подсказать как это сделать через 0x60 адрес, но могу - как через 0x11
Я посмотрел даташит, там дело может быть не только в бите Enable, ещё там есть биты DHIZ и DMONO, из-за которых твой rda5807 не работает. Благо все эти биты в одном регистре 0x02. Попробуй включить rda5807 следующим кодом:
Wire.beginTransmission(0x11); // Адрес RDA5807M для доступа к произвольному регистру
Wire.write(0x02); // Регистр
Wire.write(0xC0); // Старший байт
Wire.write(0x05); // Младший байт
Wire.endTransmission(); // Stop
После этого должно появиться шипение на аудиовыходе
Блин, задолбало!!!!!! мягко говоря,!!!!!!! Тыркнул ссылку "исходник проекта для АВР", скачал архив, а он не открывается программой "ардуино иде" Руслан чо за хрень?!!! Ты можешь нормальный скетч в формате ино или пде выложить чтоб ардуино иде смогла его открыть?!!!!! Сил нет ковырять эти мелочи!!! блуждение в трёх соснах
Я не делаю проекты под Arduino IDE. Для сборки демок с моего канала нужен IAR, всё скомпилируется сходу. Либо любая другая среда с си компилятором под соответствующую платформу (при условии что вы эту среду хорошо знаете и можете её настроить)
Руслан, Руслан... Что ж ты творишь!... ... Без ножа режешь! Выходит, я радио не послушаю... Ты хоть скажи... если я скачаю твой ИАР... внедрю в него какимто образом твои папки.... подсоединю ардуину к компу... отыщу и нажму в ИАРе кнопочку "запрограммировать". Ардуно запрограммируется твоим скетчем или нет? или она сгорит нафик? ТОлько ради Бога, не употребляй своих умных словей типа соответствующая платформа... среда...
Ага, нашёл ... оказывается тебя зовут Руслан. А где вторая часть видео?
Второй части нет
Как блин нет?!!!!!!!!!!! Давай вторую!!!!!!! Ты обещал!!!!!!!! Это тебе блин все просто, а я пока допру как чо делается, аналоговый эфир вымрет и эта канитель станет неактуальной.
Если дойдут руки до этого проекта, видео обязательно выйдет
@@rnadyrshin
Эммм...а схема? Может быть я отстал от современных тенденций и сейчас модно повторять конструкцию ставя ролик с ютуба на паузу?
Простая картинка, какой вывод с каким соединяется
Сколько арматуры и проводов чтобы послушать обычное FM радио? бред...