- Add Taskfile.yml for automated build/upload/monitor tasks - Add platformio.ini configured for ESP32-S3-DevKitC-1 with USB CDC support - Add myoptions.h with hardware configuration: * ILI9341 display (320x240, 3.2") * I2S audio pins (DOUT=16, BCLK=17, LRC=15) * Two rotary encoders * IR receiver support * Russian language mode for Polish characters support - Modify utf8Rus.cpp to support Polish characters: ąćęłńóśźż ĄĆĘŁŃÓŚŹŻ - Add CONFIG_FILES.md with WiFi and playlist configuration guide - Add KONFIGURACJA.md with complete hardware and software documentation - Update examples/myoptions.h with ILI9341 display and encoder configuration
12 KiB
Konfiguracja yoRadio dla ESP32-S3
Pliki konfiguracyjne
Projekt używa trzech głównych plików konfiguracyjnych:
yoRadio/myoptions.h- konfiguracja sprzętowa (piny, wyświetlacz, audio)yoRadio/platformio.ini- konfiguracja PlatformIO (board, biblioteki)yoRadio/data/data/wifi.csviplaylist.csv- konfiguracja WiFi i stacji radiowych
1. myoptions.h - Konfiguracja sprzętowa
Plik: yoRadio/myoptions.h
Język interfejsu
#define L10N_LANGUAGE RU
Dostępne języki:
EN- English (domyślny)RU- Russian (wspiera polskie znaki: ąćęłńóśźż ĄĆĘŁŃÓŚŹŻ)
UWAGA: Wybierz RU aby wyświetlać polskie znaki na wyświetlaczu!
Wyświetlacz
#define DSP_MODEL DSP_ILI9341
Model: ILI9341 - kolorowy wyświetlacz TFT 320x240 pikseli, 3.2 cala
Dostępne modele wyświetlaczy:
DSP_DUMMY- bez wyświetlaczaDSP_ILI9341- 320x240, 3.2" (aktualnie używany)DSP_ST7735- 160x128, 1.8"DSP_ST7789- 320x240, 2.4"DSP_SSD1306- 128x64, 0.96" OLEDDSP_NEXTION- wyświetlacz Nextion- Więcej: https://github.com/e2002/yoradio/wiki/Available-display-models
Piny SPI wyświetlacza (ESP32-S3)
#define TFT_MOSI 11 /* SPI MOSI - dane do wyświetlacza */
#define TFT_SCLK 12 /* SPI CLK - zegar */
#define TFT_MISO 13 /* SPI MISO - dane z wyświetlacza */
#define TFT_CS 10 /* Chip Select */
#define TFT_RST -1 /* Reset (-1 = podłącz do EN ESP32) */
#define TFT_DC 9 /* Data/Command */
WAŻNE dla ESP32-S3:
- Standardowe piny SPI to: MOSI=11, CLK=12, MISO=13
- TFT_RST=-1 oznacza że pin RST wyświetlacza jest podłączony do pinu EN (reset) ESP32-S3
- Jeśli używasz innego pinu RST, zmień wartość (np.
#define TFT_RST 9)
Piny I2S audio (DAC)
#define I2S_DOUT 16 /* DIN - dane audio */
#define I2S_BCLK 17 /* BCLK - Bit Clock */
#define I2S_LRC 15 /* LRC/WS - Left/Right Clock (Word Select) */
Obsługiwane DAC I2S:
- PCM5102 (najpopularniejszy)
- MAX98357A
- UDA1334A
- CS4344
- Wewnętrzny DAC ESP32 (gorsza jakość)
Uwaga: Piny I2S muszą być różne od pinów SPI!
Encoder (pokrętło obrotowe) #1
#define ENC_BTNL 5 /* Obrót w lewo */
#define ENC_BTNB 6 /* Przycisk (naciśnięcie) */
#define ENC_BTNR 4 /* Obrót w prawo */
#define ENC_INTERNALPULLUP true /* Rezystory podciągające */
#define ENC_HALFQUARD true /* Tryb czułości */
Funkcje encodera:
- Obrót lewo/prawo - zmiana stacji lub głośności
- Naciśnięcie - pauza/play
Encoder (pokrętło obrotowe) #2
#define ENC2_BTNL 18 /* Obrót w lewo */
#define ENC2_BTNB 8 /* Przycisk */
#define ENC2_BTNR 7 /* Obrót w prawo */
#define ENC2_INTERNALPULLUP true /* Rezystory podciągające */
#define ENC2_HALFQUARD false /* Tryb czułości */
Uwaga: Drugi encoder jest opcjonalny!
Jasność wyświetlacza
#define BRIGHTNESS_PIN 14 /* PWM pin do regulacji jasności */
Użyj pinu PWM ESP32-S3 do podłączenia LED backlight wyświetlacza.
Pilot IR (podczerwień)
#define IR_PIN 21 /* Pin odbiornika IR (np. VS1838B) */
Obsługiwane protokoły:
- NEC
- Samsung
- Sony
- RC5/RC6
- Więcej: biblioteka IRremoteESP8266
2. platformio.ini - Konfiguracja build systemu
Plik: yoRadio/platformio.ini
Platforma i board
[env:esp32dev]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
Uwaga: Używamy esp32-s3-devkitc-1 nie esp32dev!
Prędkości komunikacji
monitor_speed = 115200 # Prędkość Serial Monitor
upload_speed = 921600 # Prędkość uploadu (921600 lub 460800)
Partycje flash
board_build.partitions = min_spiffs.csv
board_build.flash_mode = dio
min_spiffs.csv - małe SPIFFS (system plików) dla konfiguracji i interfejsu webowego
Flagi kompilacji (ESP32-S3)
build_flags =
-DCORE_DEBUG_LEVEL=4 # Poziom logowania (0-5)
-DBOARD_HAS_PSRAM # Board ma PSRAM
-DARDUINO_USB_MODE=1 # Włącz USB
-DARDUINO_USB_CDC_ON_BOOT=1 # USB CDC (Serial) od startu
KRYTYCZNE dla ESP32-S3:
ARDUINO_USB_CDC_ON_BOOT=1- bez tego Serial nie będzie działał!CORE_DEBUG_LEVEL=4- logi info+warning+error+verbose
Biblioteki
lib_deps =
adafruit/Adafruit GFX Library # Grafika podstawowa
adafruit/Adafruit ILI9341 # Driver ILI9341
adafruit/Adafruit ST7735 and ST7789 Library
adafruit/Adafruit SSD1306 # OLED
adafruit/Adafruit PCD8544 Nokia 5110 LCD library
adafruit/Adafruit SH110X
adafruit/Adafruit SSD1327
adafruit/Adafruit SSD1305
nkawu/TFT 22 ILI9225 # ILI9225
mathertel/OneButton # Obsługa przycisków
crankyoldgit/IRremoteESP8266 # Pilot IR
paulstoffregen/XPT2046_Touchscreen # Ekran dotykowy
adafruit/RTClib # Zegar czasu rzeczywistego
3. Polskie czcionki i znaki
Wsparcie dla polskich znaków
Plik: yoRadio/src/displays/tools/utf8Rus.cpp
Zmienione znaki UTF-8:
Polskie znaki: ąćęłńóśźż ĄĆĘŁŃÓŚŹŻ
Funkcja utf8Rus() konwertuje znaki UTF-8 na kody wyświetlacza:
// Przykładowa konwersja:
case 0x82: {
if (!uppercase) {
strn[index] = 0xCf; // małe ł
} else {
strn[index] = 0xD0; // wielkie Ł
}
break;
}
WAŻNE:
- Wybierz
L10N_LANGUAGE RUwmyoptions.h - Plik
utf8Rus.cppzostał zmodyfikowany do obsługi polskich znaków - Oryginalna wersja obsługiwała tylko cyrylicę
Testowanie polskich znaków
W pliku playlist.csv możesz używać polskich nazw stacji:
Polskie Radio Trójka http://... 0
TOK FM - najlepsze radio http://... 0
Znaki specjalne będą poprawnie wyświetlane na ekranie ILI9341.
4. Schemat pinów ESP32-S3
Schemat podłączenia
ESP32-S3 DevKit ILI9341 Display
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GPIO 11 (MOSI) ────► SDI/MOSI
GPIO 12 (CLK) ────► SCK
GPIO 13 (MISO) ────► SDO/MISO
GPIO 10 ────► CS
GPIO 9 ────► DC/RS
EN (Reset) ────► RESET
3.3V ────► VCC/LED
GND ────► GND
ESP32-S3 DevKit PCM5102 DAC
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GPIO 16 ────► DIN
GPIO 17 ────► BCK
GPIO 15 ────► LCK/WS
3.3V ────► VIN
GND ────► GND
─ SCK (pin nieużywany)
GND ────► FMT
3.3V ────► XMT
ESP32-S3 DevKit Encoder
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GPIO 5 ────► CLK (A)
GPIO 4 ────► DT (B)
GPIO 6 ────► SW (Button)
GND ────► GND
(3.3V opcjonalnie jeśli brak pullup)
ESP32-S3 DevKit IR Receiver (VS1838B)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
GPIO 21 ────► OUT
3.3V ────► VCC
GND ────► GND
Bezpieczne piny ESP32-S3
Bezpieczne do użycia:
- GPIO 1-18 (z wyjątkiem 15,16,17,18,19,20)
- GPIO 21
- GPIO 35-45
Unikaj:
- GPIO 0 - boot button
- GPIO 19, 20 - USB
- GPIO 26-32 - flash/PSRAM
- GPIO 33, 34 - nie podłączaj enkodera (tylko input)
5. Budowanie i upload
Dostępne komendy (Taskfile)
# Budowanie
task build # Kompiluj firmware
task clean # Wyczyść build cache
task rebuild # Clean + Build
# Upload
task upload # Wgraj firmware
task upload-fs # Wgraj pliki (SPIFFS)
task full-flash # Firmware + pliki
# Monitoring
task monitor # Serial monitor
task kill-monitor # Zatrzymaj monitor
# Narzędzia
task list-ports # Lista portów USB
task erase # Wymaż całą pamięć flash
Proces pełnego flasha
# 1. Edytuj konfigurację
nano yoRadio/myoptions.h
# 2. Edytuj WiFi i playlistę
nano yoRadio/data/data/wifi.csv
nano yoRadio/data/data/playlist.csv
# 3. Pełny flash
task full-flash
# 4. Monitor
task monitor
6. Debugowanie
Logi Serial
task monitor
Poziomy logów (CORE_DEBUG_LEVEL):
- 0 - None
- 1 - Error
- 2 - Warning
- 3 - Info
- 4 - Debug (aktualnie używany)
- 5 - Verbose
Sprawdzanie połączenia wyświetlacza
Jeśli wyświetlacz świeci na biało:
- Sprawdź połączenie pinów SPI
- Sprawdź czy TFT_RST jest podłączony do EN lub do GPIO
- Sprawdź napięcie zasilania (3.3V)
- Sprawdź czy model wyświetlacza to ILI9341
Sprawdzanie audio
Jeśli brak dźwięku:
- Sprawdź połączenie I2S (DIN, BCK, LCK)
- Sprawdź zasilanie DAC (3.3V lub 5V)
- Zobacz logi:
task monitor - Testuj inne URL stacji
7. Zaawansowane opcje
Dodanie własnego wyświetlacza
Jeśli używasz niestandardowego wyświetlacza:
- Znajdź driver w bibliotece Adafruit
- Dodaj
lib_depswplatformio.ini - Ustaw
DSP_MODELwmyoptions.h - Dostosuj piny SPI
Touchscreen
Jeśli masz wyświetlacz dotykowy:
#define TS_MODEL TS_XPT2046 // Model touchscreen
#define TS_CS 255 // CS pin dla touch
Wewnętrzny DAC ESP32
#define I2S_INTERNAL true // Użyj wbudowanego DAC
// Piny: DAC1=GPIO25, DAC2=GPIO26 (tylko ESP32, nie S3!)
UWAGA: ESP32-S3 nie ma wewnętrznego DAC! Musisz użyć zewnętrznego (I2S).
Sleep mode (oszczędzanie energii)
#define WAKE_PIN 6 // Pin do wybudzania (ENC_BTNB)
8. Backup i restore konfiguracji
Backup przed aktualizacją
# Zapisz aktualne pliki
cp yoRadio/myoptions.h myoptions.h.backup
cp yoRadio/data/data/wifi.csv wifi.csv.backup
cp yoRadio/data/data/playlist.csv playlist.csv.backup
Restore po aktualizacji
# Przywróć pliki
cp myoptions.h.backup yoRadio/myoptions.h
cp wifi.csv.backup yoRadio/data/data/wifi.csv
cp playlist.csv.backup yoRadio/data/data/playlist.csv
# Rebuild i upload
task full-flash
9. Troubleshooting
Problem: Wyświetlacz biały ekran
Rozwiązanie:
- Sprawdź czy
DSP_MODELjest poprawny - Sprawdź piny SPI (szczególnie CS, DC, RST)
- Sprawdź zasilanie 3.3V
- Spróbuj ustawić
TFT_RSTna konkretny pin zamiast -1
Problem: Brak dźwięku
Rozwiązanie:
- Sprawdź piny I2S (DOUT, BCLK, LRC)
- Sprawdź czy DAC jest zasilany
- Sprawdź URL stacji w przeglądarce
- Zobacz logi:
task monitor
Problem: ESP32 się restartuje
Rozwiązanie:
- Sprawdź zasilanie (stabilne 5V, min 1A)
- Obniż
CORE_DEBUG_LEVELdo 2 - Sprawdź czy nie ma konfliktu pinów
- Zobacz logi przed restartem
Problem: Serial Monitor nie działa
Rozwiązanie:
- Sprawdź czy
ARDUINO_USB_CDC_ON_BOOT=1wplatformio.ini - Sprawdź port:
task list-ports - Spróbuj innego kabla USB
- Restart ESP32
Problem: Nie łączy się z WiFi
Rozwiązanie:
- Sprawdź format
wifi.csv(TAB separator!) - Sprawdź hasło WiFi
- Zobacz logi:
task monitor - Połącz się z AP:
yoRadioAP/12345987
10. Linki i dokumentacja
- GitHub projektu: https://github.com/e2002/yoradio
- Wiki: https://github.com/e2002/yoradio/wiki
- Dostępne wyświetlacze: https://github.com/e2002/yoradio/wiki/Available-display-models
- Schemat pinów: https://github.com/e2002/yoradio#connection-tables
- ESP32-S3 pinout: http://wiki.fluidnc.com/en/hardware/ESP32-S3_Pin_Reference
- Forum: https://github.com/e2002/yoradio/discussions
Autor konfiguracji
Konfiguracja stworzona dla ESP32-S3 DevKitC-1 z wyświetlaczem ILI9341 i DAC PCM5102.
Data: 2026-02-22