Нескромный вопрос, а карадио у Вас вообще работает? Звук то есть? Может оно тупо не запускается и выводить то нечего. Стандартными дисплеями, я так понял, проверить не выйдет? Короче: лог ESP в студию(с)
Все работает, станции гоняет, подключается мгновенно.
Почитал про аддон. Он обязан работать с KaRadio на ESP8266 ибо разрабатывался под него.
У меня в логе есть эти пункты, а они типа нужны программе для вывода инфы ##CLI.ICY0#: at IP 192.168.0.101 и ##CLI.ICY0#: JamendoLounge
Варианта два: программа или электрика.
1. Пробуйте прошить скетч с OLD. А в ESP замените скорость порта на 28800. Вдруг эта версия специально под 8266. А без old под 32
2. Убедитесь что есть контакт между TX-ESP и RX-arduino(тестер). Убедитесь,что RX передает данные(как я хз). Убедитесь , что RX ардуинки принимает. Проще всего прошить пустой скетч и закоротив RX-TX на ардуине(от ESP отсоединить - спалите порт) послать в монитор символ.- должен вернутся тот-же.
Такая получилась конструкция в сборе. Усилитель управляется сигналом светодиода "Status" + гаснет при подключении ушей. От лития тоже работает. Шумов стало на порядок меньше. Пока не припаял дисплей - вообще было не понятно: стартует или нет - резко начинало играть при подключении к станции.
И снова та же песня) Пока китайцы несут 32ю плату, рашил побаловаться дислеем от самсунг, и он вполне себе хорошо и просто запустился. Но вот незадача, скачал прошивку для i2c дисплея 1602, и попробовал скомпилировать и тут ошибка, как я понимаю своими примитивными знаниями, проблема с объявлением подключаемых выводов для библиотеки i2c, сами библы все установлены. Хочу esp8266 подружить для вывода инфы о радиостанции в karadio с этим дисплеем. Элементарно не то что зашить, так скомпилировать не выходит. Не пойму в чем дело, подскажите пожалуйста, в чем проблема....
Интересно, а кто-нибудь знает, чем примечателен этот модуль: [US$4.14]AI-Thinker® WiFi ESP8266 Upgrade ESP32 S2 Chip ESP-12K Module 100M Communication Distance Module Board from Electronic Components & Supplies on banggood https://banggood.app.link/x0EdWT4mW9
Облегчит он что-нибудь в изготовлении Karadio? Или это что то типа vrower с доппамятью?
Интересно, а кто-нибудь знает, чем примечателен этот модуль: [US$4.14]AI-Thinker® WiFi ESP8266 Upgrade ESP32 S2 Chip ESP-12K Module 100M Communication Distance Module Board from Electronic Components & Supplies on banggood https://banggood.app.link/x0EdWT4mW9 Облегчит он что-нибудь в изготовлении Karadio? Или это что то типа vrower с доппамятью?
Это модуль с чипом ESP32-S2, без расширенной памяти.
Кратко - новый проц, умеет USB OTG, 43 программируемых GPIO. Подробно
Интересно, а кто-нибудь знает, чем примечателен этот модуль: [US$4.14]AI-Thinker® WiFi ESP8266 Upgrade ESP32 S2 Chip ESP-12K Module 100M Communication Distance Module Board from Electronic Components & Supplies on banggood https://banggood.app.link/x0EdWT4mW9 Облегчит он что-нибудь в изготовлении Karadio? Или это что то типа vrower с доппамятью?
Это модуль с чипом ESP32-S2, без расширенной памяти.
Кратко - новый проц, умеет USB OTG, 43 программируемых GPIO. Подробно
Народ, ни у кого нет информации касательно поддержки ogg vorbis в новой прошивке KA-RADIO32 версия с VS1053B? Год назад собрал, все играло, больше не пробовал, в феврале был апгрейд "по воздуху" и вот недавно попробовал несколько радиостанций ничего не работает. При этом все потоки живые, и с разным битрейтом, в том числе и дефолтный поток из прошивки autostart:
Скажите, было ли в процессе где-то допиливание на тему реконнекта в случае потери станции?
Т.е. ситуация: играет радио, радуемся. А радио (само вещание) взяло и отключилось. Может на секунду (в описании оригинального проекта на гитхабе есть про after a short while Karadio retries to relaunch, а насколько - не ясно) и если опаньки - то нате вам ошибку красивую, и вручную перезапуск.
А вот в моем случае низя перезапуск вручную. Совсем. Т.е. надо ждать потока - хоть секунду, хоть час, хоть месяц с тремя ресетами по пути.
Обсуждалось такое? Ткните слепого, плиз... или просто скажите "было", я вздохну, и снова начну заново шерстить... :-P
PS: Сорри, наплодил дублей... думал ни одно сообщение ни ушло, а оно вон как :(
Есть ли проект для karadio32 на wemos, в котором отрабатываются в автоматическом режиме две ситуации:
1. При кратковременном пропадании потока (но ошибка об этом сформировалась в веб-интерфейсе: "Invalid adress") автоматически с некоторым дискретом (1-5секунд) пробовать принять поток, который был до формирования ошибки?
2. В случае пропадания связи по wi-fi будет ли автоматическое подключение к сети и воспроизведение того же потока, что и до пропадания, когда wi-fi восстановится?
---------------------------
- выложенный проект (скомпелированные файлы для загрузки) автора на гитхабе предусматривает работу с разными вариантами esp32, например будет ли он работат с esp32 на wemos?
В частности как программапонимает, что установлен модуль esp32 wemos с ОЗУ обьёмом 4М? Она считывает id esp32 зашитый на заводе или надо править конфигурационный файл и заново компилировать?
Вемос швемос - это все просто платко-лепители. Память дополнительная определяется макросом heap, который возвращает доступный объем "кучи", сиречь оперативки.
Интересно, а кто-нибудь знает, чем примечателен этот модуль: [US$4.14]AI-Thinker® WiFi ESP8266 Upgrade ESP32 S2 Chip ESP-12K Module 100M Communication Distance Module Board from Electronic Components & Supplies on banggood https://banggood.app.link/x0EdWT4mW9 Облегчит он что-нибудь в изготовлении Karadio? Или это что то типа vrower с доппамятью?
Это модуль с чипом ESP32-S2, без расширенной памяти.
Кратко - новый проц, умеет USB OTG, 43 программируемых GPIO. Подробно
Спасибо за инфо! В, общем, пока каких то революционных изменений для проекта он не несет.
Можно попробовать собрать прошивочку под этот чип, но имхуется мне что это будет вариант только с вээской. Зато можно будет поэксперементировать с параллельными дисплеями. Гпиошек то до и больше. Еще и уэсби он борд. Это плюс. Может флешку уэсбишную сможет как плеер поиграть.
Интересно, а кто-нибудь знает, чем примечателен этот модуль: [US$4.14]AI-Thinker® WiFi ESP8266 Upgrade ESP32 S2 Chip ESP-12K Module 100M Communication Distance Module Board from Electronic Components & Supplies on banggood https://banggood.app.link/x0EdWT4mW9 Облегчит он что-нибудь в изготовлении Karadio? Или это что то типа vrower с доппамятью?
Это модуль с чипом ESP32-S2, без расширенной памяти.
Кратко - новый проц, умеет USB OTG, 43 программируемых GPIO. Подробно
Спасибо за инфо! В, общем, пока каких то революционных изменений для проекта он не несет.
Можно попробовать собрать прошивочку под этот чип, но имхуется мне что это будет вариант только с вээской. Зато можно будет поэксперементировать с параллельными дисплеями. Гпиошек то до и больше. Еще и уэсби он борд. Это плюс. Может флешку уэсбишную сможет как плеер поиграть.
У Вас на плате есть SD карта, но она еще "в резерве". Я, наверное, пишу ерунду: раз там дохрена gpio, может с этим чипом проще ее будет задействовать, да и usb otg.
Увидел что в аддонах для карадио на STM есть подключения цифрового приёмника на IIC. Тут вроде писали, что в программе есть закомментированные блоки для его работы. Это просто пожелания аддоно-делателей с заделом не будущее? Или обычная лень, типа что-то взяли или изменили, а поменять схему (забыли, лень, некогда, сами разберутся , чай не маленькие)? Кто-нибудь проверял?
Увидел что в аддонах для карадио на STM есть подключения цифрового приёмника на IIC. Тут вроде писали, что в программе есть закомментированные блоки для его работы. Это просто пожелания аддоно-делателей с заделом не будущее? Или обычная лень, типа что-то взяли или изменили, а поменять схему (забыли, лень, некогда, сами разберутся , чай не маленькие)? Кто-нибудь проверял?
Как раз типа таким, на SI4735, и пытаюсь "мучаться"... Но в фуллрежиме... типа и КВ с SSB и прочим... ФоМа уж прицепом.
Как раз типа таким, на SI4735, и пытаюсь "мучаться"... Но в фуллрежиме... типа и КВ с SSB и прочим... ФоМа уж прицепом.
Но не на СТМ, а на ЕСП32
Интересно, можно подробнее?
По подробнее... ну пока получается все раздельно... на одной ЕСПешке вроде получается запустить и интернетрадио и вещь от Рикардо Каррати (он написал замечательную библу для SI4735 для всеволнового эфирного приемника) ... трабла для меня как недопрограммера оформить это в визуальный фейс для тача на 9341...
To nva: Микруха интересная, будем посмотреть. Вопрос был больше о том, что на гите у GPC для ESP и схемы правильные, и настройки на фото, и файлы. А в карадио-аддонс - то связь не дорисуют , то лишнюю приблуду добавят, то файлов каких-то лишних насуют :)
To ShAlex: Всё же это ветка для интернет радио. Всем 73.
To nva: Заведите отдельную ветку "Всеволновый эфирный приемник"
Очень интересно. 73!
Для завести и вести надо время... а его не хватает... да я и просто чаще повторяльщик... беру инфу в группе в фейсе. https://www.facebook.com/groups/532613604253401/ (не реклама), там и Рикардо постоянно онлайн, куча вариантов программы, плат, схем... герберы для своих плат брал оттуда. Там и наши соотечественники отметились..
беру инфу в группе в фейсе. https://www.facebook.com/groups/532613604253401/ (не реклама), там и Рикардо постоянно онлайн, куча вариантов программы, плат, схем... герберы для своих плат брал оттуда. Там и наши соотечественники отметились..
Ради этого заводить еще одну говносеть нет желания...
To DM86: LCD работает. Проверяйте прошивки, настройки, соединение, живость портов.
Разобрался, все норм, работает и на 32 и на 8266.
Теперь появились вопросы, хотелось бы чтобы в первой строке было название из списка а не из инфы о радио, так как иногда там какая-то ерунда... При движении строки с именем и исполнителем, верхняя мерцает в такт движения, думаю это можно прописать в скетче как-то...
Но самое главное это отсутствие кириллицы. Пробовал скачать библиотеки с кириллицей, но тогда ругается компилятор на строку begin.lcd(BAUD). Как понимаю проблема разрешима, но откуда лучше копать?
Для замены станции: Вместо "ICY0#: " вставляем "ESET#: "
Подергиваться будет так как обновляются все строки.
Ругается потому что подсовываете не ту библиотеку( с Амперки спокойно подошла). Но главное , судя по фото, русского у Вас в дисплее нет. Как вариант искать(делать) библиотеку с использованием своих символов. В начале темы было обсуждение и попытки, но по итогу всё равно будет кривенько - не более 8 русских букв на экран, остальные как повезёт.
Ещё получилось подключить китайский LCD12864. Правда время не устанавливается, то-ли ESP8266 такая, то-ли отвалилось, то-ли уровень маленький. А проверять уже лень, т.к. использовать всё равно не буду.
беру инфу в группе в фейсе. https://www.facebook.com/groups/532613604253401/ (не реклама), там и Рикардо постоянно онлайн, куча вариантов программы, плат, схем... герберы для своих плат брал оттуда. Там и наши соотечественники отметились..
Ради этого заводить еще одну говносеть нет желания...
Это каждому свое... а для любителей послушать эфир - китайцы выпустили Малахит2 ценой около 5-7 тр, если он полный клон, то это ниже чем его можно купить от наших.
Это каждому свое... а для любителей послушать эфир - китайцы выпустили Малахит2 ценой около 5-7 тр, если он полный клон, то это ниже чем его можно купить от наших.
Нескромный вопрос, а карадио у Вас вообще работает? Звук то есть? Может оно тупо не запускается и выводить то нечего. Стандартными дисплеями, я так понял, проверить не выйдет? Короче: лог ESP в студию(с)
Все работает, станции гоняет, подключается мгновенно.
Опрос с порта есп:
Почитал про аддон. Он обязан работать с KaRadio на ESP8266 ибо разрабатывался под него.
У меня в логе есть эти пункты, а они типа нужны программе для вывода инфы ##CLI.ICY0#: at IP 192.168.0.101 и ##CLI.ICY0#: JamendoLounge
Варианта два: программа или электрика.
1. Пробуйте прошить скетч с OLD. А в ESP замените скорость порта на 28800. Вдруг эта версия специально под 8266. А без old под 32
2. Убедитесь что есть контакт между TX-ESP и RX-arduino(тестер). Убедитесь,что RX передает данные(как я хз). Убедитесь , что RX ардуинки принимает. Проще всего прошить пустой скетч и закоротив RX-TX на ардуине(от ESP отсоединить - спалите порт) послать в монитор символ.- должен вернутся тот-же.
Добрый день, заказал на али psram64h (3.3v) и не могу найти схему как подключить к esp-wroom-32.
Максимум что выдал гугл :
https://thingpulse.com/esp32-how-to-use-psram/
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/external-ram.html
благодарю за любую помощь
Добрый день, заказал на али psram64h (3.3v) и не могу найти схему как подключить к esp-wroom-32.
Максимум что выдал гугл :
https://thingpulse.com/esp32-how-to-use-psram/
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/external-ram.html
благодарю за любую помощь
Посмотрите у меня в блоге - как я себе делал...
LINK - PSRAM
спс
а как узнать номер ревизии?
спс
а как узнать номер ревизии?
В расширенных логах можно посмотреть, есть несколько логов - какая команда не помню - попробуйте перебрать.
Хочу заказать ардуину, вдруг понадобится (дисплей подключить или еще чего), а под рукой нет.
Какую лучше брать?
Чето их много всяких... про, нано, 5В, 3В, 168, 328, с usb и без...
uno r3 5v 328 самая нормальная
uno r3 5v 328 самая нормальная
А чем Nano 328 не угодила? под небольшие проекты само то, и размер соответственно.
А чем Nano 328 не угодила? под небольшие проекты само то, и размер соответственно.
ну хотя бы шилды подключать будет по сложнее
ну хотя бы шилды подключать будет по сложнее
Шилды это уже для мажоров :)
Такая получилась конструкция в сборе. Усилитель управляется сигналом светодиода "Status" + гаснет при подключении ушей. От лития тоже работает. Шумов стало на порядок меньше. Пока не припаял дисплей - вообще было не понятно: стартует или нет - резко начинало играть при подключении к станции.
Когда (где,почем) можно будет заказать:)?
PlatformIO наконец-то умеет menuconfig из коробки...
Радиола успешно переехала на ESP-IDF ver. 4.1.0 и потихоньку обзаводится menuconfig`ом на русском языке.
Когда (где,почем) можно будет заказать:)?
Pilnikov собака inbox.ru
И снова та же песня) Пока китайцы несут 32ю плату, рашил побаловаться дислеем от самсунг, и он вполне себе хорошо и просто запустился. Но вот незадача, скачал прошивку для i2c дисплея 1602, и попробовал скомпилировать и тут ошибка, как я понимаю своими примитивными знаниями, проблема с объявлением подключаемых выводов для библиотеки i2c, сами библы все установлены. Хочу esp8266 подружить для вывода инфы о радиостанции в karadio с этим дисплеем. Элементарно не то что зашить, так скомпилировать не выходит. Не пойму в чем дело, подскажите пожалуйста, в чем проблема....
Опять вопрос не совсем по теме: а каким припоем лучше паять мелкие smd? Аля как у Pilnikov на платах? Если можно с ссылкой. Подскажите пожалуйста!
Добрый день.
А к радио нельзя привязать проекционный экран, что бы все проекцировать например на стену?
Что бы он работал как проекционные часы.
А к радио нельзя привязать проекционный экран, что бы все проекцировать например на стену?
Что бы он работал как проекционные часы.
Идея интересная. Знать бы как с радио пересылать инфу на это устройство.
Ссылки, даташит, библиотеки есть?
А к радио нельзя привязать проекционный экран, что бы все проекцировать например на стену?
Что бы он работал как проекционные часы.
Идея интересная. Знать бы как с радио пересылать инфу на это устройство.
Ссылки, даташит, библиотеки есть?
Разбирался с несколькими такими "проекторами" - там тупо семисегментный индикатор и примитивная линза... куда чего посылать то?
А эти проекторы отдельно продаются? По идее им ведь без разницы что проектировать, хоть часы хоть информацию с радио.
Интересно, а кто-нибудь знает, чем примечателен этот модуль: [US$4.14]AI-Thinker® WiFi ESP8266 Upgrade ESP32 S2 Chip ESP-12K Module 100M Communication Distance Module Board from Electronic Components & Supplies on banggood
https://banggood.app.link/x0EdWT4mW9
Облегчит он что-нибудь в изготовлении Karadio? Или это что то типа vrower с доппамятью?
Это модуль с чипом ESP32-S2, без расширенной памяти.
Кратко - новый проц, умеет USB OTG, 43 программируемых GPIO.
Подробно
На Али уже wrover'ы с новым чипом появились
Это модуль с чипом ESP32-S2, без расширенной памяти.
Кратко - новый проц, умеет USB OTG, 43 программируемых GPIO.
Подробно
На Али уже wrover'ы с новым чипом появились
Спасибо за инфо! В, общем, пока каких то революционных изменений для проекта он не несет.
Народ, ни у кого нет информации касательно поддержки ogg vorbis в новой прошивке KA-RADIO32 версия с VS1053B? Год назад собрал, все играло, больше не пробовал, в феврале был апгрейд "по воздуху" и вот недавно попробовал несколько радиостанций ничего не работает. При этом все потоки живые, и с разным битрейтом, в том числе и дефолтный поток из прошивки autostart:
playing:1, currentstation:178
##CLI.NAMESET#: 178 Radio Ici et Maintenant
##CLI.URLSET#: radio.rim952.fr
Доброго вечера всем.
Не пинайте сильно, уж мочи нет вычитывать... :-D
Скажите, было ли в процессе где-то допиливание на тему реконнекта в случае потери станции?
Т.е. ситуация: играет радио, радуемся. А радио (само вещание) взяло и отключилось. Может на секунду (в описании оригинального проекта на гитхабе есть про after a short while Karadio retries to relaunch, а насколько - не ясно) и если опаньки - то нате вам ошибку красивую, и вручную перезапуск.
А вот в моем случае низя перезапуск вручную. Совсем. Т.е. надо ждать потока - хоть секунду, хоть час, хоть месяц с тремя ресетами по пути.
Обсуждалось такое? Ткните слепого, плиз... или просто скажите "было", я вздохну, и снова начну заново шерстить... :-P
PS: Сорри, наплодил дублей... думал ни одно сообщение ни ушло, а оно вон как :(
Здравствуйте,
Есть ли проект для karadio32 на wemos, в котором отрабатываются в автоматическом режиме две ситуации:
1. При кратковременном пропадании потока (но ошибка об этом сформировалась в веб-интерфейсе: "Invalid adress") автоматически с некоторым дискретом (1-5секунд) пробовать принять поток, который был до формирования ошибки?
2. В случае пропадания связи по wi-fi будет ли автоматическое подключение к сети и воспроизведение того же потока, что и до пропадания, когда wi-fi восстановится?
---------------------------
- выложенный проект (скомпелированные файлы для загрузки) автора на гитхабе предусматривает работу с разными вариантами esp32, например будет ли он работат с esp32 на wemos?
В частности как программапонимает, что установлен модуль esp32 wemos с ОЗУ обьёмом 4М? Она считывает id esp32 зашитый на заводе или надо править конфигурационный файл и заново компилировать?
Для пропадания вифи есть команда wifi.auto("1")
Вемос швемос - это все просто платко-лепители. Память дополнительная определяется макросом heap, который возвращает доступный объем "кучи", сиречь оперативки.
Это модуль с чипом ESP32-S2, без расширенной памяти.
Кратко - новый проц, умеет USB OTG, 43 программируемых GPIO.
Подробно
На Али уже wrover'ы с новым чипом появились
Спасибо за инфо! В, общем, пока каких то революционных изменений для проекта он не несет.
Можно попробовать собрать прошивочку под этот чип, но имхуется мне что это будет вариант только с вээской. Зато можно будет поэксперементировать с параллельными дисплеями. Гпиошек то до и больше. Еще и уэсби он борд. Это плюс. Может флешку уэсбишную сможет как плеер поиграть.
Для пропадания вифи есть команда wifi.auto("1")
А для ожидания потока, пока не появится, не попадалось решение?
Прошил версию KaRadio32_19R6.bin - ogg vorbis завелся, никто не знает по поводу этого бага разработчик в курсе?
Результат жестокого закостыливания аддона для OLED . Для LCD2004.
1.- название станции из списка
2.- название станции из тегов
3.- автор
4.- композиция.
Скроллинг отключен(не поборол). Первая строка меняется раз 5 сек. - либо название станции либо дата со временем.
Закинуть в папку karadioU8glib из скачаного karadio-addons-master. Подключение как для OLED. Проверено на KaRadio32_19R7 не самой последней.
/* KaradioU8glib.pde */ //------------------------------------------------------- // UnComment the following line if you want the IR remote //#define IR // Uncomment the following line to use the IRLib2 library //#define IRLib2 //========================= // Uncomment your oled type //========================= #define oled096 //#define oled130 //#define Nokia5110 //------------------------------------------------------- // your timezone offset #define TZO 1 #undef SERIAL_RX_BUFFER_SIZE #define SERIAL_RX_BUFFER_SIZE 128 #include <LiquidCrystal_I2C.h> #include "u8glibConf.h" #include <EEPROM.h> #include <time.h> #include <avr/pgmspace.h> #ifdef IR #ifdef IRLib2 #include <IRLibDecodeBase.h> #include <IRLib_P01_NEC.h> //#include <IRLib_P02_Sony.h> //#include <IRLib_P03_RC5.h> //#include <IRLib_P04_RC6.h> //#include <IRLib_P05_Panasonic_Old.h> //#include <IRLib_P06_JVC.h> #include <IRLib_P07_NECx.h> //#include <IRLib_P08_Samsung36.h> //#include <IRLib_P09_GICable.h> //#include <IRLib_P10_DirecTV.h> //#include <IRLib_P11_RCMM.h> //include additional protocols here #include <IRLibCombo.h> //#include <IRLibRecv.h> #include <IRLibRecvPCI.h> #else #include "IRremote.h" #endif #endif #define PIN_LED 13 #define PIN_PLAYING 12 #define BAUD 19200 // any standard serial value: 300 - 115200 // nams <--> num of line #define STATIONNAME 0 #define STATION1 1 #define STATION2 2 #define IP 3 #define GENRE 2 #define TITLE1 3 #define TITLE2 4 #define VOLUME 5 // constants const int EEaddr = 0; // EEPROM address for storing WPM const int EEaddr1 = 2; // EEPROM address for LCD address const int EEaddrIp = 10; // EEPROM address for the IP const byte ContrastPin = 8; // D8 low activates the Contrast adjustment #ifdef IR char irStr[4]; // IR define and objects #ifdef IRLib2 #define PIN_IRRECV 2 IRrecvPCI irrecv(PIN_IRRECV);//create instance of receiver using pin PIN_IRRECV IRdecode irDecoder; //create decoder IRdecode results; //create decoder #else #define PIN_IRRECV 11 IRrecv irrecv(PIN_IRRECV); // The IR decode_results results; #endif #endif bool state = false; // start stop on Ok key //----------- #ifdef IR // Character array pointers char msg2[] = {"IR+lcd V1.5"}; // #else char msg2[] = {"lcd V1.5"}; // #endif char msg1[] = {"(c) KaraWin"}; // char msg[] = {" Karadio"}; // Karadio specific data #define BUFLEN 180 #define LINES 4 char line[BUFLEN]; // receive buffer char station[BUFLEN]; //received station char title[BUFLEN]; // received title char nameset[BUFLEN / 2]; // the local name of the station char nameNum[5]; // the number of the station char genre[BUFLEN / 2]; // the local name of the station char* lline[LINES] ; // array of ptr of n lines uint8_t iline[LINES] ; //array of index for scrolling uint8_t tline[LINES] ; int16_t volume; unsigned index = 0; unsigned loopScroll = 0; unsigned loopDate = 0; char oip[20]; String a; uint16_t y ; //Height of a line uint16_t yy; //Height of screen uint16_t x ; //Width uint16_t z ; // an internal offset for y byte NOKIAcontrast; // LCD initialization contrast values B0 thru BF struct tm *dt; time_t timestamp = 0; bool syncTime = false; bool askDraw = false; bool itAskTime = true; unsigned loopTime = 0; LiquidCrystal_I2C lcd(0x3f, 20, 4); //////////////////////////////////////// void u8g_prepare(void) { if (u8g.getWidth() == 84) u8g.setFont(u8g_font_5x8); else // u8g.setFont(u8g_font_6x13); u8g.setFont(u8g_font_6x10); u8g.setFontRefHeightExtendedText(); u8g.setDefaultForegroundColor(); u8g.setFontPosTop(); } //////////////////////////////////////// //Setup all things, check for contrast adjust and show initial page. void setup2() { clearAll(); lline[0] = (char*)msg; lline[1] = (char*)msg1; lline[2] = (char*)msg2; nameNum[0] = 0; eepromReadStr(EEaddrIp, oip); lline[3] = (char*)"IP:"; lline[4] = oip; draw(0); digitalWrite(PIN_PLAYING, LOW); } void setTimer2() { cli();//stop interrupts TCCR2A = 0;// set entire TCCR2A register to 0 TCCR2B = 0;// same for TCCR2B TCNT2 = 0;//initialize counter value to 0 // set compare match register for 1khz increments OCR2A = F_CPU / 1000 / 64 - 1; // (must be <256) // turn on CTC mode TCCR2A |= (1 << WGM21); // Set CS21 bit for 64 prescaler TCCR2B |= (1 << CS22) ; // enable timer compare interrupt TIMSK2 |= (1 << OCIE2A); sei();//allow interrupts } void setTimer1() { //set timer1 interrupt at 4Hz cli();//stop interrupts TCCR1A = 0;// set entire TCCR1A register to 0 TCCR1B = 0;// same for TCCR1B TCNT1 = 0;//initialize counter value to 0 // set compare match register for 4hz increments // OCR1A = 15624;// = (16*10^6) / (1*1024) - 1 (must be <65536) OCR1A = F_CPU / 4096 - 1; // = (16*10^6) / (2*1024) - 1 (must be <65536) // turn on CTC mode TCCR1B |= (1 << WGM12); // Set CS10 and CS12 bits for 1024 prescaler TCCR1B |= (1 << CS12) | (1 << CS10); // enable timer compare interrupt TIMSK1 |= (1 << OCIE1A); sei();//allow interrupts } ISR(TIMER2_COMPA_vect) { cli();//stop interrupts serial(); sei();//allow interrupts } ISR(TIMER1_COMPA_vect) { //timer1 interrupt 4Hz if (loopTime % 4 == 0) // 1hz { timestamp++; // time update loopDate++; if (!syncTime) itAskTime = true; // first synchro if not done askDraw = true; } loopScroll++; if ((++loopTime % 7200) == 0) itAskTime = true; // refresh ntp time every 30Mn } void setup(void) { char msg3[] = {"Karadio"}; Serial.begin(BAUD); lcd.init(); lcd.backlight(); while (!Serial) ; pinMode(PIN_LED, OUTPUT); pinMode(PIN_PLAYING, OUTPUT); pinMode(ContrastPin, INPUT); digitalWrite(ContrastPin, HIGH); // activate internal pullup resistor digitalWrite(PIN_PLAYING, LOW); #ifdef IR irrecv.enableIRIn(); // Start the IR receiver irStr[0] = 0; #endif ReStart: // Come back here if LCD contract is changed // Read the EEPROM to determine if display is using a custom contrast value NOKIAcontrast = EEPROM.read(EEaddr1); // Set the Nokia LCD Contrast to default or reset if EEPROM is corrupt or set to new value if (NOKIAcontrast < 0xB0 || NOKIAcontrast > 0xCF) NOKIAcontrast = 0xB8; u8g.setContrast(2 * (NOKIAcontrast - 0x80)); u8g_prepare(); y = u8g.getFontLineSpacing(); yy = u8g.getHeight(); x = u8g.getWidth(); z = 0; clearAll(); for (int i = 0; i < 5; i++) { u8g.firstPage(); do { // if (!(i%2)) u8g.drawFrame(0,0,x/2-1,yy/2-1); // else u8g.drawFrame(0,0,x-1,yy-1); u8g.drawStr(u8g.getWidth() / 2 - (u8g.getStrWidth(msg3) / 2), u8g.getHeight() / 3, msg3); } while ( u8g.nextPage() ); delay(500); if (i % 2)u8g.setScale2x2(); else u8g.undoScale(); } lline[0] = (char*)msg; lline[1] = (char*)msg1; // lline[2] =(char*) msg2; nameNum[0] = 0; eepromReadStr(EEaddrIp, oip); lline[3] = (char*)"IP:"; lline[4] = oip; draw(0); delay(2000); if (!digitalRead(ContrastPin)) { NOKIAcontrast += 1; if (NOKIAcontrast > 0xCF) NOKIAcontrast = 0xB0; EEPROM.write(EEaddr1, NOKIAcontrast) ; itoa(NOKIAcontrast, title, 16); lline[2] = title; goto ReStart; } setTimer2(); setTimer1(); lline[2] = (char*)msg2; draw(0); } //////////////////////////////////////// // Clear all buffers and indexes void clearAll() { title[0] = 0; station[0] = 0; for (int i = 1; i < LINES; i++) { lline[i] = NULL; iline[i] = 0; tline[i] = 0; } } //////////////////////////////////////// void cleartitle() { title[0] = 0; for (int i = 3; i < LINES; i++) // clear lines { lline[i] = NULL; iline[i] = 0; tline[i] = 0; } } //////////////////////////////////////// void removeUtf8(byte *characters) { int index = 0; while (characters[index]) { if ((characters[index] >= 0xc2) && (characters[index] <= 0xc3)) // only 0 to FF ascii char { // Serial.println((characters[index])); characters[index + 1] = ((characters[index] << 6) & 0xFF) | (characters[index + 1] & 0x3F); int sind = index + 1; while (characters[sind]) { characters[sind - 1] = characters[sind]; sind++; } characters[sind - 1] = 0; } index++; } } //////////////////////////////////////// void eepromReadStr(int addr, char* str) { byte rd; do { rd = EEPROM.read(addr++); *str = rd; // Serial.println(str[0],16); str++; } while (( rd != 0) && ( rd != 0xFF)); *str = 0; } //////////////////////////////////////// void eepromWriteStr(int addr, char* str) { byte rd; do { EEPROM.write( addr++, *str); rd = *str; str++; } while (( rd != 0) && ( rd != 0xFF)); EEPROM.write( addr, 0); } //////////////////////////////////////// void separator(char* from) { byte len; char* interp; len = strlen(from); while (from[strlen(from) - 1] == ' ') from[strlen(from) - 1] = 0; // avoid blank at end while ((from[0] == ' ') ) { strcpy( from, from + 1); } interp = strstr_PF(from, PSTR(" - ")); if (from == nameset) { lline[0] = nameset; lline[1] = NULL; lline[2] = NULL; return; } if (interp != NULL) { from[interp - from] = 0; lline[(from == station) ? 1 : 3] = from; lline[(from == station) ? 2 : 4] = interp + 3; } else { lline[(from == station) ? 1 : 3] = from; } } //////////////////////////////////////// // parse the karadio received line and do the job void parse(char* line) { char* ici; removeUtf8((byte*)line); ////// reset of the esp if ((ici = strstr_PF(line, PSTR("VS Version"))) != NULL) setup2(); else ////// Meta title if ((ici = strstr_PF(line, PSTR("META#: "))) != NULL) { cleartitle(); strcpy(title, ici + 7); separator(title); askDraw = true; } else ////// ICY4 Description if ((ici = strstr_PF(line, PSTR("ICY4#: "))) != NULL) { // cleartitle(); strcpy(genre, ici + 7); lline[2] = genre; askDraw = true; } else ////// ICY0 station name if ((ici = strstr_PF(line, PSTR("ICY0#: "))) != NULL) { int len; clearAll(); if (strlen(ici + 7) == 0) strcpy (station, nameset); else strcpy(station, ici + 7); separator(station); askDraw = true; } else ////// STOPPED if ((ici = strstr_PF(line, PSTR("STOPPED"))) != NULL) { digitalWrite(PIN_PLAYING, LOW); cleartitle(); strcpy_P(title, PSTR("STOPPED")); separator(title); askDraw = true; } /////// Station Ip else if ((ici = strstr_PF(line, PSTR("Station Ip: "))) != NULL) { eepromReadStr(EEaddrIp, oip); if ( strcmp(oip, ici + 12) != 0) eepromWriteStr(EEaddrIp, ici + 12 ); } else //////Nameset if ((ici = strstr_PF(line, PSTR("MESET#: "))) != NULL) { int len; strcpy(nameset, ici + 8); ici = strstr(nameset, " "); strncpy(nameNum, nameset, ici - nameset + 1); nameNum[ici - nameset + 1] = 0; strcpy(nameset, nameset + strlen(nameNum)); separator(nameset); } else //////Playing if ((ici = strstr_PF(line, PSTR("YING#"))) != NULL) { digitalWrite(PIN_PLAYING, HIGH); if (strcmp_P(title, PSTR("STOPPED")) == 0) { title[0] = 0; separator(title); askDraw = true; } } else //////Volume if ((ici = strstr(line, "VOL#:")) != NULL) { volume = atoi(ici + 6); askDraw = true;; } else //////Date Time ##SYS.DATE#: 2017-04-12T21:07:59+01:00 if ((ici = strstr(line, "SYS.DATE#:")) != NULL) { char lstr[30]; if (*(ici + 11) != '2') //// invalid date. try again later { askDraw = true; return; } strcpy(lstr, ici + 11); dt = gmtime(×tamp); int year, month, day, hour, minute, second; sscanf(lstr, "%04d-%02d-%02dT%02d:%02d:%02d", &(year), &(month), &(day), &(hour), &(minute), &(second)); dt->tm_year = year; dt->tm_mon = month - 1; dt->tm_mday = day; dt->tm_hour = hour; dt->tm_min = minute; dt->tm_sec = second; dt->tm_year -= 1900; timestamp = mktime(dt); syncTime = true; } } //////////////////////////////////////// // receive the esp8266 stream void serial() { char temp; while ((temp = Serial.read()) != -1) { switch (temp) { case '\n' : if (index == 0) break; case '\r' : line[index] = 0; // end of string index = 0; parse(line); break; default : // put the received char in line line[index++] = temp; if (index > BUFLEN - 1) //break; // small memory so small buffer { Serial.println(F("overflow")); line[index] = 0; parse(line); index = 0; } } } } //////////////////////////////////////// // draw all lines void draw(int xx) { char strsec[30]; dt = gmtime(×tamp); if (x == 84) sprintf(strsec, "%02d-%02d %02d:%02d:%02d", (dt->tm_mon) + 1, dt->tm_mday, dt->tm_hour, dt->tm_min, dt->tm_sec); else sprintf(strsec, "%02d-%02d-%04d %02d:%02d:%02d", dt->tm_mday, (dt->tm_mon) + 1, dt->tm_year + 1900, dt->tm_hour, dt->tm_min, dt->tm_sec); //lcd.autoscroll(); if (dt->tm_sec % 10 == 0) lcd.clear(); lcd.setCursor(0, 0); a = lline[0]; a = a.substring(0, 20); if (dt->tm_sec % 10 < 5)lcd.print(a); else lcd.print(strsec); //station a = lline[1]; a = a.substring(0, 20); lcd.setCursor(0, 1); lcd.print(a); //title a = lline[3]; a = a.substring(0, 20); lcd.setCursor(0, 2); lcd.print(a); //nameset a = lline[4]; a = a.substring(0, 20); lcd.setCursor(0, 3); lcd.print(a); //nameNum //strsec //lline[0] /* u8g.firstPage(); do { u8g.drawHLine(0, (4 * y) - (y / 2) - 5, x); u8g.drawBox(0, 0, x - 1, y); for (int i = 0; i < LINES; i++) { if (i == 0)u8g.setColorIndex(0); else u8g.setColorIndex(1); if (i >= 3) z = y / 2 - 3; else z = -1; if ((lline[i] != NULL)) { if (i == 0) { if (nameNum[0] == 0) u8g.drawStr(1, 0, lline[i] + iline[i]); else { u8g.drawStr(1, 0, nameNum); u8g.drawStr(u8g.getStrPixelWidth(nameNum) - 2, 0, lline[i] + iline[i]); } } else u8g.drawStr(0, y * i + z, lline[i] + iline[i]); } if (i == VOLUME) { u8g.drawFrame(0, y * i + z + (y / 2) - 1, x - 1, 3); u8g.drawHLine(0, y * i + z + (y / 2), ((uint16_t)(x * volume) / 255)); } } //time // if ((lline[4] == NULL)||(x==84)) u8g.drawStr(x / 2 - (u8g.getStrWidth(strsec) / 2), yy - y, strsec); } while ( u8g.nextPage() ); */ } //////////////////////////////////////// // scroll each line /* void scroll() { unsigned len; for (int i = 0; i < LINES; i++) { if (tline[i] > 0) { if (tline[i] == 4) iline[i] = 0; tline[i]--; } else { len = u8g.getStrWidth(lline[i] + iline[i]); if (i == 0) len += u8g.getStrWidth(nameNum) ; if (len > x) { iline[i]++; askDraw = true; } else tline[i] = 6; } } } */ #ifdef IR void nbStation(char nb) { if (strlen(irStr) >= 3) irStr[0] = 0; uint8_t id = strlen(irStr); irStr[id] = nb; irStr[id + 1] = 0; } void translateIR() // takes action based on IR code received // KEYES Remote IR codes (NEC P01) // and Ocean Digital remote (NEC P07) { #ifdef IRLib2 if (irrecv.getResults()) { results.decode(); #else if ((irrecv.decode(&results))) { #endif // Uncomment the following line to see the code of your remote control and report to the case the value #ifdef IRLib2 // Serial.print(F("Protocol:"));Serial.print(results.protocolNum);Serial.print(F(" value:"));Serial.println(results.value,HEX); #else // Serial.print(F("Protocol:"));Serial.print(results.decode_type);Serial.print(F(" value:"));Serial.println(results.value,HEX); #endif // Serial.print(F(" value:"));Serial.println(results.value,HEX); switch (results.value) { case 0xFF629D: case 0x10EF48B7: /*(" FORWARD");*/ irStr[0] = 0; Serial.print(F("cli.next\r")); break; case 0xFF22DD: case 0x10EFA857: case 0x10EF42BD: /*(" LEFT");*/ irStr[0] = 0; Serial.print(F("cli.vol-\r")); break; case 0xFF02FD: case 0x10EF7887: /*(" -OK-");*/ { // state?Serial.print(F("cli.start\r")):Serial.print(F("cli.stop\r")); if (strlen(irStr) > 0) { Serial.print(F("cli.play(\"")); Serial.print(irStr); Serial.print(F("\")\r")); irStr[0] = 0; } else { state ? Serial.print(F("cli.start\r")) : Serial.print(F("cli.stop\r")); /* if (state) Serial.print("cli.start\r"); else Serial.print("cli.stop\r"); */ } state = !state; irStr[0] = 0; break; } case 0xFFC23D: case 0x10EF28D7: case 0x10EF827D: /*(" RIGHT");*/ irStr[0] = 0; Serial.print(F("cli.vol+\r")); break; // volume + case 0xFFA857: case 0x10EFC837: /*(" REVERSE");*/ irStr[0] = 0; Serial.print(F("cli.prev\r")); break; case 0xFF6897: case 0x10EF807F: /*(" 1");*/ nbStation('1'); break; case 0xFF9867: case 0x10EF40BF: /*(" 2");*/ nbStation('2'); break; case 0xFFB04F: case 0x10EFC03F: /*(" 3");*/ nbStation('3'); break; case 0xFF30CF: case 0x10EF20DF: /*(" 4");*/ nbStation('4'); break; case 0xFF18E7: case 0x10EFA05F: /*(" 5");*/ nbStation('5'); break; case 0xFF7A85: case 0x10EF609F: /*(" 6");*/ nbStation('6'); break; case 0xFF10EF: case 0x10EFE01F: /*(" 7");*/ nbStation('7'); break; case 0xFF38C7: case 0x10EF10EF: /*(" 8");*/ nbStation('8'); break; case 0xFF5AA5: case 0x10EF906F: /*(" 9");*/ nbStation('9'); break; case 0xFF42BD: case 0x10EFE817: /*(" *");*/ irStr[0] = 0; Serial.print(F("cli.stop\r")); break; case 0xFF4AB5: case 0x10EF00FF: /*(" 0");*/ nbStation('0'); break; case 0xFF52AD: case 0x10EFB847: /*(" #");*/ irStr[0] = 0; Serial.print(F("cli.start\r")); break; case 0xFFFFFFFF: /*(" REPEAT");*/break; default:; /*Serial.println(" other button ");*/ }// End Case ; #ifdef IRLib2 irrecv.enableIRIn(); //Restart receiver #else irrecv.resume(); // receive the next value #endif } } //END translateIR #endif void askTime() { if (itAskTime) // time to ntp. Don't do that in interrupt. { Serial.print(F("sys.date\r")) ; itAskTime = false; } } //////////////////////////////////////// void loop(void) { #ifdef IR translateIR(); #endif // Serial.println(dt->tm_sec/10); // Serial.println(dt->tm_sec%10); // delay(500); // scrolling control and draw control if (loopScroll >= 1 ) // 500ms { digitalWrite(PIN_LED, !digitalRead(PIN_LED)); // blink led loopScroll = 0; if (askDraw) // something to display { askDraw = false; draw(0); } // else // scroll(); } // ntp control and first info demand if (loopDate >= 5) { loopDate = 0; if (itAskTime) { if (!syncTime) // time to ntp. Don't do that in interrupt. { Serial.print(F("\rsys.tzo(\"")) ; Serial.print(TZO); Serial.print(F("\")\r")); Serial.print(F("cli.info\r")); // Synchronise the current state itAskTime = false; } else askTime(); } } }Это модуль с чипом ESP32-S2, без расширенной памяти.
Кратко - новый проц, умеет USB OTG, 43 программируемых GPIO.
Подробно
На Али уже wrover'ы с новым чипом появились
Спасибо за инфо! В, общем, пока каких то революционных изменений для проекта он не несет.
Можно попробовать собрать прошивочку под этот чип, но имхуется мне что это будет вариант только с вээской. Зато можно будет поэксперементировать с параллельными дисплеями. Гпиошек то до и больше. Еще и уэсби он борд. Это плюс. Может флешку уэсбишную сможет как плеер поиграть.
У Вас на плате есть SD карта, но она еще "в резерве". Я, наверное, пишу ерунду: раз там дохрена gpio, может с этим чипом проще ее будет задействовать, да и usb otg.
Плату придется перерабатывать. Надо подождать пока кто нить не прикупит зверька. И над ним поэксперементировать ;)
Пришла ESP8266. Прошил под KaRadio последний релиз + VS, потом на всякий обновился через OTA. Итог:
To DM86: LCD работает. Проверяйте прошивки, настройки, соединение, живость портов.
To Vanya venikov: OGG запело только на 192 kb/s, на 64 та же (типа) станция не поет. На ESP32 на 1.9R7 не поют обе.
Увидел что в аддонах для карадио на STM есть подключения цифрового приёмника на IIC. Тут вроде писали, что в программе есть закомментированные блоки для его работы. Это просто пожелания аддоно-делателей с заделом не будущее? Или обычная лень, типа что-то взяли или изменили, а поменять схему (забыли, лень, некогда, сами разберутся , чай не маленькие)? Кто-нибудь проверял?
Увидел что в аддонах для карадио на STM есть подключения цифрового приёмника на IIC. Тут вроде писали, что в программе есть закомментированные блоки для его работы. Это просто пожелания аддоно-делателей с заделом не будущее? Или обычная лень, типа что-то взяли или изменили, а поменять схему (забыли, лень, некогда, сами разберутся , чай не маленькие)? Кто-нибудь проверял?
Но не на СТМ, а на ЕСП32
Как раз типа таким, на SI4735, и пытаюсь "мучаться"... Но в фуллрежиме... типа и КВ с SSB и прочим... ФоМа уж прицепом.
Но не на СТМ, а на ЕСП32
Интересно, можно подробнее?
Как раз типа таким, на SI4735, и пытаюсь "мучаться"... Но в фуллрежиме... типа и КВ с SSB и прочим... ФоМа уж прицепом.
Но не на СТМ, а на ЕСП32
Интересно, можно подробнее?
По подробнее... ну пока получается все раздельно... на одной ЕСПешке вроде получается запустить и интернетрадио и вещь от Рикардо Каррати (он написал замечательную библу для SI4735 для всеволнового эфирного приемника) ... трабла для меня как недопрограммера оформить это в визуальный фейс для тача на 9341...
To nva: Микруха интересная, будем посмотреть. Вопрос был больше о том, что на гите у GPC для ESP и схемы правильные, и настройки на фото, и файлы. А в карадио-аддонс - то связь не дорисуют , то лишнюю приблуду добавят, то файлов каких-то лишних насуют :)
To ShAlex: Всё же это ветка для интернет радио. Всем 73.
To nva: Микруха интересная, будем посмотреть.
Как то получается что СиликонЛабс уже ее потихому замещает более новыми... останутся китайские "закрома".
To nva: Заведите отдельную ветку "Всеволновый эфирный приемник"
Очень интересно. 73!
Не- не-не. Ежели в коалициии с инетрадио, то туть и только туть.
To nva: Заведите отдельную ветку "Всеволновый эфирный приемник"
Очень интересно. 73!
Для завести и вести надо время... а его не хватает... да я и просто чаще повторяльщик... беру инфу в группе в фейсе. https://www.facebook.com/groups/532613604253401/ (не реклама), там и Рикардо постоянно онлайн, куча вариантов программы, плат, схем... герберы для своих плат брал оттуда. Там и наши соотечественники отметились..
беру инфу в группе в фейсе. https://www.facebook.com/groups/532613604253401/ (не реклама), там и Рикардо постоянно онлайн, куча вариантов программы, плат, схем... герберы для своих плат брал оттуда. Там и наши соотечественники отметились..
Ради этого заводить еще одну говносеть нет желания...
To DM86: LCD работает. Проверяйте прошивки, настройки, соединение, живость портов.
Разобрался, все норм, работает и на 32 и на 8266.
Теперь появились вопросы, хотелось бы чтобы в первой строке было название из списка а не из инфы о радио, так как иногда там какая-то ерунда... При движении строки с именем и исполнителем, верхняя мерцает в такт движения, думаю это можно прописать в скетче как-то...
Но самое главное это отсутствие кириллицы. Пробовал скачать библиотеки с кириллицей, но тогда ругается компилятор на строку begin.lcd(BAUD). Как понимаю проблема разрешима, но откуда лучше копать?
Для замены станции: Вместо "ICY0#: " вставляем "ESET#: "
Подергиваться будет так как обновляются все строки.
Ругается потому что подсовываете не ту библиотеку( с Амперки спокойно подошла). Но главное , судя по фото, русского у Вас в дисплее нет. Как вариант искать(делать) библиотеку с использованием своих символов. В начале темы было обсуждение и попытки, но по итогу всё равно будет кривенько - не более 8 русских букв на экран, остальные как повезёт.
Ещё получилось подключить китайский LCD12864. Правда время не устанавливается, то-ли ESP8266 такая, то-ли отвалилось, то-ли уровень маленький. А проверять уже лень, т.к. использовать всё равно не буду.
беру инфу в группе в фейсе. https://www.facebook.com/groups/532613604253401/ (не реклама), там и Рикардо постоянно онлайн, куча вариантов программы, плат, схем... герберы для своих плат брал оттуда. Там и наши соотечественники отметились..
Ради этого заводить еще одну говносеть нет желания...
Это каждому свое... а для любителей послушать эфир - китайцы выпустили Малахит2 ценой около 5-7 тр, если он полный клон, то это ниже чем его можно купить от наших.
Это каждому свое... а для любителей послушать эфир - китайцы выпустили Малахит2 ценой около 5-7 тр, если он полный клон, то это ниже чем его можно купить от наших.
А где-то можно качнуть архив радио ESP32+SI4735 ?