Qualche riflessione su Arduino

Arduino rappresenta uno dei pochissimi casi di successo recenti della didattica sui microcontroller ed in generale sull’elettronica. Il progetto Arduino fa notizia perché un sistema di sviluppo di terza parte ha venduto qualche milione di pezzi, ed ha in parte resuscitato un mondo abbastanza morente, quello dell’elettronica digitale, in particolare vista come passione, hobby, in modo creativo. A titolo di cronaca, non mi risulta che nemmeno Texas Instruments venda così tanti sistemi di sviluppo, che di solito sono dei prodotti di nicchia.
Veramente innovativo è stato, almeno inizialmente, il suo basso prezzo rispetto alle piattaforme professionali del tempo: prima di Arduino era normale che un sistema di sviluppo per microcontroller costasse qualche centinaio di Euro. Oggi però il  prezzo è un argomento un po’ stantio, dato che esistono sistemi di sviluppo professionali, per microcontroller dell’ultima generazione, a prezzi inferiori rispetto ad un Arduino “originale”, ed a differenza di quest’ultimo parliamo di schede con tanto di debugger e processori moderni a 32 bit.

Il progetto di Arduino in se non è degno di nota quanto ad innovazione: utilizza componenti che erano già vecchi sette-otto anni fa, e l’essere basato su dei microcontroller obsoleti, ad otto bit, con una tecnologia di montaggio pass-through, componenti saldabili “a mano” da parte di appassionati è stato parte del suo successo.  Questo suo “essere obsoleto” ed a bassissimo costo, soprattutto per chi lo produce, è stata per molti versi la sua fortuna.

Arduino rappresenta anche luci ed ombre tipicamente Italiane quanto a modo di agire di chi lo ha diffuso. A parte l’elettronica, che non è niente di cui vantarsi in pubblico, il contributo più rilevante del progetto su cui si basa è il suo software, che è solo un adattamento di Wiring.

È interessante che il contributo di Wiring e del suo autore  sia stato a lungo taciuto ed ignorato, al punto da dare molto fastidio ad appassionati che lo vedono, probabilmente giustamente, come una appropriazione di un progetto open source preesistente, e suscitando numerose polemiche (basta dare una scorsa ai commenti sui forum per farsi un’idea).
Tra l’altro, appare veramente pessimo, ed in piena tradizione accademica Italica, l’appropriarsi dei frutti della ricerca di uno studente, dimenticandosi di citarlo persino nei credits per qualche tempo.

Personalmente trovo un po’ raccapricciante l’agiografia ufficiale: progettato “in un pomeriggio”, senza sforzo, con una ombra di superominismo e faciloneria tipica di chi sottostima la difficoltà di quello che non fa, infarcita di una retorica sull’open source falso perbenista piuttosto opportunista: il progetto è Open Hardware, ma ce ne si dimentica per castigare “i brutti cloni cinesi pieni di difetti”, che, quando non usano contraffazioni del marchio, hanno pieno diritto di produrre quante schede vogliono, e, per inciso, funzionano benissimo, spesso meglio dell’originale, che presenta numerosi problemi di qualità anche a livello di semplice circuito stampato (vedi per esempio i connettori male allineati).
I soci fondatori, divisi tra Fondazione e Srl Italiana sono riusciti addirittura a litigare  tra di loro sulla proprietà del marchio Arduino, a farsi causa, con esiti diversi in Italia ed altrove, per poi mettersi d’accordo e rappacificarsi: a guardarla da fuori sembra un po’ una brutta telenovela.

Visti gli ultimi sviluppi, è quindi probabilmente inutile chiamare “Genuino” Arduino in Italia, almeno sul nome.

Arduino è poco più di un giocattolo, obsoleto e limitatissimo, non utilizzabile per scopi professionali: se state utilizzando Arduino per sviluppare dei prodotti industriali che sperate si possano diffondere su larga scala, probabilmente questa è una indicazione della vostra scarsa cultura come progettisti, si c’è gente che si spaccia per firmwarista dopo aver caricato un paio di sketch e modificato qualche esempio.

Sempre recentemente, ATMEL ha iniziato a consentire di importare sketch Arduino in progetti in C++ del suo ambiente di sviluppo professionale. L’ambiente di sviluppo può anche essere professionale, ma i limiti del suo progetto rimangono, per esempio la comunità Arduino non sembra essere consapevole dell’esistenza dello standard MISRA, il che fa si che progettare sistemi che possano essere potenzialmente “sicuri per la vita umana” è a dir poco “fuori tema” quanto a scopo del progetto Arduino, che dovrebbe venire limitato ad uso didattico, artistico, e tenuto ben lontano da applicazioni in cui sia richiesta affidabilità garantita.

Non a caso,  quando si parla di utilizzo in campo industriale non posso non osservare che, per quanto validi possano essere i prodotti di Atmel, l’azienda che fabbrica i microcontroller presenti sulla board di Arduino, Atmel non è esattamente leader di settore, ed infatti è stata acquistata da Microchip Technologies (e non viceversa!). Microchip, la celebre casa dei PIC vendeva, già nel 2013 oltre un miliardo di chip all’anno, il che la ponw sullo stesso piano di altri giganti come Texas Instruments e Cypress Technology.

Oggi Arduino supporta anche delle schede basate su ARM a 32 bit, ma solo recentissimamente con Arduino M0 si è aggiunto un debugger on board, comunque non compatibile con le vecchie schede. Su Arduino o si riesce a montare un emulatore JTAG (che costa quanto una decina di schede “originali”), oppure quanto a debug si è costretti ad accontentarsi di scrivere messaggi sulla consolle seriale, come dicevo, una cosa piuttosto primitiva.
Se proprio cercate un clone di Arduino con prestazioni “moderne”, vale la pena prendere in considerazione la famiglia di schede “Nucleo” di ST.

Il linguaggio di programmazione di Arduino è in qualche modo un subset del C++, ed ispirato da Java,   il ambiente di programmazione è abbastanza semplice, ma non certo quello che ci si aspetta quando si parla di una IDE “industriale”.

Le librerie sono in genere scritte da appassionati, ed in genere si rivelano, non appena vengono aperte da un professionista, scadenti, piuttosto deludenti e di dubbia affidabilità: lunghissime funzioni scritte in “spaghetti code”, funzioni complesse interamente realizzate all’interno di un interrupt handler, non strutturato, codice scritto all’interno dei file di intestazioni e simili piacevolezze. Se pensate di poter usare Arduino all’interno di una startup che vuole fare automotive, vedo qualche criticità.

Per certi versi Arduino è un grosso regresso culturale, è la vittoria della scuola della semplificazione a scapito della cultura e della funzionalità, non sarebbe mai stato un successo negli anni 80 o 90 perché in Italia negli anni 80 o 90 la gente in Italia faceva davvero progettazione, e non era esclusivamente formata da un pubblico di consumatori spesso poco inclini allo sforzo intellettuale. Arduino è “facile”, anche nella sua didattica si saltano normalmente “concetti difficili” a costo di dare informazioni errate concettualmente: Arduino non ha alcuna “uscita analogica”, quando gli Arduinisti parlano di “porte analogiche” intendono i segnali digitali PWM, modulati in impulso, che permettono in qualche modo di regolare la potenza media, per esempio di un Led, ma non sono affatto delle uscite “analogiche”.
Se volete delle uscite “analogiche”, vi servono o tutt’altro genere di microcontroller, o degli appositi componenti esterni. Anche il linguaggio, gira intorno alle “difficoltà”: non si parla di programmi, ma di Sketch, quasi che scrivere uno sketch non sia la stessa cosa dello scrivere un programma.

Anche se la qualità delle librerie è non molto alta, per mettere insieme in quattro e quattr’otto un qualche accrocchio, quanto al “farlo in fretta”,  quasi sicuramente si vince con Arduino, lo sviluppo con l’ambiente di sviluppo di un microcontroller industriale è di maggior difficoltà, ma poi le prestazioni possono essere assai diverse: minore spazio, minori consumi, maggiore controllo, maggiore affidabilità.

Arduino può andare bene per un primo contatto con l’elettronica, ma è triste non riuscire a crescere ed andare oltre. Ciò detto, se volete un approccio facile, iniziate pure con Arduino, ma non pensate di rimanere solo a quello tutta la vostra vita di progettisti di sistemi digitali, si spera che “da grandi”, facciate altro.

Lascia un commento

You are not allowed to enter any URLs in the comment area.