Залил прошивку (версию 1.7)в Ардуинку, собрали с сыном приемник который заработал сразу. Первые впечатления: цифровую часть (ардуино и дисплей) надо капитально экранировать и RDA тоже, иначе идет не хилая помеха
чувствительность хотелось бы поднять, установкой предварительного УВЧ.
А так даже очень прилично, выражаю благодарность авторам проекта!
Ребят, здравствуйте. А как сделать при включении полную очистку экрана? У меня на один экран работают два устройства: это радио и интернет радио на ESP12. Так при переключении с ESP на ардуино на экране остаются артефакты. Резет на ардуино к положительному результату не приводит, только помогает передёргивание питания. Можно ли это победить программным способом?
Скорее всего это из-за одновременного обращения к нему 2х устройств. После переключения на ардуино ESP, видимо, все еще пытается что-то передать на экран. Не знаю, какой интерфейс у экрана, но скорее всего какая-то из ног управления удерживается.
Экран подключен по I2C. SDA, SCK между устройствами переключается через к561кт3, питание подаётся от каждого устройства через диоды шоттки. Питание на устрорйства переключаются РПС45.
Проблема может и железная, но при переключении с фм радио на есп глюков не наблюдается. Можно, конечно, подпаяться к выводу reset и поставить ключ или чего-либо ещё, но не хочется колхозить. Должен же быть программный сброс или очистка буфера дисплея.
Т.е. проблема только если с ESP на ардуино? А если обратно, еще раз, то нормально?. Кондеры по питанию дисплея стоят достаточной емкости? Может при переключении напряжение просаживается и инициализация проходит до восстановления питания на дисплее? Еще, как вариант, можно убрать реле, и МК в сон уводить при переключении. Тогда "коммутационных недоразумений" точно быть не должно .
Не понимаю зачем atmega если есть esp8266? Может следующие строки на мысли наведут, правда нет уверенности u8g и u8g2 это одно и то же или нет. Использовал чтоб небыло повторной инициализации дисплея после сна esp:
//магия с дисплеем при первой и последующих загрузках
if (first_boot) {
u8g2.begin(); u8g2.clearBuffer(); // First init of the displays
} else { // Init displays after wake up
u8x8_gpio_Init(u8g2.getU8x8());
u8x8_cad_Init(u8g2.getU8x8());
u8x8_gpio_SetReset(u8g2.getU8x8(), 1);
}
//магия с дисплеем при первой и последующих загрузках
if (first_boot) {
u8g2.begin(); u8g2.clearBuffer(); // First init of the displays
} else { // Init displays after wake up
u8x8_gpio_Init(u8g2.getU8x8());
u8x8_cad_Init(u8g2.getU8x8());
u8x8_gpio_SetReset(u8g2.getU8x8(), 1);
}
Ругается, библиотека другая, команд таких не знает.
Всем привет. подскажите чайнику где в коде поменять цыферки плавности регулировки громкости, а то между самой тихой и второй ступенькой большая разница. из тихой музыки сразу в ор.
Всем привет. подскажите чайнику где в коде поменять цыферки плавности регулировки громкости, а то между самой тихой и второй ступенькой большая разница. из тихой музыки сразу в ор.
In file included from C:\Users\roy_wash\Documents\Arduino\libraries\Radio\src\newchip.cpp:20:0:
C:\Users\roy_wash\Documents\Arduino\libraries\Radio\src/RADIO.h:116:1: warning: 'typedef' was ignored in this declaration
typedef struct RADIO_INFO {
^~~~~~~
C:\Users\roy_wash\Documents\Arduino\libraries\Radio\src/RADIO.h:127:1: warning: 'typedef' was ignored in this declaration
typedef struct AUDIO_INFO {
^~~~~~~
Всем привет. подскажите чайнику где в коде поменять цыферки плавности регулировки громкости, а то между самой тихой и второй ступенькой большая разница. из тихой музыки сразу в ор.
Там плавность не поменяешь. Всего у RDA5807 15 шагов регулировки громкости 0-15. И при 0 звук все-равно есть. Чтобы выключить совсем, нужно включить mute. Смотри подключенную библиотеку. Я правил под себя, при 0 громкости включал mute и сдвинул все на 1 вверх. В итоге получилось 16 шагов. Да, и при мелких наушниках регулировка слишком резкая, мне обычно хватает 2, дальше очень громко. На усилителе все нормально.
Kaa_2 здесь регулировка имеет 16 уровней и мельче ее не сделать,разве что поставить переменный резистор на выход RDA5807
Я ставил делитель на 2-х резисторах,подбирал номиналы так чтоб при максимальной громкости было как меньше искажений звука на выходе усилителя мощности с подключенными динамиками ,эти искажения смотрел осциллографом
помогите доработать скетч под RDA5807m. чтоб этот скетч, мог работать с приложением Blynk ссылка вверху на библиотеки и скетч и фото. помогите пожалуйста! мой телеграмм @tehnostark.
в tea5767 автопоиск есть а в режиме совместимости с RDA5807 -нет! смысл продолжать если мне человек пишет - зачем мне две почки. я и с одной проживу. а вторую продам!
радиоприемник как дополнение для умного дома в приложении блинк! включение по таймеру и выключение! не тотько свет включать и выключать и смотреть погоду а послушать после блютус, аналоговое радио и на диване поуправлять настройками! а в место кнопок поставить энкодер. так и просится возле oled 0.96"
Как ты думаешь, техностарче, что проще, "немношко переделать всю программу" или тебе купить TEA5767 в Китае и не насиловать нам моск и глаза твоими восклицательными знаками после каждого предложения.
Подскажите как можно масшабировать значок батарейки? Я хочу вместо режима сна отображать на дисплее состояние батареи с индикацией заряда в процентах. Но не могу сделать батарейку больше (на пол экрана).
Получается мне нужно свою картинку создать, закинуть ее в image2code и сгенерировать двоичный массив, который вставить вместо строк автора constuint8_t Bat1[] U8G_PROGMEM = { }?
А как из двоичного массива обратно в картинку переконвертировать, чтоб понять что автор написал и отмасштабировать bmp?
С масштабированием разобрался. Команда u8g.setScale2x2(); и обратная ей u8g.undoScale(); в цикле do.
Другой вопрос. Почему при изменении напряжения на лабораторнике (подключен "+" к пину VIN) от 4,2 до 3,2В показывает проценты отличные от map? При 5,2В - 100%, при 4,2В - 0%, хотя в map стандартные значения li-ion.
void readVcc()
{
#if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#else
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
#endif
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Start conversion
while (bit_is_set(ADCSRA, ADSC)); // measuring
uint8_t low = ADCL; // must read ADCL first - it then locks ADCH
uint8_t high = ADCH; // unlocks both
long result = (high << 8) | low;
result = 1.080 * 1023 * 1000 / result; // расчёт реального VCC
Voltage = int(result);
Voltage = map(Voltage, 3200, 4200, 0, 100);
Voltage = constrain(Voltage, 0, 100);
}
Я бы хотел от 2S питать свое устройство,ом будет это радио и при изменении в скетче Voltage = map(Voltage, 3200, 8400, 0, 100); вообще доходит при 7В до 73% и дальше хоть крути, хоть нет, а процент не растет.
Может нужна какая калибровка напряжения при прошивке или еще как?
А по схеме vin куда подключен? Пологаю что на стабилизатор? Вы напряжение для начала посмотрите какое мк измеряет.
МК измеряет что на него приходит и при напряжении более 5,5 В МК сгорает (по даташиту) соответственно чтоб на vin подать больше, плата стабилизирует вход. 1. Я бы узнал толерантность дисплея и радио к 5 вольтам 2. Если такой нет, то напряжение можно измерять аналоговым пином через резисторный делитель, настроив изначально внутреннее опорное напряжение.
Вольтметром посмотрите что между VCC и GND
Вот нашел способ достать *.hex файл проекта: http://rfanat.ru/Arduino_projekts/hex-arduino.html
Залил прошивку (версию 1.7)в Ардуинку, собрали с сыном приемник который заработал сразу. Первые впечатления: цифровую часть (ардуино и дисплей) надо капитально экранировать и RDA тоже, иначе идет не хилая помеха
чувствительность хотелось бы поднять, установкой предварительного УВЧ.
А так даже очень прилично, выражаю благодарность авторам проекта!
режима powerdown конечно не хватает для работы от АКБ. Просыпаться просто при нажатии кнопок. Тогда и помех гарантировано не будет.
Поиграйтесь для начала с регистром входа антены. 10 км от станций в бетонном здании на 5 см провод уверенно приемник ловит.
Спасибо, но наверное так: antena(2); вместо antena = 2;
Посмотрел описание регистров по даташиту, регистр 5 вроде бы не при делах тут.
Примечания:
2 This value is SNR threshold for seeking, and the default value 1000 is about 32dB SNR.
3 0x20H_bit<14:12>, Seek_Mode register. Default value is 000; When = 001, will add the 5802E seek mode
Если что близко по смыслу, то пороговое значение отношения сигнал/шум в режиме поиска, но это поиск и к коммутации входов отношения не имеет.
Вставил рисунок из пдф но он не отобразился, а на какой даташит Вы ориентировались?
https://tsibrov.blogspot.com/2019/11/rda5807m-part1.html?m=1 отличная статья на русском.
6,7 биты 5го регистра.
Ну что же, огромное спасибо за статью! Т.е. получается биты 6 и 7 не документированные данные! Отличненько! У китайчат такое сплошь и рядом
Ребят, здравствуйте. А как сделать при включении полную очистку экрана? У меня на один экран работают два устройства: это радио и интернет радио на ESP12. Так при переключении с ESP на ардуино на экране остаются артефакты. Резет на ардуино к положительному результату не приводит, только помогает передёргивание питания. Можно ли это победить программным способом?
Вот здесь кино. https://yadi.sk/d/G1Dj4mig5x13hw
А банальная очистка экрана не помогает?
Скорее всего это из-за одновременного обращения к нему 2х устройств. После переключения на ардуино ESP, видимо, все еще пытается что-то передать на экран. Не знаю, какой интерфейс у экрана, но скорее всего какая-то из ног управления удерживается.
Я так полагаю, что очистка производится при инициализации. Отдельно команды для этой библиотеки не нашёл.
u8g.clear_screen(); не помогает - ругается при компиляции.
Экран подключен по I2C. SDA, SCK между устройствами переключается через к561кт3, питание подаётся от каждого устройства через диоды шоттки. Питание на устрорйства переключаются РПС45.
А так очистится?
К сожалению, ничего не изменилось.
Проблема скорее всего "железная". Схему покажи, как ключ подключен. Тут еще может быть его сопротивление (80-160 Ом) роль играет.
Схема от руки, извините, но суть ясна.
https://yadi.sk/i/BDRRqeReXwongA
https://yadi.sk/i/HZF0CB_kigfrsg
Чёт рисунки не вставляются.
Проблема может и железная, но при переключении с фм радио на есп глюков не наблюдается. Можно, конечно, подпаяться к выводу reset и поставить ключ или чего-либо ещё, но не хочется колхозить. Должен же быть программный сброс или очистка буфера дисплея.
Т.е. проблема только если с ESP на ардуино? А если обратно, еще раз, то нормально?. Кондеры по питанию дисплея стоят достаточной емкости? Может при переключении напряжение просаживается и инициализация проходит до восстановления питания на дисплее? Еще, как вариант, можно убрать реле, и МК в сон уводить при переключении. Тогда "коммутационных недоразумений" точно быть не должно .
Т.е. проблема только если с ESP на ардуино?
Да.
А если обратно, еще раз, то нормально?.
Нет, не помогает даже reset на ардуино.
проблема только если с ESP на ардуино
Не понимаю зачем atmega если есть esp8266? Может следующие строки на мысли наведут, правда нет уверенности u8g и u8g2 это одно и то же или нет. Использовал чтоб небыло повторной инициализации дисплея после сна esp:
//магия с дисплеем при первой и последующих загрузках
if (first_boot) {
u8g2.begin(); u8g2.clearBuffer(); // First init of the displays
} else { // Init displays after wake up
u8x8_gpio_Init(u8g2.getU8x8());
u8x8_cad_Init(u8g2.getU8x8());
u8x8_gpio_SetReset(u8g2.getU8x8(), 1);
}
1. Копаю огород, роутер не добивает.
2. Начнётся война, интернет первым зависнит.
3. Да и так, местные новости иногда послушать.
Да я о другом, если в esp не закрытая прошивка то можно было бы внедрить код для руления fm приемником без ардуинки и микросхемы переключения.
Не, закрыта.
Ругается, библиотека другая, команд таких не знает.
Задолбался с программным сбросом, сделал аппаратный: при включении на PB5 коротко появляется единица, её через транзистор завёл на reset дисплея. Всё.
Вот что получилось - karmannoe fm radio na rda5807 + ESP mini.
Всем привет. подскажите чайнику где в коде поменять цыферки плавности регулировки громкости, а то между самой тихой и второй ступенькой большая разница. из тихой музыки сразу в ор.
Всем привет. подскажите чайнику где в коде поменять цыферки плавности регулировки громкости, а то между самой тихой и второй ступенькой большая разница. из тихой музыки сразу в ор.
Неможетэтовабыть.
подскажите пожалуйста в чем дело грузит с ошибкой
ошибку напиши.
Всем привет. подскажите чайнику где в коде поменять цыферки плавности регулировки громкости, а то между самой тихой и второй ступенькой большая разница. из тихой музыки сразу в ор.
Неможетэтовабыть.
может! если текста нет - сам разберусь...
Там плавность не поменяешь. Всего у RDA5807 15 шагов регулировки громкости 0-15. И при 0 звук все-равно есть. Чтобы выключить совсем, нужно включить mute. Смотри подключенную библиотеку. Я правил под себя, при 0 громкости включал mute и сдвинул все на 1 вверх. В итоге получилось 16 шагов. Да, и при мелких наушниках регулировка слишком резкая, мне обычно хватает 2, дальше очень громко. На усилителе все нормально.
Kaa_2 здесь регулировка имеет 16 уровней и мельче ее не сделать,разве что поставить переменный резистор на выход RDA5807
Я ставил делитель на 2-х резисторах,подбирал номиналы так чтоб при максимальной громкости было как меньше искажений звука на выходе усилителя мощности с подключенными динамиками ,эти искажения смотрел осциллографом
из-за чего могут появляться помехи? все отлично пропаяно, не понимаю из-за чего наводки
Наводки от работы МК, шины I2C. Нужно по питанию RDA5807 фильтр хороший ставить. Хотя полность это проблему не решит.
https://blynk.hackster.io/B45i/dhwani-fm-radio-with-wifi-connectivity-87a1e1 -Ссылка хочу переделать под RDA5807m. чтоб работал автопоиск и регулировка громкости!или если можно добавить Blynk управление в скетч 1.7 версии автора скетча. с Олед экраном. и переделать с кнопок на энкодер. было бы супер...
Всем Доброго Времени суток.
помогите доработать скетч под RDA5807m. чтоб этот скетч, мог работать с приложением Blynk ссылка вверху на библиотеки и скетч и фото. помогите пожалуйста! мой телеграмм @tehnostark.
есть люди которые смогут мне помочь?
напишите мне в телеграмм. я подробно опишу что хочу доработать
мой телеграмм @tehnostark
Вы тут? может вы мне поможете?
Ношкой топнуть забыл.
помогите пожалуйста... я же оставил свой телеграмм... договоримся
Зачем переделывать если RDA5807 работает в режиме совместимости с TEA5767
нет автопоиска, нет регулировки громкости нет rds или еще продолжить? Да. на одном костылЕ, ковыляет... но не работает!
ПРОДОЛЖАЙТЕ!Автопоиск в 5767 есть! громкость нет,rds тоже нет
Про Blynk не знаю что это и зачем это и вообще он мне не нужен-если ставить кнопки и дисплей считаю лишним WIFI
в tea5767 автопоиск есть а в режиме совместимости с RDA5807 -нет! смысл продолжать если мне человек пишет - зачем мне две почки. я и с одной проживу. а вторую продам!
радиоприемник как дополнение для умного дома в приложении блинк! включение по таймеру и выключение! не тотько свет включать и выключать и смотреть погоду а послушать после блютус, аналоговое радио и на диване поуправлять настройками! а в место кнопок поставить энкодер. так и просится возле oled 0.96"
я не знаком с этим приложением Blynk,так что извините
а кнопки и олед-первое сообщение и далее
Как ты думаешь, техностарче, что проще, "немношко переделать всю программу" или тебе купить TEA5767 в Китае и не насиловать нам моск и глаза твоими восклицательными знаками после каждого предложения.
В статье https://blynk.hackster.io/B45i/dhwani-fm-radio-with-wifi-connectivity-87a1e1 стоит именно RDA5807...
а так переписать программу,вернее команды управления 5767 на 5807 и должно работать
Всех с Новым Годом!
Подскажите как можно масшабировать значок батарейки? Я хочу вместо режима сна отображать на дисплее состояние батареи с индикацией заряда в процентах. Но не могу сделать батарейку больше (на пол экрана).
Если менять width и height, то растягивает и ничего не видно, а как изменить сам размер картинки не имея оригинала?
Тут же рисуется битовая маска 20 точек (2х10 точнее), судя по всему (библиотеку не пользовал) меняй значения:
const
uint8_t Bat1[] U8G_PROGMEM = {0x7F, 0xFC, 0x80, 0x02, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,0x80, 0x02, 0x7F, 0xFC};
, рисунок и количество точек, должно получится, как тебе нужно.
Получается мне нужно свою картинку создать, закинуть ее в image2code и сгенерировать двоичный массив, который вставить вместо строк автора
const
uint8_t Bat1[] U8G_PROGMEM = { }
?А как из двоичного массива обратно в картинку переконвертировать, чтоб понять что автор написал и отмасштабировать bmp?
С масштабированием разобрался. Команда u8g.setScale2x2(); и обратная ей u8g.undoScale(); в цикле do.
Другой вопрос. Почему при изменении напряжения на лабораторнике (подключен "+" к пину VIN) от 4,2 до 3,2В показывает проценты отличные от map? При 5,2В - 100%, при 4,2В - 0%, хотя в map стандартные значения li-ion.
Я бы хотел от 2S питать свое устройство,ом будет это радио и при изменении в скетче Voltage = map(Voltage, 3200, 8400, 0, 100); вообще доходит при 7В до 73% и дальше хоть крути, хоть нет, а процент не растет.
Может нужна какая калибровка напряжения при прошивке или еще как?
А по схеме vin куда подключен? Пологаю что на стабилизатор? Вы напряжение для начала посмотрите какое мк измеряет.
МК измеряет что на него приходит и при напряжении более 5,5 В МК сгорает (по даташиту) соответственно чтоб на vin подать больше, плата стабилизирует вход. 1. Я бы узнал толерантность дисплея и радио к 5 вольтам 2. Если такой нет, то напряжение можно измерять аналоговым пином через резисторный делитель, настроив изначально внутреннее опорное напряжение.
Вольтметром посмотрите что между VCC и GND