
24Total shares Facebook LinkedIn TW Email WApp Telegram AbbonatiCon questo articolo iniziamo a parlare di un dispositivo Open Source molto versatile: il Theremino. Cominciamo col dire che la filosofia che guida gli ideatori del sistema Theremino è rappresentata dalla didattica e dalla collaborazione al fine di imparare a progettare applicazioni via via più complesse, senza perseguire obiettivi di tipo commerciale. I collaboratori si occupano solo di ricerca e contribuiscono collettivamente al miglioramento del sistema. I risultati sono condivisi e si vuole che restino liberi. Dopo questa breve introduzione, passiamo ad analizzare ed a descrivere questo dispositivo innovativo. Theremino è un sistema didattico adatto per interfacciare facilmente il PC con il mondo esterno. Attualmente sono già disponibili molti esempi di progetti […]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 1473 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Sistema grandioso, ma la cosa più interessante mi sembra la setta di geniacci pitagorici che ci sta dietro, date un’occhiata al sito… ho intravisto anche un progetto Theremino 3D che sembrerebbe un tool giocoso per l’apprendimento e l’approfondimento della fisica. Questo Theremino andrebbe sparato a grappolo nelle squole di oggi 😉 Da applauso.
Visto anche il sito.
Progetto splendido, Sono Daccordo con StefanoDS.. da introdurre nelle scuole. Ho già scritto ad uno dei progettisti.
Vedremo che sviluppo ci potrebbe essere, se ci sarà. Ma in tal caso vi terrò informati.
BUON NATALE A TUTTI VOI… che scrivete o leggete, non ha imprtanza
Ciao Daniele,
grazie per la segnalazione. Non conoscevo il progetto e sono abbastanza curioso di approfondire e testare qualcosa.
Sto leggendo un po’ di cose sul loro sito (piuttosto articolato e dettagliato, almeno su alcune parti) e ancora mi devo fare un’idea precisa delle potenzialita’ e dei limiti.
Per ora l’unica cosa che un po’ mi scoraggia (da utilizzatore quasi esclusivo di linux) e’ il fatto che tutto il software si basa su .net, e quindi occorre usare wine o mono.
Oltre a “dover” usare visual studio come ambiente di sviluppo (per lo meno senza complicare troppo le cose). Ovviamente nulla vieta di far un porting, visto che i sorgenti sono sotto GPL3.
Devo correggere un aspeto del tuo articolo, dove parli della velocita’ di comunicazione USB:
” Theremino comunica via USB nativa, a velocità fissa di 12 Mega baud. ”
In realta’, da quello che ho capito, questo non e’ corretto. Il theremino implementa la classe HID (non ho capito perche’ hanno scelto questa rispetto al CDC, ma lo chiedero’ quanto prima agli sviluppatori).
Da quello che ho letto tale classe supporta una velocita’ massima di 64kB/s, quindi ben inferiore ai 12MB/s indicati.
Tra l’altro, la classe CDC (implementata da arduino e utilizzata sul sistema host come com virtuale) dovrebbe supportare velocita’ di trasmissione ben superiori, permettendo di superare anche i limiti di 115Kb/s delle seriali fisiche. Il fatto che forse nell’arduino sia difficile arrivare a tali velocita’ puo’ dipendere dalle modeste capacita’ dell’AVR utilizzato o del firmware, ma non della classe USB utilizzata .
Tutto questo almeno da quel poco che ho capito finora, non essendo un profondo conoscitore dell’USB; se quindi ho scritto inesattezze prego chi ne sa di piu’ di correggermi.
Ciao Ivan, sono Livio il progettista dell’hardware del sistema Theremino.
Ti ringrazio per la segnalazione, ora controlleremo meglio ed eventualmente correggeremo la pagina interessata. Dovessi trovare altri errori segnalaceli, è un grande aiuto per noi. Abbiamo scritto centinaia di pagine, più quasi cinquanta applicazioni Open Source e manteniamo tutto questo, in quattro gatti che siamo, senza finanziamenti e senza pubblicità. E’ inevitabile che tra così tanto materiale qualche errore possa scappare.
E ora veniamo ai MegaByte. Senza bisogno di fare conti precisi, quello che volevamo far notare è che il sistema Theremino comunica in tempo reale con l’hardware, cosa che con Arduino è più difficile da realizzare, se non impossibile.
Molti ci hanno scritto che hanno tentato a lungo di farlo, ma che hanno dovuto usare Theremino per riuscirci. Nel nostro blog sono decine gli interventi su questo tema. Le pagine del blog con questi interventi sono molte, ne collego una o due, tanto per dare una idea:
http://www.theremino.com/blog/standalone-applications
http://www.theremino.com/blog/robotics-and-cnc
Uno dei casi più significativi sono i programmi di acquisizione per la geologia. Angelo Dolmetta, esperto Geologo e programmatore, che scriveva programmi di acquisizione fino dai tempi di Windows 95 e anche prima, ha provato a lungo con Arduino, ma non è mai riuscito ad acquisire velocemente. Con tre canali ADC faceva già fatica a raggiungere qualche centinaio di scambi al secondo (attenzione, qui si parla di acquisire direttamente con il PC, non di memorizzare sulla memoria dell’Arduino e poi inviare periodicamente i risultati al PC)
Con Theremino la applicazione Dolfrang, scritta da Angelo con la nostra collaborazione, non solo comunica, ma contemporaneamente visualizza anche un grafico in tempo reale. Sono 24 canali contemporanei a quasi 1000 FPS !: http://www.theremino.com/downloads/geology#dolfrang
Su questo stesso argomento nel nostro Blog puoi trovare molti utenti che spiegano come NON sono riusciti, con Arduino, ad avere un collegamento veramente fluido con il PC. E anche nel forum di Arduino molti interventi ne parlano.
Ancora grazie per l’attenzione e Buon Anno,
Livio
Abbiamo eliminato il problema alla radice. In fondo non è importante parlare di MegaByte, quello che conta è il collegamento fluido tra PC e Hardware, e questo il sistema Theremino lo fa, al di là di ogni dubbio. Guarda se ora il paragrafo ti sembra corretto (e grazie ancora per l’osservazione):
http://www.theremino.com/#arduino
Ciao Livio,
intanto grazie per i tuoi commenti. Ovviamente le mie note non erano indirizzate a criticare o sminuire le prestazioni del sistema Theremino ma volevano solo puntualizzare un aspetto tecnico… ma mi sembra che tu abbia capito perfettamente le mie intenzioni 🙂
Personalmente trovo che il nuovo paragrafo descriva meglio il sistema.
Grazie
Rispondo anche alle due ultime osservazioni:
1) Abbiamo usato HID invece di CDC per permettere un funzionamento immediato. Colleghi la USB e funziona, senza installare drivers.
2) Il porting su Linux sarebbe il benvenuto! Noi daremo tutto l’aiuto possibile. Non lo facciamo noi stessi perché, come già scritto, siamo in pochi e non abbiamo grandi risorse.
La cosa potrebbe essere affrontabile. In realta’ devo prima capire meglio come funziona il sistema e “provarlo con mano” per poi poter valutare come eseguire un eventuale porting. A tale scopo stavo pensando di aquistare almeno un master per iniziare a provare qualcosa.
Purtroppo il tempo e’ sempre poco e gli ambiti in cui lavoro al momento non hanno mai richiesto le peculiarita’ di un Theremino, ma qualche idea interessante potrebbe venire fuori.
Una volta capito bene come funziona il sistema, il protocollo e la logica mi piacerebbe:
1. provare a creare qualcosa per Android; ho esperienze in sviluppo di applicazioni HMI che si interfacciano a schede a microcontrollore (Atmel UC3B) tramite USB-CDC… si tratta di provare qualcosa con l’HID
2. provare a scrivere qualche software senza portarsi dietro il framework .net, soprattutto per schede embedded ARM tipo raspberry, beaglebone, ecc
3. capire se sia possibile, su schede tipo la BBB o Rpi, implementare direttamente il protocollo seriale per l’accesso agli slave senza disporre di un master (ammesso che la cosa abbia senso) e quindi collezionare direttamente i pin senza passare dall’USB
Magari di queste cose parleremo direttamente, appena avro’ le idee piu’ chiare.
Intanto grazie per la disponibilita’
Una cosa è fare il porting su Linux delle applicazioni ad alto livello (le 45 applicazioni che ora sono in DotNet), ma altro discorso sarebbe tentare di fare a meno dell’USB e del PC.
Il sistema Theremino permette ai non programmatori (artisti e studenti, ad esempio) di accedere a tensioni, motori e temperature. Questo è possibile perché l’HAL (Hardware Astraction Layer) fa il lavoro sporco e presenta i dati in modo semplice. Ma è anche possibile perché ci sono le nostre 45 applicazioni modulari che comunicano tra loro. Una si occupa dell’audio, l’altra del video, e così via…
Il sistema Theremino è un po’ come il LEGO, è componibile. E ha il suo centro nelle applicazioni sul PC, nella comunicazione USB e nel grande lavoro di interpretazione e unificazione dei dati, fatto dall’HAL. Se togli il PC, l’USB e l’HAL, non resta più niente. Non solo si perderebbe la facilità di uso, ma diventerebbe anche più difficile da usare di un Arduino.
Sarebbe come prendere i mattoncini di plastica del LEGO e cercare di farne un motore diesel. Si potrebbe anche tentare ma, non essendo concepiti per quello, le prestazioni finali sarebbero scarse, o peggio, dopo tanto lavoro si scioglierebbe tutto in una pozza di plastica.
Per applicazioni senza PC è meglio usare Arduino. I motivi sono ben spiegati in queste pagine:
http://www.theremino.com/blog/standalone-applications
http://www.theremino.com/introduction/communications#standalone
Ciao Livio,
non ho nessuna intenzione di eliminare il PC e tutto il “framework” correlato. Sarebbe un peccato rinunciare a tutto il buon lavoro fatto!
Probabilmente mi sono spiegato male per quello che riguarda l’ultimo punto. Cerco di chiarire:
Le varie schede ARM (beaglebone black, raspberryPi, …) sono appunto dei PC-equivalenti. Vi puo’ girare un S.O. Linux e quindi a mio parere sono assolutamente assimilabili a PC… non sono Personal ma Computer si’ 🙂
Del resto mi pare che sul vostro sito ci siano i riferimenti ad una raspbian gia’ preparata per l’uso del vostro HAL via mono.
L’idea espressa nel punto 3 era quindi questa:
ipotizzando di fare il porting dell’HAL in Linux (senza usare mono) e ipotizzando di compilarlo anche per ARM (e quindi eseguibile sulle SBC di cui sopra), essendo tali SBC dotate di una UART si potrebbe forse eliminare lo strato fisico USB implementando di fatto un bridge software tra bus seriale (verso gli slave) e l’HAL. Quindi la funzionalita’ del firmware del Master potrebbe essere eseguita direttamente sulla SBC, riducendo l’HW (quindi meno costi e soluzioni piu’ compatte).
Tutte le applicazioni da voi sviluppate continuerebbero quindi ad essere utili ed utilizzate (attraverso hal “nativo”); eventualmente facendone il porting anche di queste, ove utile e necessario.
Pero’, lo ripeto, questa e’ solo un’ipotesi tutta de verificare e probabilmente mi mancano ancora troppi elementi e la conoscenza approfondita dell’architettura Theremino per capire se sia sensata o praticabile.
Adesso ho capito, e mi sembra molto sensato. Più di tutto, il porting dell’HAL in linguaggio nativo di Linux e di Android, sarebbe fantastico.
Concordo.
Non conoscevo questo progetto e mi sembra interessante. Penso sarebbe utile ed interessante vedere altri progetti ed altre idee. Che cosa avete in mente per il futuro?
Sono molto contento di aver constatato che questo progetto non è l’ennesima cinesata. Ottimo lavoro.
Bellissimo!
Da qualche tempo uso Arduino, ed effettivamente su alcuni aspetti comincio a sentire delle limitazioni.
Per attività piccole e portatili una volta sviluppato un prototipo con Arduino, si dovrà provvedere a qualcosa stand-alone.
Per progetti come una stampante 3d ad esempio credo che il sistema Theremino sia perfetto.
Vorrei provare questo sistema ma da dove si comincia?.
Ho visitato il sito ma non ho capito quale hardware è il minimo per iniziare.
Grazie per l’aiuto che mi vorrete dare.
Sergio
Ciao Sergio,
da quello che ho capito il minimo per iniziare e’ il modulo master. Anche se probabilmente un kit di base prevede almeno 1 master + 1 slave, per testare anche la parte di protocollo seriale.
Sul sito del progetto trovi i link anche di qualche rivenditore. Appena mi libero un po’ volevo anche io acquistare 1master+1slave e iniziare a fare qualche prova.
Per quello che riguarda le altre tue considerazioni, non ho ben capito:
arduino e’ di per se un oggetto stand-alone (a differenza di Theremino). Semmai si potrebbe dire che a volte per certi progetti un arduino e’ sprecato o costa troppo, quindi si potrebbe creare una scheda custom usando sempre gli stessi atmel e lo stesso software.
Invece riguardo alla stampante 3D il discorso e’ un po’ piu’ articolato. Io non sono pratico e quindi lascio le considerazioni a chi e’ piu’ esperto, ma come prima obiezione potrei dire che costringere ad avere un PC sempre acceso durante una stampa puo’ essere scomodo e poco efficiente dal punto di vista energetico. Meglio un arduino (o chi per lui) che legga il G-Code da SD o comunque che riesca a lavorare anche in modalita’ stand-alone.
Grazie per le risposte!
Si in effetti intendevo proprio quello che dici:
“Semmai si potrebbe dire che a volte per certi progetti un arduino e’ sprecato o costa troppo, quindi si potrebbe creare una scheda custom usando sempre gli stessi atmel e lo stesso software.”
Ed infatti mi sono procurato il libro “Arduino e le tecniche di programmazione dei microcontrollori Atmel” oltre ad un’assortimento di vari micro acquistati su Mouser.
Il materiale è appena arrivato e comincerò a seguire gli esempi del libro….
Per quanto riguarda la stampa 3d effettivamente visti i tempi lunghi il pc rimarrebbe occupato per molto tempo.
Quindi ok un master ed uno slave.
Grazie ancora
Sergio.
Ciao Sergio, ti vorrei chiedere un’informazione. Sei poi riuscito a programmare il microcontrollore? Secondo te è una cosa fattibile per chi come me non ha esperienza di programmazione a basso livello?
Si sono riuscito, seguendo le istruzioni del Prof. Michele Menniti autore del libro “Arduino e le tecniche di programmazione dei microcontrollori atmel”.
Per la verità ho eseguito le cose più semplici utilizzando l’IDE di Arduino.
Non si tratta quindi di lavorare in assembler.
Quindi la risposta è se puoi programmare Arduino puoi fare molto ancora.
Auguri e fai sapere alla comunità i tuoi progressi.
Sergio.
Grazie per la risposta! Io vorrei usare il microcontrollore per raccogliere e trasmettere dati provenienti da dei sensori e questa mi sembra una buona soluzione. Naturalmente vi informerò sugli sviluppi futuri 😉
Grazie per l’articolo e complimenti agli ideatori del progetto. Non conoscevo l’esistenza di questo prodotto. EOS viene sempre in aiuto per questo anche se molto spesso faccio fatica a seguire tutti gli articoli pubblicati.
Mi piace il theremino e la sua comunicazione in realtime con il pc.
Particolarmente in mio interesse spettrometri e analizzatori e qui ci sono e i prezzi possono essere contenuti.
Davvero una bella iniziativa e soprattutto italiana!!!