FM приёмник с RDS на RDA5807

Обсуждаем приемники, передатчики, радиомикрофоны, жучки, генераторы, ВЧ-усилители, антенны и прочее радиохозяйство
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

FM приёмник с RDS на RDA5807

Сообщение WiseLord »

Эта тема предназначена для того, чтобы узнать, был ли бы интересен сообществу описанный ниже карманный радиоприёмник.

Захотелось мне разобраться с FM модулями на базе RDA5807 с целью выжать из них по максимуму возможностей.

У меня уже есть пара проектов, в которых они используются. Но из-за специфики проектов, особенно ampcontrol, приходится искусственно ограничивать их функционал. Потому что, когда поддерживаются 5-6 разных FM-тюнеров, сложно продумать всё так, чтобы из каждого выжимать по максимуму. Приходится ограничиваться некими базовыми вещами вроде настройки на определённую станцию. Хорошо ещё, если удаётся из тюнера достать некоторые данные вроде уровня сигнала, стереоиндикации и т.п. О вещах вроде автосканирования уже и речи не идёт.

Поэтому один из поддерживаемых тюнеров, RDA5807, не раскрывает всего своего потенциала.

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

Коль скоро тюнер умеет RDS, в качестве дисплея взят мелкий недорогой OLED дисплей на SSD1306.

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



Основная идея - получить карманный радиоприёмник, но умеющий показывать RDS.

Что уже реализовано:
- Собственно приём станций;
- Приём информации RDS;
- Поиск станции вверх и вниз;
- Регулировка громкости;
- Запоминание последних параметров при выключении;
- Уход дисплея и МК в режим сна при отсутствии нажатий в течение 10 секунд (тюнер продолжает играть);
- Уход всей системы в сон по длительному нажатию кнопки питания.

Что планируется:
- Ручной поиск;
- Автопоиск по всему диапазону;
- Расширение поддержки RDS.

На данный момент в плане RDS поддерживается:
- поле PS (8 символов, обычно - название станции, но иногда в нём станции прокручивают и другую информацию)
- (?) поле TEXT. (64 символа). Тут я не уверен, потому что у меня условия приёма плохие, и те станции, что там что-то передают у меня не очень хорошо принимаются. Поэтому нужно тестирование на стороне
Ещё в RDS может передаваться и текущее время, и кое-какая другая информация, но тут я уже не уверен, что в Минске кто-то вообще это передаёт.

Тут на сайте уже было несколько статей и устройств на базе RDA5807, но всё там как-то не очень. Во-первых, авторы с какого-то перепугу не делятся исходниками, во вторых, с RDS тоже особо никто не заморачивается. Поэтому этот проект задуман именно как полностью открытый - как в плане исходников, так и новых идей к реализации.

В общем, если кого заинтересовало, вот базовая схема:

Изображение

Ну а исходники у меня, как водится, на гитхабе: https://github.com/WiseLord/oledfm

Скомпилировать их самостоятельно не должно быть проблемой (как и прочие мои проекты), но, если что, обращайтесь.

В любом случае, буду пока выкладывать файлы прошивок на Dropbox.
Реклама
<!-- Yandex.RTB R-A-62247-3 --> <div id="yandex_rtb_R-A-62247-3"></div> <script type="text/javascript"> (function(w, d, n, s, t) { w[n] = w[n] || []; w[n].push(function() { Ya.Context.AdvManager.render({ blockId: "R-A-62247-3", renderTo: "yandex_rtb_R-A-62247-3", async: true }); }); t = d.getElementsByTagName("script")[0]; s = d.createElement("script"); s.type = "text/javascript"; s.src = "//an.yandex.ru/system/context.js"; s.async = true; t.parentNode.insertBefore(s, t); })(this, this.document, "yandexContextAsyncCallbacks"); </script>
MASIK
Грызет канифоль
Сообщения: 291
Зарегистрирован: Пн авг 12, 2013 21:24:55

Re: FM приёмник с RDS на RDA5807

Сообщение MASIK »

На схем нет есть тоже похожий проект, посмотрите может пригодится. http://forum.cxem.net/index.php?/topic/ ... %BE%D0%B2/
Реклама
гостевая2
Cheal
Грызет канифоль
Сообщения: 265
Зарегистрирован: Пн окт 31, 2011 12:35:59
Откуда: Родился в Сибири

Re: FM приёмник с RDS на RDA5807

Сообщение Cheal »

WiseLord здравствуйте.

Желательно сделать сообщение об этой теме в других Ваших разработках.
Сам случайно наткнулся.

Понравилось. Буду заказывать дисплей, а пока с удовольствием почитаю.

Приёмник на этом дисплее есть по адресу: http://catcatcat.d-lan.dp.ua/ukv-radiopriem-chast-2/.

Успехов.
Kuzma511
Открыл глаза
Сообщения: 58
Зарегистрирован: Ср апр 16, 2014 07:13:00

Re: FM приёмник с RDS на RDA5807

Сообщение Kuzma511 »

WiseLord здравствуйте. Приёмник понравился. Одно сомнение — не маловат ли дисплей учитывая отображение информации RDS?
maxsimus
Родился
Сообщения: 9
Зарегистрирован: Пн июл 03, 2017 06:10:34

Re: FM приёмник с RDS на RDA5807

Сообщение maxsimus »

Схему для Atmega328 в dip корпусе если не затруднит - можно выложить.
С энкодером планируется поддержка приемника.
Реклама
гостеваая 3
Аватара пользователя
prinv
Вымогатель припоя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь
Контактная информация:

Re: FM приёмник с RDS на RDA5807

Сообщение prinv »

WiseLord, добрый день!

Пытаюсь прикрутить вашу библиотеку к STM32F103.

Код: Выделить всё

	rda580xInit(hi2c2);
	rda580xSetPower(hi2c2, 1);
	rda580xSetVolume(hi2c2, 8);
	rda580xSetFreq(hi2c2, 10320);  // 103.2 МГц
Считываю значение из регистра 0A

Код: Выделить всё

	rda580xReadReg(hi2c2, 0x0A, &i);
	LCD_PrintDec(i & RDA580X_0A_STC);
всегда одно и то же значение CHAN, не зависящее от rda580xSetFreq. Флаг STC не устанавливается :(
Никакая контра не уйдёт от нас
ALEX 288
Открыл глаза
Сообщения: 54
Зарегистрирован: Вс дек 04, 2016 20:15:55

Re: FM приёмник с RDS на RDA5807

Сообщение ALEX 288 »

WiseLord здравствуйте. Идея хорошая, но на даче Ваш приемник из проекта Простой FM-приёмник с часами и термометром "теряет"
половину станций. Чувствительности RDA5807 не хватает. Проверить на даче модуль TUX 032 от автомагнитолы не успел. Конечно для карманного
приемника он не годится, но думаю в приемниках чувствительность стоит не на последнем месте.
Не смотря ни на что, буду делать этот проект - хочется сделать приемник своими руками с красивым дисплеем. В Москве с приемом У RDA5807 проблем не было.
Спасибо Вам за все Ваши проекты, особенно за часы на MAX7219.
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: FM приёмник с RDS на RDA5807

Сообщение Morroc »

Не пробовали в уже настроенном и работающем приемнике аккуратно поотключать все, кроме самого модуля с микросхемой ? Может помехи наводятся от мк или экрана (если oled - там преобразователь может быть). У самой микросхемы чувствительность вполне неплохая.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
ALEX 288
Открыл глаза
Сообщения: 54
Зарегистрирован: Вс дек 04, 2016 20:15:55

Re: FM приёмник с RDS на RDA5807

Сообщение ALEX 288 »

[uquote="Morroc",url="/forum/viewtopic.php?p=3278291#p3278291"]Не пробовали в уже настроенном и работающем приемнике аккуратно поотключать все, кроме самого модуля с микросхемой ? Может помехи наводятся от мк или экрана (если oled - там преобразователь может быть). У самой микросхемы чувствительность вполне неплохая.[/uquote]
Приемник из проекта "Простой FM-приёмник с часами и термометром" на даче работает, но не все станции принимает. Я не использую импульсные блоки питания, преоразователи и усилители класса D. Проверить работу с модулем от автомагнитолы TUX-032 смогу только весной.
Извините, что отвлекся от основной темы.
От данного проекта хочется удобства управления: ручная настройка станций и запись их в память, независимо от рабочих частот.
Обычно все создают список любимых станций. Если часто используются две одновременно нажатые кнопки - ставлю дополнительную.
Вложения
BAV70.JPG
(23.73 КБ) 1815 скачиваний
Morroc
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Re: FM приёмник с RDS на RDA5807

Сообщение Morroc »

[uquote="ALEX 288",url="/forum/viewtopic.php?p=3279607#p3279607"]Я не использую импульсные блоки питания, преоразователи и усилители класса D.[/uquote]
МК со светодиодной динамической индикацией тоже нехилый источник помех (она там не отключается автоматом со временем ?) если конструкция выполнена как в той статье (т.е. платы рядом в пластиковом корпусе без экранировки). Если так - должно помочь подключение антенны коаксиальным кабелем и полноразмерная наружная антенна FM диапазона.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Re: FM приёмник с RDS на RDA5807

Сообщение Novice user »

2 вопроса-где какая кнопка и какие фузы?
собрал,фузы пока заводские,снял CKDIV8
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Re: FM приёмник с RDS на RDA5807

Сообщение Novice user »

[uquote="Novice user",url="/forum/viewtopic.php?p=3284162#p3284162"]2 вопроса-где какая кнопка и какие фузы?
собрал,фузы пока заводские,снял CKDIV8[/uquote]
сам себе и отвечаю-lfuse:w:0xff:m -U hfuse:w:0xd1
PORTD6="+",PORTD5="-",PORTD4="вкл/выкл"
плата (MC34119 по даташиту)
DS1307 стоит на будущее
прошивка исправленная (при разводке + и - перепутал местами,на PORTB5 выведен сигнал управления мс34119 (станбай)
Вложения
oledfm.hex
(36.16 КБ) 1358 скачиваний
печать 003 (1).lay6
(142.67 КБ) 1484 скачивания
sonyyy
Родился
Сообщения: 2
Зарегистрирован: Вт дек 08, 2009 23:20:34

Re: FM приёмник с RDS на RDA5807

Сообщение sonyyy »

Запустил рда по такому коду, работает, но мне кажется, что сетку частот он сразу всю прописывает, хотя кнопками все переключается. Как грамотно задать функцию, чтоб сетка частот правильно записывалась в 2и3 байт 1 раз и после перезагрузке включалось последняя частота?
Спойлер#define F_CPU 8000000L
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <avr/eeprom.h>

#include "i2c.h"

#define ST_UP (PINC & (1<<0)) //кнопки
#define ST_DN (PINC & (1<<1))

unsigned char station=1;
uint8_t station_ee EEMEM ;

static uint8_t writeBuf[9];

void I2C_write (void) {

i2c_start_cond();
i2c_send_byte(0x20);
i2c_send_byte(writeBuf[0]);
i2c_send_byte(writeBuf[1]);
i2c_send_byte(writeBuf[2]);
i2c_send_byte(writeBuf[3]);
i2c_send_byte(writeBuf[4]);
i2c_send_byte(writeBuf[5]);
i2c_send_byte(writeBuf[6]);
i2c_send_byte(writeBuf[7]);
i2c_stop_cond();
}

void FM__init (void) {
writeBuf[0] = 0b11110000;
writeBuf[1] = 0b10000101;
writeBuf[2] = 0;
writeBuf[3] = 0;
writeBuf[4] = 0b01000011;
writeBuf[5] = 0b00000000;
writeBuf[6] = 0b00001000;
writeBuf[7] = 0b10001111;
I2C_write();
return;
}
//******************************************************************** сетка частоты
void set_station (uint8_t st) {
if (st==1) {writeBuf[2] = 0b11101010; writeBuf[3] = 0b10110011;}
if (st==2) {writeBuf[2] = 0b11101010; writeBuf[3] = 0b11110011;}
if (st==3) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b00110011;}
if (st==4) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b01110011;}
if (st==5) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b10110011;}
if (st==6) {writeBuf[2] = 0b11101011; writeBuf[3] = 0b11110011;}
if (st==7) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b00110011;}
if (st==8) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b01110011;}
if (st==9) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b10110011;}
if (st==10) {writeBuf[2] = 0b11101100; writeBuf[3] = 0b11110011;}
if (st==11) {writeBuf[2] = 0b11101101; writeBuf[3] = 0b00110011;}

eeprom_write_byte(&station_ee, st);
I2C_write();
return;
}

int main (void)
{
DDRC &= ~((1<<0)|(1<<1)|(1<<2)|(1<<3));//Настройка кнопок
PORTC|=(1<<0)|(1<<1)|(1<<2)|(1<<3);
i2c_init();
FM__init();

sei();// прерывания

station=eeprom_read_byte(&station_ee);
set_station(station);

while(1){
if (!ST_UP) {station++; if (station>11) {station=1;} set_station(station); _delay_ms(200);}
if (!ST_DN) {station--; if (station<1) {station=11;} set_station(station); _delay_ms(200);}
}
} // end main
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Re: FM приёмник с RDS на RDA5807

Сообщение Novice user »

Есть ли вариант прошивки без отключения дисплея во время приема?
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: FM приёмник с RDS на RDA5807

Сообщение WiseLord »

Даже лучше - есть исходники
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Re: FM приёмник с RDS на RDA5807

Сообщение Novice user »

толку от исходника-не понятно в какой среде написано и как компилировать..
нормальный адекватный человек как минимум указывает в какой среде написано
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: FM приёмник с RDS на RDA5807

Сообщение WiseLord »

Вместе с исходниками лежит Makefile, в коем явно видно, что это для компилятора avr-gcc с управлением через make. А среда - кому как удобно. Кто любит Eclipse, кто (как я) QtCreator, кто вообще в простом блокнотике код смотрит. Можно вообще без IDE, из терминала, собирать.
Это не какой-то там заточенный под AVRStudio проект (или, упаси ЛММ, под CodeVision) проект. Хотя и AVRStudio подойдёт, там тоже avr-gcc.
WiseLord писал(а):Скомпилировать их самостоятельно не должно быть проблемой (как и прочие мои проекты), но, если что, обращайтесь
Для пользователей Windows я выкладывал на Youtube что к чему. Проект другой, но принцип ровно тот же.
Novice user
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Re: FM приёмник с RDS на RDA5807

Сообщение Novice user »

вот спасибо,особенно за видео!
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: FM приёмник с RDS на RDA5807

Сообщение WiseLord »

Вчера вечер провозился с модулями на Si4703 с Aliexpress.
Предварительный вывод: программировать их сложнее (куча неочевидных заморочек), но по качеству приёма вроде чуть лучше RDA5807M. По крайней мере, RDS лучше принимается.
Аватара пользователя
Halex
Грызет канифоль
Сообщения: 281
Зарегистрирован: Пт ноя 15, 2013 20:58:23

Re: FM приёмник с RDS на RDA5807

Сообщение Halex »

[uquote="WiseLord",url="/forum/viewtopic.php?p=3333393#p3333393"]Вчера вечер провозился с модулями на Si4703 с Aliexpress.[/uquote]
А я ровно неделей раньше. Да, немного геморней, чем RDA, да ещё и антенну подколхозивать неудобняк на ихний готовый модуль. В одном направлении идём, однако...
У меня "в своле" для эксКрементов ещё один китайский "зверёк" получен - QN8035. Правда, готовых дешёвых модулей на них я не нашёл. Знаю, что Мастер КИТ лепит их в "свои" (условно назовём) модули MP3510. Их полно на Али и Ebay вдвое дешевле, но всё-равно меня "земноводное" уговорило взять просто микросхемы с Ali. Но не учёл, что они десятиногие, сейчас жду макетки SOP10, а то самопальные травить негде - у меня на лоджии ремонт, и продлится ещё дней 10, а макетки уже больше недели в пути.
Сравнивал даташиты, QN8035 вроде как самая чуЙствительная по сравнению с RDA и Si, посмотрим в деле...
Ответить

Вернуться в «Радиотехника: приемники, передатчики, антенны»