Specialmente per le operazioni in portatile col 705 mi serviva un piccolo keypad che mi permettesse anche di accordare il tuner esterno (non Icom). Ho così pensato di raggruppare le due funzionalità in un unico piccolo contenitore.
Expecially for field operation with my 705 I was looking for a little keypad to recall memories and equipped with a “Tune” button to drive my external ATU (not Icom) for tuning.
Nel mio caso bastavano 4 memorie richiamabili ed usando solo la CW dovevo conservare la possibilità di utilizzare il paddle (il jack Key del 705 viene impegnato dal collegamento col keypad). Lo schema che ho utilizzato per la funzione Keypad è quello presente sul manuale del 705 (limitandomi ai soli pulsanti S1-S4).
In my case 4 memories are enough, but as I work CW I needed a socket to connect the paddle to (keypad must be connected to 705 KEY jack so no other way to plug the paddle in). The keypad diagram I used is the one you can find in the 705 maual (limited to S1-S4 switch as above stated).
Per quanto riguarda il pulsante che permette di mandare una portante con tono fissa necessaria all’accordatore esterno per trovare l’accordo ho trovato questa soluzione già pronta che funziona perfettamente (grazie a BjornSM7IUN) https://sm7iun.se/station/ic705/
“Tune” button stage that cares of sending in Tx a continuous note needed to drive the external ATU for tuning phase comes from a Ham project (many thanks toBjornSM7IUN) I found on the internet at this URL https://sm7iun.se/station/ic705/
Ecco come si presenta la mia realizzazione / Here is my building
Per il corretto funzionamento del keypad occorre seguire quanto indicato nel manuale del 705 (e riportato sul mio schema), mentre per il pulsante Tune occorre cambiare il settaggio del tuner nel menu del 705 come di seguito indicato
In order to have the keypad working please follow set instructios you’ll find in the 705 manual (I recalled them in the diagram). To get the “Tune” button working you need to touch 705 setting as shown here below
a questo punto col 705 spento basta collegare il jack Key alla presa KEY ed il jack Tuner alla presa TUNER del 705
now with the 705 switched Off simply plug Key jack into the 705 KEY socket and Tuner plug into the 705 TUNER socket
ed il gioco è fatto / the game has done
Spero questa soluzione possa essere utile ad altri / I hope this solution could help
Added LAN connection to Acom 600s – 28 February 2024 – Flow stays to v. 2.1
Avendo centralizzato Node-Red ed MQTT su un “server” Linux (Debian 12) posizionato lontano dallo shack non era pensabile collegare la rs232 dell’Acom con un cavo seriale lungo più di 20 metri. Ho risolto inserendo un convertitore Seriale –> Ethernet ed ho conseguentemente aggiornato il flow. Qui in basso il link al convertitore che ho usato
As I centralized Node-Red and MQTT on a Linux (Debian 12) “server” located in a room outside the shack I couldn’t connect anymore the Acom rs232 port with a serial cable (its length would have been more than 20 meters). I solved this issue using an rs232 –> Ethernet adapter, the flow has been touched consequently. Here below you’ll find the adapter I used
Questa modifica rigarda SOLO l’interfacciamento con l’Acom quindi chi intende collegare l’Acom direttamente con il cavo seriale deve usare il flow che trovate più sotto nell’articolo, mentre chi preferisce il collegamento LAN dovrà usare il flow indicato qui sopra.
This revision is relevant ONLY to Acom interfacing so if you are going to reach the Acom using a serial cable you will use the flow downloadable more below in this article. If you prefer to use the LAN to reach the Acom you will use the flow here above added.
New version issued on 10th January 2024 – Flow updated to v. 2.1
Ho aggiornato la precedente versione della console web per l’ Acom 600s aggiungendo la possibilità di prendere l’informazione di banda da FLRIG oltre che da MacLoggerdx.
I just updated “Acom 600s web console” previous version and now band info can be retrieved from FLRIG too. So now it works with FLRIG or MacLoggerDX.
Aggiunto/Added “Did QRG change ?” node – Ora la frequenza viene inviata all’Acom solo se è cambiata / Now QRG is sent to the Acom only if it changed
Aumentato a 20000 il Timeout per la seriale in uscita verso l’Acom / Serial out to Acom Timeout increased to 20000
La nuova versione 2.1 / The new 2.1 version
Resta valido quanto descritto nel precedente articolo (https://www.ik1bxn.it/wp/2023/04/20/acom-600s-web-console-and-macloggerdx-integration/) a meno del “flow” aggiornato (scaricabile da questo articolo), della console e delle informazioni di configurazione per il collegamento con FLRIG. In questo articolo mi limiterò a descrivere solo le differenze rispetto alla versione precedente e le modalità per implementare questa nuova versione
Previous version article contents (https://www.ik1bxn.it/wp/2023/04/20/acom-600s-web-console-and-macloggerdx-integration/) are still valid except for the “flow” new version (you can download from this article) for console and for FLRIG connector configuration.In this article I will describe only differences respect previous version and how to setup this new version
Con l’occasione ho ridisegnato la console per ridurre lo spazio occupato a video. Ho eliminato i “LED” di segnalazione sostituendoli con la colorazione in rosso del pulsante della banda attiva e dei pulsanti di STBY (verde quando selezionato) e Operate (rosso quando selezionato).
With the opportunity I redrawed the console layout in order to reduce its dimensions on the screen. In particular I removed “LEDs” and now the current band button becomes RED backgrounded, STBY button will be in GREEN when in STBY and Operate button will become RED when in Operate
La nuova console / New console
Ecco un breve video che mostra l’operatività / Here’s a short video that shows new console operativity
Le novità / What’s new
Il selettore a 3 posizioni permette di scegliere se sincronizzare automaticamente la banda attiva con il gestore del CAT (FLRIG o MacLoggerDX) oppure no (OFF). UNA sola scelta fra le 3 è possibile. Posizionato su OFF sarà possibile comandare il cambio banda dell’ Acom premendo il corrispondente pulsante di banda della console. Posizionandolo su FLRIG o MLDX (MacLoggerDX) l’Acom cambierà banda automaticamente seguendo la banda corrente in uso su FLRIG o MacLoggerDX.
By clcking the 3 position “switch” labeled “Synch” you can choose whether retrieve current active band fro your CAT managing app (FLRIG or MacLoggerDX) or no synch. Only 1 of the 3 possibilities can be selected at a time. When in OFF position you have the possibility to change band by pressing a console band button. When in FLRIG or MLDX (MacLoggerDX) your Acom will follow band currently selected in FLRIG or MLDX.
Ovviamente quando si è sincronizzati con FLRIG o MLDX la pressione di un pulsante di banda sulla console diventa inefficace perchè l’informazione di banda in arrivo dalla sincronizzazione sovrascriverà immediatamente il pulsante che abbiamo premuto.
Obviously when the console is synchronized with FLRIG or MLDX any band button click will do nothing because the band info coming from synchronization will override any band button choice
Come evidenziato nel precedente articolo la console mostra la banda corrente (ora evidenziandone in rosso il relativo pulsante) ricevendo questa informazione dall’Acom e non a seguito della pressione di un pulsante (il che potrebbe mostrare false informazioni). In altre parole quando un pulsante di banda si illumina significa che è stato l’Acom a dire alla console “sono posizionato su questa banda”.
As underlined in previous article the console shows current band (now relevant button with red background) by receiving band info from the Acom and not by trusting a console button press (this would generate false info). Into other words when a band button becomes red backgrounded it means that the Acom told the console “I am ready on this band”
Stesso concetto vale per i pulsanti STBY/Operate.
Above considerations for band buttons are valid for STBY/Operate buttons too
Per questa ragione i pulsanti non cambiano colore immediatamente appena c’è stato un cambio banda o la pressione di STBY o Operate
For what above described the buttons will not change their background color as soon as a band change or STBY/Operate change is performed, they’ll take a while to actualize their look
Il Flow aggiornato / Updated flow
Occorre aggiungere al nostro Node Red server nr 2 nuovi nodi (se necessita aiuto vedere articolo “PowerPole distributor” paragrafo “Installazione server / Server setup” al punto “Manage palette”):
Nr 2 new nodes must be added to our Node Server (if you need help see “PowerPole distributor“paragraph “Installazione server / Server setup” segment “Manage palette”):
Il nodo “Multistate switch” è il selettore di sincronismo a 3 posizioni
“Multistate switch” node cares of create Synch 3 positions switch
mentre il secondo nodo si occupa della comunicazione XMLRPC con FLRIG
second node needed named “xmlrpc” cares of FLRIG XMLRPC communication
qui premendo il pulsanto a destra del campo Client dovremo indicare l’indirizzo IP del computer sul quale gira FLRIG e la porta di comunicazione XMLRPC
in this window by clicking the button on the right of Client field we have to indicate the IP address for the computer hosting FLRIG and the FLRIG Xmlrpc port (default 12345)
Fatto questo ci resta solo da scaricare il flow aggiornato
ed importarlo nel nostro Node Red server (se necessita aiuto vedere articolo “PowerPole distributor” paragrafo “Installazione server / Server setup”). Eseguito il Deploy la nuova versione della console sarà disponibile.
and import it into our Node Red server (if you need help see “PowerPole distributor“paragraph “Installazione server / Server setup”). Now Deploy and new console will be available
Un grazie a Lele IZ1UKX per la parte di comunicazione con FLRIG / Thanks to Lele IZ1UKX for FLRIG communication block
Note / Remarks
La console è una pagina web generata dal computer dove gira Node Red server. Sul Mac usando Automator è possibile ritagliare solo la parte della pagina che interessa e farla diventare un’applicazione. Il risultato è questo. Non so come si faccia con Windows o linux ad ottenere questo risultato (ma ci sarà sicuramente un modo)
The console is a web page generated by the computer hosting Node Red server. On the Mac by using Automator is possible to select console area and create an app that opens the console web page with console dimensions. I don’t know how to do this under Windows or Linux, but Im pretty sure there’s a way
Molto probabilmente questa console funziona con altri lineari Acom, ma posseggo solo il 600s quindi non ho potuto fare prove
Most likely this console will wotk with other Acom PA too, but as I own only the 600s I can’t test this
….. that’s all folks !
spero il mio progetto vi sia piaciuto e possa essere utile per la vostra attività. Questa è la versione iniziale, in futuro penso di aggiugere nuove funzionalità Buon divertimento !!!!!
I hope you liked my project and I hope you’ll find it useful for your activity. This one is the initial release, for future I think to add additional features Have fun !!!!!
Com’è noto l’IC 7300 prevede la possibilità di utilizzare un tastierino esterno dotato di 4 pulsanti per mezzo dei quali è possibile richiamare altrettanti messaggi memorizzati. In realtà i messaggi memorizzabili sono 8 ma attraverso il tastierino si possono richiamare solo i primi 4 (strano ma pare essere proprio così).
As known with the IC 7300 and IC 7610 it is possible to use an external keypad to recall the 8 messages available. Actually with the 7300 only the first 4 of them are recallable using an external keypad connected to the Mic connector (odd but is that).
L’impiego di questo tastierino (tipicamente denominato “keypad”) fa molto comodo per trasmettere i contenuti ripetitivi che usiamo normalmente, uno per tutti il CQ. Naturalmente i messaggi si possono richiamare anche direttamente dal display della radio.
Thanks to an external keypad to recall typical messages (for example CQ CQ de IK1BXN Pse k) will become really confortable. It is possible to recall them from the touch screen too of course.
Sul manuale dell’ IC 7300 e del l’ IC 7610 è ben descritto come memorizzare i messaggi ed anche come costruire un Keypad (non essendo fornito a corredo della radio). La realizzazione di questo Keypad non presenta difficoltà elettroniche nè criticità, direi che è veramente alla portata di tutti.
In the 7300 and 7610 documentation is well dscribed how to store messages and how to build an external keypad (as it’s not supplied with the rig). To build the keypad is really easy and no critic.
In questa pagina presento la mia realizzazione, una delle tante possibili. Ho impiegato materiali molto economici e reperibili con facilità come un tastierino con 4 tasti a pressione (ampiamente usato nel mondo di Arduino), una scatoletta in plastica e ritagli di basetta millefori.
In this page I’ll describe my built, one of the several possible. I used cheap and easy to find components (buttons strip I used is common in Arduino projects).
Anche la costruzione è estremamente semplice / Even build is absolutely easy
Ora lo schema elettrico, sul quale ho riportato la piedinatura del tastierino che ho impiegato e le voci di menu da modificare sulla radio per attivare la funzionalità del keypad
Now let’s have alook to the diagram on which you’ll find strip button pinout I used and menu to setup on the rig in order to activate the keypad.
Questo è lo schema per il IC 7300 / Here is the diagram valid for IC 7300
Aggiornamento 28 Febbraio 2024 / 2024 February 28th update
Inserito connessione LAN all’Acom / Added LAN connection to the Acom
Aggiornamento 4 Gennaio 2024 / 2024 January 4th update
Inserita nuova Acom 600s web console / Added new Acom 600s web console
Nel capitolo “Autocostruzioni” di questo sito sono presenti soluzioni che ho pensato per “integrare” i componenti della mia stazione HF con la finalità di rispondere alle esigenze del mio modo di operare in radio.
Under “Autocostruzioni / Homebrew” menu you’ll find some solutions I thought to “integrate” my HF shack gears with the goal to match my needs and my operation habit.
I componenti principali della stazione/ Main shack components
Antenna: ho una sola antenna multibanda HF sul tetto ed una filare con accordatore SGC sul terrazzo
Antenna: I have one only multiband HF antenna on the roof and a wire on the balcony connected to SGC autotuner
Radio: normalmente uso 2 radio alternativamente
Radio: usually I run 2 rigs alternately
Amplificatore lineare: ne posseggo uno (Acom 600s)
PA: I own one PA (Acom 600s)
Accordatore d’antenna: uno automatico (Palstar HF-Auto)
Antenna tuner: 1 automatic (Palstar HF-Auto)
Alimentatore: uno per tutta la stazione
Power supply: one for all gears
Computer: Apple iMac 24″
Per chiarire le ragioni che mi hanno spinto a pensare e realizzare certe soluzioni, diamo un’occhiata d’insieme allo scenario complessivo oggi in uso:
In order to clarify the reasons that drove me to design such solutions let’s take a look at whole scenario in use now here:
usare un solo alimentatore dotato delle opportune protezioni (sovracorrente, corto circuito e sovratensione di uscita) capace di alimentare una sola radio da 100 W in trasmissione (ne uso sempre solo una alla volta) e gli accessori di stazione
distribuzione dell’alimentazione selettiva in modo da tenere sotto tensione solo le apparecchiature che sono in uso (ricordo che nei moderni RTX a stato solido anche da spenti se alimentati la tensione raggiunge lo stadio finale per tutto il tempo in cui è presente)
ridurre al minimo le manovre manuali in caso di cambio apparato in uso (CAT, comando Key e info di banda per l’amplificatore) , antenna mentre per i tasti preferisco averne un paio disponibili sul tavolo. Non facendo fonia in HF non mi sono preoccupato del microfono, per questo comunque c’è la mia soluzione di “Switch microfonico” qui sul sito e che uso in Vhf/Uhf)
usare un solo computer per tutte le attività sul quale girano un solo gestore del CAT (al quale i CAT di tutte le radio convergono) un solo logger un solo programma per i contest. Con il 7610 uso WinKeyer (contenuto nella DXP) in quanto Skookumlogger (applicazione Mac per i contest) con Winkeyer è perfetto
Targets:
touse one only power supply equipped with proper protections (overcurrent, short circuit and most important for me OVP Over Voltage Protection) dimensioned to feed one 100 W rig (i use one only one RTX a time) and station accessories
tohaveselective power supply distribution in order to feed only currently active gears (remember that modern solid state RTX keep final stage fed even if main switch is Off until power supply is disconnected)
tolimit as much as possible manual actions needed when I change active rig (CAT, Key and band info to PA, antenna. For CW keys I prefer having more than one key on my desk. As I don’t operate voice mode I didn’t care about microphone, for that you can see my solution I use with Vhf/Uhf rigs here in this site named “Switch microfonico v2” under “Autocostruizioni / Homebrew” menu)
to use one only computer for all activities, running unique CAT manager (all rigs are over there defined/configured), unique logger and unique contest application. With the 7610 I use WinKeyer (built inside the DXP) bacause Skookumlogger is perfect with WinKeyer
Operatività/ Operation
Per passare da una radio all’altra devo compiere le seguenti operazioni:
To switch from a rig to another I’ve to follow these few steps:
commutare l’antenna agendo sul commutatore a matrice Elad. Questa è l’unica manovra manuale perchè purtroppo l’Elad non è comandabile da remoto
switch antenna on Elad matrix switch. This is the only one manual action because the Elad has no remote interface
alimentare l’altra radio comandando dalla sua pagina web il distributore powerpole
switch power supply line to the radio I’m going to use by selecting it on my poerpole distributor web interface
30/04/2023 – aggiornato flow alla versione 1_1 / Flow updated to version 1_1(fixed deploy warning)
Questo progetto è nato dalla mia esigenza di comandare il cambio banda del mio Acom 600s da apparati diversi (evitando di dover commutare cavi/configurazioni) e di disporre di una “console” sul computer dalla quale poter inviare i comandi che tipicamente uso e conoscere lo stato del lineare senza dover spostare lo sguardo verso il display dell’Acom.
This project was designed to answer a need I had: to drive the only one PA I own using more than one rig, without switching between cables and configurations. In addition I thought it was a good idea to have a “screen console” (a sort of Local Control Box) useful for PA commmand sending and for PA status info retrieving.
Un breve video per far capire di cosa stiamo parlando
Here below a short video just to give an idea of what I’m going to show you
La dashboard
E’ stata pensata con sviluppo stretto e verticale in modo da essere posizionata a lato nello schermo.
It has been designe in a vertical thin shape to make easy to place it at a screen side
Con Automator l’ho trasformata in applicazione così ho potuto bloccarne le dimensioni e farla rimanere sempre in foreground sullo schermo.
Using Mac “Automator” I converted it into an application so I could fix its size and grant it foreground attribute.
Sono presenti i comandi che tipicamente mi serve avere a portata di mano (STBY/Operate), i pulsanti di cambio banda (nel caso non sia collegata a MacLoggerDX) , il pulsante di Shutdown del lineare ed il pulsante per inizializzare l’invio dei dati di stato da parte dell’Acom. Inoltre viene mostrata la temperatura e lo stato corrente (“STBY” in verde o “Operate” in giallo o “ON AIR” in rosso) e la banda su cui è posizionato l’Acom.
On the dashboard you’ll find commands I’m used to touch during operations, so what I’d like to have under my fingers like STBY/operate, manual band change (in case not connected to MacLoggerDX), shutdown and button to initialize PA info communication. In addition to commands button the dashboard accomodates info incoming from the PA such as current temperature and operating status (“STBY” in green or “Operate” in yellow or “ON AIR” in red) and the PA band currently selected.
Al fine di avere le indicazioni mostrate nella dashboard reali ed attendibili esse NON SONO generate dal programma ma arrivano dall’Acom e sono quindi ATTUALIZZATE (infatti come potete ad esempio notare l’aggiornamento del led blu a fianco della banda corrente non è istantaneo perchè la dashboard aspetta info aggiornate dall’Acom).
Obviously the info show in the dashboard must be updated and reliable so info are NOT created by the application but they come from the PA. In this way are so sure they all are UPDATED (as you can see for example the blue led that indicates which band is selected is not immediate as soon as the rig changes it just becaus is the PA that says back to the dashboard which band is on)
Il collegamento con MacLoggerDX/ MacLoggerDX sync
Usando solo Mac il mio logger è MacLoggerDX (che di seguito indicherò con MLDX) il quale permette di configurare il collegamento CAT con più radio e quando si cambia radio basta semplicemente selezionarla dal menu ed è subito connessa via CAT (o via rete come nel caso del Flex) e disponibile. In aggiunta MLDX invia sulla rete (con cadenza temporale fissa, ma molto frequente) degli stream UDP sulla porta 9932 contenenti numerosi dati (spot selezionato dal pannello cluster, report della radio, risultati di lookup su callbook).
As I am Mac user, my logger is MacLoggerDX (since now I’ll refer it writing MLDX) than handles CAT rig with many radios, so when you decide to use another rig simply you can select it from the configured rigs dropdown list. As soon as you select another rig it is immediately CAT connected (or net connected in case of Flex) and available. Another important MLDX feature is that it sends over the network (with a very fast timing) some streams on UDP port 9932 containing several info (spot selected, radio report, callbook lookup query result).
…. non solo MLDX/ not only MLDX
Sicuramente altri logger inviano sulla rete (probabilmente in formato UDP) le informazioni relative alla radio, quindi volendo questo progetto si può adattare ad altri programmi ovviamente analizzando il contenuto degli stream UDP (o altro) prodotti dal proprio logger e correggendo di conseguenza il flow di Node-Red affinchè recuperi correttamente la banda corrente sulla radio.
I’m pretty sure that other loggers spread radio info over the network (probably using UDP too) so I think this project may be adapted to different loggers, Of course this project must be touched in order to be adapted to their messaging syntax consequentially to retrieve band info.
…. non solo con un logger / not only in junction with a logger
Sulla dashboard è previsto un’interruttore chiamato “MLDX Sync” che permette di ricevere le informazioni da MLDX. Lasciandolo in posizione Off la dashboard funziona come comando remoto per l’Acom (selezione STBY/Operate, monitor temperatura, shutdown e cambio banda mediante i pulsanti di banda e relativa segnalazione mediante led blu))
On the dashboard a switch named “MLDX Sync” allows to enable/disable info incoming from MLDX using. Leaving it in Off position the dashboard acts as a PA “remote control box” so you can manually send commands (STBY/Operate, band change, shutdown) and get status info (status, temperature, selected band)
…. non solo Acom 600s/ not only Acom 600s
A quanto ho avuto modo di leggere altri modelli Acom usano lo stesso protocollo di comunicazione via rs232 (https://static.dxengineering.com/global/images/technicalarticles/aom-600s_it.pdf). In particolare il 700s, il 1200 ed il 2000 dovrebbero funzionare senza sorprese, io ho però potuto provare solo col 600s.
As far as I red other Acom PA models use same serial communication protocol (https://static.dxengineering.com/global/images/technicalarticles/aom-600s_it.pdf). In particular 700s, 1200 and 2000 models should work as well. I could test this project only with my 600s.
Il collegamento con l’Acom 600s / Acom 600s connection
Si utilizza la porta DB9 marcata RS-232 presente sul pannello posteriore dell’Acom (NON CAT/AUX) e con un cavo la si collega o ad un’adattatore 232-Usb o alla porta seriale del computer se disponibile. La velocità di comunicazione è FISSA a 9600 baud.
One end of a serial cable wired as shown here below must be connected to Acom RS-232 DB9 connector located on its rear panel (NOT CAT/AUX connector). the other cable end will be connected to the computer via 232-USB adapter or directly to its rs232 port if available. Communication speed is FIXED at 9600 baud
Per sviluppare questo progetto ho usato Node-Red, ambiente che ritengo molto flessibile, intuitivo e capace di produrre “dashboard” di grande qualità grafica con pochisssimo sforzo e praticamente senza scrivere una sola riga di codice. Altro grande vantaggio di Node-Red è l’essere multipiattaforma (Mac, Linux e Windows) e sia per lo sviluppo che per usare la dashboard creata con Node-Red si utilizza con un qualsiasi browser (quindi fruibile anche via internet dall’esterno previa opportuna configurazione del proprio router).
To develop this project I used Node-Red because I think it’s very flexible, intuitive and able to produce very nice dashboards with limited efforts and almost without coding. Another benefit coming from Node-Red is that it’s multi-platform (Mac Linux and Windows) and for development and dashboard using only a browser is needed (so it can be used via Internet from outside too, of course after a proper router configuration).
Per implementare sul proprio computer questo progetto occorre:
installare Node-Red sul computer (Windows & Linux: https://nodered.org/docs/getting-started/local Mac: https://www.maffucci.it/2020/03/21/installare-node-js-e-node-red-su-macosx/)
è opportuno che Node-Red si avvii automaticamente al reboot del computer. A seconda del sistema operativo in uso le indicazioni per attivarlo al reboot sono diverse, qui (ma anche in molti altri siti) si trovano indicazioni al riguardo: https://nodered.org/docs/faq/starting-node-red-on-boot
una volta installato e verificato che Node-Red sia attivo al reboot (per farlo aprire col browser l’indirizzo 127.0.0.1:1880/ ) , importare il file .json di questo progetto (vedi più in basso per il download). In Node-Red gli elaborati si chiamano “Flow”. Terminata l’importazione in alto nella finestra di Node Red apparirà il flow chiamato “Acom 600s console”. La procedura di importazione è stata descritta dettagliatamente in questo mio precedente articolo: https://www.ik1bxn.it/wp/2022/11/29/wi-fi-powerpole-distributor/ al paragrafo “Installazione server”
Premere il pulsante”Deploy” (in alto a destra) e probabilmente verranno segnalati nodi mancanti (all’installazione Node-Red carica i “nodi” di default), che si possono aggiungere con facilità. In Internet o in questo articolo al paragrafo “Installazione server” si trovano informazioni più dettagliate https://www.ik1bxn.it/wp/2022/11/29/wi-fi-powerpole-distributor/
adattare i nodi della connessione seriale alla propria realtà: si deve aggiornare il nome della porta seriale alla quale è collegata la rs232 dell’Acom come dettagliatamente illustrato più avanti.
To setup this project on your computer the steps are:
install Node-red (for Windows & Linux see https://nodered.org/docs/getting-started/local for Mac see this italian page or find an english one: https://www.maffucci.it/2020/03/21/installare-node-js-e-node-red-su-macosx/)
it’s confortable to have Node-Red started after the boot. Here you’ll find instructions for supported OS https://nodered.org/docs/faq/starting-node-red-on-boot
once Node-Red has been installed and checked it’s running after reboot (simply using your browser go to this address: 127.0.0.1:1880) you’ve to import this project into your Node-Red workspace. Stated that Node-Red documents are called “flows” you’ll have to download (here below there’s download button) this project flow and import it into your Node-Red. If you need help about import you’ll find help in Internet or reading this my previous article https://www.ik1bxn.it/wp/2022/11/29/wi-fi-powerpole-distributor/ under “Server setup” paragraph. When project import phase is completed on the top Node-Red screen line the flow named “Acom 600s console” will appear
press now “Deploy” (located at top right corner) and probably you’ll be warned about some some missing nodes (at first installation Node-Red installs basic nodes set) you easily add. In internet or reading this my previous article https://www.ik1bxn.it/wp/2022/11/29/wi-fi-powerpole-distributor/ under “Server setup” paragraph you’ll find help to install missing nodes
now you have to adapt my flow to your running computer: you have to update in the flow the serial port name by selecting your computer serial port name that’s connected to your Acom
Dal momento che una porta seriale non è “facilmente” utilizzabile via rete, l’Acom DEVE essere collegato ad una porta seriale (Usb o rs232) del computer sul quale è stato installato Node-Red e caricato il flow di questo progetto.
As a serial port is not easibly reachable via network, the Acom MUST be connected to a serial port of the computer that runs Node-Red and this project flow
Per accedere a Node-Red col browser basta andare a questo indirizzo: 127.0.0.1:1880/ se siamo sul computer sul quale è installato Node-Red. Se si usa un altro computer aprire XX.XX.XX.XX:1880/ dove al posto di XX.XX.XX.XX va indicato l’indirizzo IP del computer sul quale è installato Node-Red
To access Node-Red from the computer hosting Node-Red with the browser open this address 127.0.0.1:1880/ . If you are using another netwotk computer with the browser open the address XX.XX.XX.XX:1880/ whwre XX.XX.XX.XX is the computer hosting Node-Red IP address
La dashboard sarà fruibile da qualsiasi computer della rete (o via Internet previa opportuna configurazione del proprio router) andando col browser all’indirizzo 127.0.0.1:1880/ui/ o XX.XX.XX.XX:1880/ui/ come indicato poco sopra.
To access the dashboard using browser open address 127.0.0.1:1880/ui/ or XX.XX.XX.XX:1880/ui/ as here above stated
Qui per scaricare il flow del progetto / here to download this project flow:
I “mattoni” principali di questo progetto sono: 1) il nodo “Serial in” che riceve i messaggi in arrivo dall’Acom – 2) il nodo “Serial out” che invia i messaggi all’Acom – 3) il nodo “Udp in” (indicato sul flow col nome “MLDX Udp listener”) che riceve gli stream UDP in arrivo da MLDX
Main “bricks”are: 1) “Serial in” node that receive Acom incoming messages – 2) “Serial out” node that sends messages to the Acom – 3) “Udp in” node (in the flow named “MLDX Udp listener”) that receives messages incoming from MLDX
Come anticipato i nodi seriali che colloquiano con l’Acom andranno adattati alla propria realtà, ovvero andrà indicato il nome della porta seriale del proprio computer a cui è stata collegato l’Acom. Per farlo basterà fare doppio-click su un nodo seriale e si aprirà questa finestra:
As above stated the serial nodes that grant Acom communications must be adapted to your computer, I mean you must change port name indicating your computer port name that’s connected to your Acom. To do this open serial node propertied by double-clicking the node and this window will appear
dove aprendo il menu a tendina indicato dalla freccia rossa sarà possibile scegliere la porta seriale che corrisponde al collegamento con l’Acom. Volendo verificare altri parametri basterà cliccare il pulsante indicato dalla freccia rossa trattegggiata. L’altro nodo seriale dovrebbe allinearsi sulla stessa porta. Il nodo “Udp listener” invece non necessita di modifiche (a meno che non si abbia cambiato il nr della porta UDP in MLDX).
by opening dropdown list (red arrow) you can choose serial port connected to the Acom. More info are available by clicking the button indicated by dotted arrow. “Serial out” node should follow the modification. “Udp listener” don’t need to be touched (except if you modified UDP port in MLDX)
A questo punto il flow ascolta le informazioni in arrivo dall’Acom e da MLDX ed è pronto per inviare comandi all’Acom.
Now your flow is listening info incoming from the Acom and MLDX and it’s ready to send commands to the PA.
Acquisizione dei dati in arrivo dall’Acom/ Data from Acom acquisition
L’estrapolazione di quanto serve ai nostri fini dai messaggi che l’Acom invia con cadenza fissa o su evento (cambio banda ad esempio) viene fatta da questo gruppo di nodi (non ho scritto io questa parte e ringrazio George Jones K7GRJ per averla condivisa sul gruppo nodered-hamradio@groups.io)
Below shown nodes cares of retrieving data we need from the incoming info set that Acom sends trought its serial port with fixed cadence or on event (for example band change). NOTE: it’s not my development, this function was written by George Jones K7GRJ and he kindly shared it on nodered-hamradio@groups.io. Thank you so much George !!!
il cui cuore è il nodo “Function” indicato col nome “get message # then data” dove viene trattato il set di dati in arrivo e trattato quale byte di quale “array” in arrivo dall’Acom deve essere estrapolato per ottenere l’informazione desiderata (ad esempio la banda corrente). Il dato recuperato viene caricato in una variabile globale e reso disponibile per i nodi che avranno il compito di visualizzane il contenuto sulla dashboard (led acceso o barra e così via). Per dare un’idea di cosa fa il nodo funzione vediamolo un po più da vicino in maniera molto sintetica (prendendo come esempio la lettura della temperatura):
“Function” node (called “get message # then data”) treats incoming data from the PA and by pointing the correct data array and bytes inside it retrieves data we need (for example current band) for this project. Once data we need has been retrieved by the function, it loads a global variable so become available for other nodes in the flow. Let’s try to have a closer look to this function, for example the job it does to get current PA temperature:
Nel ciclo “switch(fromAcom)” il primo “case 47” si occupa fra le altre attività di recuperare la temperatura dell’Acom. Leggendo la documentazione del protocollo Acom (https://static.dxengineering.com/global/images/technicalarticles/aom-600s_it.pdf) vediamo che la misura di temperatura si trova nell’array 0x2F (esadecimale che in decimale diventa 47) ai byte 16 e 17
In the cycle “switch(fromAcom)” the statement “case 47” looks for PA temperature. From the Acom protocol documentation (https://static.dxengineering.com/global/images/technicalarticles/aom-600s_it.pdf) we know that temperature measurement is reported in 0x2F array (0x2F hex means 47 decimal) at bytes 16 and 17
il dato numerico è contenuto in 2 bytes ed è espresso in °K . Per ottenere il valore in °C che porteremo sulla dashboard il nodo funzione farà i seguenti passaggi:
PA current temperature is reported using 2 bytes and expressed in °K. In order to get Celsius degrees to populate dashboard gauge the node will do following steps:
ovvero estrae dall’array 0x2F i valori dei 2 byte (16 e 17) e li carica in 2 variabili distinte (temp_lowbyte e temp_highbyte). Converte i 2 dati in stringa e con l’istruzione “concat” ottiene il valore numerico della temperatura espresso dai 2 byte insieme (temphex). Questo valore però è in formato esadecimale quindi lo trasforma in decimale (parseInt) e sottrae 273 per convertirlo da °K in °C ed infine lo carica nella variabile tempC. Per renderlo visibile dagli altri nodi del flow crea una variabile “globale” chiamata “amp_tempC” caricata col valore della variabile tempC. A questo punto la misura della temperatura (mantenuta aggiornata perchè Acom ogni 10 mS invia l’array aggiornato) è a disposizione del “gauge” a barra che la mostra sulla dashboard.
it means that the node extracts from array 0x2F byes 16 and 17 their values and loads them into 2 variables (temp_lowbyte and temp_highbyte). Next step it converts both into strings and by means “concat” instruction it obtains the whole value in hex format (temphex). This value must be converted into decimal format (parseInt) and by subtracting 273 we finally have PA current temperature in °C stored into tempC variable. To let the value available for the other flow objects (nodes, gauge) temperature measurement loads a global variable named “amp_tempC”. Now PA temperature (updated each 10 mS) can feed dashboard temperatura gauge.
Procedimento simile per ottenere lo stato (STBY/Operate) ed la banda corrente.
Similar operation to get PA Status and current band selected
Invio dei comandi all’Acom/ Commands to Acom sending
Al nodo “Serial out” vengono inviati comandi strutturati seguendo le indicazioni contenute nella documentazione del protocollo Acom sopra citato. Ogni volta che un pulsante viene premuto (o arriva un cambio banda richiesto da MLDX) un messaggio specifico contenente il comando viene inviato. Prendiamo ad esempio l’invio del comando “Operate”.
The “Serial out” node sends to the Acom commands structured as per protocol documentation above mentioned. Any time a button is pressed (or MLDX asks for a band change) a specific message is sent to the PA. Let’s analyze what happens taking as example the “Operate” command.
Premendo il pulsante “Operate” della dashboard viene attivato il nodo trigger chiamato “Send operate” il quale invierà il dato indicato con la freccia all’Acom attraverso il collegamento seriale
By pressing “Operate” dashboard button the “trigger” node named “Send operate” is invoked and it will send to the PA the red arrow indicated data.
vediamo cosa significa quel gruppo di numeri. Sempre facendo riferimento alla documentazione del protocollo Acom:
Let’s see what that number sequence means. Referring to protocol documentation:
per prima cosa osserviamo che Acom ha 2 tipi di “Operate” uno in Rx e l’altro in Tx. A noi interessava Operate in Rx perchè il passaggio in Tx avviene appena viene premuto il PTT della radio (sulla dashboard sono mostrati i due stati di Operate). Col messaggio in giallo “Operate” significa che l’Acom aspetta il PTT per andare in Tx (esattamente come indica il display a bordo del lineare) e con il messaggio in rosso “ON AIR” quando è in trasmissione.
first thing we may notice is that the Acom handles 2 kind of Operate status, one when in Rx and one when in Tx. For our purpose “Operate Rx” is what we need because Tx switching comes from rig PTT closing (the dashboard handles both Operate Rx and Tx). When in the dashboard you’ll see “Operate” in yellow it means the PA is waiting for PTT go into Tx (exactly as happens in Acom gear display), as soon as PA goes in TX dashboard message will turn into “ON AIR” in red.
Vediamo ora come è strutturando il comando “Operate” da inviare via rs232. I messaggi di comando al lineare sono formati da 8 bytes, il byte 0 (ovvero il primo) conterrà 0x55 (decimale 85), il byte 1 contiene 0x81 (dec 129), il byte 2 contiene la lunghezza del messaggio ovvero0x8 (dec 8), nel byte 3 troviamo il tipo di comando (ovvero una richiesta all Acom di cambiare “modo”) quindi 0x2 (dec 2), il byte 4 per il gruppo 0x2 non ha importanza quindi lo mettiamo decimale 255,il byte 5 finalmente contiene il comando che vogliamo inviare ovvero “passa in operate rx” quindi 0x0 (dec 6). Il byte 6 va messo 0 mentre il byte 7 (cioè l’ultimo) contiene il checksum dei precedenti 7 byte (calcolabile grazie ad un “checksum calculator” fruibile in Internet) e nel caso del nostro comando vale 27. Il comando “Operate rx” è pronto per essere inviato via seriale al nostro Acom:
Let’s see now how “Operate” command to be sent to PA via rs232 is built. PA message command consists of 8 bytes,in which byte nr 0 (the first one) will value 0x55 (85 in dec), byte nr 1 contains 0x81 (dec 129), in byte 2 message length is declare so 0x8 (8 dec), in byte 3 there’s the command type (in this case as we’re asking to Acom to change “mode”) it is 0x2 (2 dec), byte 4 has no relevance for 0x2 command set so we load with 255 dec, finally in byte nr 5 we put the command we are asking (turn into “Operate Rx” mode) and the value to send is 0x6 (6 dec), byte nr 6 is set to 0, byte nr 7 contains previous 7 bytes checksum (to calculate it you can use any checksum calculator you can find in Internet) and in this case its value is 27. At this point “Operate Rx” command is ready to be sent to the Acom.
Allo stesso modo vengono preparati i comandi di cambio banda e shutdown.
In the same way “band change” and “shutdown” commands are built
Cambio banda con MLDX/ Band change via MLDX
L’interfacciamento con MLDX si basa sul nodo “MLDX Udp listener” il quale riceve gli streams in arrivo da MLDX sulla porta 9932. Come già detto MLDX invia diverse informazioni in 3 tipi di stream, a noi per conoscere la banda corrente interessa solo lo stream [Radio Report….] all’interno del quale troviamo l’indicazione della banda corrente
MLDX interfacing is based on “MLDX Udp listener” node that receives all incoming streams on 9932 UDP port. As above said MLDX sends several info. In order to know rig current selected band the stream we need is the one with header [Radio Report….] inside which the band info is reported
La parte di flow dedicata alla ricezione ed al trattamento dei dati ricevuti via UDP da MLDX è la seguente:
Flow region deputed to handle UDP incoming data from MLDX is this one:
Il nodo “MLDX Udp listener” riceve tutti i dati in arrivo da MLDX e li passa al nodo “Only Radio Report”che facendo un primo filtraggio lascia proseguire solo quelli relativi al segmento [Radio Report….]. I dati poi raggiungono il nodo chiamato “MLDX Udp parser” il quale estrae ed inoltra solo l’indicazione di banda nel formato “XXM” (ad esempio 15M).
“MLDX Udp listener” node get all MLDX incoming messages and forward them to “Only Radio Report” node that does filtering and only messages containing [Radio Report….] will get out and will reach “MLDX Udp parser” (even an improper name indeed) node that will extract only band value in format “XXM” (i.e. 15M)
Sulla dashboard è presente un’interruttore che permette di attivare/disattivare il cambio banda comandato da MLDX
On the dashboard a switch allows to enable/disable band change managed by MLDX
Questo interruttore “apre” o “chiude” il nodo “gate” chiamato “Control via MLDX”. In posizione “open” il dato contenente la banda corrente arriva al nodo “switch” il quale attiva il nodo trigger della banda corrente (Send band 6m…..Send band 160m). Per comandare il cambio banda il nodo provvederà ad inviare alla seriale dell’Acom il comando di “cambio banda” costruito seguendo le indicazioni della documentazione e strutturato in maniera simile a quanto illustrato a proposito del comando Operate qui sopra. Naturalmente per ogni banda il comando conterrà al byte nr 5 un numero diverso (Acom numera le bande da 1 a 10). Ad esempio per passare in 40 m (ovvero banda nr 3 nella tabella di Acom) il comando sarà:
This switch “open” or “close” the gate node named “Control via MLDX”. In “open” position” the band info is forwarded to “switch” node that invokes current band trigger node (Send band 6m…..Send band 160m). To ask the PA to change band the band correspondant trigger node will send the appropriate command data built accordingly to protocol documentation (in similar way of “Operate Rx” request we discussed here above). Of course the command will contain at byte 5 the band number (Acom enumerates bands from 1 to 10). For example to command change to 40 m band (the nr 3 in Acom table) the command will be as follows:
Cambio banda Manuale / Manual band change
Sulla dashboard sono presenti i 10 pulsanti di cambio banda manuale
Dashboard accomodates 10 band change buttons
che come si vede sono “in parallelo” ai comandi in arrivo da MLDX. Questi pulsanti hanno senso SOLO che il sincronismo con MLDX è disattivato in quanto se MLDX dice che la radio è in 20 m e tramite pulsante si comanda il cambio a 40 m un’attimo dopo MLDX attraverso UDP dirà che la radio si trova in 20 m e l’Acom tornerà in 20 m.
As you can see they are “in parallel” with commands incoming from MLDX. These buttons have sense ONLY if MLDX sync is DISABLED because if MLDX knows the rig is in 20 m and we press 40 m button the PA move to 40 m but after a while MLDX via UDP will tell current band is 20 m and the Acom will move back to 20 m accordingly.
Pulsanti Shutdown e Init/ Shutdown and INIT buttons
Sulla dashboard in basso sono presenti 2 pulsanti
These more 2 buttons are located on the dashboard bottom
Shutdown permette di spegnere l’Acom senza dover agire fisicamente sul suo interruttore.
Shutdown button commands PA shutdown (without having to phisically press PA front panel button)
INIT serve ad avviare l’invio dei dati di stato (che Acom chiama “Telemetry” sulla documentazione. Qualche secondo dopo aver avviato la dashboard premendo il pulsante INIT poco dopo si illumineranno i led, la temperatura sarà aggiornata, il led di banda si accenderà a fianco della banda sulla quale si trova l’Acom ed il messaggio di stato sarà attualizzato (tipicamente STBY) . Avviato per la prima volta l’invio di dati l’Acom continuerà autonomamente ad inviarli fino allo spegnimento secondo la cadenza indicata nella documentazione.
INIT begins Acom info sending via serial port (Acom names info sending “Telemetry”). Few seconds after dashboard is started by pressing INIT button current PA band led will glow, temperature measurement and status message will be updated. Once info sending has started you don’t need to press INIT button anymore until you’ll switch Off the PA.
Come per gli altri pulsanti anche questi due attivano il relativo nodo trigger che invia alla seriale dell’Acom il comando opportuno costruito secondo le indicazioni della documentazione.
As it happens with all other buttons on the dashboard, by pressing a button correspondant node trigger is called and it sends the appropriate command built accordingly to the protocol documentation
….. that’s all folks !
spero il mio progetto vi sia piaciuto e possa essere utile per la vostra attività. Questa è la versione iniziale, in futuro penso di aggiugere nuove funzionalità Buon divertimento !!!!!
I hope you liked my project and I hope you’ll find it useful for your activity. This one is the initial release, for future I think to add additional features Have fun !!!!!
This project is based and derived from : “acom600-ldg-flex-streamdeck flow.json” available at nodered-hamradio@groups.io URL: https://groups.io/g/nodered-hamradio/files
Thanks a lot to George Jones, K7GRJ for sharing his flow
Disponendo di un solo amplificatore lineare (Acom 600s) ed operando con un paio di ricetrasmettitori avevo bisogno di poter mandare in trasmissione il lineare indipendentemente da quale radio fosse attiva e non volevo dover utilizzare ulteriori commutatori.
As I own/use a couple of rigs and I have one only PA (Acom 600s) I had the need to put PA in TX without care of which rig was in use, so avoiding a dedicated switch.
Dal momento che sono solito tenere acceso un solo ricetrasmettitore HF alla volta e commuto conseguentemente l’arrivo dell’antenna HF sul tetto (manualmente per forza dal momento che il mio commutatore a matrice Elad non prevede altro comando) ho pensato al modo di rendere “trasparente” l’inoltro del PTT (per meglio dire “Key”) al lineare.
Tipically I have one HF rig switched on at a time and I manually switch roof antenna (manually because my Elad matrix switch has no remote capability) so I thought to a solution to make PA Ptt closing (or better “keying”) as much transparent as possible.
I principali requisiti che desideravo ottenere erano: 1) mantenere il più possibile “separate” le linee di comando in uscita da ciascun Rtx – 2) fare in modo che non ci fossero ritardi aggiuntivi.
Main requirements I saw were: 1) keep keying lines ougoing from each rig as much separated as possible – 2) avoid additional delays in command
La scelta di impiegare dei fotoaccoppiatori ha soddisfatto entrambi i requisiti. Già che c’ero ho aggiunto un display a 7 segmenti che mi indica quale PTT è premuto, scelta non di sostanza nè indispensabile in quanto dei Led sarebbero andati altrettanto bene.
I decided to use optocouplers that would have matched both requirements above mentioned. I also added a 7 segment display that shows which rig number is in TX (not mandatory indeed, 3 leds would have been enough)
Appena e per tutta la durata del tempo in cui rimane premuto il PTT di una radio viene alimentato il Led del fotoaccoppiatore corrispondente attraverso una resistenza da 330 Ohm posta in serie all’alimentazione a 5 V. Immediatamente il fotoaccoppiatore manda in conduzione il transistor al suo interno mettendo così in TX l’amplificatore lineare. La corrente richiesta per attivare il comando è circa 12 mA
As soon and for the time frame the PTT of any rig is pressed the led inside the optocoupler is fed through the 330 ohm resistor connected to 5 V line. Immediately the transistor inside the optocoupler goes into conduction and switches in TX the PA. Current requirement to activate the command is about 12 mA.
Come si osserva i PTT in arrivo dalle 3 radio sono separati fra loro ed hanno in comune solo la massa (che sarebbe comunque già in comune sia per le calze dei coassiali RF sia per i negativi delle alimentazioni o dei cavi di comunicazione verso computer). Le uscite “open collector” dei 3 fotoaccoppiatori sono in parallelo per cui qualsiasi radio vada in TX il PTT del lineare viene attivato.
As you can see the PTT lines coming from the rigs are separated, only ground line is common (it would have been common anyway due to coax shields or negative power lines or computer signal cable grounding). The three optocoupler transistors are in parallel so it doesn’t matter which rig operated its PTT, the PA goes in TX.
Sulla linea di comando del lineare è presente D19 (il solito diodo utile solo se il lineare ha un relè di commutazione in TX) ed una rete C1-L1-C2 che ha lo scopo di filtare eventuali disturbi di commutazione. La corrente massima del transistor interno al fotoaccoppiatore che ho usato è pari a 50 mA con una tensione massima di 50 Vdc.
In the PA keying line I placed D19 diode (as usual diode useful if the PA has a relay to switch in TX) and the group C1-L1-C2 useful to filter possible signal perturbation. Maximum current handled by optocoupler transistor I used is 50 mA under maximum 50 Vdc.
Quando un PTT viene premuto il relativo diodo D16-D17-D18 attiva il corrispondente transistor Q1-Q2-Q3 il quale chiudendo la sua giunzione mette a massa i catodi dei gruppi di diodi D4/D5-D6/D7/D8/D9/D10-D11/D12/D13/D14/D15 i quali fanno accendere gli opportuni segmenti del display sul quale appariranno i numeri 1 o 2 o 3 coerentemente alla radio che ha premuto il PTT.
When a PTT is pressed and for the time it stays pressed the correspondant diode D16-D17-D18 drives the relevant transistor Q1-Q2-Q3 that grounds cathodes of diode groups D4/D5-D6/D7/D8/D9/D10-D11/D12/D13/D14/D15 and they will light on appropriate segments and numbers 1-2-3 will be shown.
I punto presente nel display a 7 segmenti (pin DP) è stato utilizzato come spia di ON dell’apparecchio
The displayDigit Point (DP) is used as “Power On” light.
La mia realizzazione / My built
La costruzione non presenta difficoltà nè criticità particolari. Come sempre ho usato una basetta millefori ed ho inscatolato il tutto in un contenitore metallico che presentava feritoie esistenti alle quali mi sono adeguato
Building is neither diffucult nor critical. I closed it into an iron box (coming from an estate and with existing holes)
Dal momento che uso un solo alimentatore per tutta la stazione cercavo una soluzione che mi permettesse di alimentare solo gli apparati che intendo usare (ricordo che molti apparati moderni anche da “spenti” ma alimentati mantengono in tensione lo stadio finale). Stante la mia scarsa disponibilità di spazio (vedi miei progetti precedenti “salvaspazio”) pensavo ad un distributore delle alimentazioni che non avesse comandi frontali e mi permettesse quindi di posizionarlo fuori dalla zona operativa. Ho citato i PowerPoles perchè li impiego per tutta la mia distribuzione.
Considering that I use one power supply for my shack, I was looking for a solution letting me able to switch on only rigs I’m going to operate (many recent rigs keep PA stage fed even if their main switch is Off, I don’t like this so much). In addition as I have limited room for my shack, I thought to a box I could place out of my operation area so without front panel commands. I mentioned PowerPoles because I use them for cabling since years.
Mi sono orientato su un distributore comandato via Wi-Fi usando una pagina web mediante la quale è possibile accendere o spegnere le 4 linee di alimentazione in uscita ed avere un’indicazione attualizzata della tensione di linea. Per realizzarlo ho usato una scheda nodeMCU la quale garantisce la connessione Wi-Fi e gestisce i 4 relè che mettono in tensione le altrettante linee di alimentazione in uscita. La comunicazione fra la nodeMCU e l’interfaccia web è realizzata (nel mio caso) mediante un “server” (Ubuntu) sul quale sono in esecuzione Node-Red e Mosquitto/MQTT. La nodeMCU esegue i comandi che riceve dal server Mosquitto in formato MQTT (apri relè chiudi relè) ed invia al server le informazioni previste (stato delle linee di uscita, tensione di linea eccetera). A Node-Red spetta la generazione della “Dashboard” (che è una pagina web) mediante la quale vengono gestiti i pulsanti e pubblicato lo stato delle linee in uscita e le informazioni ricevute dalla nodeMCU. Il server Mosquitto/MQTT si occupa di veicolare le informazioni da e verso il distributore powerpole e da e verso il sistema Node-RED.
I decided to design a Wi-Fi managed box by using a webpage to switch On/Off 4 outgoing power lines and I can have a look at line voltage. I based my project on a nodeMCU board (an Arduino “relative”) that has builtin wi-fi feature. The web interface is up to Node-RED, the communication between nodeMCU and Node-RED is up to a Mosquitto server using the MQTT protocol. Both Node-RED and Mosquitto are running on a miniPC with Ubuntu. – nodeMCU does 2 jobs 1) executes relay commands coming from the Node-RED Dashboard – 2) sends info to the Node-RED Dashboard. – Node-RED takes care of 1) publishing the Dashboard command buttons – 2) collecting and publishing info coming from the nodeMCU. – Mosquitto/MQTT server grants dialogue between the above 2 bricks
Ecco un breve video di presentazione / Here is a short video that shows how it works
Come si può osservare dal video i comandi vengono inviati attraverso una pagina web (che può essere aperta anche da più browser contemporaneamente) la quale riporta l’indicazione dello stato di ciascuna linea mediante “led” rosso e uno verde per l’arrivo linea. Nella seconda parte del video ho evidenziato come variando la tensione di alimentazione il valore viene aggiornato (con cadenza di 0,5 secondi) e la grafica sulla pagina web cambia colore in funzione delle soglie impostate (< 12,6 V diventa gialla e > 13,7 V diventa rossa). Nella parte finale del video ho manovrato uno dei 4 interruttori che ho previsto per la chiusura manuale dei relè, utile in caso di mancanza connessione di rete.
As you can see commands to the box are sent using a web page (that may be opened by more browsers at the same time) and 4 “Led” Red and 1 Green for incoming line show the lines status. In the second part of the video I vary the incoming line voltage and its value is shown in the voltage gauge (refresh each 500 mS) and a coloured graphic region advices if the value is in the range or not (<12,6 Yellow, > 13,7 Red, Green if in the range). In the video final part I operate one of the 4 switches, useful to switch On outgoing lines in case of wi-fi connection fault
Funzionamento / Functional description
Il flusso della comunicazione fra i vari “mattoni” è quello qui sintetizzato
Here below the communication flow among the 3 “bricks” is shown
Ogni volta che viene premuto uno dei 4 pulsanti della Dasboard viene inviato al server Mosquitto/MQTT il comando relativo. Se ad esempio premiamo il pulsante “1 – Flex 6400” che era Off la Dashboard scriverà in formato MQTT sul topic “PP_Distr/command” il messaggio “CLOSE_1” attraverso il nodo “MQTT Out” denominato “Relay On/Off”
Any time one of the Dashboard 4 buttons is pressed a message containing the correspondant command is sent to Mosquitto/MQTT server. For example if you pressed button “1 – Flex 6400” that was Off the Dasbhoard will write on topic “PP_Distr/command” the message “CLOSE_1” using the “MQTT Out” node named “Relay On/Off”
A questo punto il server Mosquitto scriverà in formato MQTT sul topic “PP_Distr/command” il messaggio “CLOSE_1”. La node MCU che è in ascolto dei messaggi MQTT sul topic “PP_Distr/command” si troverà la variabile “message” caricata con la stringa “CLOSE_1” quindi scriverà sul terminale seriale che sta eseguendo CLOSE_1 e farà chiudere i contatti del relè 1. Contemporaneamente aggiornerà sulla dashboard il colore del “led” rosso/verde corrispondente usando il topic “relay_status”
At this point Mosquitto/MQTT server will spread on topic “PP_Distr/command” the message “CLOSE_1”. The nodeMCU that’s listening for MQTT messages on topic “PP_Distr/command” (as topic subscriber) will load its dummy variable named “message” with the string “CLOSE_1” and in consequence of this will printout in the serial terminal “Performing close command CLOSE_1” and will close Relay 1 contact by feeding its coil. Meantime it will update Dashboard red/green “led” accordingly by using “relay_status” topic.
In maniera analoga (ma in direzione opposta) la nodeMCU invia in formato MQTT le informazioni previste (stato dei relè, tensione di linea, intensità del segnale wi-fi, stato della connessione wi-fi, nome su rete ed IP del distributore powerpoles e versione dello sketch) creando messaggi che contengono le informazioni richieste sui topic dedicati. Va osservato che solo tensione di linea, stato ed intensità della connessione wi-fi vengono aggiornati ogni 0,5 secondi, le altre informazioni vengono inviate solo ad ogni boot.
In the same way (but in opposite direction) the nodeMCU sends to Mosquitto server in MQTT message format all info foreseen to be sent (relays status, incoming line voltage, wi-fi signal strenght, wi-fi connection status, Powerpole distributor hostname and IP and sketch version) by sending messages on dedicated topics. Let’s notice that only incoming line voltage, wi-fi status and signal strenght are sent each 500 mS, other info are sent only at boot time.
Prendiamo ad esempio l’indicazione della tensione di linea: 1) la nodeMCU misura la tensione sul pin A0 (grazie al partitore R9/R10) lo carica in forma numerica nella variabile Vin e lo invia al server Mosquitto nel topic “info/PS_Voltage”- 2) il server lo riceve lo riceve e lo passa a Node-RED dove c’è il nodo “PS voltage” in ascolto sul topic “info/PS_Voltage”
Let’s see what happens with voltage indication (for example). 1) the nodeMCU reads current incoming line voltage on its pin A0 thanks to the voltage divider R9/R10, writes it into the variable Vin and sends it to Mosquitto/MQTT server by using topic “info/PS_Voltage” – 2) the server will spread it and Node-RED node “PS voltage” that’s listening on topic “info/PS_Voltage”
questo nodo ricevuto il messaggio (contenente il valore di tensione misurato ricevuto dalla nodeMCU) lo passerà al nodo “Incoming Line” che lo pubblicherà sulla dashboard in forma grafica e con i colori che abbiamo previsto
this nodewill forward the value (so incoming line voltage measured by nodeMCU) to the node named “Incoming Line” that will update the voltage gauge including coloured ranges.
Installazione server / Server setup
Per prima cosa occorre installare sul proprio computer (o su qualsiasi altro computer esistente sulla nostra rete) il “server” Mosquitto e il “server” Node-RED. Sono entrambi gratuiti e ben documentati in rete quindi la loro installazione e messa in funzione non dovrebbe creare problemi. In realtà esistono siti che offrono la gestione della messaggistica in formato MQTT (spesso usati per la “Home automation”) ma io ho preferito installarli in casa mia. Ho usato un miniPC con Ubuntu che in futuro renderò raggiungibile via Internet in modo da poter comandare questo distributore PowerPole (ed altri apparecchi) anche attraverso una connessione Internet.
First of all you need to install Mosquitto and Node-RED on your computer (or any other one in your network). Both software are free and well documented in the web so their installation/setup wouldn’t be an issue. There are also some websites offering for free MQTT for free actually (often to serve Home automation support), but I preferred install them in my network behind my router. I installed Mosquitto and Node-RED servers on a miniPC (that is cheap and very small) with Ubuntu and in future I will make it reachable from the Internet in way to operate this Powerpole distributor (and othe gears) from outside via an internet connection.
Mosquitto una volta installato non ha bisogno di azioni, basta aprire sul computer che lo ospita la porta Tcp 1883 ed accertarsi è che al boot il servizio si avvii automaticamente (in rete si trovano pagine e pagine di aiuto per configurarlo e verificare il funzionamento e la fruibilità).
Node-RED una volta installato dovrebbe essere pronto per l’uso (basta aprire sul computer che lo ospita la porta Tcp 1880) e per controllarne il funzionamento basta aprire col browser l’indirizzo http://localhost:1880 (se installato su un computer diverso al posto di localhost scrivere l’IP del computer) e se node-red è attivo si aprirà questa pagina. Se non fosse attivo (su alcuni sistemi operativi occorre fare in modo che si avvii automaticamente ad ogni boot) dalla finestra del terminale digitare node-red e battere invio
When Mosquitto server installation has completed to be ready for use you have to open Tcp port 1883 on the computer hosting Mosquitto and verify that its service starts automatically at boot (many guides are available in the web to help you).
After Node-RED server installation has finished to be ready to use it you have to open Tcp port 1880 on the computer hosting Node-RED. To verify it’s running open a browser session on http://localhost:1880 (if you installed Node-RED in a different computer overwrite “localhost” with computer IP address) and if Node-RED server is up and running this webpage will be shown. In case it was not running open a console session and digit node-red followed by enter
Con Node-RED attivo la prima cosa da fare è importare il mio Flow (gli elaborati Node-RED si chiamano in questo modo). Per importarlo occorre scaricare il file (link più in basso) e salvarlo in una cartella. Per importarlo:
First step when your Node-RED up and running is to import my “Flow” (in Node-RED documents are called “Flow”). So download my Flow (link here below) save it into a folder and then
Terminata l’importazione dovreste trovare il mio Flow nel tab “PP Distributor” (la videata è stata divisa in 3 immagini)
When import has completed you should find my Flow in a tab named “PP Distributor” (top line of Node-RED webpage). Due to screen vertical size I divided it into 3 screehshots
topmiddlebottom
In Node-RED ogni volta che si fa una modifica per renderla operativa occorre premere “Deploy”. Eseguendo il Deploy (in alto a destra) del mio Flow molto probabilmente mancheranno i nodi che ho aggiunto per il mio Flow.
In Node-RED to actualize any modification you must “Deploy”. By pressing Deploy my Flow most likely you will be adviced that some nodes are missing (nodes I added are not installed by default)
per aggiungere i nodi mancanti premere / to add missing nodes press
scegliere “Manage palette” e nella finestra che si apre andare su Install e digitare il nome dei nodi mancanti e premere il pulsante Install
choose “Manage palette” then go to Install tab and digit missing nodes names and press Install button
1st node set2nd node set3rd node set
Ovviamente il mio Flow contiene i riferimenti alla mia rete, quindi dovrete modificarli inserendo i vostri. Per farlo bisogna aprire le proprietà del nodo (doppio click sul nodo) “Relay On/Off” e scrivere il nome o l’IP del computer sul quale avete installato Mosquitto. Così facendo la modifica si propagherà a tutti i nodi che usano MQTT.
Obviously the Flow you downloaded contains reference to my network objects so you have to touch it and adapt to yours. To do this you have to double click node named “Relay On/Off” and overwrite server name (for me it’s “minilinux”) with your computer running Mosquitto hostname or IP address. The modification you just did will be applied to all MQTT nodes in the Flow
Allo stesso modo dovrà essere modificato anche il nodo “Ping” che attraverso un “ping” sente se il distributore Powerpole è attivo e presente in rete. Dovrete inserire l’Hostname del vostro distributore (se avete cambiato nello sketch il contenuto della variabile newHostname)
In the same way you must modify “Ping” node (the one that checks if Powerpole distributor is alive). So double click Ping node to open its properties and digit the hostname you assigned to your Powerpole distributor (if you touched the sketch modifying the variable newHostname)
A questo premendo nuovamente Deploy se tutto è andato a buon fine aprendo col browser l’indirizzo http://localhost:1880/ui/ (se Node-RED è installato su un’altro computer sostituire localhost con nome del computer o il suo indirizzo IP) dovrebbe aprirsi la Dashboard (ovviamente senza dati perchè ancora la nodeMCU non è attiva)
Now by pressing Deploy If everything’s was succesfull by opening with your browser the addresshttp://localhost:1880/ui/ (if Node-RED is installed on another computer overwrite localhost with that computer name or its IP address) you should see the Dashboard (of course without data because the nodeMCU is not running)
Nota: se avete più dashboards dovrete selezionare dal menu a sinistra PowerPole Distributor
TIP: if you have more than one dashboard you need to select PowerPole Distributor from top left menu
Sketch per nodeMCU / nodeMCU sketch
Vediamo ora lo sketch (ricordo che la nodeMCU si programma come fosse un Arduino) che andrà caricato nella nodeMCU.
Let’s have a look at the sketch (as I told the nodeMCU is an Arduino “relative” so to program it you’ll use Arduino IDE (or any other compatible one, I use Visual Studio for example)
Per prima cosa andranno indicati i parametri di accesso vostra rete wi-fi ed i riferimenti della vostra rete e se preferite il nome (hostname) che verrà assegnato al vostro distributore
First of all you’ll have to touch my code in order to adapt it to your network, I mean your wi-fi SSID and its access password and (if you like) assign a different hostname to your Powerpole Distributor (remember that if you change the hostname you have to touch Node-RED Flow Ping node accordingly, as above stated)
Per ottenere l’indicazione della tensione di linea il più possibile precisa (ricordo che la nodeMCU legge la tensione dal partitore R9/R10, in un range che va da 0 a 3,3 V esprimendola con un numero che va da 0 a 1023 ed usa come riferimento per la misura la sua tensione interna a 3,3 V) occorre misurare con un multimetro il reale valore delle resistenze R9 ed R10 che stiamo usando ed inserirlo nello sketch
In order to get an “accurate” voltage input readout (accurate is within quotation marks because the nodeMCU reads incoming voltage from R9/R10 divider in a range 0-3,3 V then it converts it into a number among 0 and 1023 and what’s worst this board uses internal 3,3 V as voltage reference) it’s mandatory to measure with a multimeter the exact R9 and R10 resistance value and touch the sketch by writing the measured values
In fase di collaudo finale occorrerà far coincidere l’indicazione della tensione di linea letta sulla dashboard con il reale valore misurato col multimetro. Per fare questo occorre ritoccare per tentativi il coefficiente presente nella funzione “Check_voltage” misurando col multimetro la tensione presente sul pin Vin del test point denominato TP1 e confrontandola con quella riportata sulla dashboard (che Node-RED approssima ad 1 decimale dopo la virgola)
After built has completed you’ll have to refine the code in order to get as much as possible real the incoming voltage shown by the dashboard. To do this you have to connect the mutimeter and measure incoming line voltage (TP1 test point will be useful for this action) and compare measured value with the dashboard voltage gauge indication (remember the gauge has 1 decimal approx). To get the indication real as much as possible you have to touch “EMPIRICAL corrective coefficient” by temptatives, it’s boring I know because you have to build and upload to nodeMCU any time you change it.
Per evitare che 2 pulsanti vengano premuti in sequenza troppo rapida, dopo aver premuto un pulsante occorre aspettare un tempo (default 1 secondo) prima che la pressione di un secondo pulsante sia operativa. Se non ci fosse questo potrebbe succedere che i 2 comandi vengano confusi dalla logica. Nel caso il secondo pulsante venisse premuto prima dello scadere di questo tempo sulla dashboard apparirà la scritta WAIT in giallo e si cancellaerà al termine del tempo di attesa dovuto.
In order to avoid that 2 commands are sent by the dashboard too much closely there’s a time to wait before you can send another command. In my code is set at 1000 mS. If you press a button and then another button without waiting 1 second a yellow “WAIT” message will appear in the dashboard and will disappear after 1 second
Non presenta criticità particolari. L’unica attenzione va posta nel cablaggio di potenza (indicato con linee rossa e nera di maggior spessore) per il quale occorre usare fili di sezione adeguata. Per il cablaggio di potenza sotto i relè fino alla morsettiera ho usato del filo di rame unipolare nudo da 2 mmq mentre per il cablaggio verso i connettori Powerpole di entrata e uscita ho usato del filo unipolare 14 AWG (2 mmq) molto flessibile ed isolato in silicone. Come si intuisce dallo schema ciascuna coppia di powerpole (1A-1B , 2A-2B ecc) è in parallelo sulla morsettiera di potenza (su 2 morsetti adiacenti). Ho fatto questa scelta per disporre di 2 uscite per ciascuna linea e per avere la possibilità di raddoppiare la linea di alimentazione (partendo ovviamente dallo stesso alimentatore). Per ciascuna linea in uscita è previsto un Led Rosso che si illumina quando l’uscita è attiva. La presenza tensione sulla linea di alimentazione è evidenziata da un Led Verde. Il Led Blu segnala lo stato della connessione wi-fi in quanto lampeggia durante la connessione, rimane accesso finchè è connesso ed è spento quando non è connesso (stessa indicazione viene replicata sulla dashboard dal rettangolo Blu). Premere su PowerPole-distributor-site per aprire il pdf in una nuova pagina del browser e salvarlo.
Not critical issues are foreseen. Pay particular attention to power wiring (red and black big lines in the diagram) for them you have to use wires with adequate cross section. In my built I used a naked single core copper wire 2 square millimeters in the relay board wiring (see images below) and a 14 AWG (2 sq mm) silicon flexible wire for Powerpoles wiring. As you can see each PP couple (for example 1A-1B) is in parallel at power terminal board. I did so just to have 2 connections for each line output and to have the opportunity to double incoming feeding line (originated from the same power supply of course). For each one of the 4 outgoing lines a Red Led will glow up when the line is active. There’s also a Green Led that glows when incoming line is OK. The Blue Led tells you about wi-fi connection, it blinks during connection glows solid till the connection is OK and will be Off when there’s no connection (the dashboard Blu rectangle replicates the connection OK). Here below there’s the interconnections diagram, click on PowerPole-distributor-site link to open it in pdf format in a new browser page and then save it.
Ho anche previsto 4 interruttori SW1-SW4 con lo scopo di consentire l’accensione delle 4 linee di uscita nel caso che il distributore non fosse connesso alla rete wi-fi. L’unica messa a punto richiesta è la regolazione dello step down (indicato con U3 nello schema) per avere un’uscita a 12 V. Il test point indicato con TP1 permette agevolmente di misurare le tensioni (linea in arrivo – 12 V – 8 V). Ho preferito usare uno step down anzichè il solito 7812 perchè i relè che ho usato assorbono ciascuno 150 mA ed il 7812 chiamato a ridurre da 13,7 (tipicamente) a 12 volt con una corrente di 600 mA scaldava troppo.
4 lever switch (SW1-SW4) have been foreseen to operate the 4 outgoing lines in case of no wi-fi connection. The only one adjustment required is to regulate the step-down converter (named U3 in the diagram) in order to have 12 Vdc out (test point TP1 will be helpful). I preferred a step-down instaed of a 7812 because the relays I used have coil current around 150 mA each one and I noticed that a 7812 to reduce voltage from 13,7 to 12 Vdc with 600 mA current requires a serious heat sink.
Questo è lo schema delle interconnessioni della mia realizzazione. Premere su PowerPole-distributor-interconnections-site per aprire il pdf in una nuova pagina del browser e salvarlo.
Here’s my built interconnections schema that may be useful to better understand what we’re talking abuot at a glance. Here below there’s the interconnections diagram, click on PowerPole-distributor-interconnections-site link to open it in pdf format in a new browser page and then save it.
Cablaggio di potenza / Power wiringScheda relè e alimentatori / Relay board and power suppliersDettaglio alimentatori / Power suppliers detailPannello frontale e nodeMCU / Front panel and nodeMCUConnettore per programmazione nodeMCU / nodeMCU programming connectorVista interna / Inside viewVista frontale / Front viewVista posteriore / Rear view
Il mio utilizzo / How I use it
Nella mia stazione lo utilizzo in questo modo / Here is how I use it in my shack
Il Flex 6400 non ha altoparlante interno, quindi per l’ascolto spesso si usa il sistema audio del computer al quale è collegato via rete. Di conseguenza deciso di prevedere un’altoparlante esterno mettendo a disposizione anche una comoda presa per la cuffia ed un pulsante per togliere velocemente l’audio. Ho pensato di usare uno dei tanti speakers di linea disponibili sia nuovi che usati, c’è solo l’imbarazzo della scelta. Ho scelto un Kenwood SP-31 avendone trovato uno a poco prezzo ed in perfette condizioni.
Flex 6400 has no internal speaker and often the computer audio system is used via LAN connection. I thought to add an external line speaker with a confortable headphones plug and a mute button. Watching among the many we can find new or used in the market. I went for a Kenwood SP-31 because I found it at bargain price and in perfect cosmetic.
Per utilizzarlo con il mio Flex ho dovuto aggiungere all’interno un’amplificatore che prendendo il segnale stereo dall’uscita “Powered speaker” del Flex, sommi i due canali stereo e lo amplifichi in misura soddisfacente da pilotare l’altorparlante dell’ SP-31. L’amplificatore si basa su un TDA2002 che avevo in casa ed una manciata di componenti. La realizzazione non presenta particolari criticità o difficoltà. Ho fatto in modo che la modifica sia completamente reversibile non avendo forato nè tagliato i fili del cablaggio originale.
To connect the speaker to my Flex arranged inside the SP-31 an audio amplifier that must be connected to “Powered speaker” stereo jack in the Flex rear panel. It takes care of adding the 2 channels and provide enough power to drive the SP-31 internal speaker. Amplifier is based on a TDA2002 (I had somewhere in a drawer) and few components. Building has no critical issues and it’s easy.
Sui connettori Rca J1 arriva segnale stereo prelevato dall’uscita “Powered speaker” del Flex. Le resistenze R1 ed R2 provvedono a sommare i 2 canali stereo ed il segnale risultante prosegue verso il partitore R7/R8 che ne dimezza il valore per poi passarlo al trimmer RV1 (da regolare una tantum in fase di messa a punto perchè successivamente il volume sarà regolabile dal cursore di SSDR). L’uscita dell’amplificatore viene collegata a “speaker A” del connettore originale dell’ SP-31 (denominato J2 sullo schema Kenwood).
Incoming stero signal from Flex “Powered speaker” output (through J1 Rca connectors) is “mixed” by R1 and R2 resistors and goes to R7/R8 divider (incoming level is a bit high for this circuit). The trimmer RV1 provide the necessary adjustment during test phase for a confortable listening, it will not need to be touched anymore as volume control will be managed by SSDR slider. Amplifier output will be connected to SP-31 original inlet connector (named J2 in kenwood diagram) speaker “A”.
Descrizione del funzionamento / Functional description
Non avendo modificato lo schema originale dell’ SP-31 il funzionamento dei suoi comandi rimane inalterato, ovvero:
As SP-31 original circuit has not been touched everything works in the original way, I mean:
rilasciando il pulsante “Input A/B” (quindi mettendolo in posizione “A”) sarà attivo l’audio proveniente dal Flex mentre in posizione “B” si comporterà come Mute
by releasing “Input A/B” switch (so activating “A” input) you’ll get audio from the Flex. By putting the switch in “B” position it will act as Mute
inserendo il jack nella presa “Phones” l’audio del Flex verrà inviato alla cuffia (se il selettore “Input A/B” è su “A”)
connecting an headphone in “Phones” jack the Flex audio will be routed to headphones (if “Input A/B” switch is in “A” position)
i pulsanti dei filtri rimangono operativi
filters buttons keep on working as usual
Qualche foto della mia realizzazione / Some pictures about how I built it
Da tempo sentivo il bisogno di avere sottomano una piccola scatola per mezzo della quale dare alla radio i comandi che uso maggiormente durante i DX, senza dover necessariamente effettuare manovre direttamente dal pannello della radio che sto usando in quel momento. I comandi ai quali mi riferisco sono: inserire/disinserire lo Split, spostare la sintonia del Vfo B, regolare la potenza, regolare la larghezza del filtro ed il volume audio
Since a time I felt the need to have “under my fingers” a small boxto use to send to current rig the typical commandsI use without having to touch rig front panel. Commands I’m referring to are: set Split On/Off, adjust Vfo B, adjust RF power out, adjust filter bandwidth and audio volume.
Avendo un po di esperienza nell’uso di Arduino ho subito pensato di usarlo per realizzare qualcosa che potesse gestire 4 pulsanti ed 1 encoder ai quali associare gli opportuni comandi CAT ed inviarli alla radio. Meglio ancora la mia scelta si è focalizzata su una scheda “nodeMCU” (un’Arduino ridotto che integra la parte esp8266 per il collegamento IP ad una rete Wi-Fi) che avendo a bordo la parte Wi-Fi mi consentiva di non avere ulteriori cavi di collegamento sul tavolo.
As Ihavea basic knowledge in Arduino I thought to use it to develop the small box to accomodate and manage 4 buttons and 1 encoder and send relevant CAT commands to current rig. Furthermore I decided to use a “nodeMCU” board (a limited in terms of I/O Arduino withintegrated Wi-Fiesp8266 so capable to IP connect to a Wi-Fi network) and in this way I’d get a cordless unit, saving precious space on my desk
Il problema a questo punto era trovare il programma per il CAT più adatto per ricevere comandi via rete e passarli alla radio attiva in quel momento. Considerando che uso Mac la scelta sembrava ancora più difficile ma per fortuna ho trovato FLRIG (il gestore CAT della suite cui appartiene FLDIGI). FLRIG aveva tutte le caratteristiche a me necessarie: è “multipiattaforma (Windows, linux e Mac), è costantemente tenuto aggiornato, permette di gestire più radio e di scegliere con facilità quale gestire in ogni momento. Ma la cosa più importante per me è che FLRIG ha un’ottimo server XML-RPC ed un ampio set di comandi disponibile grazie ai quali è possibile dare comandi alla radio e chiedere informazioni indipendentemente dalla radio in uso in quel momento. In altre parole si dialoga con FLRIG sempre con lo stesso set di comandi, ci pensa poi lui a convertirli nella forma corretta per la radio attiva.
Wellthe hardware was defined but the problem then was to find the right CAT controller capable to accept commands incoming from the network and send them to the current rig. In addition as I’m Mac user I was afraid it wouln’t have been so simple. Luckily I found FLRIG (CAT controller from FLDIGI suite) that covered all my needsbecause: it’s a muliplatform application (Windows, Linux, Mac), is very very well mantained, can handle several rigs and switching from one to other is simple. But the most important feature it has that satisfies my needs is that FLRIG has a powerful integrated XML-RPC server with a very rich set of commands available. Sending commands or ask for a status to the current rig is really simple and quick, without taking care which rig is currently active and its CAT command set. Into other words you dialogue with XML-RPC server always using the same syntax, it’s up to FLRIG to properly talk with the rig using the appropriate CAT command set.
Un ringraziamento speciale a Dave W1HKJ il papà di FLDIGI ed FLRIG per la grande disponibilità mostrata nell’inserire i nuovi comandi di cui avevo bisogno ed un grande grazie a Lele IZ1UKX per avermi spinto e supportato nella realizzazione di questo progetto
A special big thanks to Dave W1HKJ (FLDIGI & FLRIG father) for the kind availability in adding the new commands I needed and the support he gave me and a big thanks to Lele IZ1UKX who spurred me and supported me with his FLRIG deep knowledge
———————————————————-
Giusto per dare un’idea ecco un breve video dove inserisco e disinserisco lo Split e regolo Vfo A e B
Just to have a glance here is a short movie in which I switch Split On/Off and adjust Vfo A and B
Il mio FLRIG Pod / My FLRIG Pod
Descrizione di funzionamento / Functional description
Vediamo ora come ho realizzato il mio Pod ovvero la versione che deriva dal mio punto di vista e che copre le mie esigenze. Naturalmente ciascuno può personalizzarlo in autonomia modificando le funzioni di pulsanti ed encoder, aggiungendo pulsanti o led o display.
Let’s have a look on how I designed my Pod . Of course this is my implementation that is based on my point of view and matches my needs. Obviously anyone may customize it by modifying buttons and encoder functions, by adding buttons or led’s or a display.
Pannello frontale / Front panel
I 4 pulsanti permettono di inserire/disinserire funzionalità (nel mio caso lo Split) o inviare alla radio comandi preconfigurati (ad esempio potenza 100% o 5%) mentre l’encoder può essere associato a qualsiasi funzione si desideri. Ciascun pulsante riconosce la pressione breve o la pressione lunga (> 5 sec) premendo invece l’encoder con una pressione breve si cicla fra le 6 attribuzioni disponibili (il led segnala su quale funzione l’encoder è attivo in ciascun momento). Nella mia realizzazione ho associato pulsanti ed encoder alle funzioni che desideravo avere sottomano e con i passi di regolazione che mi sembravano più opportuni. Ovviamente è tutto modificabile agendo sullo sketch. Al momento la pressione lunga dell’encoder si limita a resettarne la posizione ma in una prossima versione intendo usarla per modificare il passo della regolazione (ad esempio +/- 100 Hz o +/- 10 Hz)
Pushbuttons are for switching on/off a function (in my case Split) or may recall some preset value (for example RF power 100% or 5%) and encoder may be assigned at any other function you like. For each button short press and long press (> 5 sec) are managed, for the ancoder only short press is implemented till now (in future I will assign it to fine/coarse step selection) and at any encoder press it cycles among 6 possible function assingnment (a Led will glow up to show which function the encoder is active to adjust)
Per i 4 pulsanti le funzioni sono – 4buttons functions are for:
PF1 presssione breve SPLIT On, pressione lunga SPLIT Off – short press Split On long press Split Off
PF2 pressione breve Potenza 100%, pressione lunga potenza 5% – short RF Power 100% long RF Power 5%
PF3 pressione breve BW filtro 300 Hz, pressione lunga 500 Hz – short filter BW 300 Hz long filter BW 500 Hz
PF4 pressione breve Volume 10%, pressione lunga 30% – short Volume 10% long Volume 30%
l’encoder si può attribuire alle seguenti funzioni – Encoder function assignment
Vfo A incrementa/decrementa a passi di +/-100 Hz – Vfo A adj step +/- 100 Hz
Vfo B incrementa/decrementa a passi di +/-100 Hz Vfo B adj step +/- 100 Hz
Split (al momento non regola nulla) – does nothing till now
Potenza incrementa/decrementa a passi di +/- 5% – RF Power adj step +/- 5%
BW filtro incrementa/decrementa a passi di +/-100 Hz – Filter BW adj step +/- 100 Hz
Volume incrementa/decrementa a passi di +/- 5% – Volume adj step +/- 5%
Sul fianco trovano sistemazione la presa Usb della scheda nodeMCU (usata per caricare lo sketch o per collegarla ad un monitor seriale con velocità 115200, N 8 1) l’interruttore di accensione e la presa Usb-C per ricaricare la batteria interna.
On the box side we’ll find the nodeMCU Usb port you’ll use to upload the sketch or connect a serial terminal (115200, N 8 1) the main switch and the Usb-C port for internal battery charging.
Schema elettrico / Circuit diagram
Lo schema di questo Pod è piuttosto semplice, pochi componenti e schedine già pronte per l’uso acquistate online a prezzo basso. Non vi sono criticità di montaggio l’unica cosa da tenere presente è che OVVIAMENTE venga alloggiato in un contenitore di materiale plastico dal momento che contiene anche la parte Wi-Fi. Ecco lo schema (click sul link per aprire il pdf in un nuovo pannello del browser o pulsante Download per scaricare il file)
Circuit diagram is really simple, few components are required and some little boards (battery charger and step up) ready-to-use purchased online at low price. Of course as it contains the Wi-Fi unit a plastic box is requested. Here it is(click the link to open in new browser panel or click Download to download the file pdf)
Per limitare lo spazio occupato ed essendo piuttosto contenuto l’assorbimento del circuito (circa 170 mA in standby e 220 mA in TX misurati sulla batteria) ho impiegato una sola batteria 18650. La scheda nodeMCU però quando alimentata dal pin Vin richiede una tensione di 7-10 Vdc quindi ho elevato la tensione in uscita dalla batteria al valore di 8 Vdc mediante un convertitore Step-Up Dc-Dc. La scheda nodeMCU provvede a fornire la tensione di 3.3 Vdc necessari funzionamento del resto del circuito. Per ricaricare la batteria ho utilizzato una schedina già pronta.
In order to keep overall dimensions as limited as possible, I decided to place 1 only 18650 battery. Considering that current consumption (measured at battery poles) is about 170 mA in standy and about 220 mA in TX I realized one only battery would grant me enough autonomy. The nodeMCU board requires at Vin pin 7-10 Vdc to work properly, so I foresee a Dc-Dc Step-Up-Converter that will raise voltage to 8 Vdc. The nodeMCU itself will provide 3.3 Vdc to feed the other circuit elements. To charge the battery I used a cheap ready to use little board.
L’unica cosa che va sottolineata è la gestione dei pulsanti SW3-4-5-6. Stante la limitata disponibilità di I/O della scheda nodeMCU ho dovuto usare l’unico pin analogico (A0) che la scheda ha a bordo. Come si vede dallo schema ad ogni pressione di pulsante si inserisce una resistenza nel partitore costituito da R7 + resistenza del pulsante premuto. La nodeMCU leggerà la tensione presente sul suo pin A0 e la trasformerà in un numero intero compreso fra 0 e 1023. Il programma leggendo il valore numerico capirà quale pulsante è stato premuto. Va da sè che affinchè i pulsanti vengano letti correttamente il partitore deve presentare una tensione tale da far generare un numero che corrisponda a quello che si aspetta il programma.
There’s one thing that needs to be underlined: buttons SW3-4-5-6 managment. As the nodeMCU has a limited I/O pins I had to use the unique analog pin available (pin A0) for buttons check. As you can see in the diagram any time you press a button a resistor is inserted in the resistive divider made by R7 + resistor/button/pressed. The nodeMCU will read voltage at its A0 pin and will return an intger number, the code will use this number to identify which button has been pressed. In consequence of this it’s mandatory that when you press a button the number read by nodeMCU is equal to the one the code expects
Dal momento però che le resistenze hanno tolleranze spesso del 10% potrebbe essere necessario ritoccare il programma modificando il numero che rappresenta ciascun pulsante ed inserendo quello che nel nostro montaggio risulta alla pressione dei pulsanti. Basta misurare la tensione sul pin A0 quando si preme ciascun pulsante e sapendo che quando la tensione è 3,3 V (misurare col voltmetro l’esatto valore della tensione) il numero letto dal programma è 1023 con una proporzione si ricava il numero per ciascun pulsante da correggere nel programma (dove trovate scritti i miei valori: 1013,999,970,929) ovvero
Due to resistor tolerance (often 10%) it may be necessary to adjust in the code the number read when a button is pressed in your assembly. To do this you’ve to measure voltage at pin A0 for each button pressed, then measure the exact voltage present in our “3,3 V” line. At this point with an arithmetic proportion you can retrieve the number that corresponds to each button pressed. Now you’ve to modify the sketch by inserting your number (there you’ll find my numbers 1013,999,970,929 that come from my nodeMCU and the resistors I used)
Questa è la parte di sketch da modificare / Sketch region involved
Per il pilotaggio dei 6 Led ho scelto di usare l’integrato PCF 8574 (8 bit I/O expander per I2C) grazie al quale impiegando solo 2 pin della nodeMCU (Scl e Sda pin D1 e D2 della nodeMCU) posso pilotare fino a 8 I/O. Nel mio utilizzo ho settato tutti gli 8 bit come output visto che dovevo pilotare 6 Led. In aggiunta essendo sul bus I2C se un domani volessi aggiungere altri Led o pulsanti mi basterebbe aggiungere un secondo PCF 8574 (indirizzandolo opportunamente sul bus I2C) così come se volessi aggiungere un display I2C. L’unica cosa a cui fare attenzione è non dimenticare di mettere a massa i pins 1-2-3 come indicato nello schema.
To drive the 6 Led’s I used an PCF 8574 ((8 bit I/O expander for I2C bus) that needs only Scl and Sda lines (nodeMCU pins D1 and D2). I configured it for all 8 bits as outputs as my need was to drive 6 Led’s. Using the I2C bus if in future more I/O will be required it will be enough to add another PCF 8574 and properly address it on the bus. Same history if an I2C display would be added. The only one thing to pay attention to is to ground pins 1-2-3 as shown in the diagram
Costruzione / My assembly
Io l’ho realizzato usando una scatola di plastica da 76x100x40 mm
II used a plastic box with dimensions 76x100x40 mm
Il programma / The code
Download sketch e librerie usate / Sketch and used libraries download
Il programma per Arduino (ricordo che la nodeMCU si programma come un’ Arduino) è piuttosto semplice. Possiamo distinguere 5 blocchi fondamentali:
The Arduino code (remember that nodeMCU is an Arduino board compatible) is quite simple. We can distinguish 5 blocks in it
la parte di configurazione dove vengono indicate le librerie da includere, le dichiarazioni delle variabili, i riferimenti per il funzionamento (ad esempio password Wi-Fi, indirizzo IP del computer dove gira FLRIG, bus I2C per comandare i led ecc), la configurazione di pulsanti encoder e Led / The configuration area in which we find libraries to be included, variables declaration, setup references (such as Wi-Fi password, I2C bus addressing and so on), definition for buttons-encoder-led
la parte dove vengono dichiarate le variabili stringa che contengono i comandi XML-RPC che potremo inviare alla radio dal nostro Pod / Area in which XML-RPC commands we’re going to use are defined and associated to a string variable
la funzione Setup dove vengono inizializzati i servizi che useremo (il terminale seriale ad esempio) / As always present the “Setup Funcion” that takes care of initializing resources we need (for example Serial Terminal)
la funzione Loop che girando continuamente ascolta se vi sono eventi in arrivo da pulsanti/encoder/pulsante dell’encoder / As always the “Loop Function” that takes care continuously of listening for events by buttons or encoder or encoder button and act in consequence
un gruppo di funzioni di servizio / A group of “service functions”
NOTA la parte di configurazione è l’unica nella quale andranno inseriti i dati della propria installazione. Per fare ciò occorre editare lo sketch (in Arduino il programma viene chiamato sketch) ed inserire i propri dati.
nome rete Wi-Fi (SSID)
password per accedere alla Wi-Fi
IP Address del computer sul quale gira FLRIG (usare la VIRGOLA per separare i numeri !)
porta sulla quale FLRIG è in ascolto (di default 12345)
nome del nostro Pod (di default è FLRIG-Pod ma volendo si può cambiare)
REMARK the configuration area is the ONLY one part you’ll have to touch because your local data must be indicated there. To do this you’ve to edit the sketch (in Arduino world the code is called “sketch) then compile it and finally upload it to your nodeMCU. Local data to be customized are:
Wi-Fi network SSID
Wi-Fi password
IP address for computer hosting FLRIG (use COMMA to separate figures instead of dots !)
FLRIG port (12345 by default)
FLRIG Pod Hostname by default set as FLRIG-Pod but you can place whatever name you like
Nella parte che contiene le variabili stringa dei comandi XML-RPC trovate i comandi che utilizzo nel mio Pod. A ciascuna variabile ho assegnato un nome mnemonico per renderne più comodo il loro impiego
In the area containing XML-RPC commands string you’ll find commands I’m going to use in my Pod assembly. I assigned to each command string a mnemonic variable name in order to easily recall them
I comandi disponibili sono molti di più per cui chi vuole può editare lo sketch e creare nuove stringhe XML con i comandi desiderati. Poi dovranno essere associarte ai pulsanti o all’encoder. Per visualizzare la lista dei comandi disponibili aprire FLRIG poi da Help selezionare xml-help
Available commands are many more indeed so anybody may add or substitute commands as he likes, of course to do this a basic knowledge in Arduino programming is requested. To have a look to the whole command set open FLRIG then under Help you’ll find “xml-help”.
ed a questo punto si aprirà la lista dei comandi disponibili (scorrere la lista)
by clicking on “xml-help” a window will be opened and the complete command list will be shown (scroll it because is a long one)
Principio di funzionamento / How code works
Quando viene generato un’evento ad esempio il pulsante PF1 (Split On/Off nel mio caso) viene premuto il programma entra in questo punto:
When an event occours for example button PF1 has been pressed (in my case PF1 means SPLIT) this program segment will be involved
se il pulsante PF1 è stato premuto brevemente dovrà inviare il comando Split ON alla radio, come ?
per prima cosa dovrà mettere il Vfo B frequenza e modo uguali al Vfo A. Per farlo copierà nella variabile “di servizio” chiamata PostData il contenuto della variabile stringa xml chiamata Set_B_eq_A e chiamerà la funzione FLRIG_Send_Command la quale trasmetterà al server XML-RPC di FLRIG il comando nel formato XML (ovvero il contenuto della variabile PostData che ora contiene il comando per eguagliare il Vfo B al Vfo A) che FLRIG è in grado di capire ed eseguire
per dare tempo ad FLRIG di attualizzare il comando ho messo un’attesa di 100 mS
ora deve dire alla radio di mettersi in Split quindi:
copierà nella variabile “di servizio” chiamata PostData il contenuto della variabile stringa xml chiamata Split_On e chiamerà la funzione FLRIG_Send_Command per inviarla a FLRIG
if button PF1 has been shortly pressed it means that (I’m always referring to my assembly) we’re asking to switch ON the SPLIT, how does it satisfy our request ?
first of all it will set Vfo B frequency and mode equal to Vfo A. To do this the content of variable named Set_B_eq_A will be copied into the “service variable” named PostData. Now PostData variable contains xml string that FLRIG will use to command the rig to set Vfo B = Vfo A.To perform the action the function named FLRIG_Send_Command will be invoked and executed.
to let FLRIG to actualize the command just sent I placed a 100mS delay
now it’s time to tell the rig to switch SPLIT On so
the “service variable” named PostData will be loaded with variable named Split_On contents and sent to FLRIG by invoking FLRIG_Send_Command function
se il pulsante PF1 è stato premuto a lungo dovrà inviare il comando Split OFF alla radio, per farlo
copierà nella variabile “di servizio” chiamata PostData il contenuto della variabile stringa xml chiamata Split_Off e chiamerà la funzione FLRIG_Send_Command per inviarla a FLRIG
if button PF1 has been long pressed it means that (I’m always referring to my assembly) we’re asking to switch OFF the SPLIT and to do that:
the “service variable” named PostData will be loaded with variable named Split_Off contents and sent to FLRIG by invoking FLRIG_Send_Command function
Questo è il principio di funzionamento e vale per i 4 pulsanti e la rotazione dell’encoder (in questo caso l’evento è legato alla sua rotazione). L’evento generato dalla pressione dell’encoder invece non richiede la trasmissione a FLRIG in quanto serve solo ad attribuire la funzionalità dell’encoder ad una delle 6 scelte possibili
The above described functional principle covers for all events coming from the 4 buttons and encoder rotation (in this case the event is generated by left/right rotation). The events generated by encoder button press are finalized to cycle encoder assignment to one of the six possible funcions so they doesn’t need to be sent to FLRIG
Per vedere se i comandi xml arrivano a FLRIG e se ci sono errori occorre aprire la finestra di Trace
To see monitor xml command sent to FLRIG you can open FLRIG Trace window
questo è il trace del comando Split Off
here below the trace after the command Split Off was sent
….. that’s all folks !
spero il mio progetto vi sia piaciuto e possa essere utile per la vostra attività. Questa è la versione iniziale, in futuro penso di aggiugere nuove funzionalità come ad esempio pa possibilità di inserire i dati di riferimento (Wi-Fi rete e password ad esempio) da terminale seriale senza dover modificare il programma ed una pagina web che mostri lo stato di funzionamento. Buon divertimento !!!!!
I hope you liked my project and I hope you’ll find it useful for your activity. This one is the initial release, for future I think to add additional features such as local reference data configuration via serial terminal avoiding so to touch the code and a web page that shows current status.Have fun !!!!!
Per agevolare il compito di chi volesse cimentarsi nella realizzazione dei miei progetti basati su Arduino ho preparato un file contenete le librerie per Arduino presenti sul mio computer che ho utilizzato per lo sviluppo degli sketches presentati.
Ovviamente ce ne sono più di quelle richieste, quindi consiglio di scompattare il file “zippato” in una cartella temporanea e copiare nella propria cartella “libraries” sotto Arduino quelle richieste dal progetto che si sta realizzando.
This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.
Cookie strettamente necessari
I cookie strettamente necessari dovrebbero essere sempre attivati per poter salvare le tue preferenze per le impostazioni dei cookie.
Se disabiliti questo cookie, non saremo in grado di salvare le tue preferenze. Ciò significa che ogni volta che visiti questo sito web dovrai abilitare o disabilitare nuovamente i cookie.