Raspberry PiRate Radio. Stacja radiowa z Raspberry Pi

Raspberry PiRate Radio. Stacja radiowa z Raspberry Pi
Pobierz PDF Download icon
W dobie Internetu posiadanie własnej, amatorskiej stacji radiowej nie wydaje się już tak atrakcyjne, jak niegdyś. Teraz, chcąc podzielić się swoimi poglądami wystarczy założyć blog, przygotować tzw. podcast lub po prostu uruchomić kanał na YouTube. Ale by odbierać transmisje Internetowe trzeba mieć urządzenie komputerowe, podczas gdy analogowy sygnał FM można bez problemu odsłuchać z użyciem najtańszego odbiornika. I choć może wydawać się, że transmisja audio z komputera w paśmie radiowym z modulacją FM jest bezsensownym anachronizmem, w artykule pokazujemy interesujący projekt, w którym nadajnikiem radiowym jest Raspberry Pi, a przykładowe zastosowania tego rozwiązania ? całkiem użyteczne.

Projekt był opublikowany w Make: magazine przez Sama Freemana i Wyntera Woodsa. Jego anglojęzyczny opis można znaleźć pod adresem www.makezine.com/projects/raspberry-pirate-radio/. Atrakcyjną prezentację wideo nadajnika można obejrzeć na https://goo.gl/Gk3ai7.

Uwaga! Urządzenie umożliwia transmisję na częstotliwościach radiowych w zakresie od 1 MHz do 250 MHz, co pokrywa się z licencjonowanym w Polsce pasmem radiowym. Korzystanie z nadajnika może zakłócać inne sygnały radiowe, a nadawanie bez koncesji jest zabronione i może mieć konsekwencje prawne. Ten projekt ma jedynie charakter edukacyjny.

Podstawowy problem z samodzielnym budowaniem analogowego systemu radiowego jest konieczność przygotowania wszystkich potrzebnych obwodów radiowych, co dla elektroników dobrze obeznanych w domenie cyfrowej często stanowi nie lada wyzwanie. Jednakże w przypadku omawianego projektu problem ten znika. Jedyny potrzebny sprzęt to samo Raspberry Pi, karta SD i zasilacz oraz kawałek kabla. Choć może wydawać się to niewiarygodne, jest to wystarczający zestaw do niektórych aplikacji. Udowodnili to Oliver Mattos i Oskar Weigl, którzy przygotowali projekt o nazwie PiFM. Pomagał im Ryan Grassel, a wersję prezentowaną w niniejszym artykule opracował Wynter Woods, który na podstawie PiFM stworzył wygodny w użyciu odtwarzacz muzyki, transmitujący sygnał audio radiowo z modulacją FM do pobliskich odbiorników.

Montaż sprzętu

Omawiany projekt bardzo łatwo jest odtworzyć samodzielnie. Za antenę może posłużyć zwykły, jednożyłowy przewód (najlepiej miedziany, o przekroju ok. 2,5 mm2). Jego optymalna długość zależeć będzie od częstotliwości, na której chcemy nadawać, przy czym ze względów praktycznych może okazać się że wygodniej jest by był krótszy. Dla częstotliwości 100 MHz, a więc bliskiej środka pasma, które można wykorzystać w tym projekcie, a zarazem blisko środka zakresu typowego radioodbiornika FM, przewód powinien mieć długość 75 cm. Może się jednak zdarzyć, że nie będzie on wystarczająco sztywny i trzeba będzie skrócić kabel. Pogorszy to parametry transmisji, ale na tyle nieznacznie, że w bliskim otoczeniu wciąż będzie można odbierać sygnał. Przykładowo, przewód o długości 40 cm będzie optymalny dla częstotliwości ok. 185 MHz.

Przycięty przewód należy podłączyć do Raspberry Pi – a dokładniej do jednego z wyprowadzonych pinów (domyślnie do GPIO4, czyli pin 7). W tym celu warto skorzystać z żeńskiego goldpinu, do którego przygotowany przewód zostanie przylutowany. Przydatne może okazać się też użycie taśmy izolacyjnej i kleju termicznego, za pomocą którego połączenie zostanie usztywnione, tak by zachować pożądany kierunek anteny. Pozostałe kroki polegają na wgraniu oprogramowania i danych na kartę oraz konfiguracji systemu, a następnie wpięciu karty i zasilania. Nic prostszego!

Wgranie oprogramowania

Gotowy obraz systemu z potrzebnym oprogramowaniem można pobrać z https://goo.gl/MKMo3W. Alternatywnie, można zainstalować standardową wersję obrazu i dograć do niej skrypty i biblioteki, dostępne na https://goo.gl/0SXeIq. Skrypt został zaprojektowany tak, by przestrzeń karty była podzielona na system i dane oraz by nie trzeba było wykonywać ręcznie żadnych poleceń by uruchomić odtwarzanie muzyki. Pliki w formatach takich jak MP3 czy FLAC będą automatycznie odtwarzane po włączeniu się urządzenia i transmitowane przez radio. Natomiast by wgrać pliki muzyczne na kartę należy po załadowaniu na nią obrazu i uruchomieniu z nią Raspberry Pi, połączyć się z RPI przez SSH i przekopiować dane z komputera lokalnego. Pliki można podzielić na katalogi – nie wpływa to na ich odtwarzanie. Osoby korzystające z systemu Windows, które nie są obeznane z poleceniami kopiowania danych przez SSH ze zdalnych lokalizacji mogą skorzystać z wygodnego, bezpłatnego programu WinSCP.

Konfiguracja

Proces konfiguracji nadajnika jest bardzo prosty i sprowadza się do wprowadzenia ustawień w kilku linijkach pliku tekstowego. Plik ten to pirateradio.config i zawiera domyślne ustawienia. W linijce frequency ustawiana jest częstotliwość, podana w megahercach (z kropką jako separatorem dziesiętnym) Najlepiej wybrać taką, na której w danej okolicy trudno znaleźć inne stacje radiowe, a zarazem taką, która odbierana jest przez odbiornik, z użyciem którego będziemy słuchać radia.

W linijce shuffle można określić, czy pliki mają być odtwarzane losowo (ustawienie True), czy w kolejności alfabetycznej (False). Linijka repeat_all pozwala ustawić powtarzanie odtwarzania plików w nieskończoność, a stereo_playback decyduje o tym, czy transmisja ma być stereofoniczna.

Uruchomienie

Urządzenie zaczyna działać natychmiast po uruchomieniu. Pierwszemu Raspberry Pi zajmuje to około 15 sekund, zanim fale radiowe zaczną być wysyłane w eter. W tym czasie można ustawić radioodbiornik na wybraną częstotliwość.

Oprogramowanie

Kod źródłowy PiRateRadio został napisany w Pythonie, ale korzysta ze skompilowanej biblioteki PiFM, która to została napisana w języku C++. W praktyce Raspberry PiRate Radio to wzorcowy przykład wykorzystania zewnętrznej biblioteki. Kod jest całkiem prosty – jego fragmenty zostały pokazane na listingu 1. Procedura działania sprowadza się do:

- zaimportowania bibliotek,
- ustawienia wartości domyślnych dla globalnych zmiennych,
- przełączenia wykonywania programu do trybu demona (usługi),
- wczytania i przeanalizowania pliku konfiguracyjnego, na podstawie którego zmieniane są wartości przypisane do zmiennych globalnych,
- uruchomienia biblioteki PiFM jako procesu podrzędnego o określonym strumieniu wejścia,
- wczytania listy plików poprzez rekursywne przeglądanie katalogów i przeszukiwanie ich pod kątem plików w formatach aac, mp3, wav, flac, m4a, ogg, pls i m3u,
- przekazania przygotowanej listy plików do funkcji ich odtwarzania zgodnie z zadanymi parametrami
- przeglądania kolejnych plików i jeśli są to pliki list utworów (m3u, pls), parsowania ich zawartości pod kątem ustalenia konkretnych plików audio do odtworzenia,
- wywołania kolejnej biblioteki – ffmpeg, która dekoduje wskazane pliki audio i przekazuje je na wyjście, które jest jednocześnie tym samym strumieniem, co wejście wcześniej uruchomionego podprocesu PiFM.

Biblioteka PiFM

Działanie biblioteki PiFM jest znacznie bardziej skomplikowane, choć jej kod źródłowy nie jest długi – ma jedynie ok. 650 linijek. Wykorzystuje wybrane wyjście GPIO szybko zmieniając jego stan, tak by powstawała fala zbliżona do wybranej częstotliwości nośnej, przy czym dodatkowo, dokładna częstotliwość jest nieco zmieniana w zależności od danych docierających na strumień wejściowy. Pozwala to na uzyskanie modulacji FM.

Początkowo twórcy mieli drobny problem, ponieważ jeśli procesor przełączał się na chwilę by robić coś innego niż nadawanie audio, w odbiorniku były słychać trzaski. Udało się pokonać tę trudność poprzez użycie kanałów DMA (Direct Memory Access). Z czasem wprowadzono też usprawnienie umożliwiające nadawanie dźwięku stereo.

Cały program musi być uruchamiany z uprawnienia roota, gdyż biblioteka PiFM mapuje adres szyny GPIO do pamięci wirtualnej. Następnie uruchamia generator na GPIO4, ustawiając jego częstotliwość na np. 100 MHz. Gdy na strumień wejściowy zaczynają trafiać dane, służą one do modulacji częstotliwościowej powodując, że generator emituje sygnał o częstotliwości z zakresu od 100,025 MHz do 99,975 MHz. Szybkość procesora Raspberry Pi jest wystarczająca by być w stanie nadawać na tych częstotliwościach dźwięk modulowany z 16-bitową rozdzielczością.

Podsumowanie i ocena projektu

Omawiany projekt można uznać za bardzo udany, a nawet zaskakująco łatwy w odtworzeniu. Fakt, że bez żadnych dodatkowych komponentów aktywnych, a jedynie po podpięciu niedługiego przewodu można stworzyć sprawnie działający, krótkozasięgowy nadajnik radiowy FM dobrej jakości nie wydaje się oczywisty. Okazuje się, że zasięg sygnału w otwartej przestrzeni sięga ok. 100 m, a w zamkniętych pomieszczeniach potrzeba przejść kilkadziesiąt metrów, by sygnał zaczął zanikać. W przypadku niepodłączenia anteny, emitowany sygnał sięga na ok. 10 cm. Natomiast już kilkadziesiąt metrów wystarcza by urządzić sobie np. ciche plenerowe kino samochodowe, czy tzw. silent disco. Bardzo niskim kosztem, gdyż z wykorzystaniem powszechnie dostępnych i instalowanych w wielu urządzeniach radioodbiorników FM można nadawać dźwięk niesłyszalny dla osób postronnych. Nie ma potrzeby stosowania drogich urządzeń komputerowych ani specjalnych odtwarzaczy cyfrowych. Do tego, uzyskiwana jakość dźwięku jest bardzo dobra, dzięki obsłudze kanałów DMA i sygnału stereofonicznego.

Autorzy rozbudowali projekt także o obsługę wejścia mikrofonowego, dzięki czemu można nadawać własne audycje lub pobawić się w disc-jockeya, który mówi do uczestników na zorganizowanym silent disco.

Aby Raspberry PiRate Radio było bardziej przenośne, warto zamontować je w obudowie i podłączyć do akumulatora. Natomiast wejście mikrofonowe można też użyć do podłączenia wyjścia sygnałowego konsolety dyskotekowej, na której miksowana jest muzyka.

Marcin Karbowniczek, EP

Artykuł ukazał się w
Elektronika Praktyczna
styczeń 2017
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik grudzień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje listopad - grudzień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich styczeń 2025

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów