Che cos’è Expansum
Expansum è un progetto tecnico indipendente nato per creare un collegamento semplice e diretto tra il software e il mondo fisico.
Permette a un programma eseguito su un computer o su un altro dispositivo dotato di sistema operativo di leggere ingressi e comandare uscite attraverso una connessione USB.
La comunicazione avviene mediante messaggi JSON semplici, leggibili e documentati. In questo modo il dispositivo può essere controllato utilizzando strumenti comuni, senza dipendere obbligatoriamente da un’applicazione o da un ambiente di sviluppo proprietario.
Expansum non vuole imporre un nuovo linguaggio di programmazione. Il suo scopo è rendere ingressi e uscite disponibili ai programmi che l’utente desidera creare.
Perché nasce Expansum
Collegare un’applicazione software a pulsanti, sensori, relè e attuatori richiede normalmente competenze elettroniche, firmware dedicato e tempo per integrare componenti differenti.
In molti progetti, però, l’obiettivo principale non è sviluppare una nuova scheda elettronica. L’obiettivo è verificare un’idea, costruire un prototipo, realizzare una prova pratica oppure creare un piccolo sistema di controllo.
Expansum nasce per ridurre questa distanza.
Il dispositivo si occupa dell’interazione con gli ingressi e le uscite, mentre il programma dell’utente può concentrarsi sulla logica dell’applicazione.
Questo permette di iniziare da operazioni semplici e concrete:
- leggere lo stato di un pulsante;
- rilevare il segnale di un sensore;
- comandare un relè;
- attivare un indicatore;
- contare eventi;
- registrare dati;
- creare sequenze e logiche personalizzate.
Come funziona
Il funzionamento di base può essere riassunto in quattro passaggi:
- il programma invia un messaggio JSON tramite USB;
- Expansum interpreta la richiesta;
- il dispositivo legge un ingresso oppure modifica lo stato di un’uscita;
- Expansum restituisce una risposta al programma.
Il programma rimane responsabile della logica generale dell’applicazione.
Può leggere gli ingressi, confrontare valori, utilizzare variabili, prendere decisioni, comandare le uscite e registrare informazioni.
Expansum svolge il ruolo di collegamento tra questa logica software e i segnali fisici.
Lo stesso comando è sempre disponibile in due forme equivalenti: come comando testuale diretto da terminale (in italiano) e come messaggio JSON, quest’ultimo con alias disponibili in diverse lingue. La struttura completa dei comandi, delle risposte e degli errori è descritta nella documentazione del protocollo.
Libertà di programmazione
Expansum è progettato per essere utilizzato senza un software proprietario obbligatorio.
L’utente può interagire con il dispositivo attraverso:
- un terminale;
- uno script Python;
- un programma scritto in C o C++;
- un’applicazione con interfaccia grafica;
- un servizio locale;
- un software didattico;
- altri strumenti compatibili con la comunicazione USB e con il formato JSON.
La scelta del linguaggio e dell’ambiente di sviluppo dipende dall’applicazione, dalle conoscenze dell’utente e dal sistema operativo utilizzato.
Il protocollo deve rimanere comprensibile e documentato, in modo che possa essere implementato anche senza dipendere da una libreria specifica.
Eventuali librerie ed esempi software avranno lo scopo di facilitare il lavoro, non di limitare le possibilità disponibili.
Funzionamento locale
Expansum è pensato per funzionare localmente.
Per leggere ingressi o comandare uscite non deve essere necessario utilizzare un servizio cloud, creare un account online o mantenere una connessione permanente a Internet.
Il programma e il dispositivo possono comunicare direttamente attraverso USB.
Il funzionamento locale offre diversi vantaggi:
- maggiore controllo sul sistema;
- minore dipendenza da servizi esterni;
- facilità di utilizzo in laboratori e reti isolate;
- possibilità di lavorare anche senza accesso a Internet;
- gestione diretta dei dati prodotti dall’applicazione.
L’eventuale connessione a una rete o a un servizio remoto rimane una scelta del programma sviluppato dall’utente, non un requisito imposto dal dispositivo.
Prototipazione e sviluppo rapido
Uno degli obiettivi principali di Expansum è facilitare la prototipazione.
Un programmatore deve poter verificare rapidamente un’idea senza progettare immediatamente un circuito elettronico completo.
Un laboratorio deve poter creare una postazione di prova senza sviluppare un firmware specifico per ogni esperimento.
Uno studente deve poter osservare la relazione tra una condizione scritta nel programma e un segnale fisico reale.
Expansum può essere utilizzato come base per:
- prototipi software e hardware;
- banchi di prova;
- esperimenti didattici;
- acquisizione di segnali digitali;
- comando di piccoli carichi attraverso interfacce appropriate;
- automazioni leggere;
- dimostrazioni tecniche;
- applicazioni locali personalizzate.
Il progetto privilegia una partenza semplice. Le funzioni possono essere approfondite gradualmente, seguendo le necessità reali dell’applicazione.
Imparare attraverso applicazioni reali
La formazione è una parte fondamentale del progetto Expansum.
L’area Impara non deve limitarsi a spiegare dove collegare un cavo o come inviare un comando. Deve aiutare a comprendere il rapporto tra programma, logica ed elementi fisici.
Le lezioni partiranno da operazioni elementari:
- riconoscere il dispositivo;
- stabilire la comunicazione USB;
- leggere un ingresso;
- impostare un’uscita;
- interpretare una risposta JSON.
Successivamente potranno affrontare argomenti più complessi:
- operatori logici AND, OR e NOT;
- variabili;
- memoria degli stati;
- temporizzazioni;
- contatori;
- sequenze;
- registrazione degli eventi;
- salvataggio dei dati;
- diagnostica;
- realizzazione di applicazioni complete.
Ogni lezione deve avere un obiettivo pratico e verificabile.
Il risultato non deve essere soltanto comprendere un comando, ma imparare a utilizzare quel comando all’interno di un progetto reale.
Un sistema aperto agli sviluppatori
La documentazione del protocollo ha un ruolo centrale.
Un protocollo chiaro permette a programmatori e sviluppatori di creare strumenti compatibili con Expansum utilizzando linguaggi, sistemi operativi e interfacce differenti.
Questo può favorire la realizzazione di:
- librerie;
- applicazioni desktop;
- strumenti da terminale;
- interfacce grafiche;
- software didattici;
- sistemi di registrazione dati;
- programmi di test;
- applicazioni commerciali sviluppate da terzi.
Expansum non deve diventare un ambiente chiuso nel quale ogni funzione dipende da un unico programma ufficiale.
Il progetto deve invece fornire una base stabile sulla quale possano essere costruite soluzioni differenti.
Un progetto destinato a crescere
Expansum nasce con funzioni essenziali, ma è progettato pensando a una futura famiglia di dispositivi.
Prodotti differenti potranno offrire quantità e tipologie diverse di ingressi e uscite, mantenendo per quanto possibile principi di comunicazione comuni.
La crescita del progetto dovrà rispettare alcuni obiettivi:
- mantenere semplice l’utilizzo iniziale;
- documentare chiaramente ogni funzione;
- distinguere le caratteristiche dei diversi dispositivi;
- conservare la compatibilità quando tecnicamente possibile;
- evitare modifiche non necessarie al protocollo;
- permettere ai programmi di identificare il dispositivo collegato;
- indicare chiaramente versioni hardware, firmware e protocollo.
La compatibilità non deve essere soltanto dichiarata. Deve essere verificabile attraverso specifiche precise ed esempi riproducibili.
Che cosa Expansum non vuole essere
Expansum non viene presentato come sostituto universale di un PLC industriale.
Non è un sistema destinato automaticamente a ogni tipo di macchina, impianto o processo.
Non deve essere utilizzato per funzioni di sicurezza senza dispositivi, progettazione e certificazioni specificamente adatti a tale scopo.
Expansum è uno strumento per collegare software, ingressi e uscite in applicazioni compatibili con le caratteristiche tecniche del dispositivo utilizzato.
Prima di collegare sensori, attuatori o carichi reali devono essere sempre verificati:
- tensioni ammesse;
- correnti massime;
- modalità di collegamento;
- isolamento richiesto;
- condizioni ambientali;
- comportamento in caso di errore;
- requisiti di sicurezza dell’applicazione.
Le specifiche del singolo prodotto devono avere sempre la precedenza sugli esempi generali presenti nelle guide.
Principi del progetto
Lo sviluppo di Expansum segue alcuni principi fondamentali:
- semplicità prima della complessità;
- comunicazione leggibile e documentata;
- funzionamento locale;
- nessun cloud obbligatorio;
- nessun software proprietario obbligatorio;
- libertà nella scelta del linguaggio di programmazione;
- documentazione tecnica accessibile;
- esempi pratici e riproducibili;
- attenzione alla formazione;
- compatibilità progettata nel tempo;
- limiti tecnici dichiarati chiaramente;
- crescita graduale basata su necessità reali.
Obiettivo finale
L’obiettivo di Expansum è permettere a più persone di trasformare un programma in un sistema capace di osservare e controllare elementi reali.
Un ingresso non deve essere soltanto un morsetto.
Un’uscita non deve essere soltanto un valore elettrico.
Entrambi devono diventare risorse comprensibili e utilizzabili dal software.
Expansum vuole offrire questo collegamento attraverso dispositivi semplici, un protocollo leggibile e una documentazione che accompagni l’utente dal primo comando fino alla realizzazione di applicazioni complete.