Il Nodo IZ0YAY-2 (ex IZ0YAY-10) nel dettaglio
I radioamatori, oltre alla passione per la radio, sono famosi anche per la loro parsimoniosa gestione della economia; quando mettono in piedi una idea il motto è “massima resa poca spesa”
L’idea di creare un nodo low cost, nasce dopo aver fatto una serie di sperimentazioni con vari SW su un piccolo netbook interfacciato alla radio. Tra i vari SW provati, sono rimasto colpito dalla applicazione “APRX” leggera e versatile tanto da poter essere installata anche su un dispositivo Raspberry (figura 1) .
APRX su raspberry non è una novità; il nodo IZ7BOJ-11 si basa su APRX installato su raspberry interfacciato alla radio tramite un classico TNC.
Per installare APRX su Raspberry i dettagli sono riportati QUI, in ogni caso i comando sono
$ sudo apt-get install aprx
L’idea è quindi quella di economizzare al massimo, evitando la spesa del TNC, pertatnto ho usato “Soundmodem” : un packet engine la cui caratteristica è la capacità di emulare il TNC con protocollo AX25 utilizzando la scheda audio e relativi driver:
- Il segnale AFSK si preleva dalla uscita audio della radio viene posto in ingresso (mic) alla scheda audio, allora Soundmodem demodula tale segnale;
- Il pachetto APRS viene modulato in AFSK da Soundmodem, tale segnalo modulato viene messo alla uscita della scheda audio del PC (head-phone) che poi è connesso all’ingresso audio della radio (mic o pkt 1200).
Per installare Soundmodem:
$ sudo apt-get install ax25-apps ax25-utils ax25mail-utils ax25-tools ax25-xtools
$ sudo apt-get install soundmodem
A questo punto il SW è installato, ora è necessario procurarsi l’opportuno HW per interfacciare la radio al raspberry:
- Interfaccia Audio Radio/raspberry
- Circuito commutazione PTT della Radio via porta USB
Interfaccia Audio Radio/raspberry e commutazione del PTT
Il raspberry non ha una intefaccia Audio analoga a quella di un PC, l’interfaccia audio non ha l’ingresso, ma solo una uscita stereo; pertanto è necessario utilizzare una Scheda Audio USB (figura 2) .
La maggior parte di queste schede, hanno una tensione di bias, sulla connessione della cuffia e del microfono. Tale tensione può essere letale per le nostre radio e quindi è necessario bloccarla.
Io ho usato lo schema illustrato in figura 3, dove i componenti sono:
- n.2 C = 220uF elettrolitico 16V
- n.2 Trasformatori di isolamento audio 600:600
Per il comando del PTT fare riferimento allo schema di figura 4, il DB9 poi sarà connesso ad un adattatore USB Seriale RS232 (figura 5)
Il tutto assemblato assume l’aspetto di figura 6
Il nodo completamente assemblato si presenta molto accattivante e pulito, nel mio caso ho usato una radio Alinco DR119T (figura 6)
Una volta assemblato l’hardware e la radio, si procede alla configurazione del SW.
Consiglio vivamente di configurare il raspberry in modo tale da fare tutto da terminale remoto, abilitando sia l’interfaccia SSH. che VNC
Configurazione Soundmodem
Al fine di configurare soundmodem, meglio utilizzare una intefaccia grafica, pertanto se non disponete di un monitor connesso al Raspberry e vi connettete da terminale remoto usate l’applicazione VNC-Viewer.
Da riga di comando come superuser digitate il comando
# soundmodemconfig
Si apre la finestra di configurazione, simile a quanto mostrato nella figura 7, dove è già presente una configurazione (piconf), in caso contrario la colonna a SX è vuota.
Per iniziare la configurazione bisogna configurare una interfaccia cliccando su File–>New–>Configuration; dopo aver specificato il nome, questa compare sulla colonna sinistra; cliccando sulla configurazione appena creata si giunge ad una immagine simile alla figura 9.
- Scegliere nella Picklist Mode il valore “ALSA”
- nella Picklist “ALSA Audio Driver” scegliere una delle stringe “plughw:n,0”, dove n può avere può assumere i valori (0,1, 2….). Per determinare il valore “n”, eseguire il comando descritto in seguito e valutare l’output.
root@raspberrypi:~# cat /proc/asound/cards
0 [ALSA ]: bcm2835_alsa - bcm2835 ALSA
bcm2835 ALSA
1 [Device ]: USB-Audio - USB Audio Device
GeneralPlus USB Audio Device at usb-3f980000.usb-1.2, full speed
In tal caso è evidente che la scheda USB ha il progressivo 1
- Spuntate il valore Half duplex
- selezionate Capture channel = Mono
- Scegliere il PTT Driver, se non compare scriverlo manualmente. Per capire il valore giusto eseguite una “ls -lrt” sotto il path “root@raspberrypi:/dev# senza il convertitore USB/seriale connesso. Connettete il convertitore rieseguite la “ls-lrt” in elenco comparirà il device es. “ttyUSB0”.
- Il TAB Channel Access non necessita modifiche Nel caso non usiate un PTT, ma un circuito VOX si consiglia di aumentare il valore del campo “TxDelay”
Adesso alla interfaccia Soundmodem è necessario aggiungere il canale con cui la radio comunica con la interfaccia, quindi eseguire File –> New –> Channel (figura 10)
Si seleziona il canale appena creato e si impostano i valori così come illustrati nelle figure 11 e 12; in questo modosi definisce che il canale deve de-modulare e modulare segnale AFSK ad una frequenza di 1200bit/s
Come ultimo step bisogan definire la tipologia di TNC da emulare. soundmodem può emulare sia la modalità MKISS che KISS; nel nostro caso scegliamo la modalità KISS, la più semplice.
La stringa /dev/soundmodem0 deve essere digitata liberamente nel campo, essa definirà il /dev che utilizzerà APRX.
A questo punto è necessario calibrare i livelli. Il tab “Diagnostics” il tool mette a disposizione tre tool
- Scope
- Modem
- Spectrum
In figura 14 è illustrata la schermata del tool “Modem” che consente di vedere immediatamente i pacchetti decodificati. Se si accende l’indicatore DCD, allora il pacchetto è correttamente decodificato. Cliccando sul pulsante PTT potrete testare se la vostra radio va in trasmissione; se la radio trasmette un tono allora è connessa correttamente.
La schermata Scope (figura 15) mostra i livello dell’audio in ingresso alla interfaccia: regolare i livelli agendo sul volume della radio o sul guadagno MIC della scheda audio in modo che il segnale non saturi. Se si accende l’indicatore DCD, allora il pacchetto è correttamente decodificato
Per regolare il guadagno microfonico della scheda eseguire il comando seguente
root@raspberrypi:~# alsamixer
Tramite F6 si sceglie la scheda audio USB (figure 15 e 16) e con il tasto TAB si sceglie il valore da modificare: “Capture” o “MIC”.
Configurazione APRX
Per la configurazione dell’applicazione APRX è sufficiente configurare il file /etc/aprx.conf, quindi digitare il comando
#nano /etc/aprx.conf
Il file risulterà già compilato con una serie di righe commentate, per ogni approfondimento fare riferimento alla guida ufficiale. Io consiglio di ripulirlo e scriverlo da zero, solo così è possibile capire come configurare APRX.
Di seguito vi illustrò delle configurazioni basilari, quindi non esaustive, ma che consentiranno di far funzionare il nodo come digipeater + Igate (RF–> Interntet e Internet –> RF)
Prima cosa da configurare sono le variabili che definiscono il nominativo del nodo de le coordinate del modo stesso
mycall IZ0YAY-10
myloc lat 4048.07N lon 01655.15E
Le coordinate devono essere espresso come ddmm.mmN e dddmm.mmE
successivamente analizzeremo le singole sezioni:
- logging
- aprsis
- interface
- beacon
- digipeater
logging
<logging>
pidfile /var/run/aprx.pid
rflog /var/log/aprx/aprx-rf.log
aprxlog /var/log/aprx/aprx.log
erlangfile /var/run/aprx.state
erlang-loglevel LOG_DAEMON
erlanglog /var/log/erlang.log
erlang-log1min
</logging>
In tale sezione vengono definiti i nome di file di log. I file /var/log/aprx/aprx-rf.log e /var/log/aprx/aprx.log devono essere creati manualmente; nel file:
- /var/log/aprx/aprx.log –> viene tracciato lo stato delle interfacce
- /var/log/aprx/aprx-rf.log –> Viene tracciato il taffico APRS sia via RF che via APRSIS
aprsis
<aprsis>
login $mycall
passcode 12345
server czech.aprs2.net 14580
heartbeat-timeout 1m
filter "m/40"
</aprsis>
In questa sezione vengono definiti i parametri della interfaccia APSIS, ovvero la rete:
- login –> si inserisce la variabile precedentemente definita o il nominativo completo di ssid con il quale ci si vuole connettere alla rete;
- passcode –> password di accesso alla rete APRSIS (la password si genera qui);
- Server –> si specifica server e porta del servizio. La lista di server è disponibile qui;
- heartbeat-timeout –> definisce il timeout in caso di impossibilità di connessione al server
- filter –> Su questo campo viene specificato un valore molto importante ovvero si definisce la regola con la quale i pacchetti presi dalla rete, vengono messi in RF. ATTENZIONE!!!! Un filtro mal configurato può generare la saturazione della frequenza. Nell’esempio /m40 vuol dire che i pacchetti trasmessi dall’igate sono solo quelli di un raggio di 40KM.
interface
<interface>
serial-device /dev/soundmodem0 19200 8n1 KISS
alias WIDE
callsign $mycall
telem-to-is false
tx-ok true
</interface>
Nel tag Interface deve essere definito il dispositivo TNC che stiamo utilizzando, nel dettaglio:
- serial-device è il device che si utilizza come TNC, nella configurazione del soundmodem abbaimo definito come dev “/dev/soundmodem0” .
- “telem-to-is” abilita o disabilita la trasmissione di telemetria;
- “tx-ok” abilita o disabilita in generale la trasmissione del dispositivo. Se il campo vale “true” allora la funzione è abilitata, altrimenti se “false” è disabilitata.
beacon
<beacon>
beaconmode both
cycle-size 30m
beacon
via WIDE2-2
symbol "I#"
$myloc
comment "Testo"
</beacon>
Il tag “beacon” definisce il messaggio beacon del nodo:
- baconmode –> definisce come il beacon deve essere trasmesso, e può assumere i seguenti valori :
- Both –> il beacon viene trasmesso sia via radio che via rete aprsis
- Radio –> il beacon è trasmesso esclusivamente via radio
- aprsis –> il beacon è trasmesso esclusivamente via aprsis
- “cycle-size” –> definisce l’intervallo in minuti della trasmissione del beacom
- beacon –> composto dai vari sotto campi:
- dstcall –> Destinazione del pacchetto (esempio APRX)
- via –> la variabile definisce il paradigma del beacom (es. WIDE2-2);
- symbol –> Definisce il simbolo del beacom si veda il dettaglio qui;
- $myloc –> variabile che passa le coordinate definite inizialmente (è possibile definire coordinate direttamente (es lat “4147.19N” lon “01223.27E”) , invece della variabile.
- comment–> Commento del messaggio
Si possono creare più tag beacon, in modo da mandare più messaggi
digipeater
<digipeater>
transmitter $mycall
ratelimit 60 120
srcratelimit 10 20
<wide>
maxreq 2
maxdone 2
keys TRACE,WIDE,RELAY
</wide>
<source>
source $mycall
relay-type digipeated
viscous-delay 0
ratelimit 60 120
filter -b/IQ7YP*/IR7DD*/IK7EJT-10
filter t/*
</source>
<source>
source APRSIS
relay-type third-party
via-path WIDE2-1
msg-path WIDE2-1
viscous-delay 5
filter t/*
</source>
</digipeater>
Nella sezione “digipeater” le sezioni fondamentali da configurare sono le sottosezioni “wide” e “source”; i campi non direttamente citati di seguito sono valori default.
- Wide
- “maxreq” e “maxdone” –> definiscono il numero di salti che il sistema gestisce, quindi ripete fino al massimo di due salti solo se la stazione ricevuta chiede al massimo due salti;
- key –> il parametro definisce i paradigmi gestiti valori “wide”,”trace” e “raelay” possono essere ustati alternativamente o tutti separati da “,”. Nota Ad oggi il paradigma standard è “wide”.
- Source
Il codice mostrato precedentemente mostra due tag source caratterizzati dalle valorizzazioni di “source” e “relay-type”.- Sezione relativa alla funzione digipeater:
- source –> valorizzare con la variabile del call
- relay-type –> valorizzare con il valore di default “digipeated”
- filter –> la valorizzazione di tale campo consente di filrare aree, nominativi; nel caso in esempio /b seguito da call è stato usato per filtrare provenienti da digi/igate vicini, per ridurre la ridondanza di ripetizioni. Nota Qualsiasi filtro venga usato (es -b/ o m/..etc, si veda il manuale per approfondimenti) mettere sempre il filtro t/*; diversamente il digipeater non ripeterebbe il pacchetto
- Sezione relativa alla funzione di i-gate
- source –> valorizzare “APRSIS” essendo la soregente la rete
- relay-type –> valorizzato con “third-party”
- via-path –> in genere è valorizzato con WIDE2-1, è lo standard per le trasmissioni dei pacchetti di posizione dagli I-gate
- msg-path WIDE2-1 –> in genere è valorizzato con WIDE2-1, è lo standard per le trasmissioni dei pacchetti SMS dagli I-gate
- viscous-delay –> valorizzare con valori >0 e <5: è il ritardo casuale, in secondi, da “0” al valore definito, con cui il dispositivo immette in rete i dati. In tal modo se più I-gate ascoltano lo stesso pacchetto si evita il conflitto.
- filter –> valorizzare con t/* se si vuole che l’igate trasmetta da dalla rete, altrimenti commentare il comando anteponendo “#” (# filter t/*) ATTENZIONE!!!! verificare la reale necessità di usare un igate in TX. Un i-gate in TX può generare la saturazione della frequenza.
- Sezione relativa alla funzione digipeater:
Terminate le configurazioni, se tutto va bene basta digitare i seguenti comandi
# soundmodem &
# aprx
Se tutto è stato configurato correntemente, il nodo è operativo. Consiglio di configurare nel file
/etc/rc.local
I seguenti comandi
fi sudo soundmodem & exit 0
In tal modo in caso di riavvio accidentale o reboot voluto dal sysop sia soundmodem che aprx si riavvieranno in automatico.
Conclusioni
Ritengo che il nodo descritto oltre ad essere economico, è molto versatile. Quanto descritto è solo una potenzialità di aprx, per esempio alcune altre possono essere:
- operare in DAPRS (DSTAR)
- gestire più porte radio, per esempio si può un nodo che lavora su due frequenze UHF e VHF.
- Inviare più beacon relativi a più oggetti
il vantaggio di avere di base un ambiente linux, come il raspberry si presta molto alle personalizzazioni dei più smaliziati in conoscenza di .php. Per esempio configurando un server http, è possibile installare la dashboard sviluppata da Peter SQ8VPS and Alfredo IZ7BOJ, in modo da monitorare le statistiche del nodo (per dashboard del nodo iz0yay-10).
Inoltre abilitando le interfacce ssh e VNC, si può accedere al nodo da remoto per monitorare i LOG, modificare le configurazioni e riavviare il dispositivo.
Spero di aver fatto cosa gradita condividendo questa esperienza, vi chiedo di segnalarmi qualsiasi errore e/o inesattezza.
Aggiornamento (10/05/2019)
Nell’ambito della sperimentazione dell’aprs in banda UHF, a partire dalla data 10/05/2019, il nodo è definitivamente operativo in banda UHF sulla frequenza 432.500MHZ @1200 baud. La radio Alinco DR119 è stata sostituita da un kenwood TM451e
Enjoy the APRS
IZ0YAY op Luigi