Guida introduttiva ad Arduino per non vedenti, sperimentare e imparare in modo accessibile

Tempo di lettura: 11 minuti

Abbiamo già letto tra queste pagine, esempi di come le tecnologie assistive ci permettano di programmare in linguaggi ad oggetti o procedurali, come C, Java e Python.
Abbiamo capito come scrivere un algoritmo o come utilizzare una base dati.
Ma oggi faremo qualcosa di diverso, che unisce le competenze acquisite nello scrivere codice, affiancate ad un po’ di elettronica di base. Impareremo a prototipare con la scheda a microcontrollore più diffusa al mondo, si chiama Arduino e di certo avrete sentito parlare della sua flessibilità e delle grandi potenzialità che offre. Il tutto a prezzi davvero contenuti.
Come sempre, l’articolo non perderà mai di vista il concetto di accessibilità, cioè: come un non vedente può lavorare con questa scheda in modo accessibile? Scopriamolo insieme.

Arduino in parole semplici

La rete è piena di stupendi articoli tecnici su Arduino, c’è da sbizzarrirsi, ma un difetto che ci penalizza molto è la presenza costante di immagini e schemi non accessibili. A causa di tutto ciò non ci è possibile apprendere a pieno il funzionamento di Arduino ed avvicinarci a questo mondo potrebbe spaventarci. Cominciamo con il dire che la scheda Arduino esiste in versione originale, costo attorno ai 20€ e in diverse versioni clonate legalmente, dato che è un progetto open, e qui i costi scendono notevolmente. Io ho scelto di utilizzare la scheda originale. Il motivo della mia preferenza è stato quello di rimanere il più possibile fedele ad una soluzione standard, per essere certo della piedinatura, della forma e perchè in rete ci sono molteplici articoli basati proprio sulla scheda originale. Con l’esperienza, nessuno ci vieta di passare poi a un clone.
Con arduino possiamo fare di tutto, non poniamo limiti ai nostri progetti, certo, al salire della complessità delle nostre idee, devono aumentare le nostre competenze, ma è una cosa graduale.
Ma la scheda, sola, non fa molto, è come avere un motore di un’automobile senza però avere alcun altro componente della stessa, non ci faremmo nulla dei cavalli a nostra disposizione. Scopriremo infatti che questa scheda necessita di diversi componenti elettronici, per i quali non serve saldatura, con cui la scheda interagirà, sulla base di un software che scriveremo noi. semplice caso d’uso potrebbe essere quello di collegare ad Arduino un sensore che rileva la temperatura della nostra abitazione. Avremo bisogno della scheda Arduino, del sensore di temperatura, di una superfice su cui alloggiare il sensore (la breadboard), di alcuni fili, del software per fare funzionare il tutto e di corrente elettrica per dare vita al nostro progetto. Più difficile da spiegare che da fare.
Abbiamo parlato di software, del fatto che saremo noi a scrivere la logica del funzionamento della nostra scheda. Ebbene sì, oltre all’elettronica, ci dovremo occupare anche del software, quindi ci servono delle basi di programmazione e di logica, prerequisiti fondamentali. Il linguaggio con cui istruiremo Arduino si chiama Wiring, non vi spaventate, è un mix tra Java e C, nulla di difficile, ma soprattutto la rete pullula di esempi ed ogni componente elettronico è solitamente corredato dal rispettivo sketch per il corretto funzionamento. Quando sentirete parlare di “sketch” fate conto che è il listato di codice Wiring necessario al funzionamento della scheda con certi componenti, solitamente è contenuto in un file con estensione “.ino”. Arduino ci agevola nella scrittura del codice, infatti ci viene messo a disposizione un completo ambiente di sviluppo, l’Arduino IDE, che nelle ultime versioni è stato reso quasi del tutto accessibile, è comunque richiesto che sappiate utilizzare molto bene il vostro lettore di schermo, per questa guida farò riferimento, come sempre, ad NVDA.
Note:

  • Premetto che, di professione, non sono un elettronico, nel tempo qualche nozione di base va appresa, ma questo articolo non intende essere un riferimento anche per questa parte;
  • Inoltre, tutte le prove che farete, come utilizzerete la scheda e i possibili problemi o guasti, derivanti da tali pratiche, sono esclusivamente di vostra responsabilità, io non me ne assumo alcuna di esse. Se si prosegue con la lettura di questo articolo si accettano tali condizioni.
    • Dopo questa introduzione, è giunto il momento di fare sul serio.

      Parliamo di Arduino Uno rev 3

      Quando acquisterete la scheda Arduino, vi troverete tra le mani una piccola scatolina di cartone, dentro sarà contenuta la scheda. Non sono presenti fili, componenti esterni o altri cavi. Dovrete infatti acquistare anche il cavo usb maschio A / maschio B, necessario per alimentare e collegare la scheda al PC. Il cavo in oggetto è quello che viene utilizzato per le stampanti, da un lato è infatti presente il connettore quadrato, il maschio di tipo B, mentre al PC si collega il classico maschio di tipo A.
      In rete trovate molto sulla storia di Arduino, sul progetto, sui casi di utilizzo, qui mi concentrerò sul farvelo conoscere tattilmente, indicandovi la posizione delle varie connessioni e a cosa servono.
      Non dimenticate che stiamo parlando di Arduino Uno rev 3, questa premessa è doverosa dato che in commercio esistono davvero molte versioni di questa scheda, in base agli utilizzi che ne vogliamo fare, negli altri modelli cambiano le dimensioni, la potenza e la disposizione dei pin.
      Abbiamo detto che Arduino è una scheda basata su un microcontrollore, ma quale è la differenza con un microprocessore? Senza entrare troppo nel tecnico, un microcontrollore, a differenza di un microprocessore, integra in uno stesso chip il processore, la memoria permanente, la memoria volatile e i canali (pin) di I/O, oltre ad eventuali altri blocchi specializzati. La nostra scheda Arduino Uno integra un microcontrollore ATmega328, ricordiamoci di questo nome perchè lo ritroveremo nelle nostre sperimentazioni.
      Se siamo interessati all’argomento, possiamo trovare in rete le specifiche tecniche dettagliate di Arduino, del microcontrollore e di ogni suo componente, conoscere la scheda a fondo ci sarà utile in futuro per progetti più complessi.

      Arduino al tatto

      Conosciamo ora la scheda in modo specifico, basandoci sul tatto e la nostra memoria. Farò una panoramica esclusivamente indicativa, tralasciando connettori che non andremo ad utilizzare, per una panoramica più dettagliata vi rimando alla documentazione ufficiale.
      Prendiamo la scheda e appoggiamola su una superficie piana, ponendo il lato corto che presenta il connettore USB e il jack femmina di alimentazione alla nostra sinistra. In questo modo la scheda sarà difronte a noi, in senso orizzontale. Esplorando la scheda con le nostre mani, non abbiate paura di rovinarla, incontreremo, partendo dall’alto a sinistra, il piccolo tasto di reset, serve per riavviare la scheda, affianco incontreremo un pettine lungo per la restante larghezza della scheda, sul lato di sinistra, come già detto, potremo toccare il connettore femmina usb e il jack femmina per l’alimentazione, centralmente nella scheda potrete toccare il microcontrollore e in basso un secondo pettine, più corto di quello incontrato in alto.
      Iniziamo a parlare del modo in cui alimentare la scheda. Per i nostri primi esperimenti ci accontenteremo di alimentarla tramite il cavo usb di cui abbiamo parlato al paragrafo precedente. Tale cavo, collegato al pc, ci permetterà di alimentare la scheda e di programmarla tramite l’IDE Arduino. In futuro, quando i nostri prototipi prenderanno vita, potremo alimentare la scheda con una batteria da 9V collegata al jack femmina posto sotto al connettore usb, oppure potremo collegarla ad un power bank sempre con il medesimo cavo usb.
      Ma ora è importante che impariamo a conoscere i due pettini di cui abbiamo parlato prima, saranno loro il cuore dei nostri progetti, dato che i vari componenti elettronici che utilizzeremo verranno collegati alla scheda tramite essi.

      Il pettine in alto: i pin digitali e il primo GND

      Per chi inizia, questa è di sicuro una parte fondamentale da conoscere. Individuiamo lo zoccolo in alto con le nostre mani e a scheda spenta, proviamo a passare sulla sua superficie uno stuzzicadenti, spostandoci da destra a sinistra su di esso.
      Ci accorgeremo che il pettine è caratterizzato da una prima parte, composta da 14 fori, essi sono i pin digitali ai quali collegheremo fili e componenti esterni.
      Muovendoci verso sinistra incontreremo altri 4 pin, dei quali momentaneamente ci interessa solo il primo, quello di GND.
      Non premiamo con lo stuzzicadenti, non inseriamolo nei fori, ma serviamoci di esso solo per esplorare la superficie.
      Ecco un breve riepilogo di quanto appena detto:

      • partendo da destra, contando i fori, sono in totale 14, dal pin 0 al pin 13: servono come pin di ingresso / uscita digitali;
      • i pin 3,5,6,9,10,11 hanno capacità PWM;
      • i pin 0 e 1 sono i pin seriali di Arduino . La comunicazione seriale viene utilizzata per scambiare dati tra la scheda Arduino e un altro dispositivo seriale come computer, display, sensori e altro. Ogni scheda Arduino ha almeno una porta seriale. La comunicazione seriale avviene sui pin digitali 0 (RX) e 1 (TX) oltre che tramite USB;
      • proseguendo verso sinistra, il quindicesimo pin è chiamato GND e serve per il collegamento a massa dei nostri circuiti. I pin GND vengono utilizzati per chiudere il circuito elettrico e fornire un livello di riferimento logico comune in tutto il circuito.;
      • i successivi pin, che non utilizzeremo, sono chiamati nell’ordine: Aref, SDA e SCL.

      Attenzione: i 14 pin digitali sono numerati, sulla scheda, da 0 a 13. Ricordatevi questa informazione per quando scriverete il software. Infatti, per gestire il primo pin dovrete fare riferimento al valore 0 e così via.
      Vi segnalo il sito circuito.io dal quale recuperare molte altre specifiche tecniche sulla scheda e comunque se volete altre info in merito dalla rete, dovrete cercare con parole chiave come “pinout”, “pin layout” o ad esempio “data sheet”, naturalmente riferite alla versione di Arduino da analizzare.

      Il pettine in basso: pin analogici, gli altri GND e i 5v

      Analogamente a ciò che abbiamo fatto con il pettine in alto, eseguiamo le stesse operazioni preliminari con il pettine in basso, quello più corto.
      A scheda spenta, esplorandolo con il nostro stuzzicadenti, sempre da destra verso sinistra, individueremo per prima cosa 6 fori, essi sono quelli destinati ai collegamenti di tipo analogico.
      Successivamente incontreremo il pin VIN, di cui non ci occuperemo in questo articolo, 2 pin per il GND, un pin che fornisce una tensione di 5 Volt e uno che ne fornisce una di 3.3 Volt.
      Infine, incontreremo un pin di reset, uno chiamato IO ref e uno lasciato vuoto.
      Ecco un breve riepilogo di quanto appena detto:

      • partendo da destra, i primi 6 pin, sono a5, a4, a3, a2, a1 e a0: Arduino Uno ha 6 pin analogici, che utilizzano ADC (convertitore da analogico a digitale). Questi pin servono come ingressi analogici ma possono anche funzionare come ingressi digitali o uscite digitali;
      • proseguendo verso sinistra incontreremo il pin VIN;
      • l’ottavo e il nono pin sono due connessioni GND;
      • il decimo pin è quello che fornisce una tensione di 5 Volt;
      • il successivo fornisce invece una tensione di 3.3 Volt;
      • dal dodicesimo pin incontreremo, in ordine, un pin di reset, uno chiamato IO ref e uno lasciato vuoto.

      Anche qui, vi segnalo il sito circuito.io dal quale recuperare molte altre specifiche tecniche sulla scheda.

      Arduino IDE con NVDA

      Dal sito ufficiale di Arduino, potrete scaricare l’IDE per programmare la vostra scheda. Questo software è strutturato in modo semplice e supporta le tecnologie assistive vocali, noi lo useremo con il lettore di schermo NVDA.
      Wikipedia ci spiega che cosa è un IDE: “Un ambiente di sviluppo integrato (in lingua inglese integrated development environment ovvero IDE, anche integrated design environment o integrated debugging environment, rispettivamente ambiente integrato di progettazione e ambiente integrato di debugging), in informatica, è un software che, in fase di programmazione, supporta i programmatori nello sviluppo del codice sorgente di un programma.”.
      Consiglio di prelevare la versione “.zip” compressa dell’IDE, non quella installante. Il vantaggio di questa versione è che la potete decomprimere dove volete, eventualmente spostarla su una chiavetta e gestirla senza troppi automatismi.
      Per questo articolo introduttivo analizzeremo solo alcune funzionalità di base che ci serviranno per scrivere il nostro primo sketch.
      Come nelle precedenti guide, ho decompresso i software di sviluppo nella cartella “c:\sviluppo\” e nel caso specifico in “c:\sviluppo\arduino-1.8.13\”.
      Prima di eseguire il software, dobbiamo aver precedentemente collegato la scheda alla presa usb del nostro PC e settato correttamente il driver, per il corretto funzionamento sotto Windows.
      Collegata al PC, la scheda Arduino verrà riconosciuta, ma il driver assegnato dal sistema non ci consentirà di programmarla.
      Niente paura, infatti nella cartella “c:\Sviluppo\arduino-1.8.13\drivers” è presente il driver corretto, dovete solo cambiare quello rilevato dal sistema, recandovi nella sezione “Gestione dispositivi”. Vedrete che in questa sezione è presente una visualizzazione ad albero contenente tutti i dispositivi presenti sul vostro computer, potete accedere a tale sezione premendo il tasto “f6”. Individuata la scheda arduino, selezionatela e premete la combinazione “shift + f10” e nel menù che appare scegliete “aggiorna driver”, indicate successivamente di ricercare il driver localmente nel vostro pc e specificate in seguito il percorso dello stesso.
      È giunto il momento di eseguire l’IDE. Nella cartella “arduino-1.8.13” troverete il file arduino.exe, eseguitelo per avviare il software.
      Al primo avvio, verrà automaticamente creata la cartella “Arduino” nella folder “documenti” dell’utente locale con cui utilizzate il PC.
      Questa cartella è importante, conterrà i vostri progetti e la sottocartella “libraries” che nei progetti più complessi sarà quella in cui verranno installate le librerie aggiuntive, necessarie al funzionamento di componenti elettronici particolari o che aggiungono funzionalità software ad Arduino.
      La schermata iniziale di Arduino che vi si presenterà, sarà composta principalmente da una sezione editabile, il vero e proprio editor in cui andrete ad inserire il codice sorgente del vostro sketch.
      In alto è presente il classico menù principale della finestra, con le apposite scorciatoie da tastiera.
      Mentre invece premendo il tasto “f6” vi sposterete nell’area in cui l’IDE vi comunicherà eventuali messaggi di errore, compilazione, di stato o di sistema. Inizialmente questa area è vuota, ma ci troverete sovente del semplice testo con queste informazioni.
      Per verificare che l’IDE abbia rilevato correttamente la scheda Arduino, premete la combinazione “alt+t” per accedere al menù strumenti, spostatevi con “freccia giuù” fino alla voce scheda e verificate che sia selezionata Arduino Uno. In caso contrario potete selezionare voi manualmente la scheda, ma solitamente viene rilevata in modo automatico.
      Un’impostazione interessante è quella che serve per abilitare funzionalità avanzate di accessibilità. Bisogna infatti mettere un segno di spunta allla voce “Use accessibility features” nella schermata delle impostazioni, alla quale potremo accedere dal menù file “alt+f” selezionando la voce impostazioni.
      Una nota sulla lingua dell’IDE. In automatico viene selezionato l’italiano, non tutto è tradotto, si ha quindi una traduzione mista. Personalmente preferisco la lingua inglese, la potete impostare sempre dalla schermata delle impostazioni.

      Un Hello World per non vedenti

      Solitamente i sorgenti per scrivere un Hello World sono reperibili in rete e fanno riferimento al fatto di fare lampeggiare il led presente sulla scheda Arduino, tale led fa riferimento diretto al pin 13, ma nel nostro caso non lo vedremmo, quindi non avrebbe alcun senso.
      Ho pensato quindi ad un Hello World di tipo audio, che faccia emettere alla scheda una melodia, ma per poterla udire necessitiamo di un componente elettronico chiamato cicalino o buzzer. Tale componente si può acquistare in rete o in negozi di elettronica, a meno di 1€, l’importante è che acquistiate quello con soli 2 pin. In alternativa, se in casa avete dei giocattoli guasti o vecchi dei vostri figli, che emettono un suono, potete estrarre, se funzionante, l’autoparlante interno, adattissimo a questo esperimento, solitamente ha due soli fili. Potete anche provare ad utilizzare dei vecchi auricolari, ma qui la cosa si complica un pochino. Io per il mio primo esperimento, avevo utilizzato l’autoparlante presente in una vecchia cassa bluetooth, l’ho smontata ed ho estratto l’autoparlante.
      Torniamo al nostro buzzer. Quello di cui sono in possesso ha due piedini e uno dei due è più lungo dell’altro, possiamo individuarlo in modo semplice con il tatto. Ciò ci indica che il piedino con segno positivo è proprio quello più lungo.
      Non ci resta che collegare il buzzer al pettine più lungo di Arduino, quello in alto. Inseriamo il piedino con segno positivo al pin 11, cioè il dodicesimo a partire da destra. Mentre invece dovremo inserire il pin più corto nel connettore gnd, il quindicesimo a partire da destra.
      Ricordate che potrebbe cambiare il foro su Arduino in cui inserire il pin positivo in base alla larghezza del buzzer acquistato, dovete vedere voi come si adatta quello di cui siete in possesso, ricordate che potete anche piegare leggermente i piedini, facendo attenzione a non spezzarli.
      Assicuriamoci di avere collegato la scheda arduino al pc tramite il cavo usb e lanciamo il software Arduino IDE.
      Qui di seguito il listato da digitare o incollare:

      int buzzerPin = 11;

      void setup(){
      pinMode(buzzerPin, OUTPUT);
      }

      void loop(){
      tone(buzzerPin, 1000, 500);
      delay(1000);
      }

      Salvate premendo la combinazione “ctrl + s”.
      Non ci resta che fare l’upload dello sketch sulla nostra scheda Arduino, premendo la combinazione “ctrl + u” oppure tramite il menù sketch mediante la combinazione “alt + s” e poi spostandoci con freccia giù fino a trovare la voce “upload”.
      Dopo qualche secondo, se tutto è andato a buon fine, dovreste udire il più classico dei suoni, un beep alternato.

      La breadboard

      Non approfondiremo adesso la progettazione di circuiti complessi, dove Arduino da solo non basterà ed avremo la necessità di utilizzare una “breadboard” a supporto. Se non ne avete mai toccata una, immaginatela come una tavoletta, contenente una griglia di tanti piccoli fori. Ne esistono di varie dimensioni e se ne possono collegare diverse insieme. In modo molto intuitivo, i fori servono per inserire i componenti elettronici, secondo logiche prestabilite. Infatti, di norma, non si collegano i componenti direttamente sul pettine di Arduino come abbiamo fatto noi per un semplice esempio. Ma si utilizzeranno dei fili che collegati alla breadboard, daranno vita ai nostri circuiti.

      Materiale e componenti utili

      In rete ci sono diversi shop da cui comperare componentistica per il mondo Arduino. La quasi totalità di questi prodotti arriva direttamente dalla Cina. Personalmente, a parità di prezzo, preferisco acquistare direttamente da Amazon e da Ebay, ma in casi particolari ci si può servire anche di AliExpress o simili, state attenti solo alle spese di spedizione e ai tempi di consegna se acquistate direttamente dalla Cina.

      In conclusione

      Questo articolo vuole darvi un’idea, vuole essere un’introduzione generale su Arduino. Farvi capire che è possibile utilizzarla per prototipare, anche se si è non vedenti. Personalmente mi trovo molto bene, la sto utilizzando a livello didattico ed è molto utile per fare capire il collegamento che esiste tra software ed hardware. Come sempre, rimango a disposizione per segnalazioni e richieste di aiuto. Buon Arduino a tutti.

Pubblicato da

Alessandro Albano

Analista programmatore, formatore e tiflologo.