Плюсы

Показаны сообщения с ярлыком JP Cocatrix. Показать все сообщения
Показаны сообщения с ярлыком JP Cocatrix. Показать все сообщения

воскресенье, 22 октября 2017 г.

Karadio - интернет радио на базе ESP32

Это вторая статья о замечательном проекте Karadio, который создан хорошим программистом и я уверен человеком, - JP Cocatrix. Страница всех его проектов на Github.
Но речь пойдет сегодня о новой ступени развития проекта Karadio - интернет радио на базе ESP32.
Постараюсь очень четко и по делу написать в помощь тем, кто, как и я плохо понимает иностранные языки, электронику.  Однако, иметь такое интересное радио хочется всем. Будет и просто перевод с github и мои дополнения.
Проект находится на стадии тестирования,  уверен, это скоро изменится. Для вывода звука можно исплользовать внутренний DAC (ЦАП), находящийся в ESP32 или подключить внешний DAC, например такой на Aliexpress.Ссылка может перестать работать, но можно поиском найти по запросу I2S PCM5102 DAC или просто I2S DAC. 
При использовании внутреннего DAC ничего не нужно, кроме усилителя, например PA8403 (с регулятором громкости даже). Либо использовать уже знакомую нам связку ESP32 и VS1053, при этом будет возможность прослушивать потоки AAC, чего нельзя сказать о режиме DAC или PDM. На режиме PDM я не буду останавливаться, потому что смысл будет такой же, как и у внутреннего DAC. Я попробовал включить этот режим, но шум сильный, как во время дождя. Автор Karawin пояснил, что нужна фильтрация. Я не стал заморачиваться, потому что с внутренним DAC качество воспроизведения меня удовлетворило. Если что можно применить внешний DAC или VS1053. Еще есть режим I2SMERU для подключения какого-то особого усилителя, можете сами разузнать.
Сначала займемся прошивкой ESP32. Будем говорить о заливке уже скомпилированной прошивки в память. Все необходимое для прошивки можно взять тут. Программа для прошивки здесь. Сама прошивка в нескольких файлах тут и тут. Скриншот программы, поясняющий куда и что заливать тут. Все выставляете, как написано, но пути к прошивочным файлам у вас могут быть свои (не стоит использовать пути с кириллическими символами, лучше только латиницей). Т. е. распаковываете все файлы для прошивки в отдельную папку (можно назвать ее Flash) на диске C: , потом путем нажатия на многоточия в конце строк прописываете аккуратно все пути к этим файлам. Правее в поле вводите то, что написано, на скриншоте.

Все остальное прописываете, как на скрине, кроме порта COM, его вы меняете на свой. посмотреть его можно в Диспетчере устройств, при подключении ESP32 появится COM порт (если драйверы вы уже поставили). Драйверы зависят от вашей операционной системы  и типа USB- COM адаптера, который установлен на вашей ESP32. Скорость BAUD как на картинке. Подключаете ESP32 к компьютеру и нажимаете START (у меня было так, никаких кнопок на самой плате я не нажимал). Ждете окончания прошивки и отключаете плату от USB. Можно приступать к соединению всей периферии.

Схема соединений

Сильно схеме не доверяйте, доверяйте только себе, но нарочно я не ввожу в заблуждение. Батарейки изображены условно, необходимо подключить 5В. Сегодня измерял ток потребления 0,15А при малой громкости. Блока питания на 0,5 - 1А должно хватить. Питание зависит от усилителя.
Итак,  если вы используете VS1053, то соединения такие:
 VS1053----ESP32 (номера GPIO)

XCS-----  GPIO_NUM_32
RST-----  GPIO_NUM_12
XDCS----- GPIO_NUM_33
DREQ----- GPIO_NUM_34
MISO----- GPIO_NUM_19
MOSI----- GPIO_NUM_23
CLK-----  GPIO_NUM_18
 
У меня номера GPIO указаны на самой плате или смотрите распиновку
Если используете внешний DAC по I2S, то соединения такие:
I2S DAC----ESP32
LRCK-------- GPIO_25
BCLK------- GPIO_26
DATA------- GPIO_22
Если используете DAC самой платы ESP32, то GPIO 25 и 26 подключаете к правому и левому каналу усилителя, а также соединяете GND усилителя и GND ESP32. GPIO 22 при этом не нужен. Также и для PDM режим, только надо будет выбрать его в web интерфейсе и все (ну и про фильтр вспомните для этого режима).
На данный момент поддерживается использование дисплея  OLED SSD1306 128x64.
Подсоединяем так:
SSD1306-----ESP32
SCL------ GPIO_14
SDA------ GPIO_13
МСС -----3.3v (или 5v)
GND-------GND
 
 
Энкодер:
DT-------GPIO_16
CLK ----  GPIO_17
SW------- GPIO_5
GND ---GND
+-----+5V
 
 
Дополнительно можно подключить светодиод для индикации работы радио ---GPIO 4.

Включение 

Проверяете все соединения и подключаете питание. На схеме показано общее питание для всей схемы, но предпочтительнее использовать отдельное питание для ESP32 и усилителя, для того, чтобы избежать дополнительных шумов. В режиме DAC при общем питании шумы я не заметил и качество хорошее. Смотрите сами. 
Через некоторое время после включения ESP32 создаст точку доступа WifiKaradio с IP адресом 192.168.4.1. Подключаетесь к этой сети с компьютера и в браузере переходите по этому IP. Переходите на вкладку SETTING и находите настройки Wifi. Вписываете данные своего роутера и нажимаете Validate, радио может перезагрузиться. В роутере ищите какой адрес IP выдан радио. В некоторых роутерах можно оставить автоматическую раздачу IP (DHCP), но для отдельных устройств назначить постоянные адреса, чтобы каждый раз не отгадывать IP.

После перезагрузки переходите в SETTING в Sound Setting и выбираете режим вывода звука, затем нажимаете Validate.

После перезагрузки можете приступить к формированию своего списка радиостанций или скачать уже созданный на вкладке SETTING---Playlist.



 Сегодня поговорим о добавлении к Karadio32 внешней платы DAC PCM5102. При выводе 
через эту плату звук стал более чистым и появились басы. При минимальной громкости в Web 
интерфейсе искажений никаких нет.
На плате есть выход Line Out для подключения внешнего усилителя. Наушники в этот разъем 
не подключить, звука никакого нет абсолютно. 

Схема соединений.

Схему подсказал пользователь сообщества Karadio.

PCM5102              ESP32
LCK                         GPIO25
BCK                        GPIO26
DIN                          GPIO22
XMT(XSMT)           подтянуть к +5в через резистор 10кОм
FMT                          GND
SCL(SCK)                 GND


Могут быть незначительные различия в названиях пинов PCM5102, но догадаться можно.
Также на плате есть пины для подключения внешнего усилителя (у меня это PAM8403)  LOUT LROUT AGND. Питание подал 5в.
При использовании данной платы нужно выставить режим I2S в Web интерфейсе Karadio.

понедельник, 2 января 2017 г.

Проект онлайн-радио Karadio на базе ESP8266 и VS1053



Хочу познакомить русскоязычных пользователей интернета с очень интересным проектом под названием Karadio. Данное устройство позволяет проигрывать потоки интернет-радиостанций, которых огромное множество на сегодня. Устройство полностью автономно и способно воспроизводить потоки без участия компьютера. Устройству необходим только выход в интернет посредством Wifi (например, с помощью роутера).
Для самого минимума постройки этого проекта необходимо две платы ESP8266 и VS1053. Можно добавить дополнительно усилитель для вывода звука на динамики и различного рода дисплеи для отображения информации о потоке. Понадобится еще блок питания на 5В и 3,3В или преобразователи напряжения DC-DC. При подключении дисплея необходима плата Arduino mini или nano.
На данный момент этот проект является самым прогрессивным на территории интернета (как мне кажется).

 С руссификацией дисплея уже разобрался, нашел в интернете шрифт кириллический на ЭТОЙ странице и просто скопировал его числовой массив в один из ненужных шрифтов. Править нужно файл u8g_font_data.c по пути "C:\Users\Andrew\Documents\Arduino\libraries\U8glib_Arduino-master\src\clib" у вас может быть чуть иной путь.
Теперь все нормально отображается, стало удобнее пользоваться радио, потому что я слушаю преимущественно русскоязычные радиостанции.
Более подробно об этом проекте можно узнать на страницах сайтов:

По этим ссылкам вы можете найти схему устройства, прошивку для ESP8266 и Arduino Pro mini, а также связаться с автором проекта, написать ему сообщение. Если вам понравится эта разработка, то есть возможность поддержать автора материально.

А пока можно посмотреть на то, как получилось повторить эту конструкцию мне. Онлайн-радио сделано на базе готовой mp3 колонки (кубика) Atlanfa, которую можно найти сейчас почти везде. Отсеком для дополнительных аккумуляторов я пожертвовал и разместил в нем дисплей и Arduino nano. Слева ручка потенциометра усилителя (громкость). Справа гнездо блока питания 5В. Позже я добавил гнездо для наушников. Динамики при подключении наушников не отключаются, просто убавляю громкость усилителя на ноль. Дисплей очень маленький, но его хватает для отображения минимальной информации, тем более практика показала, что и она не нужна. В будущем автор планирует добавить управление воспроизведением с помощью IR пульта. А пока есть возможность переключать каналы через Web-интерфейс в браузере смартфона или компьютера. Правда, есть еще возможность подключить несколько обыкновенных кнопок к радио, но я не стал этого делать, потому что они тоже требуют свободного места.
После включения радио начинает играть спустя несколько секунд. Web-интерфейс немного подтормаживает и долго не появляется в браузере. А в остальном все очень здорово. Качество звука хорошее, на уровне колонки Atlanfa примерно. Слышны тихие щелчки, видимо, их дает ESP8266 своей деятельностью. Возможно, кое-где стоит проложить экранированные провода (до усилителя).
При воспроизведении потребление тока около 500мА, а в момент запуска больше одного ампера. Без усилителя потребление было меньше. А сейчас со слабым блоком питания будут циклические перезапуски. Блок питания на 5В 3А позволяет без проблем пользоваться устройством, но это с запасом (другого не было у меня).