Da quando ho comprato il mio piccolo Flex 6300 sono stato subito attratto dalle grosse potenzialità offerte da questa radio ma anche frustrato dalla mancanza di qualsiasi collegamento fisico (tradizionale) verso l’hardware esistente. Mi riferisco a porte seriali, connettore Banda Data, ecc. Tutto ciò è praticamente assente nei nuovi Flex a dimostrazione che, nel bene o nel male, rappresentano un netto cambiamento di tendenza rispetto alle radio esistenti. Di fatto le funzionalità di controllo per porte seriali e band data sono ancora disponibili ma solo attraverso software aggiuntivi:
- un driver di porte seriali virtuali, incluso in SmartSDR,
- DDUTIL un software gratuito che consente di monitorare lo stato del Flex (e di molti altri dispositivi) e di pilotare altri software e/o schede hardware dotate di relè. In entrambi i casi, però, è indispensabile l’uso del pc.
FlexRadio, oltre al software ufficiale, mette a disposizione alcune librerie software che consentono di interagire con la radio senza conoscere i dettagli del collegamento con il pc. Le Flexlib API, questa è la denominazione ufficiale delle librerie, danno la possibilità di controllare la radio utilizzando un linguaggio di programmazione di alto livello della piattaforma .Net, pertanto sono disponibili solo per il mondo Windows. Almeno per ora.
Le librerie di collegamento si basano su protocolli di rete aperti che sono ben documentati sul sito wiki di FlexRadio, pertanto, facendo uso dei protocolli di rete, senza passare per le FlexLib, si riesce ad usare la radio senza il personal computer.
Ovviamente al suo posto è necessario utilizzare dell’hardware in grado di stabilire un collegamento fisico (ethernet) con la radio ed in grado di analizzare il protocollo di rete. Da qui la mia idea di realizzare una libreria software per Arduino Due equipaggiato con Ethernet Shield originale (W5100) in grado di fornire le funzionalità di base realizzare il proprio band decoder, antenna switch o altri dispositivo connessi al Flex 6000.
La libreria è composta da tre livelli (in pratica altre librerie):
- La libreria base, che si occupa del collegamento fisico verso la radio ed implementa i due protocolli più importanti;
- La libreria Band Data, che utilizza la libreria di base per informare l’utente che sono avvenuti dei cambiamenti all’interno della radio. Per ciascun cambiamento di stato, l’utente, attraverso il codice di Arduino, può attivare dispositivi hardware come relè, motori passo passo, display, ecc.
- La libreria CAT-RS232 che implementa i comandi più utili del protocollo seriale Flex (Kenwood) e può essere utilizzata soprattutto per il collegamento ad amplificatori lineari che usano il protocollo Kenwood.
Di seguito proverò ad illustrare il funzionamento delle tre librerie rimandandovi al sito iw7dmh.jmdo.com per ulteriori dettagli.
Libreria di base
Si tratta essenzialmente di un piccolo software che implementa lo SmartSDR Discovery Protocol. Il discovery protocol è un protocollo UDP (porta 4992) e viene utilizzato dai dispositivi FLEX 6000 per segnalare la propria presenza sulla rete. I software, o altri dispositivi che si vogliono collegare ad un Flex 6000, devono necessariamente catturare uno di questi pacchetti UDP e poi da esso estrarre tutte le informazioni necessarie per stabilire un collegamento.
Nella modalità standard la mia libreria cercare di individuare il primo FlexRig disponibile nella rete, ed una volta individuato stabilisce una connessione TCP-IP sempre sulla porta 4992. Questo approccio è corretto se si dispone di un solo Rig Flex (come nel mio caso).
Se in rete ci sono più Flex 6000 è necessario impostare manualmente il numero di serie della radio che si vuole connettere.
Quando la radio è stato individuata, la libreria apre una connessione TCP/IP sulla porta 4992. Ogni aggiornamento sullo stato interno della radio si riflette sugli oggetti logici presenti nella libreria secondo lo schema seguente:
Utilizzando la libreria, è possibile accedere allo stato interno della radio, senza doversi preoccupare del protocollo di rete.
Molto bello, direte, ma a che serve? E’ necessario usare una delle altre due librerie per iniziare a divertirsi.
Libreria Band Data
Arduino DUE ha una quantità enorme di pin che possono essere utilizzati per pilotare relè, motori, servo, e così via. Inoltre, Arduino DUE supporta nativamente i protocolli I2C, SPI, RS232 e questo offre la possibilità di far interagire il Flex con l'hardware esistente come antenne, amplificatori, antenna switch e così via.
La libreria Band Data si basa sulla precedente libreria ed è programmata per generare eventi in risposta ad un qualsiasi cambiamento di stato del Flex: frequenza, banda, ampiezza filtri, ecc. Ovviamente non dovrete preoccuparvi della comunicazione con la radio e non sarete costretti a gestire tutta la tua logica della vostra applicazione nel routine principale loop().
Semplicemente, nella procedura di setup(), si deve registrare una funzione (handler) per ogni evento che è necessario gestire e la libreria farà il resto.
Per usare correttamente questa libreria è necessario familiarizzare con gli oggetti e relativi nomi presenti all’interno di SmartSDR, ma sicuramente i possessori dei nuovi Flex sanno benissimo di che cosa stiamo parlando.
In pratica è possibile gestire i seguenti eventi:
Qualsiasi aggiornamento su Slice (solo # 0/1)
Qualsiasi aggiornamento su Panadapter (solo # 0/1)
Qualsiasi aggiornamento su Waterfall (solo # 0/1)
Qualsiasi aggiornamento su Radio
Qualsiasi aggiornamento su Transmission
Qualsiasi aggiornamento su Interlock
Dopo aver registrato il gestore di evento, la libreria esegue una chiamata ad esso, ogni volta che si verifica quel particolare evento. Nella routine di gestione è possibile attivare/usare qualsiasi hardware che è supportato da Arduino.
Ultimo ma non meno importante, è il fatto che con la libreria di base si ha accesso a tutte le proprietà del Flex, e di fatto è possibile estendere il codice per aggiungere nuovi eventi basati su proprietà più specifiche. L'elenco completo delle proprietà che è possibile utilizzare è riportato di seguito:
Libreria CAT-RS232
La libreria CAT-RS232 si basa sulle due precedenti librerie. Al momento sono implementati i comandi che possono essere utili per la sincronizzazione di dispositivi esterni, per lo più amplificatori e controller di antenne dinamiche.
Purtroppo non possedendo nessuno di tali dispositivi ho eseguito i test con altri software come Omnirig e LOG4om ed il funzionamento sembra corretto.
Di seguito è riportato l'elenco dei comandi implementati:
FA; - Reads Slice receiver A frequency
FB; - Reads Slice receiver B frequency.
IF; - Reads Transceiver Status
FR; - Receive VFO
FT; - Transmit VFO
AI; - Auto Information Mode
ZZFA; - Reads Slice receiver A frequency
ZZFB; - Reads Slice receiver B frequency
ZZIF; - Reads Slice Receiver A DSP filter
Questo per ora è tutto.
Se volete altre informazioni chiedete pure oppure visitate il sito iw7dmh.jimdo.com da cui è possibile scaricare il codice sorgente delle librerie.
Vi lascio anche un video che fa vedere come si usano.
73’ iw7dmh
Enzo
https://youtu.be/kcI3jm1opB0
- un driver di porte seriali virtuali, incluso in SmartSDR,
- DDUTIL un software gratuito che consente di monitorare lo stato del Flex (e di molti altri dispositivi) e di pilotare altri software e/o schede hardware dotate di relè. In entrambi i casi, però, è indispensabile l’uso del pc.
FlexRadio, oltre al software ufficiale, mette a disposizione alcune librerie software che consentono di interagire con la radio senza conoscere i dettagli del collegamento con il pc. Le Flexlib API, questa è la denominazione ufficiale delle librerie, danno la possibilità di controllare la radio utilizzando un linguaggio di programmazione di alto livello della piattaforma .Net, pertanto sono disponibili solo per il mondo Windows. Almeno per ora.
Le librerie di collegamento si basano su protocolli di rete aperti che sono ben documentati sul sito wiki di FlexRadio, pertanto, facendo uso dei protocolli di rete, senza passare per le FlexLib, si riesce ad usare la radio senza il personal computer.
Ovviamente al suo posto è necessario utilizzare dell’hardware in grado di stabilire un collegamento fisico (ethernet) con la radio ed in grado di analizzare il protocollo di rete. Da qui la mia idea di realizzare una libreria software per Arduino Due equipaggiato con Ethernet Shield originale (W5100) in grado di fornire le funzionalità di base realizzare il proprio band decoder, antenna switch o altri dispositivo connessi al Flex 6000.
La libreria è composta da tre livelli (in pratica altre librerie):
- La libreria base, che si occupa del collegamento fisico verso la radio ed implementa i due protocolli più importanti;
- La libreria Band Data, che utilizza la libreria di base per informare l’utente che sono avvenuti dei cambiamenti all’interno della radio. Per ciascun cambiamento di stato, l’utente, attraverso il codice di Arduino, può attivare dispositivi hardware come relè, motori passo passo, display, ecc.
- La libreria CAT-RS232 che implementa i comandi più utili del protocollo seriale Flex (Kenwood) e può essere utilizzata soprattutto per il collegamento ad amplificatori lineari che usano il protocollo Kenwood.
Di seguito proverò ad illustrare il funzionamento delle tre librerie rimandandovi al sito iw7dmh.jmdo.com per ulteriori dettagli.
Libreria di base
Si tratta essenzialmente di un piccolo software che implementa lo SmartSDR Discovery Protocol. Il discovery protocol è un protocollo UDP (porta 4992) e viene utilizzato dai dispositivi FLEX 6000 per segnalare la propria presenza sulla rete. I software, o altri dispositivi che si vogliono collegare ad un Flex 6000, devono necessariamente catturare uno di questi pacchetti UDP e poi da esso estrarre tutte le informazioni necessarie per stabilire un collegamento.
Nella modalità standard la mia libreria cercare di individuare il primo FlexRig disponibile nella rete, ed una volta individuato stabilisce una connessione TCP-IP sempre sulla porta 4992. Questo approccio è corretto se si dispone di un solo Rig Flex (come nel mio caso).
Se in rete ci sono più Flex 6000 è necessario impostare manualmente il numero di serie della radio che si vuole connettere.
Quando la radio è stato individuata, la libreria apre una connessione TCP/IP sulla porta 4992. Ogni aggiornamento sullo stato interno della radio si riflette sugli oggetti logici presenti nella libreria secondo lo schema seguente:
Utilizzando la libreria, è possibile accedere allo stato interno della radio, senza doversi preoccupare del protocollo di rete.
Molto bello, direte, ma a che serve? E’ necessario usare una delle altre due librerie per iniziare a divertirsi.
Libreria Band Data
Arduino DUE ha una quantità enorme di pin che possono essere utilizzati per pilotare relè, motori, servo, e così via. Inoltre, Arduino DUE supporta nativamente i protocolli I2C, SPI, RS232 e questo offre la possibilità di far interagire il Flex con l'hardware esistente come antenne, amplificatori, antenna switch e così via.
La libreria Band Data si basa sulla precedente libreria ed è programmata per generare eventi in risposta ad un qualsiasi cambiamento di stato del Flex: frequenza, banda, ampiezza filtri, ecc. Ovviamente non dovrete preoccuparvi della comunicazione con la radio e non sarete costretti a gestire tutta la tua logica della vostra applicazione nel routine principale loop().
Semplicemente, nella procedura di setup(), si deve registrare una funzione (handler) per ogni evento che è necessario gestire e la libreria farà il resto.
Per usare correttamente questa libreria è necessario familiarizzare con gli oggetti e relativi nomi presenti all’interno di SmartSDR, ma sicuramente i possessori dei nuovi Flex sanno benissimo di che cosa stiamo parlando.
In pratica è possibile gestire i seguenti eventi:
Qualsiasi aggiornamento su Slice (solo # 0/1)
Qualsiasi aggiornamento su Panadapter (solo # 0/1)
Qualsiasi aggiornamento su Waterfall (solo # 0/1)
Qualsiasi aggiornamento su Radio
Qualsiasi aggiornamento su Transmission
Qualsiasi aggiornamento su Interlock
Dopo aver registrato il gestore di evento, la libreria esegue una chiamata ad esso, ogni volta che si verifica quel particolare evento. Nella routine di gestione è possibile attivare/usare qualsiasi hardware che è supportato da Arduino.
Ultimo ma non meno importante, è il fatto che con la libreria di base si ha accesso a tutte le proprietà del Flex, e di fatto è possibile estendere il codice per aggiungere nuovi eventi basati su proprietà più specifiche. L'elenco completo delle proprietà che è possibile utilizzare è riportato di seguito:
Libreria CAT-RS232
La libreria CAT-RS232 si basa sulle due precedenti librerie. Al momento sono implementati i comandi che possono essere utili per la sincronizzazione di dispositivi esterni, per lo più amplificatori e controller di antenne dinamiche.
Purtroppo non possedendo nessuno di tali dispositivi ho eseguito i test con altri software come Omnirig e LOG4om ed il funzionamento sembra corretto.
Di seguito è riportato l'elenco dei comandi implementati:
FA; - Reads Slice receiver A frequency
FB; - Reads Slice receiver B frequency.
IF; - Reads Transceiver Status
FR; - Receive VFO
FT; - Transmit VFO
AI; - Auto Information Mode
ZZFA; - Reads Slice receiver A frequency
ZZFB; - Reads Slice receiver B frequency
ZZIF; - Reads Slice Receiver A DSP filter
Questo per ora è tutto.
Se volete altre informazioni chiedete pure oppure visitate il sito iw7dmh.jimdo.com da cui è possibile scaricare il codice sorgente delle librerie.
Vi lascio anche un video che fa vedere come si usano.
73’ iw7dmh
Enzo
https://youtu.be/kcI3jm1opB0
Commenta