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.

Komentarze

  • Dear Piotr!
    Very interesting project!
    Are the any commercial devices built-on your project?
    Is it possible to buy a few assembled boards?

  • Może zamiast standardowego ESP8266 można by zastosować moduł NodeMCU http://www.nodemcu.com/index_en.html ? Może by wystarczyło pinów by obsłużyć wszystko (obsługa LCD, enkodera, RDA5807M, itp.).

    Zamierzam zbudować coś podobnego – mianowicie prosty amplituner. RDA5870 jako odbiornik FM, PT2314 jako przedwzmacniacz, PAM8403 jako wzmacniacz mocy 2x3W i wbudowane w obudowę małe głośniki. Do tego LCD alfanumeryczny 2×40 jako wyświetlacz i cała gama manipulatorów wejściowych do sterowania tunerem i przdwzmacniaczem: wyszukiwanie stacji , presety stacji, głośność, basy, soprany, balans, mute, itp. Teoretycznie przedwzmacniacz nie jest na początku potrzebny ale później można rozbudować amplituner dodając kolejne segmenty, np. gramofon, magnetofon czy CD player. Wszystko było by sterowane za pomocą Arduino.
    Kilka dni temu wpadł mi pomysł by dodać możliwość odgrywania radia internetowego, od razu pomyślałem więc o NodeMcu. Ponadto nodemcu umożliwia pisanie kodu w C/C++ kompatybilnego z Arduino, więc myślę, że skorzystanie z NodeMcu to dobry pomysł. Zacząłem szukać w Internecie podobnych projektów i tak trafiłem na Twoją stronę.

  • Napisz odpowiedź lub komentarz

    Twój adres email nie zostanie upubliczniony.

    Możesz używać następujących tagów HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>