Odtwarzacz radia internetowego na ESP8266, cz. 2

Napisano dnia 18.06.2016 r. o godzinie 11:28
Autor: Piotr Sperka

Wstęp

Gdy blisko rok temu rozpoczynałem projekt odtwarzacza radia internetowego, nie sądziłem, że przeciągnie się on na tak długi czas. W każdym razie, w reszcie znalazłem trochę czasu na kontynuowanie prac, więc zapraszam do drugiej części artykułu.

Postęp prac

Pierwszą rzeczą, chyba najważniejszą, jest wykonanie płytki drukowanej. Zawiera ona wszystkie niezbędne podzespoły do uruchomienia urządzenia. Jest tam więc moduł ESP8266, dekoder VS1053, a także miejsce na dodatkową pamięć SRAM z interfejsem SPI. Jest ona potrzebna, jeżeli chcemy słuchać strumieni audio o dużej przepustowości (np. 320kb/s). Na płytce jest również miejsce dla ewentualnego bufora opartego o wzmacniacz operacyjny, na którego wyjściu jest sygnał symetryczny względem masy. Aby go wykorzystać potrzeba jednak doprowadzić dodatkowe zasilanie -5V. W moim przypadku koncepcja urządzenia uległa pewnej modyfikacji (o czym później), w związku z czym u mnie układ ten nie jest wykorzystywany. Jeżeli pojawi się druga wersja PCB, prawdopodobnie zostanie on z niej usunięty.

Jeśli chodzi o program, to od czasu ostatniego artykułu pracowałem nad poprawą stabilności działania, a także np. odczytem metadanych w przypadku, gdy dany strumień je udostępnia. Zaimplementowałem również obsługę zewnętrznej pamięci SRAM. Około kwietnia tego roku projektem zainteresował się pewien Francuz (karawin), który wykonał jego fork na Githubie i przyczynił się do poprawy stabilności działania programu, a także znacząco poprawił działanie interfejsu dostępnego poprzez przeglądarkę internetową. Skorzystałem z jego zmian w swoim kodzie i obecnie mogę uznać, że funkcje związane z radiem internetowym działają poprawnie.

Co dalej?

Jak wspomniałem już wcześniej, w trakcie prac odrobinę zmieniłem koncepcję całego urządzenia. Po pierwsze, chcę zastosować w urządzeniu wyświetlacz i enkoder do komunikacji z użytkownikiem bez użycia przeglądarki internetowej. Pierwsza koncepcja zakładała, że będzie to układ oparty o jakiś mikrokontroler, który będzie nadrzędny względem ESP8266 (czyli będzie nim sterował). Obecnie postanowiłem zrealizować coś w stylu konwertera pozwalającego poprzez UART sterować wyświetlaczem graficznym 128×32 i odczytywać zdarzenia z encodera (obrót, przyciśnięcie). Za obsługę wszystkich zdarzeń, a także za wyświetlanie danych na wyświetlaczu będzie odpowiadał ESP8266.

Drugą kwestią jest rozszerzenie funkcjonalności urządzenia o możliwość odbioru stacji radiowych FM. Ponieważ ma to być funkcja dodatkowa, stwierdziłem, że wystarczy zastosowanie prostego w obsłudze układu RDA5807M. Ponieważ jest on sterowany poprzez magistralę I2C, a w module ESP8266 nie posiadam już wolnych wyprowadzeń, postanowiłem, że układ konwertera stosowany dla wyświetlacza i enkodera, będzie również realizował konwersję I2C na UART.

Podsumowanie

Obecnie, w miarę wolnego czasu, pracuję nad potrzebnymi dodatkowymi płytkami. Potem zostanie już tylko odpowiednio rozszerzyć program i urządzenie będzie gotowe. Wtedy też napiszę ostatnią część artykułu, z dokładnym opisem budowy i obsługi urządzenia. Planuję w taki sposób napisać kod, by urządzenie mogło działać także bez „interfejsu użytkownika”, czyli wyświetlacza i enkodera. Moduł radia FM również będzie opcjonalny. Jeżeli kogoś nie interesują te funkcje, to układ w obecnej formie jest w zasadzie gotowy i w pełni funkcjonalny. Po więcej szczegółów dotyczących rozwoju programu, a także pełny kod źródłowy i schematy zapraszam na mój Github.