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.
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:
Dalej instalujemy biblioteki, które wymagane są do kompilacji sterowników. Aby je pobrać i zainstalować, wpisujemy w terminalu:
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:
mkdir build
cd build
cmake -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON ../
Teraz dysponujemy skompilowanymi sterownikami, które możemy zainstalować:
Następnie musimy skonfigurować dowiązania i bufor dla bibliotek w systemie. W tym celu w pierwszej kolejności uruchamiamy ldconfig:
A następnie edytujemy odpowiedni plik w modprobe.d:
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 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:
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:
W przypadku Raspberry Pi 4 efekt powinien być taki, jak pokazany na rysunku 2.
Do sprawdzenia modułu można także użyć prostej aplikacji, którą zainstalowaliśmy wraz ze sterownikami. Wpisujemy polecenie:
Powinien wyświetlić się komunikat taki, jak pokazano na rysunku 3. Z programu rtl_test wychodzimy, naciskając Ctrl+C.
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ę:
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 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.
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.
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.
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).
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.
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).
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).
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: