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