Odtwarzacz radia internetowego na ESP8266, cz. 1

Napisano dnia 10.08.2015 r. o godzinie 9:00
Autor: Piotr Sperka

Wstęp

Około rok temu pracowałem nad odtwarzaczem radia internetowego (SHOUTcast). Wtedy realizowałem go na zestawie STM32, VS1053 jako dekoder MP3, OGG, itp. oraz ENC28J60 do połączenia z siecią LAN. Projekt ten doprowadziłem do działania, jednak nigdy nie wyszedł poza prototyp złożony na płytkach prototypowych. Stało się tak głównie z uwagi na jego największą wadę – konieczność połączenia z siecią poprzez kabel.

ESP8266

Kilka miesięcy wstecz dowiedziałem się od kolegi o ciekawym układzie – ESP8266. Dostępny jest on w postaci niewielkich modułów składających się z mikrokontrolera, pamięci i innych niezbędnych do działania elementów. Układ ten posiada wbudowane peryferia do obsługi sieci WiFi, a co więcej, jego producent dostarcza SDK składające się z wszystkich potrzebnych składników umożliwiających stosunkowo proste pisanie na niego programów. Standardowo do układu wgrane jest oprogramowanie umożliwiające obsługiwanie go poprzez komendy AT. Największą jednak jego zaletą jest niska cena – około 25zł. Początkowo byłem do niego nieco sceptycznie nastawiony, jednak z uwagi na cenę zakupiłem jeden do eksperymentów i bardzo miło się zaskoczyłem. Moduł działa bardzo stabilnie, jest do niego dostępna duża ilość różnego alternatywnego oprogramowania, np. wspierającego język skryptowy LUA. Jednakże największa siła ESP8266 tkwi w dostarczonym SDK, gdyż w krótkim czasie można napisać sprawnie działające oprogramowanie. Do zaprogramowania modułu nie potrzeba żadnych specjalnych narzędzi, gdyż posiada bootloader umożliwiający programowanie poprzez UART. Testowany przeze mnie układ miał wtedy w zasadzie jedną zasadniczą wadę – mało wyprowadzeń. Posiadał tylko UART w najprostszej postaci (Rx i Tx) i chyba 2 GPIO. Biorąc pod uwagę moje wcześniejsze testy postanowiłem wskrzesić projekt odtwarzacza radia internetowego, jednak tym razem korzystający z sieci bezprzewodowej.

Moduł ESP8266 - ESP-01

Moduł ESP8266 – ESP-01

Pierwsza koncepcja

W pierwszym wariancie układ miał być konfigurowany poprzez UART i następnie tą samą drogą odsyłać dane do mikrokontrolera STM32, który zajmować się miał ich buforowaniem i przesyłaniem do układu VS1053, a także obsługą interfejsu użytkownika (LCD, itd.). Wykonałem nawet prototyp układu, jednak z uwagi na brak kontroli przepływu przez UART, konieczne by było stosowanie bardzo dużych pamięci buforujących i pojawiały się problemy przesłaniem jakichkolwiek innych danych (np. metadanych stacji) podczas odtwarzania. Wtedy też ponownie porzuciłem projekt.

Druga koncepcja

Nieco później pojawiły się w sprzedaży nowe wersje modułów – ESP-07 i ESP-12, posiadające już nieco więcej wyprowadzeń, w tym sprzętowe SPI, co otwarło nowe możliwości. Postanowiłem pozbyć się z projektu mikrokontrolera STM32, a dane do dekodera VS1053 przesyłać poprzez SPI bezpośrednio z układu ESP8266. Obecnie układ w wersji prototypowej gra, jednak nie posiada jeszcze wszystkich elementów, jak np. „sprzętowego” interfejsu użytkownika, który będzie się komunikował z ESP8266 poprzez UART, czy dołączonej pamięci EEPROM do zapisu stacji.

Prototyp odtwarzacza radia internetowego

Działający prototyp odtwarzacza radia internetowego

Podsumowanie

Na chwilę obecną zaimplementowana jest obsługa VS1053, działa prosty klient i serwer www do wyświetlania panelu administracyjnego. Sam panel posiada już działające najprostsze funkcje. W najbliższym czasie opublikuję ostateczny schemat urządzenia, natomiast powstający kod można zobaczyć na GitHubie. W kolejnych częściach artykułu opiszę więcej szczegółów oraz postępy z prac. Planuję także zamieścić tutorial na temat instalacji środowiska programistycznego dla ESP8266 pod linuksem, gdyż pomimo istnienia wielu poradników nie jest to takie oczywiste i proste zadanie. Na koniec standardowo – jeżeli masz jakieś pytania lub pomysły, napisz do mnie. Z chęcią się do nich ustosunkuję.

Zapraszam do drugiej części artykułu.

Panel administracyjny odtwarzacza radia internetowego

Panel administracyjny odtwarzacza radia internetowego – prototyp