🚨 Дальнейшее развитие этого проекта будет тут 🚨
https://github.com/Witaliy76/Yoradio_RGB_Panel
🚨 Further development of this project will be here 🚨
https://github.com/Witaliy76/Yoradio_RGB_Panel
Ветка: 4848S040
Версия: v0.9.434(m)
Статус: ✅ Стабильная
Октябрь 2025:
- ✅ 11.10 - Исправлен размер буфера heapbar (655350 → корректное отображение)
- ✅ 06.10 - Устранено самопроизвольное переключение VU ↔ Spectrum Analyzer
- ✅ 05.10 - Исправлено отображение AP Mode и Boot Screen при пустом SPIFFS
Сентябрь 2025:
- ✅ 29.09 - Рефакторинг конфигурации спектр-анализатора, фикс битрейта
- ✅ 12.09 - Добавлен переключатель SA ↔ VU в веб-интерфейсе
- ✅ 09.09 - Добавлены готовые bin файлы (bootloader, firmware, partitions)
- ✅ 03.09 - Исправлено отображение текста, оптимизация тачскрина
- ✅ 02.09 - Интеграция SD карты (индексация работает, воспроизведение - см. Issues)
📜 Полная история изменений (развернуть)
11.10.2025 - Исправление размера буфера heapbar:
- Исправлен максимальный размер буфера: 300000 → 655350 (UINT16_MAX*10)
- Устранена проблема переполнения виджета heapbar
- Зеленая полоса больше не выходит за границы
06.10.2025 - Исправление бага переключения VU-meter ↔ Spectrum Analyzer:
- Устранено самопроизвольное переключение между VU и SA
- Убрана дублирующая логика из обработчика SHOWVUMETER
- Добавлен вызов _layoutChange() при возврате в PLAYER режим
- Корректное отключение виджетов при выключении VU meter
05.10.2025 - Исправление AP Mode при пустом SPIFFS:
- Устранено зависание на boot logo при первом запуске
- Исправлена блокировка flush экрана (_suspendFlush)
- Добавлен принудительный flush для AP screen
- Корректный переход в AP Mode с отображением SSID и пароля
29.09.2025 - Рефакторинг спектр-анализатора:
- Конфигурация перенесена в displayST7701conf.h (централизация)
- Удален файл spectrum_st7701.h
- Фикс переполнения виджета битрейта
- Автоматическое переключение на целые числа при переполнении
12.09.2025 - Переключатель SA ↔ VU в вебе:
- Добавлен тумблер в Settings → Screen
- Улучшена стабильность отрисовки VU метра
- Оптимизация сглаживания (fadespeed)
09.09.2025 - Готовые bin файлы:
- bootloader.bin, firmware.bin, partitions.bin
- Добавлены в каталог build_bin/
03.09.2025 - Исправления текста и тачскрина:
- Поддержка параметра uppercase в gfxDrawText
- Исправлены оси тачскрина (свайп вверх/вниз)
- Оптимизирована логика обработки свайпов
02.09.2025 - Интеграция SD карты:
- Настроена конфигурация SPI (FSPI/SPI2_HOST)
- SD карта индексируется и читается
⚠️ Воспроизведение не работает (см. SD Card Issue)
Порт проекта yoRadio для модуля ESP32-4848S040 с дисплеем ST7701 RGB Panel 480x480.
| Компонент | Характеристики |
|---|---|
| Процессор | ESP32-S3-WROOM-1-N16R8 (240MHz, dual-core) |
| Память | 520KB RAM + 16MB PSRAM + 8MB Flash |
| Дисплей | ST7701 RGB Panel 480x480 (16 линий данных) |
| Тачскрин | GT911 (I2C: SDA=19, SCL=45) |
| Аудио | I2S (BCLK=1, LRCLK=2, DOUT=40) |
| Подсветка | PWM (пин 38) |
| SD карта | FSPI (CS=42, SCK=48, MISO=41, MOSI=47) |
Порядок подключения DAC к заднему разъему
Встроенный моно DAC:
- По умолчанию отключен (пины на задний разъем)
- Для включения: запаять перемычки R21, R22, R23
- Если задний разъем не используется: R26, R27, R25 можно не выпаивать
- ✅ ST7701 RGB Panel 480x480 - высокое разрешение, параллельный интерфейс
- ✅ GT911 тачскрин - мультитач, оптимизация для квадратного экрана
- ✅ Spectrum Analyzer - 15 полос, переключение с VU-meter через веб
- ✅ Русская локализация - полная поддержка кириллицы
- ✅ WiFi интернет-радио - стабильная работа на больших битрейтах
- ✅ Профессиональные жесты - точные свайпы, мультитач
# Клонировать репозиторий
git clone https://github.com/your-repo/ESP32-4848S040.git
cd ESP32-4848S040
# Собрать и загрузить
pio run -t upload
pio run -t uploadfs # Загрузить SPIFFS (рекомендуется)Заменить файл шрифтов:
.platformio/libdeps/yoradio-esp32s3/GFX Library for Arduino/src/font/glcdfont.h
На файл из fonts/glcdfont.h (в репозитории).
Путь:
<user>/.platformio/packages/framework-arduinoespressif32-libs/esp32s3/lib/
Файлы для замены:
libesp_netif.a→ изlibrary!/esp32s3_5.4/libesp_netif.aliblwip.a→ изlibrary!/esp32s3_5.4/liblwip.a
Поддерживаемые версии: ESP-IDF 5.4, 5.5
После замены: перезапустите PlatformIO и перекомпилируйте проект.
При первом запуске после erase_flash:
- ⏱️ Ожидайте ~60 секунд с черным экраном
- 📦 Происходит автоматическое форматирование SPIFFS
- 🔆 Подсветка может быть выключена
- ✅ Это нормальное поведение — просто подождите
Рекомендация: Используйте pio run -t uploadfs для быстрого старта.
| Жест | Действие |
|---|---|
| Одиночное касание | Старт/стоп воспроизведения |
| Свайп влево/вправо | Изменение громкости |
| Свайп вверх/вниз | Выбор станции |
| Двойное касание | Смена режима (RADIO ↔ SD) |
| Мультитач | Дополнительные функции |
src/myoptions.h- настройки модуляsrc/src/displays/displayST7701.cpp- драйвер дисплеяsrc/src/core/touchscreen.cpp- драйвер тачскрина GT911
// В myoptions.h или перед компиляцией
#define DEBUG_DISPLAY // Отладка дисплея
#define DEBUG_TOUCH // Отладка тачскринаСтатус: Индексация работает, воспроизведение зависает.
Проблема:
- SD карта инициализируется и индексируется корректно
- При нажатии Play система зависает в
config.loadStation() SDPLFS()->open()работает при загрузке, но не работает во время воспроизведения
Технические детали:
- Board: ESP32-S3 N16R8
- Display: ST7701 RGB (VSPI)
- SD Card: FSPI (CS=42, SCK=48, MISO=41, MOSI=47)
- Audio: I2S (без конфликтов SPI)
Что пробовали:
- Смена SPI с FSPI на HSPI — без эффекта
- Mutex timeouts и forced release — без эффекта
- Упрощение cardPresent() — без эффекта
- Suspend display task — без эффекта
Гипотеза: Проблема в слое файловой системы SD, а не в SPI или mutex.
Развернуть технические детали (для разработчиков)
Работающие сценарии:
- ✅ SD card initialization and mounting
- ✅ SD card indexing (creates playlistsd.csv, indexsd.dat)
- ✅ Playlist reading during boot
- ✅ File existence checks
Не работает:
- ❌ Audio playback (system hangs)
- ❌
SDPLFS()->open()calls inloadStation()
Точка зависания:
File playlist = SDPLFS()->open(REAL_PLAYL, "r"); // ← HANGS HERE
File index = SDPLFS()->open(REAL_INDEX, "r"); // ← NEVER REACHEDПомощь разработчикам:
Если вы можете определить почему SDPLFS()->open() работает при загрузке, но зависает во время воспроизведения — создайте issue или pull request.
MIT License - см. файл LICENSE
- Оригинальный проект: e2002/yoradio
- Документация: См. папку
docs/ - Issues & Support: GitHub Issues
Версия для ветки 4848S040
Оптимизирована под ESP32-4848S040 с дисплеем ST7701 RGB Panel и тачскрином GT911



