Vaisala RS-41 meteorológiai szonda újrahasznositása


    Mivel sikerült egy pár darab Vaisala RS-41 típusú meteorológiai szondát levadásznom, úgy döntöttem, hogy keresek valami hasznosítási lehetőséget a számukra. Mivel a frekvencia amin ezek a szondák dolgoznak védett, és a meteorológusok részére van kiosztva, meg kellett találni a módját, hogyan lehet a frekvenciát áthangolni az amatőr vagy az ISM sávba. A szondában egy Si4032 típusú rádiocsipet használnak, ezért az áthangolás csak programozás kérdése. Sajnos az természetes, hogy a processzorban lévő program védett, ezért csak egy út járható - az egész programot újra kell írni. A neten való keresgélés folyamán ráakadtam egy programra, amit egy lengyel amatőr SQ5RWU publikált. Egy szondát beprogramoztam és elkezdtem tesztelni. A program működött, de nagyon zavart, hogy minden alkalommal amikor valamilyen paramétert meg akartam változtatni, akkor ki kellett javítani a forraskódot, majd újra kellett fordítani a programot, ezután az új programot újra beírni a processzorba. Ez egyrészt időigényes folyamat, másrészt a flashnek sem tesz jót a gyakori újraírás. Mivel az egész program eléggé puritán és az általa nyújtott lehetőségekkel sem voltam megelégedve, úgy döntöttem, hogy az egész programot újragondolom és átírom. Ennek a fejlesztésnek a végeredménye ez a program. Eléggé méretesre sikeredett, éppencsak belefér a flashbe, de előnye, hogy nem kell állandóan újraprogramozni a szondát. A programot elég egyszer beletenni, aztán a paramétereket már a csatlakozón lévő soros porton keresztül bármikor meg lehet változtatni. Első programozás előtt a flashmemóriát a "Full chip erase" paranccsal teljesen ki kell törölni, hogy az eredetileg írásvédelemmel levédett memória-részek is fölszabaduljanak. Ellenkező esetben a program a saját paramétereinket helyhiány miatt nem fogja elmenteni!




Leirás:

    A szondát a jobb alsó sarokban lévő nyomogombbal lehet bekapcsolni. Ha az elemekben lévő feszültség elegendő (a szonda működik két NiMH akkumulátorról is) akkor a bal alsó sakokban lévő zöld LED villogni kezd. Ha a szondának megfelelő rálátása van a GPS műholdakra, akkor a pozíció megtalálása után a zöld LED folyamatosan világít. A mellette található piros LED akkor világít, amikor az adó éppen működik. A szonda eredeti érzékelői nincsenek használva, ezért azokat el kell távolítani. Ha a BUTTON paraméter ON állásban van, akkor a szondát a nyomógomb megnyomásával, és annak megtartásával lehet kikapcsolni. A gombot addig kell nyomni, amíg a zöld LED el nem kezd gyorsan villogni. A gomb elengedése után a szonda kikapcsol. Ha a BUTTON paraméter OFF állásban van, a szondát kikapcsolni csak az elemek tartóból való eltávolításával lehet. Ez előnyös lehet olyankor, ha nem akarjuk, hogy éles bevetés esetén egy véletlenszerű zavar kikapcsolja a szondát. Bekapcsolás után, ha az elem feszültsége kisebb mint 3V, a piros LED 5x felvillan. Ez figyelmeztet arra, hogy indítás előtt  ki kellene cserélni az elemeket, különben nem lesz túl hosszú a küldetés.
    A szonda RTTY, APRS és CW üzemmódban működhet. Ezeket az üzemmódokat egyenként ki illetve be lehet kapcsolni. Az RTTY szöveg az UKHAS ajánlással kompatibilis. Az APRS csomag lehet kódolatlan, illetve Mic-E előirás szerint kódolt. Az APRS csomag csak akkor kerül adásra, ha a szonda érvényes koordinátákat kap a GPS vevőből (szobában tesztelés közben nincs APRS adás!). Az egyes paramétereket egy parancs és a hozzá tartozo paraméter soros porton való elküldésével tudjuk megváltoztatni. Ehhez a szondát és a számítógépet egy COM-TTL vagy USB-TTL átalakítón keresztül össze kell kötni. Figyelem a szonda csatlakozóján az UART port 3,3V-os! A számítógépen bármilyen terminál programot használhatunk. A sebesség alapesetben 9600 baud, 8 adatbit és 1 stop bit paritás ellenőrzés nélkül (9600 8-N-1). Mint minden mas paramétert, úgy a soros port sebessegét is meg lehet változtatni. A lehetséges sebesség 300-tol 115200 baudig barmilyen érték lehet. A kommunikáció interaktív. Minden kiadott parancsra jön válasz. Ha a processzor megértette és végrehajtotta a parancsot, akkor a válasz egy OK lesz. Ellenkező esetben hibaüzenetet kapunk, ami megmondja, hogy hol vétettünk hibát. Ha a szondát és a számítógépet megfelelően kötöttük össze, akkor bekapcsolás után ezt az üdvözlő szöveget kell látnunk a képernyőn:

STM32 CW, RTTY & APRS tracker v. 2.5 by OM3BC...
cmd>


Ha segítségre van szükségünk, akkor a HELP vagy a ? parancsot használhatjuk. Ez után a parancs után a következő szöveget kapjuk:

cmd>help

Allowed commands (not case sensitive):

BUTTON on/off - use button to turn off
LEDS on/off - use LEDs
POWER n - rf power n = 0 to 7 (7 is max.)
HOLDOFF n - n = time between two rtty messages in seconds
SERCOM n - speed of serial communication port (n = 300 to 115200)
RTTY on/off - send rtty message
RTTYFRQ n.n - n.n = rtty and cwid frequency in MHz
RTTYCALL string - rtty callsign (up to 15 characters)
BAUD n - n = rtty baudrate (max. 300)
DBITS n - n = rtty databits (7 or 8)
SBITS n - n = rtty stop bits (1 or 2)
SHIFT n - n = 1,2,3,4 or 270,540,810,1080 Hz
TEMP (or TEMPERATURE) on/off - send temperature in rtty messages
ALT (or ALTITUDE) on/off - send altitude in rtty messages
SPEED on/off - send speed in rtty messages
COURSE on/off - send course in rtty messages
UBAT on/off - send battery voltage in rtty messages
RTTY_WWL n - n = characters of wwlocator (only even numbers) in rtty messages
RTTY_TIME on/off - send time in rtty messages
SAT (or SATELLITES) on/off - send heard satellites in rtty messages
APRS on/off - send aprs messages
APRSFRQ n.n - n.n = aprs frequency in MHz
APRSCALL string - aprs callsign (up to 6 characters)
SSID n - aprs ssid n = 1 to 15
APRS_ALT on/off - send altitude in aprs ttext
SYMBOL string - symbol from aprs symbol table (2 characters)
RELAY string - aprs relays (WIDE1-1,WIDE2-1)
APRS_EVERY n - time between aprs messages is n x holdoff
TAIL_EVERY n - time between tail text is n x aprs time, 0 = no tail text
TTEXT string - tail text (up to 100 characters)
APRS_UBAT on/off - send battery voltage in aprs ttext
APRS_TEMP on/off - send radio chip temperature in aprs ttext
CWID on/off - send cwid messages
CWIDMESS string - cw message (up to 25 characters)
CWID_ALT on/off - send altitude via cw
CWID_UBAT on/off - send battery voltage via cw
CWID_WWL n - n = characters of wwlocator (only even numbers) in cw messages
CWID_EVERY n - time between cw messages is n x holdoff
CW_SPEED n n = cw speed in wpm
DISP - show parameters
DEF - set default values
SAVE - save parameters to flash
cmd>

A használható parancsok:

BUTTON -
ez a paraméter szabja meg, hogy a nyomógombbal ki lehet-e kapcsolni a szondat vagy nem.
LEDS - energiát spórolhatunk, ha nem használjuka LEDeket. Repülés közben úgysem látja senki. Bekapcsolás után a ledek mindig működnek, de ha OFF-ba állítottuk, akkor 10 perc működés után automatikusan kikapcsolnak.
POWER - a kimenőteljesítmény beállítása 0 = legkisebb, 7 = legnagyobb teljesítmény (cca 40 mW).
APRSFRQ - APRS frekvencia (az ajánlott frekvencia 432,500 MHz)
RTTYFRQ - RTTY frekvencia. Ez a frekvencia érvényes a CW identifikáció adására is.
APRSCALL - APRS hívójel.
RTTYCALL - RTTY hívójel.
CWIDMESS - a CW identifikáció szövege. Ha szöveg elejére egy > jelet irunk, akkor az adás egy "figyelem" (-.-.-) jellel fog kezdődeni, ami megkönnyiti a gépi dekódolást (MixWin, Dl-FlDigi stb).
RTTY - RTTY szöveg be- illetve kikapcsolása.
HOLDOFF - a két RTTY adás között eltelt idő.
BAUD - RTTY adás sebessége baudban (max. 300).
DBITS - adatbitek száma. Lehetséges érték 7 vagy 8.
SBITS - a stop bitek száma. Lehetséges érték 1 vagy 2.
SHIFT - frekvencialöket. Lehetséges érték: 1-270, 2-540, 3-810, 4-1080 Hz
TEMP - a hőmérséklet adása az RTTY szövegben. (A hőmérséklet a radiós csip hőmérséklete, nem a környezté.)
ALT - a magassá adásának engedélyezése.
SPEED - a sebesség adásának engedélyezése.
COURSE - a mozgási irány adásának engedélyezése.
UBAT - az elemfeszültség adásának engedélyezése.
SAT - a hallott műholdak számának adása.
APRS - APRS adás engedélyezése.
APRS_UBAT- az elem feszültségének adása az APRS csomagokban.
APRS_TEMP- a rádió csip hőmérsékletének adása az APRS csomagokban.
SYMBOL - két karakter, amely meghatározza, hogy a szonda a www.aprs.fi honlapon milyen ikonnal jelenjen meg. (táblázat)
SSID - az APRS hívójel azonosítója. Lehetséges érték 0-tól 15-ig.
RELAY - aprs relays (WIDE1-1,WIDE2-1)
TXD - Tx delay - az adásra kapcsolás és az első adatbyte adása közötti idő. Lehetseges érték 10-től 500-ig.
MICE - a csomag kódolatlanul, vagy MIC-E kódolással.
TELEMETRY - telemetriai adatok adása.
APRS_EVERY - az APRS csomagokat nem szükséges túl gyakran adni. Ez a paraméter határozza meg az időt a két csomag között.
TAIL_EVERY - a csatolt információs szöveg adásának gyakorisága.
TTEXT - a csatolt információs szöveg.
CWID_WWL vagy RTTY_WWL - n a karakterek száma (2,4,5,8,10,12). 0 - nincs WWL.
CWID - a CW identifikáció adásának engedélyezése.
CWID_EVERY - a CW identifikáció gyakorisága.
CW_UBAT - az elem fesz
ültségének adása a CWID szövegben.
CW_ALT - a magassag adasa a CWID szövegben.
CW_SPEED - a CW identifikáció sebessége WPM -ben.
DISP - megmutatja a beállított paramétereket.
SERCOM - a csatlakozón lévő soros port sebessége. Lehetséges értékek: 300 - 115200.
DEF - a paraméterek alapértékre való állítása.
SAVE - a beállított paraméterek eltárolása.

Egy lehetséges beállítás:

cmd>disp

Current parameters:

BUTTON ON
LEDS OFF
POWER approx. 100 mW
UART 9600 8-N-1
HOLDOFF 10 s
LONG WWL: OFF
RTTY ON
RTTY and CWID FREQUENCY: 434.500 MHz
RTTY CALLSIGN: OM3BC/AM
RTTY BAUDRATE: 100 Bd
RTTY SHIFT: 540 Hz
RTTY DATA BITS: 7
RTTY STOP BITS: 2
RTTY TEMPERATURE: OFF
RTTY ALTITUDE: ON
RTTY SPEED: OFF
RTTY COURSE: OFF
RTTY BATTERY VOLTAGE: ON
RTTY SATELLITES: ON
RTTY WWL: OFF
RTTY TIME: ON
APRS ON
APRS FREQUENCY: 432.500 MHz
APRS CALLSIGN: OM3BC-11
APRS RELAY: WIDE1-1
APRS SYMBOL: /O
APRS EVERY: 1
APRS ALT: ON
APRS TAIL TEXT EVERY: 1
APRS TAIL TEXT:  Modified RS-41 balloon tracker
APRS UBAT: ON
APRS TEMP: ON
CWID ON
CWID MESSAGE: TEST DE OM3BC/AM
CWID speed: 60 WPM
CWID EVERY: 5
CWID WWL: 6 characters
CWID UBAT: OFF
CWID ALT: OFF
cmd>

Zárszó:

Az eredeti forrás itt
  talalható.
Hex állomány itt talalható.
A programozáshoz én az ST-LINK V2 programozót használom, ami például az aliexpressről szerezhető be.

HG8LXL ki is próbálta élesben az átprogramozott szondát. A beszámolója itt található.

Bekötés:

Konektor RS-41:


|-----------|
|2 4 6 8 10|
|1 3 5 7 9 |
|---   ----|

1 - GND
2 - Uart3 Rx
3 - Uart3 Tx
4 - PB1 * (10k + cap + 10k)
5 - Vcc (Boost out)
6 - VBAT
7 - RST
8 - SCL
9 - SDI
10- GND

Programozó kábel:

 RS41 ----- ST-LINK
===================
Pin 1 ----- GND
Pin 5 ----- 5.0V
Pin 8 ----- SWCLK
Pin 9 ----- SWDIO

USB - TTL átalakító:

RS41 ------ USB-TTL
===================
Pin 1 ----- GND
Pin 2 ----- TxD
Pin 3 ----- RxD

    2024 januárjától a szonákba újabb típusú processzort szerelnek. Ennek nagyobb a flash memóriája, és kevesebbet fogyaszt. Bár a régi és az új processzor labkompatibilis, sajnos  megsem ugyabnazokat a lábakat használják minden esetben. Ez miatt a régi program az új hardwareben nem hasznalható. Mivel amúgyis bele kellett nyúlni a firmwarebe, ideje volt egy kis ráncfelvarrásnak. Az utóbbi időben háttérbe szorul az RTTY üzemmód, és inkább a HORUS van használatban. Ez bizonyos fokig érthető is, bár azt hogy azonosítót központilag kell kérvényezni, és más dönti el hogy milyen azonosítóval repülhet egy szonda, ezt maár annyira nem értékelem. Mivel a HORUS 4FSK modulációt használ, egy csomag átvitele jóval kevesebb idaig tart, mint az RTTY esetén. Ez miatt az új firmwarebe belekerült ez az üzemmód is.
    A harwarevel kapcsolatban írt információk és tanácsok itt is érvényesek.
    Ez a firmware már tudja kezelni a külső érzékelőket is, ezért ha az érzékelő nem sérült meg, használhatjuk (bár ezzel növekszik az áramfelvétel).

A soros port paraméterei továbbra is 9600N1.
Bekapcsolás után a szonda a következő üzenettel jelentkezik be:
RS41 based payload for STM32F100 (RS41 based payload for STM32L412).

Hogy milyen parancsokat és milyen formában kell használni azt a  HELP, H vagy ? paranccsal kérhetjük le.
Az éppen aktuális paramétereket a DISP paranccsal nézhetjük meg.
Első lépésként írjuk át a N0CALL-t a sját hívójelünkre (APRS és RTTY).
Ezek után módosíthatjuk a többi paramétert. Programozás után egyik üzemmód sincs engedélyezve. Engedélyezzük azokat amelyeket használni akarunk.

Ha betöltés után a program nem indul el, ellenőrizzük, hogy a programozóban a megfelelő config bitek vannak-e beállítva.


                                STM32L412                                                                    STM32F100

firmware a 2024 (STM32F100 a V-vel bezárólag) előtti szondákba.

firmware a 2024 és az utáni (STM32L412 W-től kezdődően) szondákba.