Zbuduj własne YoRadio na ESP32-S3 w obudowie

Zbuduj własne YoRadio na ESP32-S3 w obudowie
YoRadio to jeden z tych projektów, które bardzo szybko wciągają. W jednym urządzeniu łączymy odtwarzanie radia internetowego, wygodne sterowanie z poziomu enkoderów, kolorowy wyświetlacz TFT i własną, dopasowaną obudowę. W tym poradniku pokażę Ci krok po kroku, jak zbudować wersję opartą o płytkę ESP32-S3-DevKit, wyświetlacz TFT 2,8 cala 240×320 SPI, zewnętrzny przetwornik PCM5102A I2S, wzmacniacz PAM8403 oraz zasilanie z dwóch ogniw 18650 z modułem ładowania i zasilania buforowego.
Ta wersja różni się od wcześniejszego projektu przede wszystkim zastosowaniem ESP32-S3, dlatego etap konfiguracji wykonamy ręcznie. Nie będzie tutaj gotowego kreatora z automatycznym wyklikaniem wszystkich opcji. W zamian dostajemy bardzo elastyczną platformę, którą można łatwo dopasować do własnej wersji urządzenia.
Całość zmontujemy na uniwersalnej płytce PCB 6×8 cm, zamkniemy w obudowie Kradex Z17W wentylowanej, a od frontu zastosujemy własny panel wydrukowany na drukarce 3D. Dzięki temu projekt nie tylko działa, ale po złożeniu wygląda jak gotowe, estetyczne urządzenie.

Założenia projektu i funkcjonalność
Budowana wersja YoRadio została zaprojektowana jako przenośne radio internetowe stereo z wygodnym sterowaniem i prostą rozbudową. Urządzenie łączy się z siecią Wi-Fi, odtwarza stacje internetowe, wyświetla informacje na ekranie TFT i pozwala sterować funkcjami za pomocą dwóch enkoderów umieszczonych na panelu frontowym. Jeden enkoder odpowiada za nawigację po menu, a drugi za regulację głośności, co bardzo poprawia wygodę codziennego użytkowania.
W projekcie zastosowany został zewnętrzny DAC PCM5102A, dzięki czemu sygnał audio trafiający do wzmacniacza PAM8403 ma znacznie lepszą jakość niż przy prostych rozwiązaniach opartych wyłącznie o wyjście cyfrowe mikrokontrolera. Dźwięk odtwarzany jest przez dwa małe głośniki 1 W, które w tej konstrukcji sprawdzają się bardzo dobrze do odsłuchu radia.
Radio zasilane jest z dwóch ogniw 18650, a ładowaniem i utrzymaniem zasilania zajmuje się moduł buforowy 5 V z USB-C. Dzięki temu urządzenie może pracować mobilnie, a jednocześnie można je wygodnie ładować bez rozbierania obudowy.
Lista potrzebnych elementów
Do wykonania tej wersji projektu wykorzystaliśmy następujące elementy:
| Element | Opis |
|---|---|
| ESP32-S3-DevKit WiFi + BLE 5.0 | Mikrokontroler stanowiący serce i mózg całego urządzenia. Moduł ESP32-S3 zapewnia łączność Wi-Fi oraz Bluetooth, dzięki czemu możliwe jest odtwarzanie radia internetowego. W projekcie wykorzystujemy 1 sztukę. |
| Wyświetlacz TFT LCD 2,8” 240×320 px ILI9341 SPI | Kolorowy wyświetlacz TFT o rozdzielczości 240×320 px z kontrolerem ILI9341. Służy do prezentowania interfejsu użytkownika, nazw stacji oraz informacji o odtwarzanym utworze. W projekcie wykorzystujemy 1 sztukę. |
| Przetwornik DAC I2S PCM5102A | Moduł audio zamieniający sygnał cyfrowy I2S z ESP32-S3 na wysokiej jakości sygnał analogowy. Zapewnia czyste brzmienie stereo i wyjście audio. W projekcie wykorzystujemy 1 sztukę. |
| Moduł wzmacniacza PAM8403 | Niewielki wzmacniacz cyfrowy audio o mocy do 2×3 W, zasilany napięciem 5 V. Umożliwia bezpośrednie podłączenie głośników i wzmocnienie sygnału z DAC. W projekcie wykorzystujemy 1 sztukę. |
| Moduł enkodera EC11 z przyciskiem | Element sterujący umożliwiający nawigację po menu, regulację głośności oraz obsługę funkcji radia. W projekcie wykorzystujemy 2 sztuki dla wygodniejszego sterowania. |
| Głośnik 1 W YD58 | Niewielkie głośniki do odtwarzania dźwięku z urządzenia. Dobierane do wzmacniacza PAM8403. W projekcie wykorzystujemy 1 zestaw (2 sztuki). |
| Złącze śrubowe ARK 2-pin 5.08 mm | Listwa śrubowa umożliwiająca wygodne i pewne podłączenie przewodów zasilania lub głośników. W projekcie wykorzystujemy łącznie 3 sztuki (2 zielone oraz 1 niebieską). |
| Przewód JST-HX 2,54 mm 20 cm 5 pin | Przewód zakończony złączem JST-HX przeznaczony do połączeń między modułami enkodera, W projekcie wykorzystujemy 2 sztuki. |
| Przewód JST-HX 2,54 mm 20 cm 9 pin | Przewód wielożyłowy do bardziej rozbudowanych połączeń sygnałowych między płytką a wyświetlaczem. W projekcie wykorzystujemy 1 sztukę. |
| Uniwersalna płytka PCB 6×8 cm dwustronna | Płytka prototypowa z polami lutowniczymi, służąca jako baza do montażu wszystkich elementów. Umożliwia trwałe i uporządkowane połączenie układu. W projekcie wykorzystujemy 1 sztukę. |
| Zasilacz buforowy 5 V do akumulatorów 18650 USB-C | Moduł zasilania umożliwiający ładowanie oraz zasilanie urządzenia z ogniw 18650 przez USB-C. Zapewnia stabilne napięcie 5 V dla całego układu. W projekcie wykorzystujemy 1 sztukę. |
| Ogniwo 18650 Samsung INR18650-35E 3450 mAh | Akumulatory litowo-jonowe stanowiące źródło zasilania urządzenia. Zapewniają długi czas pracy. W projekcie wykorzystujemy 2 sztuki. |
| Przełącznik kołyskowy SPST zielony | Przełącznik służący do włączania i wyłączania urządzenia, wyposażony w podświetlenie informujące o stanie pracy. W projekcie wykorzystujemy 1 sztukę. |
| Obudowa Z17W 92x217x235 mm | Obudowa chroniąca elektronikę oraz nadająca estetyczny wygląd całemu urządzeniu. W projekcie wykorzystujemy 1 sztukę. |
| Panel frontowy druk 3D | Dedykowany panel przedni wykonany na drukarce 3D, dopasowany do wyświetlacza, enkoderów i przycisków. W projekcie wykorzystujemy 1 sztukę. |
| Śruby M2 do montażu wyświetlacza | Elementy montażowe służące do stabilnego przykręcenia wyświetlacza do panelu przedniego. W projekcie wykorzystujemy 4 sztuki. |
| Zestaw przewodów silikonowych AWG28 | Elastyczne przewody do wykonywania połączeń na płytce oraz między modułami. Ułatwiają montaż i poprawiają estetykę projektu. W projekcie wykorzystujemy 1 zestaw (oczywiście niecały 😎). |
| Przewód typu Kynar 0,24 mm 8 kolorów, rolka | Mniejszej średnicy przewody do połączeń na płytce oraz między modułami. |
Do tego projektu przygotowaliśmy gotowy zestaw do zakupu, dlatego nie trzeba kompletować elementów osobno. Wszystkie części potrzebne do zbudowania dokładnie takiego samego zestawu jak nasz znajdują się w jednym komplecie. Wyjątkiem są przewody połączeniowe, ich nie ma w zestawie.
Dysponując powyższymi elementami, możemy przystąpić do budowy radia. Najpierw przygotujemy schemat połączeń, aby poprawnie zintegrować ze sobą moduł ESP32-S3, wyświetlacz TFT, DAC, wzmacniacz oraz enkodery.
Schemat połączeń
Poniżej przedstawiono sposób podłączenia poszczególnych komponentów. Należy zachować ostrożność i zgodność ze schematem, prawidłowe połączenia są kluczowe dla działania układu.
Wyświetlacz TFT → ESP32-S3
| Pin wyświetlacza | Pin ESP32-S3 | Uwagi |
|---|---|---|
| VCC | 3,3 V | Zasilanie wyświetlacza |
| GND | GND | Masa |
| CS | GPIO 10 | Chip Select |
| RESET | GPIO 7 | Reset wyświetlacza |
| DC (D/C) | GPIO 15 | Wybór danych/komend |
| SDI (MOSI) | GPIO 11 | Dane SPI |
| SCK (CLK) | GPIO 12 | Zegar SPI |
| LED | 3,3 V | Stałe zasilanie podświetlenia |
| SDO (MISO) | GPIO 13 |
Konfiguracja ESP32-S3
Zanim przejdziesz do właściwej konfiguracji YoRadio, jest jedna bardzo ważna rzecz, o której trzeba pamiętać już na etapie przygotowania płytki ESP32-S3. Na module należy zlutować zworkę IN-OUT, ponieważ bez tego napięcie nie będzie przekazywane na wyjście podczas testowania i uruchamiania całego urządzenia.
To drobny detal, ale w praktyce bardzo istotny. Jeżeli zworka nie zostanie zlutowana, układ może sprawiać wrażenie nieprawidłowo podłączonego albo uszkodzonego, mimo że problem będzie wynikał wyłącznie z braku połączenia zasilania na wyjściu. Dlatego najlepiej wykonać tę modyfikację od razu na początku i dopiero później przejść do dalszych testów oraz konfiguracji.

Konfiguracja modułu PCM5102
Prawidłowa konfiguracja przetwornika PCM5102 jest kluczowa dla poprawnego działania dźwięku w projekcie. Na początku należy zlutować zworę SCK znajdującą się na module, co pozwala na wykorzystanie wewnętrznego generatora zegara.

Następnie, po stronie spodniej płytki, należy ustawić stany logiczne pinów konfiguracyjnych poprzez odpowiednie pozostawienie lub wykonanie zworek.
Pin H1L należy ustawić w stanie LOW, co wybiera standardowy filtr cyfrowy o wyższej jakości dźwięku. Pin H2L również powinien pozostać w stanie LOW, dzięki czemu funkcja de-emfazy jest wyłączona, co jest zalecane dla współczesnych strumieni audio. Pin H3L należy ustawić w stanie HIGH, co wyłącza tryb soft-mute i umożliwia natychmiastowe odtwarzanie dźwięku po uruchomieniu. Pin H4L pozostawiamy w stanie LOW, wybierając standardowy format danych audio I2S, w pełni kompatybilny z ESP32-S3.

Tabela ustawień konfiguracyjnych PCM5102A
| Pin | Nazwa | Funkcja | Pozycja LOW GND | Pozycja HIGH 3.3V |
|---|---|---|---|---|
| H1L | FLT | Wybór filtra cyfrowego | Normal latency – filtr o standardowym opóźnieniu (wyższa jakość) | Low latency – filtr o niskim opóźnieniu (lepsze do gier/real-time) |
| H2L | DEMP | De-emphasis dla nagrań 44,1 kHz | Off – funkcja wyłączona (zalecane) | On – korekcja starych nagrań z pre-emfazą |
| H3L | XMST | Kontrola soft-mute | Soft mute – łagodne wyciszenie przy starcie | Soft un-mute – natychmiastowe odtwarzanie (zalecane) |
| H4L | FMT | Wybór formatu danych audio | I²S – standardowy format audio (zalecany do Raspberry Pi, ESP32, STM32) | Left-justified – format wyrównany do lewej |
Przetwornik DAC PCM5102 I2S → ESP32-S3
| Pin DAC PCM5102 | Pin ESP32-S3 | Uwagi |
|---|---|---|
| VCC | 5 V | Moduł posiada własny stabilizator |
| GND | GND | Masa |
| BCK | GPIO 21 | Bit Clock I2S |
| LCK | GPIO 48 | Word Select |
| DIN | GPIO 47 | Dane audio |
Enkoder obrotowy 1 → ESP32-S3
| Pin enkodera | Pin ESP32-S3 | Uwagi |
|---|---|---|
| S1 | GPIO 6 | Kanał A enkodera |
| S2 | GPIO 5 | Kanał B enkodera |
| KEY | GPIO 4 | Przycisk |
| 5V | 5 V | Zasilanie |
| GND | GND | Masa |
Enkoder obrotowy 2 → ESP32-S3
| Pin enkodera | Pin ESP32-S3 | Uwagi |
|---|---|---|
| S1 | GPIO 18 | Kanał A enkodera |
| S2 | GPIO 17 | Kanał B enkodera |
| KEY | GPIO 16 | Przycisk |
| 5V | 5 V | Zasilanie |
| GND | GND | Masa |
Wzmacniacz PAM8403 → Zasilanie
| Pin PAM8403 | Źródło zasilania | Uwagi |
|---|---|---|
| + (5V) | 5 V (ESP32-S3 / wspólne zasilanie) | Zasilanie wzmacniacza |
| – (5V) | GND | Wspólna masa dla całego układu |
Wzmacniacz PAM8403 → Przetwornik DAC PCM5102
| Pin PAM8403 | Pin PCM5102 | Uwagi |
|---|---|---|
| L | L | Wejście audio lewego kanału |
| G | G | masa sygnału |
| R | R | Wejście audio prawego kanału |
Wzmacniacz PAM8403 → Wyjścia głośnikowe
| Pin PAM8403 | Podłączenie do złącza śrubowego | Uwagi |
|---|---|---|
| L+ | Głośnik lewy (+) | Wyjście mostkowe BTL |
| L− | Głośnik lewy (−) | Nie łączyć z masą |
| R+ | Głośnik prawy (+) | Wyjście mostkowe BTL |
| R− | Głośnik prawy (−) | Nie łączyć z masą |
Zasilacz buforowy UPS → wejście zasilania
| Zasilacz buforowy UPS | wejście zasilania | Uwagi |
|---|---|---|
| UPS – | masa | Masa |
| UPS + | środkowy pin włącznika | robimy tutaj rozłączanie zasilania na lini 5V |
Montaż urządzenia
Gdy mamy już przygotowane wszystkie potrzebne elementy i rozpisane połączenia, możemy przejść do składania całego radia YoRadio. Na tym etapie najważniejsze jest odpowiednie rozmieszczenie modułów na płytce uniwersalnej, pewne ich zamocowanie oraz staranne wykonanie wszystkich połączeń lutowanych. Najwygodniej zacząć od większych elementów, czyli płytki ESP32-S3, wyświetlacza oraz złącz, a dopiero później dołożyć pozostałe moduły, takie jak DAC, wzmacniacz audio czy enkodery. Taka kolejność po prostu ułatwia pracę, pozwala lepiej zaplanować miejsce na przewody i pomaga zachować porządek podczas montażu. W trakcie lutowania trzeba szczególnie uważać na poprawne prowadzenie zasilania, solidne połączenie masy i brak przypadkowych zwarć między sąsiednimi polami. Im dokładniej wykonany będzie ten etap, tym mniej problemów pojawi się później podczas uruchamiania i testowania urządzenia.
Montaż YoRadia krok po kroku
Montaż panelu frontowego
Prace montażowe zaczynamy od panelu frontowego, który został specjalnie przygotowany do tej wersji urządzenia i jest dopasowany do zastosowanej obudowy. Dzięki temu wszystkie otwory są już rozmieszczone dokładnie pod wyświetlacz, głośniki oraz enkodery, więc nie trzeba niczego dodatkowo dopasowywać ani przerabiać.

Na tym etapie osadzamy w panelu wszystkie elementy frontowe, czyli wyświetlacz TFT, oba głośniki oraz dwa enkodery odpowiedzialne za nawigację i regulację głośności. Takie rozpoczęcie montażu jest bardzo wygodne, ponieważ od razu możemy sprawdzić, czy wszystko dobrze pasuje mechanicznie i czy elementy są ustawione równo względem siebie.

Rozmieszczenie elementów na płytce PCB
Kolejnym etapem jest przygotowanie i rozmieszczenie głównych elementów na płytce uniwersalnej. Na tym etapie montujemy płytkę ESP32-S3, moduł DAC PCM5102A, wzmacniacz PAM8403 po drugiej stronie oraz złącza, które ułatwią późniejsze podłączenie wyświetlacza i enkoderów. Taki układ został dobrany tak, aby całość była możliwie kompaktowa, uporządkowana i wygodna zarówno podczas montażu.
Po lewej stronie płytki umieszczone zostały złącza pod przewody prowadzące do panelu frontowego, dzięki czemu podłączenie wyświetlacza i enkoderów jest znacznie prostsze i bardziej estetyczne niż przy lutowaniu wszystkiego bezpośrednio na stałe. Sama płytka ESP32-S3 zajmuje centralną część konstrukcji, natomiast moduł PCM5102A i złącza śrubowe zostały rozmieszczone po prawej stronie w taki sposób, aby zachować wygodny dostęp do połączeń audio i zasilania.

Od spodu płytki znalazł się wzmacniacz PAM8403, co pozwoliło zaoszczędzić miejsce i lepiej wykorzystać dostępną powierzchnię. Przed wykonaniem właściwych połączeń warto jeszcze raz sprawdzić, czy wszystkie moduły są ustawione równo, czy przewidziane zostało miejsce na prowadzenie przewodów oraz czy nic nie będzie kolidowało z obudową po zamknięciu urządzenia. Dobre rozplanowanie elementów na tym etapie bardzo ułatwia dalszy montaż i pozwala uniknąć późniejszych poprawek.

wykonanie połączeń elektrycznych
Po rozmieszczeniu wszystkich modułów na płytce przechodzimy do wykonania połączeń elektrycznych. Wszystkie przewody lutujemy zgodnie z wcześniej przygotowaną tabelą połączeń, ponieważ to ona pokazuje dokładnie, które piny należy ze sobą połączyć. Na tym etapie warto pracować spokojnie i na bieżąco sprawdzać każdy przewód, żeby uniknąć pomyłek, które później mogłyby utrudnić uruchomienie urządzenia. Szczególną uwagę trzeba zwrócić na linie zasilania, masę, połączenia sygnałowe do wyświetlacza oraz przewody prowadzące do enkoderów. Starannie wykonane połączenia zgodne z tabelą bardzo ułatwią dalszy montaż i pozwolą bez problemu przejść do kolejnych etapów składania radia.

Lutowanie przewodów do panelu
Następnie przechodzimy do przygotowania przewodów, które połączą płytkę główną z elementami zamontowanymi na panelu frontowym. Do obu enkoderów lutujemy 2 przewody JST-HX 2,54 mm 20 cm 5 pin, natomiast do wyświetlacza lutujemy 1 przewód JST-HX 2,54 mm 20 cm 9 pin. Takie rozwiązanie bardzo ułatwia późniejszy montaż całego urządzenia, ponieważ panel frontowy można wygodnie podłączyć do płytki głównej bez konieczności lutowania wszystkiego na stałe bezpośrednio w obudowie. Dodatkowo zastosowanie gotowych przewodów ze złączami poprawia estetykę wykonania, porządkuje okablowanie i ułatwia ewentualny demontaż lub serwis w przyszłości. Podczas lutowania warto od razu pilnować zgodności przewodów z wcześniej przygotowaną tabelą połączeń, aby po zamontowaniu wszystkich elementów uniknąć pomyłek przy uruchamianiu urządzenia.

Przygotowanie panelu tylnego
Kolejnym etapem jest przygotowanie panelu tylnego obudowy. To właśnie tutaj wykonujemy otwory pod gniazdo USB-C oraz pod przełącznik zasilania, tak aby po złożeniu urządzenia dostęp do ładowania i włączania radia był wygodny z zewnątrz. W naszym przypadku otwory zostały wykonane ręcznie, przy użyciu wiertarki, otwornicy oraz zwykłego wiertła. Takie rozwiązanie w zupełności wystarcza, ale warto robić to spokojnie i dokładnie, na bieżąco przymierzając elementy, aby uzyskać jak najlepsze dopasowanie. Szczególnie ważne jest to przy otworze pod przełącznik, który powinien siedzieć pewnie i równo, bez luzów. Po wykonaniu wszystkich otworów dobrze jest jeszcze raz sprawdzić, czy gniazdo USB-C oraz przełącznik bez problemu mieszczą się w przygotowanych miejscach i czy nic nie będzie przeszkadzało podczas późniejszego montażu wewnątrz obudowy.

Przygotowanie głośników
Kolejnym krokiem jest przylutowanie przewodów do obu głośników. Na tym etapie trzeba koniecznie zachować poprawną polaryzację, czyli podłączyć przewody w taki sam sposób dla lewego i prawego głośnika. Dzięki temu oba kanały będą pracowały prawidłowo i unikniemy problemów z niepoprawną fazą dźwięku. Najlepiej od razu trzymać się jednego schematu kolorów, na przykład czerwony jako plus, a czarny jako minus, bo bardzo ułatwia to późniejszy montaż i podłączenie do wzmacniacza. Po przylutowaniu przewodów warto jeszcze raz sprawdzić, czy luty są pewne i czy przewody nie mają luzu, ponieważ po zamknięciu obudowy dostęp do głośników będzie już ograniczony.

Przygotowanie UPS
Kolejnym etapem jest przygotowanie przewodów do modułu zasilania UPS. W tym kroku lutujemy przewody do odpowiednich pól modułu, zwracając szczególną uwagę na poprawną polaryzację. To bardzo ważne, ponieważ od prawidłowego podłączenia tej części zależy późniejsze zasilanie całego urządzenia oraz poprawne ładowanie akumulatorów. Najlepiej od razu trzymać się jednego, czytelnego oznaczenia kolorów przewodów, aby podczas dalszego montażu nie było wątpliwości, który przewód odpowiada za plus, a który za minus. Po wykonaniu lutów warto jeszcze raz sprawdzić ich jakość i upewnić się, że przewody są dobrze osadzone, bo moduł zasilania będzie jednym z kluczowych elementów całej konstrukcji.

Finalny montaż
Gdy wszystkie elementy są już przygotowane, możemy przejść do końcowego montażu wewnątrz obudowy. Najpierw podłączamy przewody z modułu UPS do wejścia zasilania naszego układu, a następnie doprowadzamy dodatni przewód od włącznika. Po tym etapie podpinamy przewody od obu enkoderów oraz wyświetlacza, a na końcu podłączamy głośniki do odpowiednich wyjść audio. Warto robić to spokojnie i w takiej kolejności, aby łatwiej było zapanować nad przewodami i uniknąć późniejszego bałaganu wewnątrz obudowy.
Sama płytka główna oraz moduł zasilacza UPS zostały w naszym przypadku zamocowane przy użyciu taśmy 3M. To szybkie i wygodne rozwiązanie, które dobrze sprawdza się w tego typu konstrukcji. Jeżeli ktoś woli, oba elementy można również osadzić za pomocą kleju na gorąco. Najważniejsze jest to, aby były zamocowane stabilnie i nie przemieszczały się podczas przenoszenia urządzenia ani przy zamykaniu obudowy. Dzięki temu cały układ po złożeniu pozostaje uporządkowany, bezpieczny i gotowy do dalszych testów.

Oprogramowanie YoRadio pobranie i przygotowanie plików
Gdy nasze radyjko jest już zmontowane i wszystkie elementy są prawidłowo podłączone, możemy przejść do kolejnego etapu, czyli przygotowania oprogramowania YoRadio. Na tym etapie zajmiemy się pobraniem potrzebnych plików, przygotowaniem środowiska oraz wstępną konfiguracją projektu pod naszą wersję urządzenia opartą o ESP32-S3. To bardzo ważna część całej budowy, ponieważ dopiero po poprawnym przygotowaniu oprogramowania będziemy mogli wgrać firmware do płytki i uruchomić radio. W kolejnych krokach pokażemy, skąd pobrać pliki, które elementy konfiguracji trzeba ustawić ręcznie oraz jak przygotować wszystko do pierwszego uruchomienia.
W pierwszej kolejności przechodzimy na oficjalną stronę projektu YoRadio na GitHubie. Po wejściu do repozytorium klikamy przycisk Code, a następnie wybieramy opcję Download ZIP, aby pobrać całe repozytorium w postaci archiwum. Po zakończeniu pobierania wypakowujemy archiwum ZIP, najlepiej bezpośrednio na pulpicie lub w innym łatwo dostępnym katalogu, ponieważ w kolejnych krokach będziemy pracować na zawartych w nim plikach. Po rozpakowaniu uzyskamy kompletną strukturę projektu YoRadio, zawierającą kod źródłowy, pliki konfiguracyjne, zasoby strony WWW oraz przykładowe konfiguracje.

Niestety w przypadku ESP32-S3 nie możemy skorzystać z gotowego generatora ustawień w taki sposób jak w innych wersjach projektu, dlatego całą konfigurację musimy przygotować ręcznie. Mimo to warto wejść na stronę generatora, ponieważ znajdziemy tam potrzebny plik startowy, który ułatwi nam dalszą pracę. Przechodzimy więc pod adres generatora:
https://e2002.github.io/docs/myoptions-generator.html
i pobieramy plik get myoptions.h. Będzie on dla nas bazą do dalszej ręcznej konfiguracji, którą następnie dostosujemy do naszego konkretnego zestawu, czyli wyświetlacza, enkoderów, modułu audio I2S oraz płytki ESP32-S3. Dzięki temu, mimo braku pełnej automatycznej obsługi, nadal możemy znacznie przyspieszyć przygotowanie plików konfiguracyjnych i oprzeć dalsze ustawienia na gotowym szkielecie.

Po pobraniu pliku myoptions.h zapisujemy go na komputerze, a następnie kopiujemy do wypakowanego wcześniej folderu projektu YoRadio, dokładnie do katalogu:
C:\Users\piotr\Desktop\yoradio-main\yoradio-main\yoRadio

Następnie otwieramy go w dowolnym edytorze tekstowym. Może to być na przykład Notepad++, Visual Studio Code albo nawet zwykły systemowy notatnik, chociaż wygodniej będzie pracować w programie, który lepiej pokazuje składnię i numerację linii. Po otwarciu pliku powinniśmy zobaczyć prostą zawartość z dyrektywami nagłówkowymi oraz komentarzami wygenerowanymi przez generator. Taki widok jest całkowicie prawidłowy i właśnie od tego miejsca zaczniemy dalszą ręczną konfigurację naszego projektu pod płytkę ESP32-S3.

Wybór języka
Na początku ustawiamy język interfejsu. Domyślnie do wyboru mamy dwie opcje, czyli RU oraz EN. W naszym przypadku od razu wybieramy RU, ponieważ będzie nam on potrzebny w dalszej części konfiguracji, kiedy pokażemy, jak poprawnie ustawić obsługę polskich znaków. Jeżeli jednak nie zależy Ci na wyświetlaniu polskich znaków, możesz po prostu zostawić wartość EN i kontynuować konfigurację w wersji angielskiej.

Konfiguracja wyświetlacza
W kolejnym kroku ustawiamy konfigurację wyświetlacza oraz przypisanie pinów dokładnie zgodnie z połączeniami, które pokazaliśmy wcześniej w tabeli. Wybieramy więc odpowiedni model wyświetlacza, czyli DSP_ILI9341, a następnie wpisujemy numery pinów zgodne z naszym rzeczywistym montażem. To bardzo ważny moment, ponieważ te ustawienia muszą być identyczne z tym, jak wyświetlacz został wcześniej przylutowany do płytki. Jeżeli w pliku konfiguracyjnym wpiszemy inne wartości niż te użyte podczas montażu, wyświetlacz po prostu nie będzie działał prawidłowo albo nie uruchomi się wcale. Dlatego przed zapisaniem zmian warto jeszcze raz porównać wpisane piny z tabelą połączeń i upewnić się, że wszystko się zgadza z naszym rzeczywistym układem.

Konfiguracja DAC’a
ustawiamy piny odpowiedzialne za komunikację z naszym przetwornikiem DAC. W tej sekcji wpisujemy wartości zgodne z połączeniami wykonanymi wcześniej podczas montażu, czyli dokładnie takie, jakie zostały użyte w naszym układzie. Tak samo jak w przypadku wyświetlacza, tutaj również wszystko musi się zgadzać z rzeczywistym podłączeniem przewodów, ponieważ w przeciwnym razie sekcja audio nie będzie działała prawidłowo. Dlatego przed przejściem dalej warto jeszcze raz porównać ustawione piny z naszą tabelą połączeń i upewnić się, że konfiguracja DAC-a odpowiada dokładnie temu, co zostało zlutowane w urządzeniu.

Ustawienia enkoderów
W kolejnym kroku przechodzimy do ustawień enkoderów, czyli elementów odpowiedzialnych za sterowanie naszym radiem. W tej sekcji wpisujemy piny przypisane do obu enkoderów dokładnie zgodnie z wykonanymi wcześniej połączeniami. Pierwszy enkoder odpowiada za jedną grupę funkcji, a drugi za kolejną, dlatego bardzo ważne jest, aby nie pomylić ich podczas konfiguracji. Dodatkowo włączamy wewnętrzne podciąganie wejść, czyli opcję INTERNALPULLUP, ustawiając ją na true dla obu enkoderów. Dzięki temu ich działanie będzie stabilne i nie będzie problemów z przypadkowymi odczytami stanów. Jak wcześniej, również tutaj wszystkie wartości muszą być zgodne z tym, jak przewody zostały rzeczywiście podłączone w urządzeniu.

Gotowa konfiguracja
Po wprowadzeniu wszystkich potrzebnych zmian nasz plik myoptions.h powinien finalnie wyglądać właśnie w taki sposób. Jeżeli wszystko zostało ustawione poprawnie, oznacza to, że podstawowa konfiguracja pod nasz zestaw jest już gotowa i możemy przejść dalej. Jeżeli jednak nie chcesz przepisywać wszystkiego ręcznie albo chcesz po prostu upewnić się, że korzystasz z poprawnej wersji pliku, spokojnie przygotowaliśmy również gotowy plik konfiguracyjny.
następnie wystarczy wrzucić go bezpośrednio do folderu z projektem YoRadio. Dzięki temu cały etap ręcznego uzupełniania ustawień można sobie znacznie uprościć i od razu przejść do kolejnych kroków związanych z uruchomieniem radia.

Wgrywanie języka polskiego do YoRadio
Domyślnie YoRadio nie posiada gotowego interfejsu w języku polskim, jednak dzięki odpowiedniej konfiguracji i podmianie kilku plików możemy uzyskać pełne tłumaczenie wraz z poprawnym wyświetlaniem polskich znaków diakrytycznych. W tym etapie pokażemy krok po kroku, jakie pliki należy podmienić oraz gdzie je umieścić, aby interfejs działał poprawnie.
Link do pobrania paczki z Polskimi znakami 👇
Krok 1: podmiana pliku językowego interfejsu
W pierwszej kolejności kopiujemy plik displayL10n_custom.h i wklejamy go do folderu:
yoRadio\locale\
Jeżeli w tym folderze znajduje się już plik o tej samej nazwie, należy go zastąpić nową wersją. Plik ten odpowiada za tłumaczenie elementów interfejsu użytkownika, takich jak menu, komunikaty systemowe oraz opisy funkcji.

Krok 2: obsługa polskich znaków UTF-8
Następnie kopiujemy plik utf8Rus.cpp i wklejamy go do katalogu:
yoRadio\src\displays\tools\
Ten plik odpowiada za prawidłową obsługę kodowania znaków UTF-8, co jest niezbędne do poprawnego wyświetlania polskich liter takich jak ą, ć, ę, ł, ń, ó, ś, ż i ź. Bez tego kroku napisy na wyświetlaczu mogłyby pojawiać się w formie nieczytelnych symboli.

Krok 3: instalacja biblioteki Adafruit GFX i podmiana pliku glcdfont.c
Zanim podmienimy plik glcdfont.c, musimy upewnić się, że w Arduino IDE zainstalowana jest biblioteka Adafruit_GFX_Library, ponieważ to ona odpowiada za obsługę grafiki i czcionek na wyświetlaczu TFT.
W tym celu uruchamiamy Arduino IDE, a następnie otwieramy Menedżer bibliotek, korzystając ze skrótu klawiszowego Ctrl + Shift + I. Alternatywnie można wejść w menu Szkic → Dołącz bibliotekę → Zarządzaj bibliotekami, jednak skrót klawiszowy jest najszybszą metodą.

Po otwarciu Menedżera bibliotek w polu wyszukiwania wpisujemy Adafruit GFX, a następnie instalujemy bibliotekę Adafruit_GFX_Library (jeżeli jest już zainstalowana, nie musimy wykonywać tej czynności ponownie). Po zakończeniu instalacji zamykamy Menedżer bibliotek i Arduino IDE.

Dopiero po zainstalowaniu biblioteki przechodzimy do właściwej podmiany pliku. Kopiujemy plik glcdfont.c i wklejamy go do folderu biblioteki:
Dokumenty\Arduino\libraries\Adafruit_GFX_Library\
Jeżeli plik o tej nazwie już istnieje, należy go zastąpić nową wersją. To właśnie ten plik zawiera zmodyfikowaną czcionkę umożliwiającą poprawne wyświetlanie polskich znaków diakrytycznych na ekranie TFT.
UWAGA!
Domyślnie biblioteki Arduino są instalowane w folderze:
Dokumenty\Arduino\libraries\
Jeżeli w Twoim przypadku Arduino IDE korzysta z innej lokalizacji, możesz ją sprawdzić w menu Plik → Preferencje, w polu „Lokalizacja szkicownika”. Docelowa ścieżka do wklejenia pliku glcdfont.c zawsze będzie wyglądać następująco:
[Lokalizacja szkicownika]\libraries\Adafruit_GFX_Library\

Krok 4: ustawienie języka w pliku myoptions.h
Na koniec otwieramy plik myoptions.h i upewniamy się, że znajduje się w nim lub dodajemy poniższa linia:
define L10N_LANGUAGE RU
To ustawienie sprawia, że YoRadio korzysta z plików językowych przypisanych do języka rosyjskiego, które w naszym przypadku zostały zastąpione wersją polską.
Po zapisaniu pliku projekt jest już w pełni przygotowany do pracy z językiem polskim i możemy przejść do kolejnego etapu, czyli kompilacji oraz wgrywania oprogramowania na ESP32-S3.

Przygotowanie Arduino IDE i instalacja pakietu ESP32
Zanim przejdziemy do wgrywania oprogramowania YoRadio na moduł ESP32-S3, musimy przygotować odpowiednie środowisko programistyczne. Projekt YoRadio podaje że nie jest kompatybilny z Arduino IDE w wersji 2.x.x, dlatego należy użyć klasycznej wersji Arduino IDE 1.8.19.
Wymagania projektu YoRadio:
- Arduino IDE 1.8.19
- Pakiet ESP32 (ESP32 core) w wersji 2.0.0 lub nowszej
Jeżeli masz zainstalowaną wersję Arduino IDE 2.x.x, zaleca się jej nie używać do tego projektu i pobrać starszą wersję 1.8.19 ze strony Arduino.
dodanie obsługi ESP32 do Arduino IDE
Po uruchomieniu Arduino IDE 1.8.19 przechodzimy do menu Plik → Preferencje. W polu „Dodatkowe adresy URL do menedżera płytek” wklejamy poniższy adres:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Jeżeli w tym polu znajdują się już inne adresy, oddzielamy je przecinkiem. Następnie zatwierdzamy zmiany przyciskiem OK.

Kolejnym krokiem jest instalacja pakietu ESP32. W tym celu przechodzimy do menu:
Narzędzia → Płytka → Menedżer płytek
W polu wyszukiwania wpisujemy ESP32, a następnie wybieramy pakiet esp32 by Espressif Systems. Instalujemy wersję 2.0.0 lub nowszą, zgodnie z wymaganiami projektu YoRadio. Proces instalacji może potrwać kilka minut, ponieważ pobierane są wszystkie niezbędne pliki kompilatora oraz narzędzia.
Po zakończeniu instalacji zamykamy Menedżera płytek.
Po poprawnym wykonaniu tych kroków Arduino IDE jest w pełni przygotowane do pracy z ESP32-S3 i projektem YoRadio. W następnym etapie wybierzemy odpowiednią płytkę, port COM oraz przejdziemy do kompilacji i wgrania oprogramowania na ESP32-S3, a następnie do pierwszego uruchomienia radia.

wybór płytki i ustawień w Arduino IDE
Po zainstalowaniu pakietu ESP32 przechodzimy do konfiguracji ustawień płytki w Arduino IDE. Wchodzimy w menu Narzędzia i ustawiamy wszystkie opcje dokładnie tak, jak pokazano na zrzucie ekranu. Jako płytkę wybieramy ESP32S3 Dev Module, ponieważ jest to uniwersalna konfiguracja w pełni zgodna z modułem ESP32-S3 użytym w tym projekcie.
Szczególną uwagę trzeba zwrócić na opcję Partition Scheme. Tutaj bardzo ważne jest ustawienie dokładnie tej samej wartości, ponieważ wybranie innej, niekompatybilnej opcji może spowodować, że podczas wgrywania pojawi się błąd albo po zakończeniu programowania radio po prostu nie uruchomi się prawidłowo.
Na końcu wybieramy odpowiedni port COM, pod którym widoczny jest nasz moduł ESP32-S3. W naszym przypadku jest to COM5, ale u Ciebie może to być inny numer. Po jego wskazaniu warto jeszcze raz sprawdzić, czy pozostałe ustawienia zgadzają się z pokazanym przykładem i czy nic nie zostało przypadkowo zmienione. Poprawne ustawienie tych opcji jest kluczowe, ponieważ bezpośrednio wpływa na poprawne wgranie i późniejsze działanie oprogramowania YoRadio.

wgrywanie oprogramowania na ESP32
Po poprawnym skonfigurowaniu wszystkich ustawień w Arduino IDE możemy przejść do wgrywania oprogramowania na moduł ESP32-S3. W tym celu klikamy przycisk Wgraj (ikona strzałki w lewo) znajdujący się na górnym pasku narzędzi Arduino IDE. Program rozpocznie proces kompilacji projektu YoRadio, a następnie wgrania go do pamięci ESP32-S3.
Należy uzbroić się w cierpliwość, ponieważ cały proces może potrwać nawet kilka minut, szczególnie podczas pierwszego wgrywania, gdy Arduino IDE kompiluje dużą ilość plików oraz bibliotek. W trakcie tego etapu nie należy odłączać modułu od komputera ani zamykać programu.
Jeżeli podczas kompilacji pojawi się komunikat o brakujących bibliotekach, nie jest to błąd krytyczny oznacza to jedynie, że Arduino IDE nie ma jeszcze zainstalowanych wszystkich wymaganych zależności. W takiej sytuacji należy, tak jak we wcześniejszych krokach, otworzyć Menedżer bibliotek (skrót Ctrl + Shift + I), wyszukać wskazaną w komunikacie bibliotekę i zainstalować ją, a następnie ponownie uruchomić proces wgrywania.
Po zakończeniu wgrywania w dolnym oknie Arduino IDE pojawi się komunikat informujący o pomyślnym przesłaniu programu, co oznacza, że radio jest gotowe do pierwszego uruchomienia i dalszej konfiguracji.

Po poprawnym wgraniu oprogramowania YoRadio uruchamiamy moduł ESP32-S3. Przy pierwszym starcie urządzenie automatycznie tworzy własny punkt dostępowy Wi-Fi, którego nazwa (SSID) pojawi się na wyświetlaczu TFT. Domyślne hasło do tej sieci to:
12345987
Na komputerze łączymy się z tą siecią Wi-Fi yoRadioAP, a następnie na tym samym urządzeniu otwieramy przeglądarkę internetową i wpisujemy adres:
192.168.4.1
Po chwili powinniśmy zobaczyć stronę ëRadio – WEB Board Uploader, dokładnie taką jak na załączonym zrzucie ekranu. Jest to wbudowany interfejs webowy, który umożliwia dalszą konfigurację radia.

Na tej stronie wgrywamy pliki strony WWW z katalogu yoRadio/data/www/, które odpowiadają za wygląd oraz działanie interfejsu webowego radia. Dodatkowo w tym poradniku udostępniamy gotowy plik playlist.csv z 7 przykładowymi, podstawowymi stacjami radiowymi, przygotowanymi specjalnie pod YoRadio, plik ten można pobrać z linku, który podajemy poniżej, i wgrać bezpośrednio przez ten formularz.
Jeżeli chcesz rozbudować listę stacji, pełną i bardzo obszerną bazę stacji radiowych znajdziesz pod adresem:
Z tej listy możesz swobodnie wybierać interesujące Cię stacje i dopisywać je do pliku playlist.csv, tworząc własną, spersonalizowaną listę ulubionych rozgłośni. Opcjonalnie w tym samym miejscu możesz również wgrać plik wifi.csv, jeżeli chcesz ustawić połączenie z siecią Wi-Fi bezpośrednio z poziomu pliku, bez ręcznej konfiguracji w przeglądarce.
lista stacji radiowych nie jest niczym zamkniętym na etapie wgrywania plików. Stacje można dodawać, edytować i usuwać również później, w dowolnym momencie, bez ponownego programowania ESP32-S3. Wystarczy wejść do panelu webowego YoRadio przez przeglądarkę internetową, korzystając z adresu IP urządzenia w sieci lokalnej, gdzie dostępny jest wygodny interfejs do zarządzania playlistą. Dzięki temu możesz na bieżąco dopasowywać zawartość radia do swoich preferencji i aktualizować listę stacji wtedy, kiedy tylko masz na to ochotę.

Następnie konfigurujemy połączenie Wi-Fi z naszą domową siecią, podając nazwę sieci (SSID) oraz hasło. Po zapisaniu ustawień radio połączy się z routerem i otrzyma własny adres IP.
Po udanym połączeniu z siecią domową wchodzimy w przeglądarce na adres:
http://<adres_IP_radia>/
gdzie możemy:
- dodawać i edytować listę stacji radiowych,
- importować stacje,
- sterować radiem bezpośrednio z poziomu przeglądarki.

Jeżeli na tym etapie widzisz interfejs radia, a dźwięk zaczyna grać gratulacje, Twoje YoRadio działa poprawnie i jest gotowe do codziennego użytkowania 🎶

Pierwsze uruchomienie i zamknięcie obudowy
Po poprawnym wgraniu oprogramowania nie pozostaje już nic innego, jak odłączyć przewód USB-C od naszej płytki ESP32-S3, włożyć dwa akumulatory 18650 do koszyka z zachowaniem prawidłowej polaryzacji, a następnie zamknąć obudowę. W tym momencie całe urządzenie jest już gotowe do pracy. Jeżeli wszystkie wcześniejsze etapy zostały wykonane poprawnie, radio powinno uruchomić się bez problemu i być gotowe do codziennego użytkowania. To właśnie ten moment, w którym z pojedynczych modułów, przewodów i wydrukowanych elementów powstaje w pełni działające, estetyczne YoRadio.

Podsumowanie
Jak widać, zbudowanie własnego YoRadia na ESP32-S3 wcale nie musi być trudne, jeśli cały proces rozłożymy sobie na etapy. W tym poradniku przeszliśmy od doboru elementów, przez montaż mechaniczny i wykonanie połączeń, aż po ręczną konfigurację plików oraz wgranie gotowego oprogramowania. Dzięki temu powstało w pełni funkcjonalne radio internetowe z kolorowym wyświetlaczem, wygodnym sterowaniem za pomocą dwóch enkoderów, zewnętrznym przetwornikiem DAC i zasilaniem akumulatorowym.
Największą zaletą tej konstrukcji jest to, że otrzymujemy urządzenie, które nie tylko działa, ale również wygląda jak gotowy, dopracowany produkt. Zastosowanie własnego panelu frontowego, obudowy Kradex oraz przemyślanego rozmieszczenia elementów sprawia, że całość prezentuje się estetycznie i jest wygodna w codziennym użytkowaniu. Dodatkowo projekt można dalej rozwijać, modyfikować listę stacji, zmieniać wygląd interfejsu czy dopasowywać ustawienia do własnych potrzeb.
Jeżeli złożyłeś urządzenie zgodnie z tym poradnikiem, to w Twoich rękach jest już kompletne, przenośne YoRadio, gotowe do słuchania ulubionych stacji radiowych. I właśnie to jest w tym projekcie najlepsze z kilku modułów, odrobiny lutowania i chwili konfiguracji powstaje coś naprawdę praktycznego i dającego dużo satysfakcji.


Prezentowaną w artykule elektronikę znajdziesz oczywiście w naszym sklepie 👉 sklep.msalamon.pl 👈Zapraszamy również na nasze social media, gdzie na bieżąco informujemy o nowych produktach oraz o najciekawszych promocjach 😎👇

