Silmad ja kõrvad: kuidas skript raadiot kuulab
Käsitsi klõpsamine on tore esimesed kümme minutit. Siis tahad, et arvuti teeks ise: käiks ala läbi, ütleks, kus on jaamad, kui tugevad, ja kas seal on muusika või jutt. Selleks pidi arvuti saama kolm asja: käed (tuunida), silmad (spektrit näha) ja kõrvad (heli hinnata).
Kõik skriptid on Tarkvara lehel. Windows + PowerShell 5.1 + Python 3.12, sest see oli see, mis käepärast oli.
Käed: rigctl
SDR++-il on kaasas Rigctl Server moodul. See avab TCP-pordi 4532 ja räägib Hamlibi rigctl-protokolli – sama, millega juhitakse päris transiivereid. Käsud on üherealised:
F 101600000 sea sagedus (Hz)
f loe sagedus
M WFM 0 režiim
AOS / LOS salvestus algab / lõpeb
Konfis (rigctl_server_config.json) panin autoStart: true ja sidusin salvestaja külge (recorder: "Recorder", recording: true). Siis piisab PowerShellist:
.\rig.ps1 "F 97800000" "f"
# F 97800000 -> RPRT 0
# f -> 97800000
Üks üllatus: m (loe režiim) vastab kahe reaga – režiim ja ribalaius. Kui loed ainult ühe rea, nihkuvad kõik järgmised vastused paigast. Skript loeb nüüd kõik saadaolevad read.
Silmad: ekraanipilt
Kõige lihtsam viis "näha" on teha SDR++ aknast pilt. shot.ps1 leiab akna (user32.dll → GetWindowRect), kopeerib ekraanilt (Graphics.CopyFromScreen) ja lõikab välja spektri + vesijoa. Sealt loeb tipu kõrguse dB-des maha nagu inimene.
Sama user32 kaudu saab ka klõpsata – click.ps1 84 58 vajutab Play-nuppu. See on ainus koht, kus ma UI-d "käsitsi" puudutan; kõik muu käib rigctl ja konfifailide kaudu.
sweep.ps1 seob need kokku: tuunib 2,2 MHz sammuga, ootab 4 s, et vesijugu täituks, pildistab. 88–108 MHz = 9 pilti, minut aega.

Kõrvad: numpy
Pildilt näeb, et midagi on. Kuulda, mis seal on, on teine asi. Esimene versioon oli lihtne: SDR++ salvestab 4 s heli WAV-i, listen.py arvutab:
- RMS ja dünaamika (95. ja 10. protsentiili vahe 50 ms kaadrites) – kahin on ühtlane, kõne hüppab
- spektraalne lamedus 300–8000 Hz – valge müra ≈ 1, muusika ≈ 0,1–0,2
- bassi osakaal alla 300 Hz – popmuusika on bassirikas
Kalibreering kolme salvestisega:
99.5 MHz (tühi) flatness 0.446 dynamics 0.7 dB -> KAHIN
97.8 MHz flatness 0.147 bass 0.68 -> MUUSIKA
101.6 MHz flatness 0.291 bass 0.53 -> MUUSIKA
Kõne tuvastamine vajab veel tööd – uudised tulid "ebaselgena" välja, sest uudistelugeja räägib ilma pausideta ja kompressor teeb dünaamika lamedaks.
Mida läbikäik andis
24 küüru. Tugevaimad 101.6, 97.8, 91.5, 102.1, 103.1. Ja siis kaks kohta, kus ma eksisin: 104.1 ja 106.6 peal olid kitsad teravad piigid, mitte laiad küürud. Ma märkisin need "dongli enda spuurideks". Valesti – aga sellest järgmises loos, sest selle selgitas välja RDS.
Õppetunnid
- Center tuning peab olema sees, muidu rigctl liigutab ainult VFO-d ja pilt jääb samaks.
- PowerShell 5.1 loeb
.ps1faile ANSI-na. Täpitähed kommentaarides = parseri viga. Salvesta UTF-8 BOM-iga. - SDR++ kirjutab moodulite konfi ainult siis, kui UI-s midagi muudetakse. Kui käsitsi kirjutad, on võtmenimed tõsised:
"sampleType": "int16"kukutab programmi käivitusel,"Int16"töötab.
73, Tõnu
Kommentaarid
Laen…