Imax9
NEWS   ARTICLES   MINIMIG   FILES   ABOUT

KaRadio + Smalody = Love

Сказ о том, как один мужик (то бишь я) жене своей приятное решил сделать - wifi радио собрать, а не то что вы подумали.

Началось все с безобидного желания моей второй половинки слушать ее любимое радио без шипения и опасности быть ударенной по голове упавшем с холодильника (там ему самое место для хорошего приема) FM приемником GoldStar. Согласитесь же, не такое уж и заоблачное желание как новая норковая шубка или абонемент в spa салон в Египте на 2 недели.

Прочитав первую попавшуюся статью про радио на базе ESP8266 и увидев кучу недостатков, решил что буду собирать свой вариант на базе STM32F4xx серии и ESP8266 в качестве WiFi моста. Победив всех драконов в виде кодека mp3 Helix, заиканий при передаче данных с esp и еще не помню каких, столкнулся лбом с железными воротами в виде нежелания "Нового радио" отдавать поток по IP (только строка с адресом), решил поштудировать интернет повнимательнее. Каково же было мое удивление, когда я нашел проект KaRadio на ESP32, где были мои глаза раньше. Заказал сначала с Али Wroom, потом почитал побольше и решил собирать на Wrover с допонителной памятью. Вторая посылка пришла очень быстро - около 2 недель, на ней и собрал первый вариант. С кондачка пролить прошивку не получится, поэтому читаем и делаем все внимательно.

Схему приведу ниже, кнопки и светодиод себе не паял :

Sxema

Для начала, припаяем вывод EN через резистор на 10K к +3V3 , а IO0 притянем к земле. Не забудем соединить TX USB-COM переходника c RXDO esp-шки, а RX к TXDO, про питание +3V3 и GND, надеюсь вы тоже не забыли.

CP1251 Wrover

Для прошивки необходимо скачать и установить программу ESP32 DOWNLOAD TOOL, для Wrover выберем файл standard_psram.binа для Wroom standard_adb.bin . Все файлы берем в актуальном архиве папки binaries с официального сайта KaRadio GitHub karawin. После нескольких минут ожидания окончании прошивки, Downloading изменится на Finish, настройки выставляйте как на картинке :

downloading finish

Сначала плата VS1053 у меня работать нормально не захотела, ее отдал я на опыты с STM32F407 и подключил I2S DAC PCM5102. Потом, разобравшись, подключил VS1053, разочаровался в качестве и вернул на место PCM5102. Схема подключения такая :

pcm5102

Таблица соединений :

PCM5102 ---- ESP32

Энкодер подключается к разным платам так :

encoder

Таблица соединений :

Encoder ---- Wrover ---- Wroom


Дисплей I2C OLED 128x64 на 0.96" маловат, заказал 1.13", самое то : oled

Таблица соединений :

SSD1306 ---- ESP32

В последнее время присылают дисплеи на контроллере SH1106, который имеет непринципиальные отличия, читайте прошлый урок.

ssd1306


Если у вас появились странные полоски слева, значит у Вас SSD1306, через telnet необходимо подать команду sys.lcd("1"). Подробнее что такое telnet и о командах расскажу после электронной части.




 

sh1106


Если же полоски справа, то у Вас SH1106 и через telnet необходимо подать команду sys.lcd("0").






Питание сделал автономное от аккамулятора со схемой зарядки MH-CD42, повышающим напряжение до 5V. Модуль взял такой :

MHCD42_1 MHCD42_2

С подключением, думаю у Вас проблем не будет Li-Ion 18650 подключаем к BAT и GND, с зарядника microUSB на VIN и GND. Выход OUT-5V подключать напрямую к ESP32 нельзя - спалите, поэтому в разрыв ставим DC-DC преобразователь MP2315 с высоким КПД :

mp2315_1 mp2315_2

На вход подключаем +5V и GND с модуля MH-CD42, обрезаем дорожку около ADJ (красный кружок) и припаиваем перемычку на 3.3V (синий кружок).

tantal

На выход, подключенный к ESP32, поставим танталовый электролит на 100-220 мкФ 6.3V или больше по питанию. Модуль MH-CD42 обладает неприятной особенностью, при отключении внешнего питания в конце зарядки он переключается на питание от батареи с задержкой, и ESP перегружается. Советую поставить на выход MH-CD42 электролит на 4700мкФ 6.3V, думаю должно хватить. Сам не пробовал, как только приемник опять раскурочу - обязательно поставлю.



Керамический конденсатор поставил на PCM5102 - на аналоговой части он нужнее, вот что получилось в итоге :

На фото выше - самодельная WiFi антена из фольги с текстолита, вырезал сам на замену порванной в планшете PIPO. Потом на Алике заказал заводские, на текущей момент у меня в приемнике правая, сильной разницы не почуствовал :

antena1 antena2

Если прошивка правильно зашилась, при первом включении вы увидите на экране сообщение о том, что необходимо подключится к точке доступа, ищем сеть WifiKaradio :

WebAP espAP

Открываем web браузер и для настройки заходим по адресу 192.168.4.1 , подождите, страница может грузиться более минуты. Вашему взору откроется Web интерфейс KaRadio, необходимо открыть вкладку настроек и выбрать аудиовыход I2S, прописать свои точки доступа с паролем и можете закачать мой список станций, ссылку дам в конце :

После полевых испытаний, необходимо затолкать все это в корпус, сначала я пожадничал и заказал bluetooth колонку шириной 15см, когда я ее разобрал - понял, что туда все просто не влезет. Перезаказал шириной 25см, продавец оказался жуком (колорадским), после 3 месяцев ожидания и открытия диспута с возвратом денег через 2 дня я ее получил курьером CDEK, в итоге она обошась мне на 300руб дороже из-за потолстевшего Б. Франклина :

У этой колонки винтиков на верхней панели не было, отколупывать отверткой было боязно, решил открутить динамик и выяснить как там устроено, как видно, что кроме термосоплей там ничего нет. С помощью фена, отвертки и японской матери (странно, колонка то китайская) потихоньку начал вытаскивать панель :

dirka

Еще немного терпения и все получилось, как видно без потерь не обошлось, клей от Henkel в помощь. Интересно было посмотреть схемку, недалекие познания в китайском языке позволили понять, что CS8389E это стерео усилитель на 4.8 китайских Ватт, AS19AP22624 это bluetooth RISC CPU типа AC6925A, SUN4012 даташит не нашел, но скорее всего это контроллер заряда Li-Ion типа TP4056.

open board

В описании колонки : "Емкость аккумулятора: 1500 мАч", заряда хватало меньше чем на день, что же, будем выводить жуликов на чистую воду, клон Imax B6 показал вот такую картину :

ImaxB6

Не думал, что все настолько плохо, всего 634mAh, очень надеялся на результат в районе 900mAh. Пришлось взять когда-то переразряженный аккумулятор, в результате тестирования кривых модулей из Китая, он потерял ёмкость с ~2500mAh до 2000mAh, сюда хватило с запасом.



Со старого снимаем скорлупу, под ней схема контроля переразряда, она то нам и нужна, аккуратно оторвем никелевые шины от старого аккумулятора и припаяем к новому и закутываем в термоусадку от греха подальше :

Новый аккумулятор, чтоб не болтался, приклеиваем на термосопли, оставшиеся от старого. С модуля MP-CD42 необходимо вывести провода питания и кнопки для отдельного от колонки включения (выключения) питания KaRadio. Аналогично, в термоусадку, упаковываем аккумулятор и схему питания Ka-radio, приклеиваем рядом :

Для схемы питания Ka-radio напряжение берем с микросхемы зарядки колонки 4-я нога +5V, звуковой выход припаиваем на входной разъем, автоматически он не активируется и не переключается кнопкой mode (пока не вставлен штекер), поэтому четвертый контакт замыкаем на землю :

Сверлим отверстие под шток энкодера (пришлось развальцовывать - не хватило длины штока) и проводки для кнопки выключения питания. Затем, аккуратно, засовываем все во внутрь, просовываем аккуратно провода от дисплея :

Для настройки режимов через telnet необходимо установить программу PuTTY. Для связи с KaRadio прописываем его адрес, порт 23, выбираем протокол telnet, для красивого форматирования поставим галочки CR и LF и кликаем на Open :

PuttyPort PuttyLF

После соединения можете подать команду sys.version :

Telnet

Полное описание команд вы можете найти на странице Interfaces of KaRadio and KaRadio32 ниже дам список команд, которые понадобились мне :

Обещанная ссылка на мой список станций и внешний вид того, что получилось :

WifiRadio

Адрес для контактов : imax9@narod.ru

Если вам понравились мои работы и вы желаете поддержать сайт - сделайте дотацию.

При копировании статьи – обязательна ссылка на авторство и источник. Без разрешения автора копирование запрещено.

© Максим Ильин 2020г.

Яндекс.Метрика