Files
yoradio/KONFIGURACJA.md
Aleksander Cynarski 7ba365cad9 Add ESP32-S3 configuration for yoRadio with Polish character support
- 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
2026-02-22 13:52:17 +01:00

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.csv i playlist.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:

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 RU w myoptions.h
  • Plik utf8Rus.cpp został 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:

  1. Sprawdź połączenie pinów SPI
  2. Sprawdź czy TFT_RST jest podłączony do EN lub do GPIO
  3. Sprawdź napięcie zasilania (3.3V)
  4. Sprawdź czy model wyświetlacza to ILI9341

Sprawdzanie audio

Jeśli brak dźwięku:

  1. Sprawdź połączenie I2S (DIN, BCK, LCK)
  2. Sprawdź zasilanie DAC (3.3V lub 5V)
  3. Zobacz logi: task monitor
  4. Testuj inne URL stacji

7. Zaawansowane opcje

Dodanie własnego wyświetlacza

Jeśli używasz niestandardowego wyświetlacza:

  1. Znajdź driver w bibliotece Adafruit
  2. Dodaj lib_deps w platformio.ini
  3. Ustaw DSP_MODEL w myoptions.h
  4. 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:

  1. Sprawdź czy DSP_MODEL jest poprawny
  2. Sprawdź piny SPI (szczególnie CS, DC, RST)
  3. Sprawdź zasilanie 3.3V
  4. Spróbuj ustawić TFT_RST na konkretny pin zamiast -1

Problem: Brak dźwięku

Rozwiązanie:

  1. Sprawdź piny I2S (DOUT, BCLK, LRC)
  2. Sprawdź czy DAC jest zasilany
  3. Sprawdź URL stacji w przeglądarce
  4. Zobacz logi: task monitor

Problem: ESP32 się restartuje

Rozwiązanie:

  1. Sprawdź zasilanie (stabilne 5V, min 1A)
  2. Obniż CORE_DEBUG_LEVEL do 2
  3. Sprawdź czy nie ma konfliktu pinów
  4. Zobacz logi przed restartem

Problem: Serial Monitor nie działa

Rozwiązanie:

  1. Sprawdź czy ARDUINO_USB_CDC_ON_BOOT=1 w platformio.ini
  2. Sprawdź port: task list-ports
  3. Spróbuj innego kabla USB
  4. Restart ESP32

Problem: Nie łączy się z WiFi

Rozwiązanie:

  1. Sprawdź format wifi.csv (TAB separator!)
  2. Sprawdź hasło WiFi
  3. Zobacz logi: task monitor
  4. Połącz się z AP: yoRadioAP / 12345987

10. Linki i dokumentacja


Autor konfiguracji

Konfiguracja stworzona dla ESP32-S3 DevKitC-1 z wyświetlaczem ILI9341 i DAC PCM5102.

Data: 2026-02-22