Radiosonda SSTV - Raspberry Pi Zero

Od roku zajmuję się radiosondami. Propagacja fal radiowych z nadajnika wysoko nad ziemią jest zadziwiająca. Prostym sprzętem (dookólna antena, odbiornik RTL-SDR i Raspberry Pi) można odebrać radiosondy nadające mocą 200mW z ponad 700km. W zasadzie to krzywizna ziemi ogranicza zasięg.

Zainspirowany popularnością odbioru transmisji SSTV ze stacji kosmicznej, której to odbiór był możliwy z użyciem powszechnie dostępnego sprzętu postanowiłem zbudować radiosondę nadającą SSTV.
Oczywiście SSTV nie jest niczym nowym, to zupełnie dziś archaiczny sposób przekazywania obrazów drogą radiową, ale idea tej transmisji - widoczne wprost budowanie obrazu linia po linii z przesłanego dźwięku - doskonale trafia do dzieci i młodzieży realizując cele edukacyjne tej zabawy. Tak działała analogowa telewizja...tylko szybciej :)

3 maja o 12 z Wrocławia - dzięki uprzejmości Klubu Łączności Ratunkowej SP6ZWR poleci radiosonda zbudowana w oparciu o Raspberry Pi Zero.

Jest to test koncepcji chyba najtańszego nadajnika SSTV.
Do nadawania wystarczy karta micro SD oraz Raspberry Pi Zero - nawet to najtańsze za 26zł (takie zostało użyte), choć wygodniejsze byłaby wersja Pi Zero W (z siecią WiFi).

Nadawanie polega na szybkiej zmianie parametrów generatora PWM wbudowanego w procesor Raspberry. Oczywiście nikt nie projektował go jako źródła sygnału RF. Generator ten wprost daje kilkadziesiąt miliwat mocy i po dołączeniu kawałka przewodu do płytki jako anteny jest wystarczający aby w kilku pomieszczeniach rozsyłać sygnał.

Problem polega na tym, że oprócz pożądanego sygnału nadawane są także inne - niepożądane - także w pasmach w których nie powinno być przypadkowych transmisji.

Do Raspberry dobudowałem więc filtry pasmowe i wzmacniacz - układ który wzmacnia pożądany sygnał do poziomu około 100mW i tłumi niepożądane emisje. Nie daję jego opisu, gdyż nawet ten układ nie jest wystarczający aby wytłumić niepożądane emisje do poziomu jaki powinny mieć komercyjne urządzenia. No ale to nadajnik amatorski i będzie nadawał wysoko góra przez 2h i to w świąteczny dzień.

Skoro już wyjaśniłem, że w kwestii hardware to właściwie nie ma czego budować tylko kupić i podłączyć do zasilania to zajmijmy się software.

Generatorem steruje program rpitx (by Evariste Courjaud F5OEO)
https://github.com/F5OEO/rpitx

Pracuje w trybie w którym czyta z pliku kolejne częstotliwości generatora i czas po jakiej ma zmienić jego częstotliwość na następną.
Inaczej mówiąc jego wejściem są sample (częstotliwość, czas).

Sample te generuje program pifm z tego samego pakietu. Dla niego danymi wejściowymi jest plik WAVe 48kHz mono.

Z kolei plik WAV jest generowany przez program pisstv (by Gerrit Polder, PA3BYA zmodyfikowany dla modulacji PD120 przez Waldemara Ogonowskiego SP2ONG)

https://github.com/sp2ong/pisstv

Mój wkład to drobne zmiany w tych programach -rezygnacja z kalibracji DMA w rpitx, wydłużenie długości piksela w pisstv dla kompensacji błędów rpitx.

Oraz skrypt który zmusza Raspberry Pi do równej miarowej i niezakłóconej niczym pracy.

Obrazki są w formie jpg na karcie pamięci Raspberry, a cała obróbka do postaci gotowej do nadawania przez rpitx zajmuje kilka sekund.
Oznacza to tyle, że można podłączyć do Raspberry kamerkę i wysyłać obrazki "prawie" na żywo :)

---------
Czy można to zrobić inaczej....być może, ale nie jest łatwo, wypróbowałem kilkanaście innych kombinacji i ta wydaje się być dobra.
Problem polega na tym, żeby odtwarzać nagranie z właściwą prędkością.
Generator PWM w Raspberry to ani karta dźwiękowa ani DDS, nie ma tam TCXO, a system operacyjny nie jest systemem czasu rzeczywistego.

Transmisja wolniejsza o 0.2% nie jest zauważalna jeśli dotyczy głosu - co innego w SSTV - objawi się poszarpanymi konturami, problemami z kolorem, ogólnie sporym pogorszeniem jakości. Podobnie transmisja za szybka.

Po tygodniu testów udało mi się dobrać parametry które dają idealny (jak na SSTV) obraz.
Teraz zobaczymy jak to się uda w ekstremalnych warunkach stratosfery.

Do odbioru polecam aplikację Robot36 na Androida
https://play.google.com/store/apps/details?id=xdsopl.robot36&hl=pl
Wystarczy przytknąć mikrofon telefonu do głośnika radia.

lub programem MMSSTV
http://hamsoft.ca/pages/mmsstv.php
Prawym klawiszem na przyciskach RX Mode wybrać tryb PD120
W oknie SYNC czy RX włączyć Auto Slant Adjustment, wyłączyć Auto resync
--------
Co do obrazków...zobaczycie na nich wiele zadowolonych osób ze wspaniałego hobby jakim jest krótkofalarstwo zarażone sondozą. czyli zbieraniem spadających radiosond.

------------ UPDATE-------------

Raspberry wróciła ze stratosfery.
Wystartowała z Wrocławia, wylądowała obok Krotoszyna.

Test to zarazem umiarkowany sukces jak i umiarkowana porażka :)

Sukcesy:
Nadajnik działał i nadawał przez znakomitą większość czasu lotu.
29 z 36 obrazków zostało wysłanych.
Jakość nadawanych obrazków była dobra i nie pogorszyła w związku ze spadkiem temperatury
Na tle konkurencyjnej tego dnia konstrukcji wypadł lepiej.
Mechanicznie sonda wytrzymała obciążenia przy pęknięciu balonu, Lecąca poniżej sonda z antenami KF straciła anteny.

Porażki:
Moc nadajnika była zbyt mała. Odebrały go tylko stacje z bardzo dobrymi antenami i w odległości około 100-200 km (Lubin, Sieradz, Łask, Ostrów Wlkp, Gliwice, Poznań). Powinien mieć minimum 1W.
Nadajnik padł w stratosferze, nie wytrzymało zasilanie lub był zbyt kiepsko ocieplony styropianem.
W trakcie spadania włączył się ponownie.

Inne wnioski:
Zasilanie nadajnika lecącego w stratosferę musi być 4 krotnie przewymiarowane
Jakość obrazków "na biurku" musi być idealna, wtedy po przejściach coś z nich jeszcze zostanie.


Obrazek odebrany przez Mariusza SQ6OMN z Lubina


Obrazek odebrany przez Jarosława SP7H z Sieradza


Obrazek odebrany przez Tomka SP9UOB z Gliwic