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

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

Сообщение 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.
Контактная информация:
Реклама
Грызет канифоль
Сообщения: 291
Зарегистрирован: Пн авг 12, 2013 21:24:55

Сообщение MASIK »

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

Сообщение Cheal »

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

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

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

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

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

Сообщение Kuzma511 »

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

Сообщение maxsimus »

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

Сообщение 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 не устанавливается :(
Никакая контра не уйдёт от нас
Контактная информация:
Реклама
Открыл глаза
Сообщения: 54
Зарегистрирован: Вс дек 04, 2016 20:15:55

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

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

Сообщение Morroc »

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

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

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

Сообщение Morroc »

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

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

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

Сообщение 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 КБ) 1362 скачивания
печать 003 (1).lay6
(142.67 КБ) 1489 скачиваний
Родился
Сообщения: 2
Зарегистрирован: Вт дек 08, 2009 23:20:34

Сообщение 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
Мудрый кот
Сообщения: 1704
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

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

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

Сообщение WiseLord »

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

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

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

Сообщение WiseLord »

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

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

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

Сообщение WiseLord »

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

Сообщение Halex »

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

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