APRX e Soundmodem un matrimonio economico e possibile!

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) .

Figura 1 – Kit Raspberry PI comprende Dispoditivo, alimentatore Dissipatori e SD NOOBS

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) .

Figura 2 – Scheda Audio 5.1 3d USB

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
Figura 3 Interfaccia accoppiamento audio Radio/Sound Stick USB

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

Figura 4 Interfaccia per il comando PTT
Figura 5 Converitore USB RS232

Figura 6 Interfaccia Audio Assemblata

Il nodo completamente assemblato si presenta molto accattivante e pulito, nel mio caso ho usato una radio Alinco DR119T (figura 6)

Figura 6 – Nodo APRS completo

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.

Figura 7 – Schermata iniziale di configurazione soundmodem

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.

Figura 8
Figura 9 – Configurazione Interfaccia Soundmodem
  • 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)

Figura 10 – creazione del canale

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

Figura 11 – caratteristiche della modulazione AFSK


Figura 12 – caratteristiche della de-modulazione AFSK

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.

Figura 13 – Configurazione emulatore TNC

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.

Figura 14 – Schermata di diagnostica del modem

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


Figura 14 – Schermata di diagnostica scope

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”.

Figura 15
Figura 16 – spostandosi con il tasto “TAB” di seleziona il cursore da modificare. Il cursore in rosso è quello selezioanto

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.

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

Figura 17 – Il nodo IZ0YAY-10 con radio operativa in banda UHF

Enjoy the APRS

IZ0YAY op Luigi

Se ti piace, condividi!!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.