Egy meteorológiai ballonszonda újrahasznosítása – 2. rész

2019. november 06. szerda

A kompakt APRS trackerrel egybeépített meteorológiai állomás szó szerint az égből hullik az ölünkbe. Miután Darány mellett sikerült egyet begyűjteni, eredetileg a monitorozásukra szándékoztam állomást építeni, de végül jobb ötlet született.

A spanyolviaszt nem kell feltalálni, a Vaisala termékeihez – így az RS41-hez is – számos firmware található a GitHubon, a programozók kedvenc közösségi oldalán. Ezzel a kimondottan rádióamatőr célra készült programmal semmi más dolgunk nincs, mint feltölteni a kis meteorológiai rádiószonda STM32 mikrovezérlőjébe.

Az Si4032-vel szerelt eszközzel van egy kis gond, mégpedig az, hogy UHF sávú. Egész pontosan 240 és 930 MHz között lehet programozni a rádióját, ami az elterjedt APRS hálózatok szempontjából nem épp kedvező. A Silikon Labs szerencsére árul teljesen azonos, VHF sávú IC-t is – ő a szintén QFN20 tokos Si4063. Egyik hétvégén ennek, és a hangolt köröknek a cseréjével meglátjuk, mire lehet menni a készülékkel. Ez mondjuk a sebességek miatt is érdekes lesz.

Addig is – a következő részben – építünk hozzá egy 144,800-ra is felprogramozható APRS gatewayt egy mini Raspberryből és SDR RTL stickből.

A deklaráció után nézzük a gyakorlati megoldást. A programozáshoz szükségünk lesz egy ST-Link interfészre, melyet a szonda portjára akasztunk. Ha nincs még ilyened, pár dollár és két hét után ez megváltozhat. A szoftver, mely a firmware-t tolja fel most nem az mcHF programozásából is jól ismert DfuSe Demo lesz, hanem az interfészhez hasonlónevet viselő utility – ide kattintva letölthető a legfrissebb változata.

st-link-interface-HA8LHT-1

Előbb azonban szükségünk lesz a vezérlő programra, azt konfigurálni kell, majd le kell fordítani az ARM által is emészthető állományba, a bin-be, amit aztán feltöltünk a processzorra. Ez azért nem fog ennyire egyszerűen zajlani, ezért vegyük lépésről lépésre az egészet.

 

A forráskód

A firmware-ért nem kell messzire menni, a GitHubról le lehet tölteni SQ7FJB Piotr elkészített szoftverét. A fájlok kavalkádjától nem kell megijedni, nagy zöld gomb, Clone or download, majd Download ZIP menüpontokon navigálva egyszer csak lejön egy tömörített állomány.

Ez a szoftver APRS és RTTY keretekbe foglalva fogja adni a telemetria adatokat, a beállított hívójellel, sebességgel, fedélzeti paraméterekkel, így bármikor újra útra bocsátható egy hatalmas vagy több pici lufival…

Mint egy önálló mappába kicsomagolva láthatjuk, ez sok-sok fájlból áll, tulajdonképpen a bennük lévő program a forráskód. A programozáshoz értők hamar átlátják, hogy mennyire egyszerű és nagyszerű az egész, mindenki másnak viszont ott van egy konfigurációs fájl, melybe a szükséges beállításokat kell belevésni. A config.h szerkesztéshez való megnyitásakor azért ügyeljünk rá, hogy az lehetőleg Notepad++ vagy sima jegyzettömbbel történjen, véletlen se Worddel vagy valami hitvány ingyenes utánzattal, mert az nagyon de nagyon rossz formátumban, mindenféle markerrel telespékelve fogja elmenteni a sima szöveges (UNIX LF, UTF-8) állományt, amit így a compiler – fordító – már nem tud majd implementálni.

A beállítások sora végtelenül egyszerű. A megnyitott állományban átírjuk az alábbi releváns adatokat és kész. Azt nem árt tudni, hogy a hívójel csak 6 karakter lehet, ha nincs annyi, szóközzel kell pótolni.

#define CALLSIGN “HA8LHT // az RTTY keretben adott hívójel
#define APRS_CALLSIGN “HA8LHT // APRS hívójel, 6 karakternek
#define APRS_SSID ‘D // APRS utótag (a meteorológiai állomás a D)
#define APRS_COMMENT “qrp.hu RS-41SGP weather station //APRS üzenet
#define RTTY_TO_APRS_RATIO 1 //hány RTTY után következzen egy APRS keret
#define RTTY_FREQUENCY 434.500f //RTTY frekvencia
#define APRS_FREQUENCY 432.500f //APRS frekvencia
#define RTTY_SPEED  75 // RTTY sebesség

#define TX_POWER 7 //teljesítmény 1-7 (1, 2, 5, 8, 11, 14, 17 és 20 dBm)
#define TX_DELAY 5000 //a periódusidő ezred másodpercben

 

CoIDE, a fordító

A forráskód sok-sok állományát egyetlen fájlba kell gyúrni, mely kódolva tartalmaz minden parancsot, beállítást, paramétert. Ezt egy ingyenes fejlesztőkörnyezettel fogjuk elvégezni, ő a CoIDE. Legegyszerűbben ide kattintva lehet letölteni, ám kelleni fog hozzá egy másik gyűjtemény is, a gcc-arm, amit innen tölthetsz le. Telepítsük mind a kettőt és vágjunk bele.

Ha elindítjuk a CoIDE-t, nem a megnyitásra kattintunk ész nélkül, hanem a Projekt menü Open projekt utasítását választjuk. Itta fájlok közül csak egyet, az RS41HUP.coprojt látjuk, amit ki is választunk és várunk kicsit, mire az ablak egyik jobb oldali oszlopa tele lesz valami fájlstruktúraféleséggel. A programot lefordítani majd a Projekt -> Build menüjével, vagy az F7 megnyomásával kell, azonban minden előtt szólni fog, hogy neki bizony hiányzik egy beállítás, a gcc-arm-hoz tartozó arm-none-eabi-gcc.exe elérési útja. Nincs is más teendőnk, mint megadni neki. Ha nem akartunk rohadt okosak lenni mindenféle alternatív hely megadásával, akkor ez a Program Files (x86) mappában van az alábbi helyen:

arm-none-eabi-location

Az elkészült, személyre szabott fájlunknak .bin lesz a kiterjesztése, tulajdonképpen ez maga a firmware. Akármilyen hihetetlen, minden rádió, eszköz szoftvere és programkódja így készül, egy ilyen – vagy hex – állomány a kimenete. No de ne kanyarodjunk el, az alig néhányszor tíz kilobájt méretű fájlocskánk kicsit el van dugva, de a programozás világában nagyon is megszokott BIN mappa árulkodik, és a projekt neve alatt ezt is megtaláljuk:

 

Csatlakozzunk

Az STM-hez való programozó sticket és a szonda csatlakozóját három vezetékkel, a föld mellett az SWCLK és az SWDIO-val kell összekötni. Az interfészen ez feliratozva van, a szonda lábai közül pedig sorrendben az 1, 8, 9 lesz. A mellékelt képen látszik a bekötés, de ha nem vagyunk biztosak a dolgunkban, a műszer panelján is fel van tüntetve. Megjegyzem, a port első két lábának számozása az egyetlen informatív felirat az egész készüléken.

RS41-APRS-mods-HA8LHT-1

 

Töltsük fel

Ezzel a utilitytel már nem egyszer volt dolgunk, de azért nem nagyolom el a lépéseket. Az ARM gyártójának saját oldaláról szedjük le a programozásához szükséges szoftvert, az ST-Linket, és telepítsük. Ha kicsit macerásnak tűnik megszerezni vagy nem akar jönni a letöltést tartalmazó link, kereshetünk alternatív forrást, korábban sokan küzdöttek hasonló problémával, biztos sok helyen fent van. A most aktuális verzió a 4.5.0, az állomány STSW-LINK004 neve viszont nem ezt tükrözi. Amúgy az elmúlt időben néhány percen belül megérkezett az e-mail.

Sikeres telepítés után felmászik az processzor drivere is, ám ezt megelőzően egy biztonsági figyelmeztetést kapunk a gyártó tanúsítványa miatt. Nyugodtan elfogadhatjuk a telepítést, sok választásunk mondjuk nincs is. Nem magyaráznám el a folyamatokat, legyen elég annyi, hogy figyelni kell a sorrendre.

Először bedugjuk a programozót az USB portba és tápot adva neki bekapcsoljuk a szondát.

A program indítása után megnyitjuk a lefordított programunkat, a már említett RS41HUP.bin fájlt. Ekkor egy üzenetet fogunk kapni, miszerint a memóriát nem lehet olvasni. Nincs para, ki kell kapcsolni egy védelmet. Ezt a menüsorból elérhető Target -> Option Bytes menü alatt vagy a CTRL+P billentyűkombinációval megnyitott ablakban tehetjük meg, a beállítást csupán Disabledre kell állítani, majd Apply.

disabled_mem_read
 

Amikor ezzel megvagyunk, szintén a Targetet hívjuk segítségül, és a Connect paranccsal csatlakozunk a procihoz. Ez után már nincs más hátra, mint a Target -> Program menüvel feltoljuk a firmwaret a szondába. Ez két-három másodpercet vesz majd igénybe.

Ennyi az egész, ezt követően már látni kell a szonda jeleit a beállított frekvenciákon, illetve ha van, az APRS gatewayon keresztül felkerül a térképre. Adáskor 300, nyugalmi helyzetben 120 mA áramfelvételt mértem, igaz, ekkor még nem volt benne a szenzor csápja a fűtéssel.

aprs-rtty-beacon-ha8lht-rs41

A szonda bekapcsoláskor egy RTTY keretet küld, melyben <hívójel>,<keret>,<óóppmm>,<szélesség>,<hosszúság>,<magasság>,<rádió hőmérséklete>,<akku tápfesz>,<műholdak száma>,<jó GPS csomagok>,<hibás GPS csomagok>,<GPS FIX>,<CRC> adatsorok követik egymást. A periódusidő letelte után – beállítástól függően – már közvetlenül egymás után következik az APRS és az RTTY szegmens.

Megjegyezném, hogy van megoldás, amikor egy teljesen kész hex fájlt nyomunk fel a mikrovezérlőbe. Annál a megoldásnál nem kell előre fájlban konfigurálni, viszont a végén egy terminált kell ráakasztani és azon keresztül, paraméterenként – soronként – kell beállítani a szondát. Ez kevésbé áttekinthető, ám bármikor könnyebben átállítható konfigurációt jelent, és inkább a hardveres játékokat kedvelőknek ajánlom a második lépésben szükséges TTL interfész miatt.