Skip to content
This repository was archived by the owner on Oct 25, 2025. It is now read-only.

Repository files navigation

Yoradio для ESP32-4848S040 (ST7701 RGB 480x480)

🚨 Дальнейшее развитие этого проекта будет тут 🚨

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)
Статус: ✅ Стабильная

SA Mode Spectrum Analyzer Mode

VU Mode VU Meter Mode


📝 Последние изменения

Октябрь 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)
📜 Полная история изменений (развернуть)

Октябрь 2025

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 и пароля

Сентябрь 2025

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 Connection Порядок подключения DAC к заднему разъему

Module Back

Встроенный моно DAC:

  • По умолчанию отключен (пины на задний разъем)
  • Для включения: запаять перемычки R21, R22, R23
  • Если задний разъем не используется: R26, R27, R25 можно не выпаивать

PCB Detail


🚀 Особенности

  • ST7701 RGB Panel 480x480 - высокое разрешение, параллельный интерфейс
  • GT911 тачскрин - мультитач, оптимизация для квадратного экрана
  • Spectrum Analyzer - 15 полос, переключение с VU-meter через веб
  • Русская локализация - полная поддержка кириллицы
  • WiFi интернет-радио - стабильная работа на больших битрейтах
  • Профессиональные жесты - точные свайпы, мультитач

🔧 Быстрый старт

1. Сборка проекта

# Клонировать репозиторий
git clone https://github.com/your-repo/ESP32-4848S040.git
cd ESP32-4848S040

# Собрать и загрузить
pio run -t upload
pio run -t uploadfs  # Загрузить SPIFFS (рекомендуется)

2. Русская локализация

Заменить файл шрифтов:

.platformio/libdeps/yoradio-esp32s3/GFX Library for Arduino/src/font/glcdfont.h

На файл из fonts/glcdfont.h (в репозитории).

3. Оптимизация для больших битрейтов

⚠️ ВАЖНО: Для стабильной работы на битрейтах >192 kbps замените библиотеки:

Путь:

<user>/.platformio/packages/framework-arduinoespressif32-libs/esp32s3/lib/

Файлы для замены:

  • libesp_netif.a → из library!/esp32s3_5.4/libesp_netif.a
  • liblwip.a → из library!/esp32s3_5.4/liblwip.a

Поддерживаемые версии: ESP-IDF 5.4, 5.5

После замены: перезапустите PlatformIO и перекомпилируйте проект.


⚠️ Первый запуск

Форматирование SPIFFS (erase_flash)

При первом запуске после 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 Card Playback Issue

Статус: Индексация работает, воспроизведение зависает.

Проблема:

  • 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)

Что пробовали:

  1. Смена SPI с FSPI на HSPI — без эффекта
  2. Mutex timeouts и forced release — без эффекта
  3. Упрощение cardPresent() — без эффекта
  4. 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 in loadStation()

Точка зависания:

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

About

ESP32 4848S040 branch export

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages