Blog (14)
Komentarze (382)
Recenzje (0)

Radio Internetowe, da się? Da!

@Maniek_88Radio Internetowe, da się? Da!07.10.2013 21:38

Od mojego ostatniego wpisu na blogu upłynęło już wiele wody w Wiśle, i wiele piwa na HotZlocie zostało wypite. Od teraz postaram się zwiększyć aktywność, i tym wpisem chciałbym to zainaugurować. Jest to wpis krótko omawiający powód przez który straciłem wiele czasu i zdrowia, co przeszkadzało mi w pracy nad moim portfolio na dobrychprogramach.

Przez ostatnich kilka miesięcy toczyłem walkę z moją pracą magisterską. Uważam że tematyka projektu nadaje się do podzielenia się tym co udało mi się zrealizować. Urządzenie przeze mnie zbudowane stanowi niezależny odbiornik radia internetowego. Wiem że wśród użytkowników portalu jest też część elektroników dla których ten wpis może być interesującą lekturą, tak więc od początku:

Cele

Temat wybrałem z 2 powodów, po pierwsze tego typu urządzenie wydaje się bardzo ciekawym wyzwaniem, po drugie... kompletnie nie miałem pojęcia jak to zrobić. Moja znajomość interfejsów sieciowych, protokołu TCP/IP, sposobu łączenia się między hostami oscylowała w granicach zera absolutnego. Dodatkowo chciałem zrealizować takie urządzenie na mikrokontrolerze ARM STM32, gdyż wcześniej jakoś nie było okazji aby nauczyć się programować tego typu układy. Miałem więc za zadanie zbudować urządzenie, o którego działaniu nie wiedziałem nic, na bazie platformy sprzętowej z którą nigdy wcześniej się nie mierzyłem. Chciałem być ambitny, czego przez znaczną część czasu spędzonego na realizacji projektu żałowałem :). Zbudowany odbiornik radia internetowego miał umożliwiać połączenie się z dowolną stacją radiową i umożliwić jej komfortowy odsłuch. W miarę możliwości chciałem dodać więcej elementów zwiększających jego funkcjonalność.

Budowa

Całe urządzenie opiera się na mikrokontrolerze ARM STM32F4 który zainstalowany jest na płytce DISCOVERY. Do niego dołączone są inne moduły dzięki którym możliwe jest połączenie z Internetem, słuchanie stacji jak i sterowanie pracą urządzenia. Schemat połączeń przedstawia rysunek:

Aby urządzenie posiadało dostęp do Internetu, mikrokontroler obsługujący warstwę łącza danych MAC musi mieć podłączony układ realizujący warstwę fizyczną PHY. To za jego pośrednictwem dane są przesyłane między światem a urządzeniem. Drugim kluczowym elementem w moim projekcie jest sprzętowy dekoder formatów audio. Dzięki niemu mogę odebrany strumień MP3 lub AAC zamienić bezpośrednio na dźwięk :) Możecie się zapytać czemu nie użyłem software'owego dekodera MP3 i AAC, rozważałem to rozwiązanie, jednak po próbach użycia dekodera MP3 zauważyłem ze znaczna większość stacji przesyła strumień AAC, dokładanie drugiego dekodera, tworzenie 2 konfiguracji i zapanowanie nad tym w programie wbudowanym przy ograniczonym czasie na realizację wydał mi się odrobinę karkołomny. Używając sprzętowego dekodera MP3 i AAC w jednym zaoszczędziłem sporo czasu na programowanie, a przy okazji odciążyłem mikroprocesor o jedno zadanie. Dodatkowo dorzuciłem gniazdo karty SD. Dzięki niemu, można za pomocą pliku tekstowego wrzucić własną listę adresów stacji internetowych które będzie można odsłuchiwać przez urządzenie. Ostatnia część to wyświetlacz z kultowego telefonu NOKIA 3310 (Podziękowania dla kolegi zigguard za poświecenie swojego egzemplarza w imię nauki!) i 4 przyciski służące do kontroli głośności i zmiany odtwarzanej stacji internetowej. Całe urządzenie scaliłem używając płytki głównej którą zaprojektowałem i wykonałem.

Pracujące urządzenie
Pracujące urządzenie

Oprogramowanie

Nie będę szczegółowo opowiadał o tym co się dzieje w oprogramowaniu, jeśli macie pytanie to chętnie odpowiem w komentarzu. Cały kod urządzenia został napisany w języku C i skompilowany przy użyciu kompilatora armgcc. Do pisania i debugowania użyłem środowiska CooCoox które jest całkiem niezłym środowiskiem programistycznym do mikrokontrolerów ARM zbudowany na popularnym Eclipse. Pakiet umożliwia utworzenie projektu na platformę STM32F4 Discovery dzięki czemu po kilku kliknięciach mamy w pełni skonfigurowane środowisko. Program urządzenia jest własnym tworem, nie korzystam w działaniu oprogramowania z żadnego systemu operacyjnego typu RTOS. Obsługa sieci realizowana jest dzięki wykorzystaniu biblioteki lwIP. Program główny obsługuje funkcje biblioteki wywoływane okresowo w przerwaniach, oraz cały przepływ odebranych danych do dekodera audio. W programie obsługiwane jest łączenie się z nowym serwerem, podejmowane są działania związane ze zmianą stacji, odświeżanie informacji na wyświetlaczu i kontrola wciśniętych przycisków wraz z odpowiadającymi im akcjami do wykonania przez radio. Podczas odtwarzania stacji, odtwarzany strumień przesyłany jest do dekodera audio, i jednocześnie sprawowany jest nadzór nad pojawianiem się metadanych. Metadane to informacje tekstowe wtrącane w strumień audio zawierające dane o aktualnej audycji bądź tytuł piosenki i inne poboczne informacje które radio może przesyłać. Tego typu dane należy przetworzyć, i wyciąć z właściwego strumienia audio.

Działanie

Teraz wisienka na torcie, działanie urządzenia. Na samym końcu zamieszczam film prezentujący pracę urządzenia. Niestety w trakcie prac rozwojowych uszkodził mi się moduł dekodera audio i musiałem go zastąpić innym przez co widać plątaninę kabli które łączą moduł z innym modułem (rozkład pinów nie zgadzał się niestety z oryginalnym). Urządzenie niestety ma jedną wadę której nie da się przeoczyć. Po przełączeniu stacji pierwszych kilka sekund odtwarzany jest bardzo poszarpany dźwięk. Wiem czym jest to spowodowane, jednak nie zdążyłem ostatecznie tego wyeliminować, a terminy goniły... w końcu projekt to nie wszystko, trzeba by jeszcze pracę napisać :) Dzisiaj wiem że kilka rzeczy zrobił bym inaczej, teraz zaprojektował bym już obwód pcb aby całość miała jednocześciową budowę, a program nieco przebudował aby poprawić odtwarzanie. Jednak tego nie zrobię, bo w kolejce czeka już kilka nowych projektów które ze względu na ten specjalny musiały być ciągle odkładanie, a takie radio... było ciekawym wyzwaniem przy którym na prawdę wiele się nauczyłem, i wiem że wiedza zdobyta przy jego budowie nie raz pomoże mi w przyszłości :)

I obiecany film z działającym urządzeniem: [youtube=https://www.youtube.com/watch?v=QzDphrLSrwI]

Jeśli ktoś by się zastanawiał to tak, dnia 3.10.2013 roku zostałem magistrem :)

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.