Głównym założeniem projektu było stworzenie odbiornika, który oprócz odtwarzania strumienia sieciowego, pozwoliłby także na wyszukiwanie oraz zapamiętywanie nowych stacji. Dodatkowe wymagania to zaprojektowanie intuicyjnego i prostego interfejsu użytkownika oraz możliwość sterowania urządzeniem za pomocą pilota lub enkodera obrotowego.
Wybór podzespołów
Jako centralny element wybrany został mikrokontroler ESP32-S3 na płytce developerskiej DevKitC-1. Głównym argumentem przy wyborze tego właśnie układu była wbudowana obsługa sieci Wi-Fi (stanowiąca kluczowy element projektu) oraz wystarczająca ilość pamięci i wydajność.
Kolejną kwestią wymagającą przemyślenia okazał się sposób obsługi skompresowanych danych audio. Pierwsze próby realizacji zakładały programowe dekodowanie strumienia MP3 i wysyłanie zdekodowanego sygnału do zewnętrznego przetwornika cyfrowo-analogowego (DAC) przez magistralę I²S. Jednak z uwagi na braki w dostępnych bibliotekach (liczbę obsługiwanych formatów) oraz dużą konsumpcję zasobów mikrokontrolera, przynosiło to niezadowalające rezultaty.
Ostatecznie wybór padł na dekodowanie przy użyciu wyspecjalizowanego układu, a konkretnie VS1053 firmy VLSI Solution. Jest on często stosowany w tego rodzaju aplikacjach, gdyż zapewnia obsługę praktycznie wszystkich popularnych formatów kompresji audio (MP3, WMA, OGG Vorbis, FLAC, AAC). Co ciekawe, układ obsługuje również format MIDI. Do komunikacji z mikrokontrolerem używa magistrali SPI. Bardzo istotny okazuje się fakt, że dostępne są gotowe moduły z zamontowanym układem oraz obwodami peryferyjnymi, co ułatwia zastosowanie go w prototypach.
Aby spełnić założenia dotyczące interfejsu użytkownika, urządzenie trzeba było wyposażyć w odpowiednio duży i czytelny wyświetlacz w technologii OLED. Wybór padł na model o wielkości 2,42”, rozdzielczości 128×64 pikseli, sterowany układem SSD1309. Do budowy użyty został również enkoder obrotowy oraz odbiornik podczerwieni TSOP2236.
Interfejs użytkownika
Po uruchomieniu urządzenia na wyświetlaczu pojawia się ekran startowy, a w tle następuje inicjalizacja. Po jej zakończeniu odbiornik jest gotowy do obsługi i wyświetlone zostaje główne menu. Wybraną pozycję zatwierdzamy krótkim naciśnięciem gałki enkodera. Dłuższe przyciśnięcie gałki powoduje powrót do poprzedniego menu. Do sterowania można również używać przycisków kursora na pilocie zdalnego sterowania. Istnieją ponadto nieliczne funkcje dodatkowe dostępne tylko za pośrednictwem pilota.
Favorites
Na wyświetlaczu pokazana jest lista zapisanych wcześniej „ulubionych” stacji radiowych. Użytkownik może uruchomić tutaj odtwarzanie wybranej stacji, a także usunąć wybraną pozycję z listy (usunięcie z listy dostępne jest tylko za pomocą pilota).
Select by country
Na wyświetlaczu widzimy listę krajów wraz z liczbą zarejestrowanych stacji z każdego kraju. Lista posortowana została pod kątem liczby dostępnych rozgłośni. Wybranie danej pozycji przenosi nas na listę stacji radiowych wybranego kraju (posortowaną pod kątem popularności) – wskazanie którejś z nich uruchamia odtwarzanie.
Select by tag
Po wybraniu tej pozycji otrzymujemy listę tagów, czyli słów kluczowych, które opisują rozgłośnie. Przy każdym tagu widzimy liczbę zarejestrowanych rozgłośni. Słowa kluczowe są posortowane pod kątem liczby zarejestrowanych w odniesieniu do nich stacji. Wybranie konkretnej pozycji przenosi użytkownika do listy rozgłośni dla danego tagu, z której można od razu przejść do odtwarzania wybranej stacji.
Settings->Select radio list server
Mamy tu możliwość wyboru serwera usługi sieciowej udostępniającej bazę danych z informacjami o stacjach. Usługa ta jest dostępna na kilku serwerach. W razie awarii jednego z nich możemy w tym miejscu przełączyć się na inny.
Settings->Wifi settings
Użytkownik może tutaj wybrać z listy sieć Wi-Fi, do której ma być podłączone urządzenie. Po wybraniu odpowiedniej sieci należy wprowadzić hasło dostępowe. Zatwierdzamy je długim przyciśnięciem gałki enkodera.
Settings->Restart
Wybierając tę opcję, można zrestartować urządzenie.
Turn off
Po wybraniu tej opcji odbiornik przechodzi w tryb standby.
Ekran odtwarzania
Podczas odtwarzania na wyświetlaczu widoczne są:
- nazwa odtwarzanej stacji,
- kraj odtwarzanej stacji,
- bitrate [kbps],
- ustawiona głośność,
- liczba bajtów w buforze odtwarzania (aktualizowana cały czas),
- napis „chunked”, jeśli strumień transmitowany jest w takim właśnie trybie.
W trakcie odtwarzania użytkownik może dodać stację do listy ulubionych. Funkcja ta dostępna jest tylko za pomocą pilota. Możliwa jest również regulacja głośności odtwarzania.