wersja mobilna | kontakt z nami

Raspberry PiRate Radio. Stacja radiowa z Raspberry Pi

Numer: Styczeń/2017

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.

Pobierz PDFMateriały dodatkowe

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.

rys-1Podstawowy 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.

rys-2Przycię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.

rys-3Konfiguracja

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.

rys-3Biblioteka 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ą.

rys-5Podsumowanie 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

rys-6

Pozostałe artykuły

Drukarka znaków alfabetu Braillea

Numer: Październik/2017

Zgodnie z intencją autora projektu, opisywana drukarka to tanie urządzenie mające na celu umożliwienie osobom niewidomym odczytywanie umów, rachunków, pism urzędowych i innych wysyłane do osób niewidomych. Dzięki drukarce Braillea mogą one być przekazywane w formie, którą osoba niewidoma odczyta bez niczyjej pomocy.

Projekt: Platforma IoT do monitoringu warunków środowiskowych

Numer: Czerwiec/2018

Dostępne na rynku rozwiązania Internet of Things są coraz bardziej przystępne cenowo i mogą być z powodzeniem wykorzystane w naszym domu, aby poprawić komfort życia jego mieszkańców. Dzięki uprzejmości firmy Molex postanowiliśmy wykonać uniwersalną platformę IoT zbierającą informacje z podłączonych czujników i za pomocą protokołu MQTT poprzez WI-FI transmitującą na serwer zbudowany w oparciu o płytkę Raspberry.

Kot z dostępem do Internetu

Numer: Maj/2017

Choć prima aprilis już minął, publikujemy opis projektu, który na pierwszy rzut oka będzie wydawał się żartem. I fakt ? opisywany w nim projekt powstał jako żart, ale mamy wrażenie, że sama idea jest godna zastanowienia i może być podstawą do opracowania bardziej sensownych i przydanych rozwiązań. Dlatego prezentujemy "Kota IoT", na którego pomysł wpadł Jeremy Wall z Kalifornii.

Monitorowanie Raspberry Pi poprzez komunikator internetowy

Numer: Marzec/2017

Raspberry Pi to świetna platforma do stworzenia np. systemu automatyki domowej. Duża liczba gotowych modułów oraz liczne przykładowe aplikacje pozwalają niemal błyskawicznie zestawić dosyć złożony system nadzorujący mieszkanie lub dom. Problem pojawia się dopiero na etapie tworzenia interfejsu użytkownika. Umieszczenie w nim wszystkich funkcji oraz wbudowanie mechanizmu powiadomień jest po prostu mocno czasochłonne. Zamiast tego można ...

PiTelephone - retro telefon z Raspberry Pi

Numer: Listopad/2016

W Elektronice Praktycznej opisywaliśmy już projekt telefonu, w którym zastosowano Raspberry Pi, ale prezentowany poniżej PiTelephone to zupełnie inna konstrukcja. Widać to już z zewnątrz, bo aparat telefoniczny jest stacjonarny i tarczowy i wygląda, jakby wyprodukowano go w latach 70. XX wieku. W środku znajduje się natomiast Raspberry Pi i szereg dodatkowych komponentów, które zmieniają wybieranie impulsowe na tonowe oraz sterują pracą ...

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Listopad 2018

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym