Meteorológiai szondák dekódolása Raspberry Pi-vel


    A Githubon egy ideje már megtalálható a "Zilog80" nicknevű egyéntől származó a meteorológiai szondák dekodolására szolgaló C nyelven írt programcsomag. Ehhez írt a "darksidelemm" nicknevű srác egy keretprogramot python nyelvben. Ez egy aránylag jól telepíthető és használható program.

Módosítások:

    Természetesen előnyei mellett van egy pár hiányossága is. Elsősorban mivel én egy forgatóra szerelt yagi antennát használok, meg kellett oldani, hogy a program az antennát a megfelelő pozícióba forgassa. A forgató parancsai egy USB-COM átalakítón keresztül jutnak el a forgatóra. Mivel a legelterjedtebb AZ-EL forgató a Yaesu féle G-5400, vagy G-5500 ami a GS232 protokollt hasznalja, így ebbe a programba is a GS232 protokoll lett implementálva.
    A következő plusz szolgáltatás, amivel a program ki lett bővítve, az a közeli szondára való figyelmeztetés. A beállítások között meg lehet határozni, hogy mi az a távolság, amin belül szóba jöhet, hogy elmegyünk és a szondát megprobáljuk "levadászni". Ha a szonda már a leszálló ágban van, és a távolság kisebb mint a beállított, akkor a konzolon figyelmeztetés jelenik meg, hogy ideje bekészíteni a szükséges felszerelést és figyelni a szonda földetérésének helyét. Ez a figyelmeztetés feltűnőbbé tehető egy kis hardver kiegeszítéssel az itt talalható
     A program ki lett bővítve egy "fekete listával". Ebben a listában meg lehet adni azokat a frekvenciákat, amelyekről tudjuk, hogy nem szondától származnak, hanem valamilyen helyi zavarforrásból - esetleg magából a vevőből. Tipikusan ilyen hamis jel található az R820T2 tunerrel szerelt radioknál a 403,2 MHz-en. Ez a lista meggyorsítja a szondák keresését, mivel a program nem fogja analizálni azokat a jeleket, amikről tudni, hogy nem igaziak.
    A következő funkció, ami be lett építve a programba az úgynevezett "fehér lista". Ha ez a lista nem üres, akkor a program csak a listán szereplő frekvenciákon fogja keresni a szondákat.
    A konfiguraciók között megegy lista található, ez pedig a "szürke lista". Ha ez a lista nem üres, akkor az ebben a listában található frekveniákkal kezdi a keresést úgy mint a fehér listánál, azonban amikor a lista végére ér, akkor meg lefuttat egy normális keresést is. Ez a lista akkor jön jól, ha tudjuk, hogy milyen frekvencián repülnek a közeli szondák, így azokat hamarabb megtalálja, viszont nem akarunk lemaradni a többi szondáról sem. (Ilyen lehet pl. a bécsi szonda, ahol a frekvenciára nincs garancia.)
    Az eredeti programban nem működött az erzékenység allítás. Barmilyen értéket is írtunk be az rtlsdr_gain paraméternek, a radió mindig a maximális érzékenységre volt állítva. Ez a hiányosság is el lett távolítva.
    Mivel ez a program számottevően pontosabban dekódolja az RS-92-s szondak pozícióját mint pl. az elterjedt Sondemonitor, kézenfekvő, hogy ezt használjuk terepen is a keresés megkönnyítésére. Ha a program azt érzékeli, hogy egy RS-92 szondáról van szó, akkor az internetről lehúzza az ephemeris, vagy az almanach adatokat, ami szükséges a pozíció meghatározásához. Viszont a terepen nem mindig érhető el az internet. Az eredeti program ilyenkor leáll, és ezért használhatatlan internetelérés nélkül. Ezért lett a program módosítva úgy, hogy internet nelkül sem esik pánikba, hanem a dekódoláshoz az utolsó érvényes ephemeris, vagy almanach adatot fogja használni. Persze a minél pontosabb pozíció érdekében ezeknek az adatoknak minél frisebbeknek kell lenniük, ezért ajánlatos ezeket közvetlenül az indulás előtt lekérni.
bekötési rajz alapján. Minden konzolfigyelmeztetés alkalmával egy rövid hangjelzés is hallható, a LED pedig folyamatosan világít a legközelebbi szondaindítási időpontig.     A program indítás után annyi alkalommal próbál meg szondát keresni, amilyen értéket a "search_attempts" paraméterrel beállítottunk. Ha ennyi próbálkozás után sem jár eredménnyel, akkor áttér alvó módba. Várakozni fog a következő szondaindításig, ami téli időszámítás szerint déli 12 órát és ejfélt jelent. (Nyáron is a téli időszámítás szerint indítják a szondákat - vagyis nyáron 13:00 és 01:00 órakor helyi idő szerint.) Az indítási időpontokat a "launch.time" paraméterrel lehet megadni a "station.cfg" fájlban. Ez az üzemmód akkor érvényes, ha a programot a -t paraméter nélkül indítjuk, vagy ha a -t paraméter értéke 0 (az egyes paramétereket lásd a szöveg végén).
    A szonda pozíciójának az iGate rendszerbe való küldését az "upload_rate" paraméter határozza meg. Ha a szonda sebessege nagyobb mint 20m/s vagy a magassága kisebb mint 10000m, akkor a program kétszer olyan gyakran küldi az adatokat az iGate rendszerbe (aprs.fi), mint az említett paraméterrel meghatározott idő. Ha a magasság 2000m alá csökken, a felküldés gyakorisága újra duplázódik. Két felküldés közötti idő azonban sosem csökken 10 másodperc alá.
    Ahhoz, hogy ezek az új funkciók működjenek, a "station.cfg" állományban be kell állítani a megfelelő paramétereket. Elsősorban saját pozíciónkat és a tengerszint fölötti magasságot. Ha forgatót is használunk, akkor azt engedélyezi kell. A forgató engedélyezésével egyidejűleg beállíthatjuk azt is, hogy az antenna a szonda keresésekor milyen pozícióba álljon be. Többszöri szondakeresés után (amikor éppen nem repülnek szondák) látjuk hogy melyek azok a frekvenciák, amelyek rendszeresen megjelennek a keresési listán, és nem szondátol származnak. Ezeket aztán feltehetjük a "fekete listára". Ne feledkezzünk meg a "time_zone" paraméterről sem, ami a program helyes időben való felébresztéséhez kell.
    Ha a search_attempts érteke nulla, akkor a program folyamatosan keresi a szondakat. Ilyenkor a -t parametert és a launch_time-ban beállított időpontokat figyelmen kívül hagyja.

Útmutató a program telepítéséhez:

Ez a programcsomag raspbian alatt fut, Az utolsó stabil verziót használhatjuk. A Jessie és az újabb Strech alatt is kifogastalanul működik.

Előnyösebb a lite verziót föltenni, így a grafikus felület nem terheli fölöslegesen a processzort

A szükséges programok telepítése:

Ha egy régebben telepített rendszeren akarjuk futtatni, nem árt frissíteni
(a frissítés eltart egy darabig):

friss op. redszer esetén ezt a három sort ugorjuk át
sudo apt-get upgrade
sudo apt-get update
sudo reboot

A teljes programcsomag föltelepíthető automatikusan az install.sh állomány futtatásával
wget www.om3bc.com/docs/RS/install.sh
chmod a+x install.sh
./install.sh

Ha a teljes programcsomag már volt telepítve, és csak magát az RS programot akarjuk újratelepíteni, akkor: rs-install.sh
wget www.om3bc.com/docs/RS/rs-install.sh
chmod a+x rs-install.sh
./rs-install.sh
 
vagy manuálisan a következő módon:

sudo apt-get install rtl-sdr
sudo apt-get install sox
sudo apt-get install python-numpy
sudo apt-get install python-serial
sudo apt-get install python-crcmod

Az újabb operációs rendszereknél némelyik csomag már alapból a rendszer része.

Az RS program instalálása:

mkdir RS
cd RS/
az autofile.tar.gz állomány be kell masolni az RS könytárba, és az állományt
szét kell csomagolni:

gunzip autofile.tar.gz
tar -xf autofile.tar
rm autofile.tar

Megnyitni a konfigurációs állományt:

nano station.cfg.example
beállítani a paramétereket
följátszani mint station.cfg - elhagyni a végéről a .example-t

inditas:
python auto_rx.py 2>error.log

Ilyenkor ha a program nem indul el, vagy futás közben lefagy, akkor az error.log-ban meg lehet nézni, hogy mi a baja.

Az esetleges automatikus indításhoz (ha valakit érdekel):

sudo nano /etc/rc.local
az exit0 sor ele beirni:

#RS
sudo -u pi /home/pi/start.sh &
ha a Raspberry kijelző nélkül távfelügyelettel fut, akkor előnyös a programot "screen"-ben futtatni. Ilyenkor előnyösebb ezt beirni:
sudo -u pi /home/pi/start_sc.sh &
ilyenkor a parancssorba majd ezt kell irni:
screen -r auto_rx

följátszani: CTRL X / Y / Enter

vissza a /home/pi/ -be
cd ..

Az .sh allományokat futtathatóvá kell tenni:

Ha szükséges akkor:

cd RS/
sudo chmod a+x auto_rx.sh
sudo chmod a+x rs_detect
sudo chmod a+x rs41mod
sudo chmod a+x rs92mod
sudo chmod a+x reset_usb

Hogy a kijelző egy idő után ne sötétüljön el:

sudo nano /boot/cmdline.txt

egyetlen hosszú sor van benne. Ennek a hosszú sornak a végére hozzáírni:

consoleblank=0

följátszani

Az indítás paraméterek nélkül, vagy paraméter megadásával lehetséges. A használhato paraméterek:
-t timeout -- a program futásának az ideje percekben. Ha a beallitott időn belül nem hall szondat, akkor a program leáll
-f frequency -- ha beállítunk egy konkrét frekvenciát, akkor a program csak ezen a frkvencián fogja keresni a szondát
-c config_file -- ha nem a standard station.cfg állományt akarjuk használni, akkor itt lehet megadni az állomány nevet
példa: python auto_rx.py -t 180 2>error.log azt eredményezi, hogy a program 3 órán keresztül keresi a szondát. Ha ez alatt az idő alatt talál szondát, akkor azt elkezdi dekódolni. Ha a beállított idő alatt nem talal szondát akkor a program leáll.

Ha szeretnénk, hogy az általunk követett szonda fölkerüljön az aprs térképre, akkor intéznünk kell egy hozzáférést az iGate hálózathoz. Ennek alapján be kell állítani az aprs_user és aprs_pass paramétereket. Az ukhas térképet nem ajánlom használni két okból sem. Az egyik, hogy külön konfigurációt igényel, a másik, hogy az a honlap egyébként sem ilyen célra lett létrehozva. (Saját tapasztalat szerint nem is látják szívesen az ilyen ballonokat.)

Előre lefordított, módosított program Raspberry Pi2 vagy Pi3 -ra:

Előtelepitett SD kártya képfile: rs_ms.zip


autofile.tar.gz

bekötési rajz

Az eredeti programok itt érhetők el:

https://github.com/rs1729/RS

https://github.com/darksidelemm/RS