Software utili per elettronica pratica

seven-segment-development-board-kit

Kikad

Software di schematic capture e sbroglio di circuito stampato gratuito open source.
Non ha alcuna limitazione di utilizzo.
Nel suo utilizzo si segue il tipico workflow per un programma di questo tipo: schematic capture, seguito da sbroglio del circuito stampato.
Include un visualizzatore di file Gerber ed una simulazione tridimensionale del modello del circuito stampato.

Versioni per Mac OSX, Windows e Linux.

Download Kikad
Sito dell’autore: Kikad

FidoCADJ

È un software per il disegno di circuiti elettrici e circuiti stampati gratuito. Funziona su Windows, Mac OSX e Linux. Non dispone di alcuna funzione automatica di sbroglio ne’ di validazione e controllo di regole di progetto per gli stampati.
Semplicissimo da utilizzare, ma richiede comunque una scorsa al manuale di istruzioni. Comodissimo per realizzare rapidamente schemi circuitali da usare su Web ed in pubblicazioni.

L’autore è l’italiano Davide Bucci, che lo ha sviluppato in modo da essere compatibile con FidoCad.
Download FidoCadJ

 

LTSpice

È la versione di Spice con annesso schematic capture realizzata da Linear Technology.  Rende l’utilizzo di Spice facile ed adatto ad un utilizzo anche didattico per utenti non esperti.
Gratuito e privo di limitazioni.
Le librerie fornite ovviamente supportano i componenti di Linear Technology, ma è possibile usarlo per simulare altri dispositivi, dato che è possibile (anche se non del tutto immediato) importare modelli di terza parte.

Download di LTSpice ed altri software Linear Technology

 

Java ed il trionfo della mediocrazia made in Italy

java-prize-for-mediocrityLa meritocrazia ed i successori di George Abnego

Java e Meritocrazia… No, non è un refuso, non intendevo scrivere meritocrazia. La mediocrazia è esattamente l’opposto del concetto di meritocrazia, è il trionfo degli uomini da riporto, gli eredi evoluti dell’uomo medio, il trionfante George Abnego. Questi pavidi eredi della specie umana  regrediscono allo stato animale e vengono addomesticati dai cani, che nel frattempo sono diventati senzienti, e gli esseri umani, con una simpatica inversione di ruoli fantascientifica, vengono utilizzati dai cani come animali da compagnia. L’unico errore dell’autore (William Tenn, “Null-P“) è l’ambientazione, non è l’America, ma l’Italia la patria di elezione dell’ Uomo Medio.

In Italia hanno vinto loro: i medi, sono quelli che sostengono sempre e comunque che “non si possa avere davvero completamente torto” su qualcosa, quelli che cercano sempre le posizioni equidistanti, quelli che non si espongono mai, i moderati.

Li riconoscete quando su Facebook dopo un post su un argomento appena un po’ controverso, per esempio su un tema come Edward Snowden, vi scrivono “io non capisco di queste cose”. Non sia mai detto che si espongano e prendano una posizione, in pubblico, se non sono già sicuri di schierarsi a favore del vincitore.

I Medi sono al governo da ben oltre 70 anni, e questo paese è alle soglie di una catastrofe finanziaria e sociale. I loro antenati sono illustri, e gli anticonformisti pensanti sono strani mutanti destinati ad un futuro incerto. “Con Francia o Spagna, purché se magna” è da sempre il motto dei Medi. Il loro attributo precipuo è quello di “tenere famiglia”. In nome dei loro pargoli sono dispostissimi a tagliarvi la gola e pugnalarvi alla schiena, il tutto senza mai abbandonare una bellissima presunzione di “superiorità morale” e magari facendovi anche una bella ramanzina sul Natale, i buoni sentimenti, e naturalmente “la famiglia”.

Nelle aziende ed in genere dovunque si prendano delle decisioni, “l’uomo medio” decide, ma con moderazione, nel dubbio non assume posizioni e si limita a fare quello che fanno tutti gli altri. Non rischia, e se anche pensa, non parla.

Per ogni problema c’è una soluzione, questa soluzione è Java 🙂

 

Non è che manchino delle alternative tecnologiche convincenti a Java, ed è ben strano che le Università Italiane, in tema di Informatica abbiano deciso di adeguarsi tutte a questo linguaggio, a fronte di esperienze assai diverse in altri paesi, che hanno visto nascere per scopi eminentemente didattici linguaggi come OCAML, prodotto dalla ricerca Francese dell’INRIA o notevoli esperimenti su Haskell, ML in paesi non così lontani. Certo, in altri paesi, per esempio, non si copia, ed è raro incontrare molte persone con stesso cognome in Università e, per non farsi mancare nulla, nel Tribunale della stessa grande città.

Da noi cosa si è scelto di fare? Formare i giovani su Java. Così, perché è l’industria del paese che ce lo chiede. Certo, ottimo, adesso finalmente abbiamo una Università che forma le professionalità richieste, peccato che sia la formazione che le richieste siano obsolete e basate su assunti di assai dubbia modernità.

Risultato: oggi tutta l’amministrazione pubblica e tutto il sistema paese Italia, di fatto utilizza applicazioni che vengono definite commerciali da Oracle, che circa sei anni fa ha acquisito Sun, l’azienda che ha progettato e diffuso Java.
Din din, si inizia a sentire il tintinnio di qualcuno che verrà scrollato, se serve a testa in giù, per far cadere le monete in suo possesso…

E’ cosa saggia usare “come monocoltura” Java in campo Informatico? Da un punto di vista di performance, e quindi economico, non può esserlo, dato che un linguaggio basato su un processore virtuale, simulato, non potrà mai essere altrettanto efficiente di un un linguaggio che compila codice nativo su un processore reale. Quindi qualsiasi strategia che utilizzi un linguaggio le cui prestazioni siano sistematicamente dominate da un altro, non può essere altrettanto scalabile, ne’ altrettanto efficiente.

Il vero problema non è in se’ Java,  che è una rispettabilissima piattaforma informatica, è la forma mentis da hoarding, che porta alla sua scelta “perché così non si può sbagliare”, tutti insieme, tutti seguendo la stessa identica moda, senza riflessione e senza aperture. E’ lo stesso fenomeno che una volta portava a scegliere IBM perché “mai nessuno è mai stato licenziato per aver scelto IBM” (cosa diventata in seguito falsa, si, i tempi cambiano, anche se lentamente).

Se realizzo un sistema su Cloud, difficile ambire ad una diffusione planetaria, se parto con Java: un mio concorrente che spende la metà quanto a risorse e tempo di calcolo, può fornire lo stesso mio servizio a metà dei miei costi….

E quando si prendono decisioni per la nazione che succede?
Iniziate a chiedervi quanto ci costano i server ed i sistemi in Java dell’Agenzia delle Entrate, che servono decine di milioni di utenti.
Davvero davvero non si poteva fare di meglio? Suvvia, ma lo avete visto come funzionano “bene” i software per le dichiarazioni?

Ed è niente rispetto alla porcheria di avere sistemi diversi, regione per regione, in nome dell’Autonomia Locale, ma soprattutto del finanziamento delle grandi società di consulenza, che realizzano non un unico sistema informatico, per esempio, per l’assistenza medica, ma tante versioni diverse quante sono le regioni: una bellissima moltiplicazione di pani e di pesci, per esempio a spese di chi ha un bar e si ammazza di lavoro da mattina presto a sera tardi per tentare affannosamente di sbarcare il lunario.

Aperto, Gratis, Multipiattaforma… oppure no?

 

Si, ma “Java è aperto, multipiattaforma e gratis!”. La frase precedente contiene tre predicati, e sono falsi tutti e tre.
Java non è aperto, perché il nucleo fondante del successo economico di Java, il compilatore HotSpot non è ne’ aperto, è basato su una tecnologia squisitamente proprietaria, ne’ tantomeno è multipiattaforma, le piattaforme su cui gira Java Hotspot non sono più di quattro o cinque, e non includono, per esempio, ARM64. Se volete utilizzare Java su MIPS, o simili (e potrebbe servirvi, per esempio in un contesto embedded), tanti auguri e tante care cose!
Senza Hotspot potete solo usare OpenJDK, e quest’ultima Virtual Machine non ha le prestazioni che ormai date per scontate quando parlate di Java, e senza le quali Java non avrebbe mai raggiunto la sua diffusione.

Inoltre, piccola ciliegina sulla torta: Java non è gratis, in particolare non lo è  Java SE. Java è gratis per lo sviluppo, cioè lo è esattamente quanto il database Oracle, che, come sviluppatori potete scaricare liberamente, ed anche utilizzare per sviluppare un sistema; ma la cui licenza commerciale vieta espressamente che possiate farci alcunché di non didattico senza pagare.
Pensavate che fosse gratis? Sbagliavate.

Open Source tua nonna…

La cosa più divertente è tutta la spocchiosa retorica Open Source su Java, che è “open source” ma a macchia di leopardo, cioè quel che basta per essere del tutto proprietario.
Ma a parte il rischio di dover pagare cifre arbitrarie per la vostra “tecnologia gratuita”, dopo averci basato sopra l’intera infrastruttura informatica del paese, Java non è a la migliore soluzione possibile, nemmeno ignorandone il costo.

Vi siete mai chiesti perché non si scrivono Web Server in Java, se non come esercizio didattico? Perché non ha senso, dato che i Web Server devono essere programmi efficienti ed affidabili.

Se non vi rendete conto che Java è meno efficiente, per esempio del C++ o di qualsiasi altro linguaggio compilato nativamente, e dite di occuparvi di informatica, probabilmente non avete una cultura informatica degna di questo nome, ed avete serie lacune nella comprensione, a livello di sistema, della tecnologia che vi circonda: probabilmente avete un titolo da “informatici”, ma non capite davvero gli strumenti che utilizzate, e siete un po’ analoghi a chi guida un’automobile, ma non ha una idea nemmeno una molto vaga di come possa funzionare uno spinterogeno.

Se non siete informatici, potrebbe anche andare bene, ma il dramma è se siete informatici e prendete decisioni su cose che non capite, perché valutate il contesto, non valutate quali sono i pregi ed i difetti di una soluzione diversa, e soprattutto non sapete che esistono alternative. Avete in mano dell’aspirina e da bravi medici, la somministrate indifferentemente sia per il mal di testa che per il diabete e per la menopausa.

Anche nell’utilizzare Java, in Italia lo si fa comunque nel modo peggiore possibile, privilegiando le soluzioni che comportino una massimizzazione delle risorse da umane da impiegare: file di configurazione XML lunghi come romanzi, e tecnologie perverse come JSF, scartando qualsiasi soluzione “semplificante”. Lo scopo non è produrre un sistema che funziona bene: è produrre il numero massimo di billable hours che si riesca, va bene per tutti: grandi società di consulenza, dirigenti (massimizzazione del curriculum: ho guidato un sacco di sottoposti), ed anche del singolo consulente (“ho massimizzato il mio curriculum, ho inserito tante keyword nel mio CV”).
Ed è contento anche il selezionatore, che già non capisce che competenze deve selezionare, quindi figurati se non sfoltisce con “preparazione su Java”, “aggiornata” e con laurea magistrale e conoscenza della lingua Inglese.

Piccola parentesi sull’HR in Italia

Suvvia, in Italia i selezionatori chiedono la conoscenza della lingua Inglese ai contabili, a cui non serve mai, tranne per le sei multinazionali che ne hanno davvero bisogno e che non usano le aziende di selezione del personale.
Glielo andate a dire voi che ad un giovane che ha iniziato a lavorare tardi, che comunque a cinquant’anni la sua carriera sarà bruciata e che non riceverà più alcuna risposta ad un suo curriculum? Si, nel frattempo l’età pensionabile si allunga, e non si capisce che prima o poi, questa cosa potrebbe diventare, come dire, appena lievemente problematica.
Sul ruolo dell’HR nella disfatta di questo paese mi dilungherò in modo più diffuso in seguito.

L’uomo medio e le alternative a Java

Nello scegliere alternative, anche quando non usano Java, gli “uomini medi” alla fine seguono sempre e comunque mode.

Per esempio ci sono dei furbastri che auspicano un maggiore utilizzo di PHP nella pubblica amministrazione al posto di Java, un po’ come suggerire di spararsi nei testicoli come cura per il mal di testa, allo scopo di vendere più proiettili se siete degli armaioli.

Sempre per esempio, solo degli sviluppatori Italiani potrebbero pensare di sostituire un back end scritto in Golang e sostituirlo con uno in Ruby, e proporlo allo scriteriato cliente di turno come “miglioramento”, sfruttandone l’analfabetismo tecnico. Lo possono fare solo in Italia, dato che non c’è nessuno che possa capire la scelta, le implicazioni, e tanto il cliente non “capisce di fatti tecnici e soprattutto non li vuole capire”. Inutile progettare un sistema ad alte prestazioni: non verrà capito, ed il prossimo “conoscente meglio introdotto” lo massacrerà senza ritegno e senza capire.

Evoluzione della specie

Forse hanno ragione i “medi”, che si adeguano a quello che il cliente davvero vuole, e quel che vuole in Italia, un paese in cui il termine meritocrazia è privo di significato, e di sicuro non premia mai, è quasi sempre solo una gratificazione del proprio ego.

Infatti più sei intelligente in Italia, tanto meno è probabile che tu abbia un lavoro non precario, e possa come conseguenza riprodurti e passare i tuoi geni:  abbiamo una selezione sistematica di idioti, una eugenetica all’incontrario, in cui alla fine sopravvivano solo figli di politici ed ammanicati è un problema neanche tanto fantascientifico in questo paese.

Questa ripeto, non è una tirata su Java, ma su un modo di fare informatica.
Identicamente e con lo stesso spirito si può fare app mobili con un qualche framework multipiattaforma, oppure si può usare iOT con disinvoltura e totale assenza di consapevolezza e di ragionamento sulle conseguenze ed implicazioni in termini di sicurezza: la ricetta è sempre quella: seguire una moda, non pensare, non riflettere, ma limitarsi a seguire il branco.

La contromisura? Fare esattamente l’opposto, cioè riflettere, ragionare e tenere una mente aperta, effettuare di tanto in tanto degli esperimenti con altre tecnologie.

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.