KaRadio + Smalody = Love
Сказ о том, как один мужик (то бишь я) жене своей приятное решил сделать - wifi радио собрать, а не то что вы подумали.
Началось все с безобидного желания моей второй половинки слушать ее любимое радио без шипения и опасности быть ударенной по голове упавшем с холодильника (там ему самое место для хорошего приема) FM приемником GoldStar. Согласитесь же, не такое уж и заоблачное желание как новая норковая шубка или абонемент в spa салон в Египте на 2 недели.
Прочитав первую попавшуюся статью про радио на базе ESP8266 и увидев кучу недостатков, решил что буду собирать свой вариант на базе STM32F4xx серии и ESP8266 в качестве WiFi моста. Победив всех драконов в виде кодека mp3 Helix, заиканий при передаче данных с esp и еще не помню каких, столкнулся лбом с железными воротами в виде нежелания "Нового радио" отдавать поток по IP (только строка с адресом), решил поштудировать интернет повнимательнее. Каково же было мое удивление, когда я нашел проект KaRadio на ESP32, где были мои глаза раньше. Заказал сначала с Али Wroom, потом почитал побольше и решил собирать на Wrover с допонителной памятью. Вторая посылка пришла очень быстро - около 2 недель, на ней и собрал первый вариант. С кондачка пролить прошивку не получится, поэтому читаем и делаем все внимательно.
Схему приведу ниже, кнопки и светодиод себе не паял :
Для начала, припаяем вывод EN через резистор на 10K к +3V3 , а IO0 притянем к земле. Не забудем соединить TX USB-COM переходника c RXDO esp-шки, а RX к TXDO, про питание +3V3 и GND, надеюсь вы тоже не забыли.
Для прошивки необходимо скачать и установить программу ESP32 DOWNLOAD TOOL, для Wrover выберем файл standard_psram.binа для Wroom standard_adb.bin . Все файлы берем в актуальном архиве папки binaries с официального сайта KaRadio GitHub karawin. После нескольких минут ожидания окончании прошивки, Downloading изменится на Finish, настройки выставляйте как на картинке :
Сначала плата VS1053 у меня работать нормально не захотела, ее отдал я на опыты с STM32F407 и подключил I2S DAC PCM5102. Потом, разобравшись, подключил VS1053, разочаровался в качестве и вернул на место PCM5102. Схема подключения такая :
Таблица соединений :
PCM5102 ---- ESP32- 3V3 ----- 3V3
- GND ----- GND
- FLT ----- GND
- DMP ----- GND
- SCL ----- GND
- BCK ----- IO26
- DIN ----- IO22
- LCK ----- IO25
- FMT ----- GND
- XMT ----- 3V3
Энкодер подключается к разным платам так :
Таблица соединений :
Encoder ---- Wrover ---- Wroom- 5V ----- 3V3 ---- 3V3
- KEY ---- IO5 ---- IO5
- S1 ----- IO27 --- IO17
- S2 ----- IO15 --- IO16
- GND ---- GND ---- GND
Дисплей I2C OLED 128x64 на 0.96" маловат, заказал 1.13", самое то :
Таблица соединений :
SSD1306 ---- ESP32- VDD ----- 3V3
- GND ----- GND
- SCK ----- IO14
- SDA ----- IO13
В последнее время присылают дисплеи на контроллере SH1106, который имеет непринципиальные отличия, читайте прошлый урок.
Если у вас появились странные полоски слева, значит у Вас SSD1306, через telnet необходимо подать команду sys.lcd("1"). Подробнее что такое telnet и о командах расскажу после электронной части.
Если же полоски справа, то у Вас SH1106 и через telnet необходимо подать команду sys.lcd("0").
Питание сделал автономное от аккамулятора со схемой зарядки MH-CD42, повышающим напряжение до 5V. Модуль взял такой :
С подключением, думаю у Вас проблем не будет Li-Ion 18650 подключаем к BAT и GND, с зарядника microUSB на VIN и GND. Выход OUT-5V подключать напрямую к ESP32 нельзя - спалите, поэтому в разрыв ставим DC-DC преобразователь MP2315 с высоким КПД :
На вход подключаем +5V и GND с модуля MH-CD42, обрезаем дорожку около ADJ (красный кружок) и припаиваем перемычку на 3.3V (синий кружок).
На выход, подключенный к ESP32, поставим танталовый электролит на 100-220 мкФ 6.3V или больше по питанию. Модуль MH-CD42 обладает неприятной особенностью, при отключении внешнего питания в конце зарядки он переключается на питание от батареи с задержкой, и ESP перегружается. Советую поставить на выход MH-CD42 электролит на 4700мкФ 6.3V, думаю должно хватить. Сам не пробовал, как только приемник опять раскурочу - обязательно поставлю.
Керамический конденсатор поставил на PCM5102 - на аналоговой части он нужнее, вот что получилось в итоге :
На фото выше - самодельная WiFi антена из фольги с текстолита, вырезал сам на замену порванной в планшете PIPO. Потом на Алике заказал заводские, на текущей момент у меня в приемнике правая, сильной разницы не почуствовал :
Если прошивка правильно зашилась, при первом включении вы увидите на экране сообщение о том, что необходимо подключится к точке доступа, ищем сеть WifiKaradio :
Открываем web браузер и для настройки заходим по адресу 192.168.4.1 , подождите, страница может грузиться более минуты. Вашему взору откроется Web интерфейс KaRadio, необходимо открыть вкладку настроек и выбрать аудиовыход I2S, прописать свои точки доступа с паролем и можете закачать мой список станций, ссылку дам в конце :
После полевых испытаний, необходимо затолкать все это в корпус, сначала я пожадничал и заказал bluetooth колонку шириной 15см, когда я ее разобрал - понял, что туда все просто не влезет. Перезаказал шириной 25см, продавец оказался жуком (колорадским), после 3 месяцев ожидания и открытия диспута с возвратом денег через 2 дня я ее получил курьером CDEK, в итоге она обошась мне на 300руб дороже из-за потолстевшего Б. Франклина :
У этой колонки винтиков на верхней панели не было, отколупывать отверткой было боязно, решил открутить динамик и выяснить как там устроено, как видно, что кроме термосоплей там ничего нет. С помощью фена, отвертки и японской матери (странно, колонка то китайская) потихоньку начал вытаскивать панель :
Еще немного терпения и все получилось, как видно без потерь не обошлось, клей от Henkel в помощь. Интересно было посмотреть схемку, недалекие познания в китайском языке позволили понять, что CS8389E это стерео усилитель на 4.8 китайских Ватт, AS19AP22624 это bluetooth RISC CPU типа AC6925A, SUN4012 даташит не нашел, но скорее всего это контроллер заряда Li-Ion типа TP4056.
В описании колонки : "Емкость аккумулятора: 1500 мАч", заряда хватало меньше чем на день, что же, будем выводить жуликов на чистую воду, клон Imax B6 показал вот такую картину :
Не думал, что все настолько плохо, всего 634mAh, очень надеялся на результат в районе 900mAh. Пришлось взять когда-то переразряженный аккумулятор, в результате тестирования кривых модулей из Китая, он потерял ёмкость с ~2500mAh до 2000mAh, сюда хватило с запасом.
Со старого снимаем скорлупу, под ней схема контроля переразряда, она то нам и нужна, аккуратно оторвем никелевые шины от старого аккумулятора и припаяем к новому и закутываем в термоусадку от греха подальше :
Новый аккумулятор, чтоб не болтался, приклеиваем на термосопли, оставшиеся от старого. С модуля MP-CD42 необходимо вывести провода питания и кнопки для отдельного от колонки включения (выключения) питания KaRadio. Аналогично, в термоусадку, упаковываем аккумулятор и схему питания Ka-radio, приклеиваем рядом :
Для схемы питания Ka-radio напряжение берем с микросхемы зарядки колонки 4-я нога +5V, звуковой выход припаиваем на входной разъем, автоматически он не активируется и не переключается кнопкой mode (пока не вставлен штекер), поэтому четвертый контакт замыкаем на землю :
Сверлим отверстие под шток энкодера (пришлось развальцовывать - не хватило длины штока) и проводки для кнопки выключения питания. Затем, аккуратно, засовываем все во внутрь, просовываем аккуратно провода от дисплея :
Для настройки режимов через telnet необходимо установить программу PuTTY. Для связи с KaRadio прописываем его адрес, порт 23, выбираем протокол telnet, для красивого форматирования поставим галочки CR и LF и кликаем на Open :
После соединения можете подать команду sys.version :
Полное описание команд вы можете найти на странице Interfaces of KaRadio and KaRadio32 ниже дам список команд, которые понадобились мне :
- sys.lcd("1") --- выбрать тип OLED дисплея SSD1306 или 0 для SH1106
- sys.tzo("2") --- установить часовой пояс для Москвы
- sys.lcdout("10") --- каждая служебная информация (название песни и т.п.) включает дисплей на 10 секунд
- sys.boot --- перезагрузка радио
Обещанная ссылка на мой список станций и внешний вид того, что получилось :
Адрес для контактов : imax9@narod.ru
Если вам понравились мои работы и вы желаете поддержать сайт - сделайте дотацию.
При копировании статьи – обязательна ссылка на авторство и источник. Без разрешения автора копирование запрещено.
© Максим Ильин 2020г.