Raspberry Pi w amatorskim odbiorniku radiowym

Raspberry Pi w amatorskim odbiorniku radiowym

Kiedyś radioamator wyposażony był w rozbudowany sprzęt z dużą liczbą pokręteł i przełączników, ale komputery wszystko to zmieniły. Niektóre najnowsze transceivery są teraz sterowane całkowicie komputerowo. Kiedyś zestawy radioamatorów uzupełniały teleksy, odpowiednie monitory, faksy czy drukarki do np. odbierania obrazów satelitarnych. Teraz wszystko to może znajdować się w jednym urządzeniu, tak niewielkim jak Raspberry Pi.

Technologia krótkofalarska ewoluuje. Obecnie dostępne są niewielkie i niedrogie skanery, pozwalające na analizowanie widma promieniowania elektromagnetycznego i nasłuchiwanie wielu rodzajów komunikacji. Radio definiowane programowo (SDR) to nowoczesna technologia, w której za dekodowanie sygnałów radiowych odpowiedzialne jest oprogramowanie, a nie jak dotychczas sprzęt. Pozwala to na konstruowanie szerokiej gamy systemów radiowych przy zastosowaniu relatywnie prostego sprzętu, podłączonego do komputera.

Komputerem takim może być na przykład kompaktowy i niedrogi komputer jednopłytkowy, taki jak Raspberry Pi.

W poniższym artykule na praktycznym przykładzie omówimy, jak można zastosować SDR i Raspberry Pi do odbioru wielu popularnych transmisji krótkofalowych dla trybów cyfrowych, APRS, SSTV i innych. Dokładniejsza dokumentacja opisująca tematykę odbiorników i oprogramowania SDR dostępna jest w Internecie (linki na końcu artykułu).

Nawet jeśli nie jesteście krótkofalowcami, niektóre prezentowane poniżej rozwiązania mogą być bardzo interesujące. Zastosowane oprogramowanie pozwala m.in. na odbiór zwykłego radia, pobieranie danych z satelitów pogodowych czy nasłuchiwanie danych kontroli lotnisk itd. Jako że korzystać będziemy z Raspberry Pi, wymagane będzie pewne doświadczenie w korzystaniu z Linuksa, jednakże dołożyłem wszelkich starań, aby poziom wymagany do zainstalowania i uruchomienia opisanych tutaj komponentów był możliwie najniższy.

Od 2012 roku komputer jednopłytkowy Raspberry Pi staje się coraz ważniejszą częścią społeczności majsterkowiczów i hobbystów. Poświęciliśmy mu na łamach „Elektroniki Praktycznej” wiele artykułów na przestrzeni ostatnich lat. Wzrost mocy obliczeniowej kolejnych wersji komputera na przestrzeni lat daje bardzo ciekawe możliwości radioamatorom. Umożliwia zastąpienie komputera PC w wykonywaniu stałych obliczeń – dekodowaniu ramek, zdjęć itd., za pomocą oprogramowania takiego jak WSJT-X, FLDIGI itp. Pozwala także na zdalne sterowanie systemem – Raspberry Pi może być umieszczony tam, gdzie są optymalne warunki radiowe i może być sterowany zdalnie, przez sieć. Dzięki temu możliwa jest praca w zaciszu swojego domu, gdy np. antena, moduł SDR i Raspberry Pi są zamontowane na dachu. Co więcej, taki komputer jednopłytkowy można łatwo umieścić w samochodzie czy w plecaku, tworząc przenośne moduły radiowe przeznaczone do dowolnych zadań.

Pomimo tych zalet, komputery jednopłytkowe rzadko goszczą w typowym warsztacie radioamatora. Dla wielu osób system operacyjny, zainstalowany domyślnie na Raspberry Pi – Raspbian, jest mało intuicyjny. Jest to dystrybucja Linuksa zaprojektowana specjalnie dla Raspberry. Często konieczne jest użycie konsoli, a tym samym wpisywanie wielu poleceń, aby zainstalować, a następnie skonfigurować program. Może wydawać się to zniechęcające i nużące, jednak pokonanie tej drobnej trudności otwiera przed nami szeroki świat otwartego oprogramowania, które może przydać się niemal w każdej dziedzinie.

Elementy systemu

Na rynku jest dostępnych wiele komputerów jednopłytkowych. Różnią się ceną, parametrami, możliwościami technicznymi, a także dostępną dokumentacją i wsparciem społeczności. Z uwagi na te ostatnie elementy – szerokie wsparcie techniczne ze strony społeczności, dużą liczbę poradników, a także niską cenę – Raspberry Pi wydaje się tu najlepszym wyborem. Do budowy systemu skomputeryzowanego SDR potrzebny będzie komputer jednopłytkowy np. Raspberry Pi 4 wraz z zestawem akcesoriów (część z nich jest opcjonalna, jednak rekomendowana):

  • karta SD (rekomendowana pojemność to 16...32 GB),
  • zasilacz USB (z wyjściem USB typu C) o wydajności prądowej co najmniej 2 A,
  • radiatory chłodzące dla układów Raspberry Pi,
  • wentylator chłodzący,
  • obudowa dla Raspberry Pi,
  • potrzebny będzie także monitor i klawiatura oraz myszka – przynajmniej na etapie konfigurowania systemu, później możliwe jest kontrolowanie np. przez sieć.

Drugim kluczowym elementem systemu jest moduł RTL-SDR. Jest to odbiornik radiowy definiowany programowo zbudowany na chipsecie RTL2832 firmy Realtek. Został on przystosowany do pracy jako odbiornik telewizji naziemnej DVB-T, jednak w 2012 roku odkryto, że ma on o wiele większe możliwości. Może on transferować „surowe” próbki sygnałów I/Q do komputera. Na rynku dostępnych jest wiele urządzeń USB do odbioru sygnałów DVB-T, ale jeśli chcemy na poważnie zająć się tym tematem, warto sięgnąć po specjalizowany RTL-SDR, zaprojektowany specjalnie do takich aplikacji. Najnowszą wersję tego urządzenia pokazano na rysunku 1.

Rysunek 1. Moduł RTL-SDR v3 (powyżej) wraz z jego schematem blokowym (poniżej)

Zawiera ono m.in. precyzyjniejsze, skompensowane termicznie oscylatory kwarcowe, dodatkowe filtry zasilania i sygnału, a także układ do dodawania składowej stałej na wejściu (duplekser typu bias tee), który pozwala zasilać układy znajdujące się po stronie odbiorczej, na przykład wzmacniacz sygnału czy antenę aktywną. Duplekser ten jest sterowany programowo, więc można go wyłączyć, jeśli nie jest potrzebny w danej implementacji.

Zestaw należy uzupełnić anteną. Jej dobór jest uzależniony od pasma, jakie chcemy nasłuchiwać. Sam moduł RTL-SDR oferuje pasmo od 500 kHz do 24 MHz (w trybie próbkowania bezpośredniego) lub do 1766 MHz. Anteny mają dużo węższe pasmo, w którym mogą odbierać sygnały. Dobór rodzaju i typu anteny stanowczo wykracza poza ramy tego artykułu i wiedzy autora tego skromnego poradnika.

Instalacja sterowników

Po zainstalowaniu systemu operacyjnego (Raspbiana) na Raspberry Pi 4 można przystąpić do zainstalowania sterowników modułu RTL-SDR, aby instalowane później aplikacje miały jak komunikować się z odbiornikiem radiowym. W pierwszej kolejności należy usunąć sterowniki RTL-SDR, które już są zainstalowane w Raspbianie. Linux ma wiele preinstalowanych sterowników, niestety nie zawsze są one w najnowszej czy odpowiedniej do danego zastosowania wersji. Aby usunąć sterowniki, w linii komend wpisujemy:

sudo apt-get remove rtl-sdr

Następnie musimy pobrać aktualne sterowniki. Najlepiej jest pobrać je z repozytorium na GitHubie. Dzięki temu mamy pewność, że ściągamy najbardziej aktualną wersję i to z samego źródła. Najprościej jest w tym celu skorzystać z gita poprzez linię komend, wpisując w terminalu:

git clone https://github.com/osmocom/rtl-sdr.git

Dalej instalujemy biblioteki, które wymagane są do kompilacji sterowników. Aby je pobrać i zainstalować, wpisujemy w terminalu:

sudo apt install build-essential cmake usbutils libusb-1.0-0-dev

Po zakończeniu instalacji tych bibliotek możemy wrócić do pobranego sterownika RTL-SDR. Musimy go skompilować przed instalacją. W tym celu w terminalu wpisujemy następujące komendy:

cd rtl-sdr
mkdir build
cd build
cmake -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON ../

Teraz dysponujemy skompilowanymi sterownikami, które możemy zainstalować:

sudo make install

Następnie musimy skonfigurować dowiązania i bufor dla bibliotek w systemie. W tym celu w pierwszej kolejności uruchamiamy ldconfig:

sudo ldconfig

A następnie edytujemy odpowiedni plik w modprobe.d:

sudo nano /etc/modprobe.d/rtlsdr-blacklist.conf

W pliku tym dodajemy do blacklisty inne sterowniki, które są kompatybilne z używanym przez nas modułem. Pozwoli to na uniknięcie ewentualnych konfliktów, które uniemożliwią działanie systemu.

blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830
blacklist dvb_usb_rtl2832u
blacklist dvb_usb_v2
blacklist dvb_core

Po skopiowaniu powyższej listy do pliku konfiguracyjnego możemy zapisać plik (Ctrl+O) i wyjść z edytora nano (Ctrl+X). Pozostaje jeszcze teraz zresetować komputer:

sudo reboot

Po ponownym uruchomieniu możemy przetestować poprawne działanie sterowników i modułu. W pierwszej kolejności, po podłączeniu urządzenia RTL-SDR do komputera, listujemy urządzenia USB, podłączone do komputera:

lsubs

W przypadku Raspberry Pi 4 efekt powinien być taki, jak pokazany na rysunku 2.

Rysunek 2. Urządzenia USB w Raspberry Pi 4 wraz z RTL-SDR

Do sprawdzenia modułu można także użyć prostej aplikacji, którą zainstalowaliśmy wraz ze sterownikami. Wpisujemy polecenie:

rtl_test

Powinien wyświetlić się komunikat taki, jak pokazano na rysunku 3. Z programu rtl_test wychodzimy, naciskając Ctrl+C.

Rysunek 3. Komunikat programu rtl_test dla poprawnie działającego modułu RTL-SDR

Dalszym krokiem, który nie jest konieczny, aczkolwiek w istotny sposób usprawni korzystanie z RTL-SDR pod Raspberry Pi, jest zoptymalizowanie działania algorytmu obliczania szybkiej transformaty Fouriera (FFT). Program volk_profile tworzy specjalny profil do obliczania FFT, zoptymalizowany dla systemu, na którym działa. Utworzenie takiego profilu zajmuje trochę czasu (około 20 minut na Raspberry Pi 4), ale istotnie poprawi wydajność obliczania FFT, wykorzystywanego m.in. do rysowania wykresów widma z RTL-SDR.

Za pomocą terminalu lub przez Putty należy wpisać następującą komendę:

sudo volk_profile

Na tym etapie możemy przejść już do instalacji i używania interesującego nas oprogramowania, do zbierania i analizy sygnałów radiowych. Wystarczy podłączyć do transceivera odpowiednią antenę i działać.

Oprogramowanie do obsługi RTL-SDR

Dostępnych jest wiele programów, które korzystają z modułu RTL-SDR do odbioru i dekodowania różnych transmisji. Niektóre z nich, jak GQRX czy GNU Radio, to uniwersalne i konfigurowalne programy, które mają szerokie możliwości. Inne przeznaczone są do bardziej wyspecjalizowanych zadań.

GQRX

Jest to otwarte oprogramowanie do kontroli radia definiowanego programowo i graficzna nakładka na GNU Radio, która wykorzystuje interfejs graficzny utworzony w Qt. Program ten oferuje takie funkcje jak:

  • wykrywanie urządzeń podłączonych do komputera,
  • przetwarzanie danych I/Q z obsługiwanych urządzeń (takich jak Airspy, dongle Funcube, RTL-SDR, HackRF oraz USRP),
  • kontrola częstotliwości, wzmocnienia i możliwość wprowadzania wielu korekcji sygnału (częstotliwość, balans I/Q),
  • demodulacja AM, SSB, CW, FM-N i FM-W (mono i stereo),
  • specjalny tryb FM dla NOAA APT (zdjęcia z satelitów meteorologicznych),
  • zmienny filtr pasmowy,
  • AGC, tłumiki szumów,
  • FFT czasowe i wykres wodospadowy,
  • nagrywanie i odtwarzanie dźwięków do/z pliku wav,
  • nagrywanie i odtwarzanie surowych danych,
  • tryb analizatora widma, w którym całe przetwarzanie sygnału jest wyłączone,
  • zdalne sterowanie przez TCP,
  • strumieniowe wyjście audio przez UDP.

Instalacja

Istnieją dwa sposoby na instalację GQRX. Pierwszy z nich wymaga skorzystania z terminalu. Program zainstalowany zostanie poprzez apt, dlatego dobrze jest najpierw zaktualizować wszystkie dane apt, a dopiero wtedy instalować. Wpisujemy kolejno takie polecenia:

sudo apt update
sudo apt upgrade
sudo apt install gqrx-sdr

Drugą opcją jest dodanie oprogramowania poprzez interfejs graficzny (rysunek 4). W menu opcji wybieramy dodaj/usuń oprogramowanie (Add / Remove Software) i wyszukujemy gqrx (1), następnie wybieramy pakiet do instalacji (2) i zatwierdzamy (3), co będzie trzeba potwierdzić hasłem (4 and 5). Instalacja zajmie trochę czasu, ponieważ system musi pobrać i rozpakować około 500 MB plików. Może potrwać to około 20 minut lub więcej, zależnie od połączenia internetowego.

Rysunek 4. Instalacja GQRX z interfejsu graficznego

Odbiór VHF z GQRX

Aby słyszeć dźwięk z programu, należy do wyjścia audio Raspberry Pi podłączyć głośniki. Następnie uruchamiamy program i z menu wybieramy RTL-SDR. Zauważmy parametr rtl=0, który widać również w informacjach z rtl_test (rysunek 5). W tym menu ustawiamy także urządzenie wyjściowe, szczególnie jeśli ma być inne niż domyślne.

Rysunek 5. Konfiguracja GQRX do odbioru sygnałów VHF

Przed jakimkolwiek konkretnym dekodowaniem ważne jest, aby sprawdzić poprawność działania urządzenia (rysunek 6). Najpierw należy uruchomić oprogramowanie (1), ustawić częstotliwość w paśmie FM (2), wybrać tryb WFM (mono). Jeśli dźwięk jest nierówny, należy dostosować rozmiar pasma FFT i prędkość (5), a na koniec dostosować poziom wyjściowy dźwięku (6). Jeśli jednak dźwięk jest bardzo nierówny, należy zmniejszyć rozdzielczość ekranu i unikać używania przeglądarki VNC Viewer, która zajmuje dużo zasobów procesora.

Rysunek 6. Uruchomienie GQRX i odtwarzanie dźwięku

Odbiór HF z GQRX

Aby przejść z pasma VHF do HF, najlepiej jest wyjść z GQRX i zrestartować program. Przy kolejnym uruchomieniu musimy do parametrów dodać direct_samp=2 (rysunek 7).

Rysunek 7. Konfiguracja GQRX do odbioru w pasmie HF

Dekodowanie FT8 z GQRX

W pasmie 40 metrów warto nasłuchiwać również w trybie cyfrowym – kodowanie FT8. Przykładową konfigurację do odbioru w tym trybie pokazano na rysunku 8.

Rysunek 8. Odbiór HF za pomocą oprogramowania GQRX

Kodowanie FT8 to nowoczesny sposób kodowania cyfrowego, używane przez radioamatorów od relatywnie niedawna. Pozwala ono na odbiór bardzo słabych sygnałów. Do dekodowania tego rodzaju sygnału potrzebny jest dodatkowy program – WSJT-X. Aby skonfigurować oba programy do współpracy, należy w pierwszej kolejności wyłączyć CAT (rysunek 9), a następnie skonfigurować WSJT-X do odbioru danych z wyjścia audio, do którego sygnał przekazuje GQRX (rysunek 10).

Rysunek 9. Wyłączenie CAT w systemie
Rysunek 10. Konfiguracja WSJT-X

Dekodowanie zaczyna się natychmiastowo. W ten sposób z łatwością można odbierać pakiety FT8, bez konieczności obciążania komputera PC. Oczywiście, możliwa jest także dalsza automatyzacja systemu – zapisywanie danych, ich parsowanie itd. Uruchomiony i odbierający dane program WSJT-X pokazano na rysunku tytułowym artykułu.

Pierwsze kroki z GNU Radio

GNU Radio to pakiet oprogramowania przeznaczony do implementacji radia definiowanego programowo. Przetwarzanie sygnału odbywa się za pomocą przeprogramowanych bloków, połączonych ze sobą. Konfiguracja systemu odbywa się w sposób pełni graficzny.

Wystarczy uruchomić program, aby zacząć programować system przetwarzania lub wczytać gotowy plik. Można, jako źródło sygnału, skonfigurować np. stały sygnał, jak z generatora czy sygnał odbierany z odpowiednio skonfigurowanego RTL-SDR (rysunek 11).

Rysunek 11. Konfiguracja GNU Radio, widoczne jest źródło osmocom z RTL-SDR

W Internecie można znaleźć więcej informacji, poradników itp. na temat tworzenia torów przetwarzania sygnałów radiowych.

Gotowy system operacyjny – pisdr

Istnieje również specjalna dystrybucja Raspbiana o nazwie pisdr z wieloma preinstalowanymi programami przeznaczonymi do obsługi systemów SDR. Obraz z systemem pisdr dostępny jest w repozytorium na GitHubie – https://github.com/luigifcruz/pisdr-image – skąd pobieramy aktualny obraz systemu. Wykorzystując Pi Imager (program do nagrywania obrazów systemu na kartę SD dla Raspberry Pi) lub inny podobny program (np. Balena Etcher), należy załadować obraz systemu na kartę.

Po uruchomieniu systemu możemy zalogować się do komputera przez SSH, korzystając z dowolnego programu terminalowego (np. Putty). Nie trzeba szukać adresu IP Raspberry PI – skonfigurowany jest domyślnie jako host o nazwie pisdr. W systemie preinstalowano, między innymi:

  • UHD,
  • GQRX,
  • GNURadio,
  • LimeVNA,
  • Soapy Remote,
  • Soapy,
  • SDR Angel,
  • LimeSuite,
  • RTLSDR-Airband,
  • LimeSDR_toolbox,
  • osmo-fl2k,
  • hamlib,
  • VaporTrail,
  • Universal Radio Hacker,
  • dump1090,
  • FoxTelem,
  • Quisk,
  • F5OEO/rpitx,
  • merbanan/rtl_433,
  • gpredict.

Dokładna lista oprogramowania, jakie domyślnie znajduje się w systemie, oraz lista wspieranego bazowo sprzętu znajdują się na GitHubie (linki na końcu artykułu).

Podsumowanie

Dzięki systemom SDR możliwe jest tworzenie bardzo nowoczesnych, wszechstronnych urządzeń krótkofalarskich. Proste i niedrogie odbiorniki definiowane programowo pozwalają na odbieranie i analizowanie szerokiej gamy sygnałów analogowych i cyfrowych, jakie są stosowane przez współczesnych amatorów krótkofalarstwa.

Nikodem Czechowski, EP

Źródło:

Artykuł ukazał się w
Elektronika Praktyczna
styczeń 2022

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik maj 2022

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2022

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje kwiecień 2022

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna maj 2022

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2022

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów