Умный дом на Home Assistant и 3D печать.
 
Telegram-канал FoxJoy
Почта: dm@foxfoy.ru
Ёрадио - ещё одна сборка

Ёрадио - ещё одна сборка

Есть инструкции на Гитхабе, есть тема на форуме 4PDA, много кто повторял этот проект и публиковал в сети и мне конечно же тоже захотелось повторить :)

Вроде казалось уже почти всё разжёвано - заказывай детальки, соединяй, прошивай и пользуйся. Но как показывает практика - не всегда идёт всё гладко и бывает возникают вопросы именно по той сборке, которую ты выбираешь.

Постараюсь описать именно свою сборку на конкретном примере. Для пробы я сделал самый минимальный вариант ESP32 + ЦАП PCM5102A, совсем "без никто" и подключил к активным колонкам. Да, оно заработало, но  местами... Конечно же, этот вариант у меня часто заикался, а хотелось стабильности, удобства и красоты.

Для следующего варианта я подобрал комплектующие уже поинтереснее:  ESP-WROVER DevKitC V4, VS1053, модульный дисплей TFT LCD 2.2 SPI ILI922 и энкодер EC11 с кнопкой. С этим вариантом вопросов было уже чуть больше.

Вот для наглядности:

Аудио модуль VS1053 интереснее, с аппаратным декодером, но собирают его кому не лень, на разных платах и с разным качеством. В итоге мне по всей видимости попался как раз неудачный вариант на красной плате, который я так и не смог запустить, сколько бы не мучил ИИ с вопросами :) А вот неоднократно проверенный PCM5102A запустился сразу. 

Дальше, подключил экран и застрял на подключении энкодера EC11. Он у меня уже был в наличии без платки, по этому пришлось подтягивающие резисторы на 10kom "колхозить" по месту. Поведение на крутилке неоднозначное - прыжки регулировки громкости в разные стороны со сбросом на ноль. Кнопка так совсем отказывалась реагировать, хотя замыкает на землю всё как положено - сигнала на ESP всё равно нет. Перепробовал подключение на разные пины, программный "антидребезг" и всё без хорошего результата. Купил на всякий случай такой же энкодер уже с платкой с подтягивающими резисторами и сглаживающими конденсаторами - результат тот же :(

"А дело было не в бобине - рас&%#@*яй сидел в кабине" :) Либо нужно экранировать провода идущие к энкодеру и экран сажать на землю еэспехи, либо поставить ферритовое кольцо - и проблема сразу отпала.

Вроде как есть конструктор, но новичку и с ним может быть сложновато. По этому вот рабочая схемка, именно по моим комплектующим. Я художник - я так вижу :) Но по ней всё равно можно разобраться :)

Если сложно разобраться в моих каракулях, то тогда так:

Экран ILI9225
VCC - 3,3V
GND - GND
CLK - GPIO18
SDI - GPIO23
RS - GPIO4
CS - GPIO5
LED - 3,3V через резистор 100-200 Om

PСM5102
SCK - на свой же GND
BCK - GPIO26
DIN - GPIO27
LCK - GPIO25
GND - GND
VIN - 3,3V

Энкодер EC11
5V - 3,3V
KEY - GPIO35
S2 - GPIO34
S1 - GPIO32
GND - GND

В итоге файл myoptions_h вышел таким:

 #ifndef myoptions_h 

#define myoptions_h

/* Generated by myoptions.h generator - v0.8.1 */
/* https://e2002.github.io/docs/myoptions-generator.html?r=72,2,4,27,41,43,54&i=1,2,3,4,15,16,17,28,29,30&v=4,5,-1,255,27,26,25,36,34,39 */
/* Put this file next to yoRadio.ino and restart Arduino IDE. */

/* !!! Attention !!! */
/* This configuration depends on some additional libraries. Please install them using the library manager: */
/* Adafruit GFX Library, OneButton */

/* !!! Do not be alarmed, all right, the default values ​​are not included in this file !!! */

#define DSP_MODEL            DSP_ILI9225
#define BRIGHTNESS_PIN      33
#define ENC_BTNR            32
#define ENC_BTNL            34
#define ENC_BTNB            35
#define ENC_INTERNALPULLUP            false
#define ENC_DEBOUNCE_MS     50
#define ENC_PULSES    4


#endif

Ну конечно же мне хотелось подключить новое устройство в Home Assistant и управлять им оттуда тоже. На Гитхабе есть подробная инструкция как это сделать. В общем файл mqttoptions.h стандартный - только нужно заменить IP адрес на свой, на котором сидит HA и дать название в строке MQTT_ROOT_TOPIC. Сам файл разместить рядом с mqttoptions.h

#define MQTT_HOST   "192.168.1.20" 

#define MQTT_PORT   1883
#define MQTT_USER   "myuser"
#define MQTT_PASS   "mypassword"
#define MQTT_ROOT_TOPIC  "yoradio/Wrover/"
/*
Topics:
MQTT_ROOT_TOPIC/command     // Commands
MQTT_ROOT_TOPIC/status      // Player status
MQTT_ROOT_TOPIC/playlist    // Playlist URL
MQTT_ROOT_TOPIC/volume      // Current volume
Commands:
prev          // prev station
next          // next station
toggle        // start/stop playing
stop          // stop playing
start, play   // start playing
boot, reboot  // reboot
vol x         // set volume
play x        // play station x
*/

Стандартная карточка в HA:

Первичная сборка на столе

Разместил это всё в корпусе взятом отсюда. Эта модель под экран 2,8 дюйма, по этому мне пришлось переделывать прежде всего под свой экран 2,4, плюс заново сделать декоративную рамку, ну и крепления внутренностей. Крутилка тоже не подошла - пришлось заменить. Позже на страшненькие винты добавились колпачки.
Это почти собранный вариант:


Ну может не всё по фэншую сделано, но работает, играет, радует! :)