Elettronica Maker - I Prototipi: Elettronica e Maker

Pagina creata da Vittoria Falcone
 
CONTINUA A LEGGERE
Elettronica Maker - I Prototipi: Elettronica e Maker
Elettronica
&
    Maker                          n° 2 - 2018

Braccio Robotico
antropomorfo con ATMEGA

Capacimetro digitale
con Arduino

Realizza
il tuo primo PCB!

Arduino...
alimentato a batteria

... e molto altro!

I Prototipi:
Tutte le Tecniche di Costruzione
Elettronica Maker - I Prototipi: Elettronica e Maker
Elettronica
&
      Maker    EDITORIALE                                    r.armani@elettronicaemaker.it

                   Connessioni
La concretezza è indubbiamente una delle caratteristiche positive e distintive
dei tecnici che però, d'altro canto, spesso cedono anche alle lusinghe della
fretta. Concretizzare un progetto significa, tra l'altro, dover costruire un prototipo
quantomeno funzionante. Chiunque abbia spaziato negli sconfinati campi di
applicazione del bit&Byte o delle grandezze analogiche, sa bene che dovrà andare
incontro all'assemblaggio, fase "dolorosa ma necessaria", che inevitabilmente
si frappone tra il progetto in versione cartacea e il prototipo che vivrà finalmente
di vita propria, con il consueto pulsare di LED e il succedersi delle informazioni
sul display. Chi può dire di non aver realizzato, almeno una volta, un obbrobrioso
collegamento "in aria" tra componenti discreti, solo per ansia e (appunto...) fretta
ingovernabili che spingevano verso una soluzione veloce ma disordinatissima
e raffazzonata? Sono proprio queste disgraziate esperienze a condurre lo
sperimentatore verso tecniche di collegamento razionali, disciplinate e, proprio
per questo, funzionali e affidabili. La copertina di E&M di questo numero illustra
qualcosa di non troppo familiare per i lettori più giovani e non mancherà certo
di scatenarne la curiosità: i collegamenti "Wire-Wrap" rappresentano un vero
caposaldo nell’evoluzione delle tecniche di cablaggio dei circuiti a basso livello
di integrazione, prevalentemente digitali. In uso fino agli albori degli anni '80,
sono stati sostituiti da sistemi più pratici ed economici, anche se non sempre più
Elettronica Maker - I Prototipi: Elettronica e Maker
n° 2 - 2018

                                        4

                                        24
affidabili. Oggi si dispone di ben      30
altro e in questo numero della
rivista se ne parla ampiamente in un    40
articolo di Mario Rotigni. A chi poi    52
volesse davvero cimentarsi nel fare
"il grande passo", Girolamo D'Orio
racconta, da vero "Maker", come
realizzare in modo autonomo il
primo circuito stampato con risultati   62
di assoluto rilievo!

Buona Lettura.
                     Roberto Armani

                                        70
                                        74
Elettronica Maker - I Prototipi: Elettronica e Maker
Tecniche di
Costruzione di Prototipi
                                                                         di Mario Rotigni
                                                           m.rotigni@elettronicaemaker.it

Nell’iter progettuale, la fase
sicuramente più coinvolgente è
proprio quella della realizzazione
                                       I   n questo articolo passeremo in rassegna
                                           le principali tecniche costruttive di circuiti
                                       elettronici amatoriali (e non). Per ciascuna
vera e propria del prototipo.          delle tecniche introdotte si descriveranno
È il momento nel quale il risultato    brevemente pregi e difetti. Qualunque sia la
del nostro lungo lavoro, ovvero        tecnica costruttiva scelta, prima di mette-
idee, disegni, pseudo-schemi,          re mano ai componenti fisici è necessaria
variazioni, revisioni e molto altro,   una accurata attività di preparazione. Anzi-
prendono finalmente forma e            tutto va sempre steso lo schema elettrico,
sostanza, diventando qualcosa di       seguendo alcune elementari norme che ne
fisico e (si spera...) funzionante!    aumentano la chiarezza e facilità di lettura.
                                       Tutti gli ingressi devono essere sulla sini-
                                       stra del foglio, le uscite sulla destra. Pre-
                                       feribilmente le connessioni all’alimentazio-
                                       ne positiva devono essere verso l’alto e le
                                       connessioni a massa verso il basso.
                                       Resistori condensatori ed induttori vanno
                                       disegnati in verticale o orizzontale. I bloc-
                                       chi elementari costituenti lo schema devo-
                                       no essere chiaramente individuabili, ren-
                                       dendo evidente il percorso dei segnali dagli

4 • Elettronica & Maker n° 2- 2018
Elettronica Maker - I Prototipi: Elettronica e Maker
ingressi alle uscite. Qualora lo schema sia         BREADBOARD
stato ricavato da sorgenti terze ed alcune          Pur essendo disponibili da vari decenni
di queste regole non siano rispettate, si           le breadboard hanno conosciuto un nuo-
raccomanda di copiare lo schema secondo             vo picco di popolarità sull’onda del movi-
il formato suggerito. Questo servirà anche          mento maker e della diffusione di Arduino.
a meglio comprendere il funzionamento del           Possiamo considerare le breadboard come
circuito. Una volta completato lo schema è          una matrice di contatti elettrici a molla con
necessario stendere un piano di cablaggio,          alcune connessioni precostituite. Il passo
disegnando i vari componenti e le loro inter-       della matrice è convenientemente pari a un
connessioni nel modo più ordinato e pulito          decimo di pollice, 2,54 mm il passo stan-
possibile. Gli incroci tra le connessioni do-       dard dei circuiti integrati dual in line, che
vrebbero essere in questa fase minimizzati.         risultano quindi direttamente inseribili sul-
Come vedremo, oggi tutta questa attività di         la breadboard senza necessità di ulteriori
preparazione viene grandemente semplifi-            zoccoli.
cata dall’uso di programmi su pc.                   La figura 1 mostra una breadboard sol-

Copertina: esempio di cablaggio complesso con la tecnica Wire-Wrap, lavori in corso, non tutte
le connessioni sono completate. Notare l'ordine nella disposizione dei fili.

                                                                     Elettronica & Maker n° 2 - 2018 • 5
Elettronica Maker - I Prototipi: Elettronica e Maker
der-less, figura 2 rende evidenti le con-         disegnato a mano e curando di minimizzare
nessioni disponibili. Le righe esterne sono       lunghezza delle connessioni ed incroci. Si
tipicamente riservate alla distribuzione di       iniziava realizzando tutte le connessioni di
massa e alimentazione. I componenti ven-          massa, poi tutte le connessioni di alimen-
gono inseriti direttamente nella matrice,         tazione, curando di colorare sullo schema
curando di non creare cortocircuito tra i         elettrico i collegamenti eseguiti ed usando
terminali, le interconnessioni sono poi com-      fili di colore diverso per il positivo, massa e
pletate con filo rigido o semi-rigido, sco-       segnali. Quest’ultimo accorgimento facilita
perto dall’isolante per pochi millimetri alle     in seguito l’ispezione finale, eventuali mo-
due estremità. Lavorando ordinatamente            difiche e correzione di errori. Si passava poi
il montaggio procede in modo semplice e           alle interconnessioni tra i componenti, rea-
spedito.                                          lizzando quindi le connessioni di segnale. Il
Il grande vantaggio di questo metodo di co-       lavoro era terminato quando tutte le maglie
struzione e che non richiedere alcuna sal-        dello schema elettrico risultavano colorate.
datura. Un altro grande vantaggio è il fatto      Oggi il lavoro è ulteriormente semplificato
che una volta finite le prove, il circuito può    dalla disponibilità di programmi come Frit-
essere completamente smontato e la brea-          zing, che consentono di disegnare lo sche-
dboard può essere riutilizzata per realizzare     ma elettrico e poi direttamente il cablaggio
circuiti completamente diversi. Tradizional-      su un’immagine della breadboard, mante-
mente si stampava uno schema elettrico            nendo il collegamento allo schema con le
del circuito da realizzare. Si piazzavano tut-    connessioni evidenziate come “elastici”
ti i componenti attivi e passivi sulla bread-     http://fritzing.org/home/.
board, seguendo il piano di assemblaggio          Ne consegue che le connessioni tra com-

Figura 1: La breadboard catturata dal programma Fritzing prima di iniziare piazzamento di
componenti e collegamenti.

6 • Elettronica & Maker n° 2 - 2018
Elettronica Maker - I Prototipi: Elettronica e Maker
Figura 2: La breadboard in Fritzing con evidenziati i collegamenti interni tra le righe esterne
(tipicamente usate per le alimentazioni) e le semi-colonne, tipicamente usate per l'inserzione
dei componenti attivi e passivi e le loro interconnessioni (tutte le semicolonne hanno le
medesime connessioni interne, solo le due più a sinistra sono evidenziate).

ponente e componente sono predefinite               megahertz. Tipiche applicazioni possono
rendendo praticamente nulla la possibilità          essere circuiti digitali, interfacce con micro
di errori. È buona norma collegare tra posi-        controllori, prototipizzazioni veloci di inter-
tivo nell’alimentazione e massa un ohmetro          facce con sensori preamplificati. Non risulta
con cicalino prima di iniziare il cablaggio.        invece adatta quando si voglia lavorare con
Diventa in questo modo immediato identi-            segnali analogici a basso livello, frequen-
ficare un eventuale cortocircuito creato per        ze elevate, radiofrequenza ed in generale
errore, cosa che sarebbe molto più difficol-        per circuiti sensibili al rumore elettrico. Un
tosa con il circuito completamente mon-             altro limite nell’applicazione deriva dall’af-
tato. La breadboard si presta per verifiche         fidabilità della matrice di contatti. Questa
veloci di piccoli circuiti mentre non è intesa      è determinata anzitutto dalla qualità dei
costituire una soluzione duratura a causa           materiali impiegati ma i ripetuti inserimenti
della sua fragilità meccanica. La lunghezza         ed estrazioni inevitabilmente comportano
non ottimizzata dei fili, le capacità ed indut-     uno stress meccanico con degrado del-
tanze parassite intrinseche in questa strut-        la stabilità di contatto. Questo fenomeno
tura costituiscono uno dei maggiori limiti          può facilmente essere esasperato dall’uso
all’applicabilità. Questo fa sì che la bread-       di fili di sezione non adatta o dai terminali
board sia meglio adatta a circuiti con livelli      dei componenti di sezione troppo ampia.
di segnale almeno dell’ordine delle centina-        È impossibile, malgrado gli svantaggi pre-
ia di millivolt e frequenze limitate a pochi        sentati, sconsigliare l’uso della breadboard

                                                                     Elettronica & Maker n° 2 - 2018 • 7
Elettronica Maker - I Prototipi: Elettronica e Maker
risultando questa troppo pratica e veloce           gressivo degrado o danneggiamento per-
nella verifica di sotto circuiti. Si raccoman-      manente delle mollette di contatto. Spesso
da anzitutto una selezione accurata prima           sono disponibili presso lo stesso fornitore
dell’acquisto, evitando di riferirsi al prezzo      della breadboard confezioni di fili preta-
come unico parametro, ma verificando an-            gliati a varie lunghezze e spellati opportu-
che la disponibilità di un minimo di dati tec-      namente. Una sorgente alternativa di filo
nici. È opportuno in particolare informarsi         adatto a basso costo è costituita dai cavetti
circa la qualità e tecnologia del contatto e        telefonici multipolari usati per il cablaggio
la sezione dei fili raccomandata, curando           in edifici (controllate sempre la sezione del
di farne buona provvista. Si raccomanda di          filo ottenuto prima di utilizzarlo).
rispettare sempre la sezione massima sug-
gerita, evitando di forzare l’inserimento di        MILLEFORI PUNTO-PUNTO
conduttori o terminali di componenti trop-          Tecnica definita in vari modi, probabil-
po grandi, cosa che risulterebbe in un pro-         mente la definizione punto-punto è quella
                                                                      che rende meglio l’idea
                                                                      nella nostra lingua. Tutte
                                                                      le connessioni in questo
                                                                      caso sono eseguite con
                                                                      filo saldato, a partire da
                                                                      una scheda circuito stam-
                                                                      pato su cui è riportata una
                                                                      trama di connessioni pre-
                                                                      definite, simile alla brea-
                                                                      dboard, in vari formati. La
                                                                      base isolante può essere
                                                                      realizzata in vari materia-
                                                                      li, dalla economica ba-
                                                                      chelite alle stesse resine
                                                                      FR4 utilizzate per i circu-
Figura 3: Un circuito stampato per cablaggio punto-punto             iti stampati. Il formato più
compatibile con la breadboard di Fig. 1 e 2. Potrebbe essere         semplice è una matrice di
una soluzione di montaggio più duraturo e robusta, una volta         piazzole con foro centrale,
verificato il funzionamento del circuito sulla breadboard. Il        spaziate di un decimo di
cablaggio può essere anche in questo caso guidato dalla              pollice (2,54mm) per le ra-
documentazione stampata da Fritzing.                                 gioni già viste, o del dop-

8 • Elettronica & Maker n° 2 - 2018
Elettronica Maker - I Prototipi: Elettronica e Maker
pio (circa 5 mm), utile qualora si utilizzino   mo numero. Ciascuno sviluppa la tecnica
componenti discreti di una certa potenza        di cablaggio che gli è più congeniale, l’au-
dissipata, più che circuiti integrati. Tutto    tore preferisce realizzare come prima cosa
quanto detto per quanto riguarda la fase di     una solida distribuzione di massa e alimen-
preparazione di schema e piano di assem-        tazione, dopo aver piazzato tutti i compo-
blaggio restano validi. Avendo a che fare       nenti attivi e passivi, sotto la guida di un
con saldature il detto inglese “check twice     disegno in scala 1:1. Anche in questo caso
solder once” (verifica due volte e salda una    Fritzing si rivela molto utile. I terminali dei
sola) deve sempre guidare la realizzazione      componenti possono essere ripiegati lato
pratica. Insistendo troppo con il saldatore     rame ed utilizzati per corte connessioni
su piazzole di piccole dimensioni, è possi-     verso i componenti vicini, in generale però
bile infatti causarne il distacco dal suppor-   sarà necessario tagliare un filo della misu-
to isolante, con danno irreparabile.            ra minima richiesta e spellarne le estremità
L’errore umano è inoltre sempre in aggua-       per scoprire pochi millimetri di conduttore
to. L’immediato vantaggio rispetto alla bre-    nudo e procedere poi a saldatura.
adboard consiste nella maggiore robustez-       I fili possono essere anche di sezione mol-
za meccanica ed elettrica, cosa che rende       to diversa, naturalmente in funzione delle
il metodo applicabile per realizzare l’ap-      correnti che devono sopportare, rendendo
plicazione finale, naturalmente nel caso        il cablaggio adatto anche ad applicazioni
in cui si preveda un esemplare singolo o        relativamente ad alta corrente. Il tempo ri-
comunque una riproduzione in limitatissi-       chiesto per un assemblaggio è sicuramen-
                                                te maggiore rispetto alla breadboard, in
                                                particolare a causa della massiccia attività
                                                di spellatura fili richiesta. Qualcuno trova
                                                conveniente l’uso di filo auto-spelante sot-
                                                to l’azione del calore generato dal salda-
                                                tore. Si deve fare attenzione a non toccare
                                                l’ isolante con la punta del saldatore per
                                                evitare di sporcarla, rischiando poi di com-
                                                promettere le corrette saldature dei con-
                                                duttori. Un conduttore scoperto erronea-
                                                mente dal calore espone anche al rischio
Figura 4: Circuito stampato "mille-fori"        di creare cortocircuiti indesiderati.
per cablaggio punto-punto, senza alcuna         Nel caso si abbia a che fare con tensioni
connessione pre-definita.                       relativamente elevate è consigliabile au-

                                                                 Elettronica & Maker n° 2 - 2018 • 9
Elettronica Maker - I Prototipi: Elettronica e Maker
mentare la distanza di isolamento rimuo-             Usare un saldatore di piccola potenza, con
vendo piazzole di rame intermedie per                punta di dimensioni adeguate a compo-
evitare il rischio di scariche superficiali. È       nenti e piazzole da saldare.
importante utilizzare fili di colore diverso,        Utilizzare lega saldante in filo sottile con
ad esempio nero per la massa, rosso per              anima disossidante. Mantenere la punta
l’alimentazione positiva, blu per il segnale         del saldatore ben pulita, fare in modo che
principale e così via. Questo rende l’ispe-          la lega saldante venga fusa dal calore tra-
zione finale e le quasi inevitabili modifiche        smesso da piazzole e terminali da connet-
più facili. Questo sistema di montaggio in           tere e non direttamente dalla punta del sal-
generale non è adatto a circuiti radiofre-           datore.
quenza, a causa della mancanza di un dif-            Nel caso di componenti a montaggio su-
fuso piano di massa.                                 perficiale non si deve mai toccare il com-
Prima di rinviare il lettore a uno dei tanti         ponente con la punta del saldatore.
tutorial sulla saldatura disponibili in rete,        Una piccola quantità di lega va depositata
ricordiamo qui brevemente le regole auree.           sulle piazzole e poi fusa toccando la piaz-
                                                               zola in modo da non trasferire
                                                               eccessive quantità di calore ai
                                                               microscopici componenti smd.
                                                               Usare in ogni caso la quantità
                                                               minima di lega saldante, rimuo-
                                                               vere il saldatore solo dopo aver
                                                               permesso alla lega di distribuirsi
                                                               fluidamente sul giunto di salda-
                                                               tura ed al disossidante di com-
                                                               pletare la sua azione di pulizia.
                                                               Questo richiede normalmente di
                                                               mantenere il contatto tra la pun-
                                                               ta del saldatore ed il giunto da
                                                               saldare per uno o due secondi.
Figura 5: Altra variante di Circuito stampato "mille-fori"     Ricordiamoci di ventilare l’area
con righe interconnesse. Risulta semplice interrompere le      di saldatura perché non è mol-
connessioni orizzontali seguendo le esigenze del proprio       to salutare respirare i fumi che
cablaggio, servendosi di un taglierino o di un trapano a       si sviluppano. Una variante del
bassa velocità con punta svasate per rimuovere il rame         metodo punto - punto è il co-
allargando i fori dove richiesto.                              siddetto “dead bug”. In questo

10 • Elettronica & Maker n° 2 - 2018
caso le saldature sono fatte direttamente           già indovinato). In passato apparecchiatu-
tra i terminali dei componenti, mantenen-           re prodotte in serie limitate sono state rea-
do le connessioni cortissime. Il nomignolo          lizzate con questa tecnica.
deriva dall’abitudine di montare i circuiti         Gli utensili manuali erano in tal caso so-
integrati con i piedini verso l’alto, posizio-      stituiti sulla linea di montaggio da utensili
ne che ricorda appunto un insetto defunto.          elettro-pneumatici. Il wrappino spesso in-
Ad un più veloce assemblaggio, fanno ri-            clude uno spelafili per rendere più pratico
scontro maggiore difficoltà nelle modifiche         e veloce il cablaggio. Il link seguente pre-
e nella gestione di circuiti con numerosi           senta una sintetica ma chiara spiegazione
componenti.                                         della tecnica wire-wrapping, con illustra-
                                                    zioni che mostrano le fasi del cablaggio e
WIRE-WRAP                                           gli utensili utilizzati
Tecnica forse un po’ desueta, ma interes-           https://www.jameco.com/Jameco/work-
sante se non altro per ragioni storiche, è un       shop/TechTip/wirewrap.html
metodo di cablaggio punto-punto che non             Occorre dire che sia il filo che zoccoli ed gli
fa uso di saldature. Tutti i componenti sono        utensili risultano piuttosto costosi.
montati su zoccolo particolare, con lunghi
terminali a sezione quadra-
ta con spigoli vivi. Le con-
nessioni sono fatte con filo
sottile strettamente avvolto
sui terminali degli zocco-
li con un apposito utensi-
le (familiarmente chiamato
wrappino). L’avvolgimento
risulta molto compatto ro-
busto prestandosi anche
alla realizzazione di circuiti
di una certa complessità. In     Figura 6 Altro esempio di cablaggio Wire-Wrap. Alcuni
caso di errori risulta sem-      componenti passivi (condensatori di filtraggio delle
plice srotolare il filo e pro-   alimentazioni) sono saldati direttamente ai pin degli zoccoli
cedere alla correzione, ser-     destinati a ricevere circuiti integrati digitali. La saldatura è
vendosi di un altro utensile     fatta prima di iniziare il cablaggio a filo. Le piccole etichette
apposito (swrappino, come        bianche sul circuito di destra identificano il circuito integrato
il lettore avrà certamente       in accordo con lo schema elettrico, aiutando ad evitare errori.

                                                                       Elettronica & Maker n° 2 - 2018 • 11
PCB                                               foratura potrebbe essere evitata.
Il circuito stampato, in inglese Printed Cir-     Accenneremo solo al fatto che il circuito
cuit Board da cui la sigla PCB comune-            stampato può essere costituito da molti
mente usata, è certamente la tecnica co-          layer, alternando strati di isolante a layers
struttiva più prossima allo stato dell’arte,      conduttori, permettendo la costruzione di
tra quelle disponibili per l’amatore.             applicazioni compatte e complesse, ripro-
Si accennerà qui soltanto brevemente a            ducibili in serie con prestazioni ripetibili.
questa tecnica in quanto Elettronica &            Il circuito stampato permette una elevata
Maker ritornerà presto sull’argomento in          qualità di interconnessione anche per se-
modo più ampio e dettagliato. Il circuito         gnale di basso livello ed elevata velocità,
stampato è sostanzialmente un supporto            grazie alla possibilità di realizzare diffuse
isolante su cui sono incollati fogli sottili in   distribuzioni di alimentazione e massa.
materiale conduttore, tipicamente rame,           Induttanze e capacità parassite non sono
comunemente identificati con il termine in-       affatto assenti ma hanno il vantaggio di
glese layer (strato).                             essere predicibili, attraverso software di
L’isolante può essere economica bachelite         simulazione, mantenendo valori prossimi
o le più pregiate “vetroniti”, sostanzialmen-     tra un esemplare e l’altro del circuito stam-
te fibre di vetro annegate in resine. Isolanti    pato. Non basta naturalmente realizzare un
più pregiati e costosi sono disponibili per       circuito stampato invece che un cablaggio
applicazioni ad alta frequenza ed alta tem-       filo per avere buone prestazioni elettriche.
peratura. In ogni caso, sia le piazzole di        Viceversa è necessario un accurato studio
connessione dei terminali dei componenti,         del posizionamento dei componenti e delle
sia le connessioni tra di loro sono riportate     interconnessioni.
su ogni layer con inchiostri resistenti alla      Anche se questo processo è oggi grande-
corrosione. Il layer è poi esposto all’azione     mente assistito da programmi su PC, an-
di agenti chimici che rimuovono il rame ri-       che open source, il tempo richiesto è cer-
masto scoperto, lasciando le sole impronte        tamente sensibile. Questo rende il circuito
di metallo richieste per le interconnessioni e    stampato sicuramente la soluzione prefe-
le saldature, il “circuito stampato”, appun-      ribile nel caso di produzione in più esem-
to. In generale, un’operazione di foratura è      plari, piccole medie o grandi serie o quan-
poi necessaria per permettere l’inserimen-        do siano necessarie buone caratteristiche
to dei componenti con terminale passante.         elettriche in termini di basso rumore ed
Nel caso di un circuito a singolo layer, ove      elevate frequenze operative. La robustezza
si utilizzino solo componenti a montaggio         meccanica e la durabilità, unite all’aspet-
superficiale (smd), teoricamente la fase di       to professionale nella realizzazione, certa-

12 • Elettronica & Maker n° 2 - 2018
Confronto tra le diverse tecniche costruttive, con vantaggi e svantaggi secondo il giudizio
soggettivo dell'autore

mente lo rendono molto attraente anche             CONCLUSIONI
nel settore hobbistico. Dobbiamo notare            Abbiamo visto alcune tra le principali tecni-
che componenti compatti come circuiti in-          che costruttive di prototipi di circuiti elettro-
tegrati in contenitore Ball Grid Array sono        nici alla portata di hobbisti e maker, cercan-
unicamente utilizzabili con tecniche circui-       do di fare una classificazione che ne evidenzi
tostampato, non essendo accessibili                benefici e svantaggi, aiutandoci così nella
i terminali.                                       scelta della tecnica più adatta al circuito che
                                                   abbiamo in lavorazione.
PCB ‘DA ASPORTO’                                   Naturalmente questo non esaurisce l’argo-
Una variante della tecnica PCB, utile quan-        mento, invitiamo anzi i lettori a descrivere le
do si lavori con soli componenti a montag-         loro tecniche di realizzazione preferite. Notia-
gio superficiale, consiste nel partire da una      mo che contaminazioni sono possibili e con-
piastra circuito stampato e realizzare attra-      venienti tra una tecnica e l’altra. Ad esempio
verso fresatura le separazioni invece che le       le connessioni punto-punto su una basetta a
connessioni, lasciando intatte aree di rame        passo di foratura standard si prestano bene
su cui saranno poi saldati i componenti smd.       per integrare circuiti stampati preesisten-
Questa tecnica è ben descritta nel tutorial di-    ti, ad esempio Arduino e le sue schede di
sponibile in                                       espansione, con circuiti disegnati ad hoc per
https://www.maximintegrated.com/en/                realizzare le funzioni di nostro interesse.
app-notes/index.mvp/id/1110 .

                                                                     Elettronica & Maker n° 2 - 2018 • 13
Alimentiamo
Arduino a batteria
                                                                  di Giovanni Carrera

                                                        g.carrera@elettronicaemaker.it

Spesso, per esigenze pratiche,
sentiamo la necessità di affrancare
il nostro progetto dai vincoli
                                       L   a capacità dei power bank, ormai
                                           molto diffusi e reperibili anche a costi
                                       bassi, è molto alta, comunemente mag-
imposti dai cavi d’alimentazione       giore di 2000mAh, anche se alcuni co-
da rete. Una soluzione semplice        struttori cinesi stampano valori poco ve-
ed economica è quella di usare un      ritieri, come accade per le batterie in essi
‘mobile power bank’ per alimentare     contenute.
Arduino o altri circuiti a 5v.         Questo tipo di alimentazione è particolar-
                                       mente adatto per sistemi portatili e molto
                                       compatti, e fornisce un’autonomia di pa-
                                       recchie ore. Io uso questi dispositivi già
                                       da qualche anno.

                                       IL POWER BANK
                                       Esso serve per dare energia ai nostri
                                       smartphone o tablet, quando hanno le
                                       batterie scariche e non siamo vicino a
                                       una presa rete. Questi dispositivi incor-
                                       porano, in un piccolo volume, una o più
                                       batterie ricaricabili ai polimeri di Litio, un
                                       caricabatteria (da 5 V a 4,2V) e un alimen-

24 • Elettronica & Maker n° 2 - 2018
tatore switching step-up per produrre i 5V     1 o 2 A, ormai diventato uno standard per
in uscita dai 3,6-3,7 V della batteria. La     i telefoni cellulari e tablet di recente ge-
figura 1 mostra lo schema funzionale di        nerazione.
un tipico power bank.Normalmente esso          Solitamente essi sono forniti di uno o più
è dotato di due connettori USB femmina:        cavetti per adattarsi ai cellulari e tablet,
un’uscita di tipo A per alimentare il cellu-   tipicamente con connettore USB micro o
lare o tablet e uno di tipo micro USB per      con standard IPhone. Col cavetto termi-
caricare la batteria interna, a esso si con-   nante con USB micro, possiamo alimen-
nette un normale alimentatore a 5-5,5V da      tare diverse schede, tra cui Arduino Due,
                                               Yun e Teensy. Arduino Nano richiede un
                                               connettore USB mini mentre per Arduino
                                               Uno occorre un comune cavo USB A/USB
                                               B, tipo quello usato per le stampanti.
                                               In molti casi tutto è fatto da un solo circu-
                                               ito integrato che richiede solo pochi altri
                                               componenti. Le immagini di figura 2 mo-
                                               strano lo schema e l’aspetto di un power
                                               bank realizzato con il chip HT4921.
                                               Questo circuito, che ho trovato nei si-
Figura 1: Schema funzionale del power bank     stemi più economici, ha qualche difetto.

                                                               Elettronica & Maker n° 2 - 2018 • 25
Dopo diverso tempo di inutilizzo, la bat-       acquisita già da qualche anno, posso
teria si scarica completamente, diventan-       suggerire di utilizzare preferibilmente
do spesso non più ricaricabile. Questo è        quelli che hanno un interruttore di alimen-
dovuto al fatto che esiste una corrente di      tazione, possibilmente non elettronico.
auto-scarica non tanto della batteria ma        Costano di più ma non hanno un auto-
degli stessi circuiti, in alcuni casi ho mi-    consumo che riduce notevolmente l'auto-
surato fino a 2 mA. Occorre sapere che          nomia della batteria.
le batterie agli ioni di litio non devono       Molti power bank, solitamente quelli più
essere scaricate completamente, come            performanti, hanno anche un sistema
quelle al piombo. Altrimenti intervengono       di autospegnimento: si spengono dopo
fenomeni elettrochimici irreversibili e si      qualche decina di secondi se il consumo
deve sostituire la batteria. Per risolvere il   è al di sotto di una certa soglia. Questo
problema io ho dovuto modificare alcuni         purtroppo diventa un difetto se alimen-
power bank economici, come quello esa-          tiamo circuiti che consumano solo pochi
minato, inserendo un interruttore esterno,      milliampere, quindi, dobbiamo scegliere
in serie alla batteria.                         quelli privi di autospegnimento per ali-
Con l'esperienza d'uso dei power bank           mentare circuiti a basso consumo.

Figura 2 Schema e aspetto di un tipico power bank

26 • Elettronica & Maker n° 2 - 2018
Figura 3 Esempio di caricabatteria a 1 cella al litio

SE NON CI SERVONO I 5 VOLT                              corrente. Se volessimo ridurre la corren-
Per motivi di risparmio energetico, oggi                te massima di carica occorre rimuovere
molti sistemi a microcontrollore sono ali-              questo resistore e sostituirlo con uno di
mentati a tensioni più basse, valore tipico             maggiore resistenza secondo la formula:
3,3 V. In questo caso basta usare un mo-                    RPROG =R4 = VPROG●1200/ IB =1200/ IB
dulo caricabatteria per batterie agli ioni di           Dove R4 è la resistenza di programmazio-
litio e una batteria di adeguata capacità.              ne in ohm, la corrente IB è in ampere e
La figura 3 mostra lo schema e l’aspetto                VPROG = 1V. Nella foto, questo resistore
di un tipico esempio di questi caricabat-               è vicino al bordo sinistro, in centro.
teria. Il chip TP4056 è un carica batteria              Il pin 1 dovrebbe essere collegato a un
adatto per una singola cella agli ioni di               termistore NTC a contatto della batteria,
litio. Esso è di tipo lineare a corrente co-            ma qui non è usato. Ci sono due led di
stante, nella fase di carica iniziale, e pas-           stato: quello collegato al pin 7 (CHRG)
sa a tensione costante a 4,2 V nella parte              ha l’intensità luminosa proporzionale alla
finale. Il resistore R4 regola la corrente di           corrente di carica e si spegne alla fine e
carica, per R4=1,2k come da schema, si                  l’altro led (STDBY) si accende a fine cari-
raggiunge una corrente ideale di carica di              ca e la mantiene. Se la batteria è assente
1 A, in realtà ci sono problemi dissipativi             o difettosa o se la tensione in ingresso è
se la batteria richiedesse a lungo questa               troppo bassa, entrambi i led sono spenti.

                                                                        Elettronica & Maker n° 2 - 2018 • 27
che ha una tensione di drop-out di soli
                                                   210 mV a 500mA di corrente. Lo sche-
                                                   ma di figura 4 è un esempio applicativo
                                                   di questo regolatore. Io già da qualche
                                                   anno preferisco usare le batterie agli ioni
                                                   di litio e litio polimero (LiPo) per alimen-
                                                   tare i miei sistemi, sono più leggere di
                                                   quelle NiMH (nichel metal-idrato), di se-
                                                   guito alcune caratteristiche positive:
                                                   • non hanno memoria chimica;
                                                   • hanno una densità energetica elevata;
Figura 4: Schema di alimentazione con              • non perdono carica alle basse tempe-
batteria a 3,3 V                                      rature e hanno poca autoscarica;
                                                   • possono erogare forti correnti di sca-
Questo circuito ha un’uscita che varia da             rica;
3,7V (scarica) a 4,2V (carica batteria). I         • si caricano in tempi relativamente
circuiti a 3,3V, solitamente, non accettano           brevi.
questi valori, per cui è necessario usare          Naturalmente hanno anche degli aspetti
un regolatore a bassa caduta, detto LDO            negativi:
(Low Drop Out) che accetti in ingresso             • richiedono un caricabatteria più com-
tensioni di questi valori, ossia anche con            plesso;
soli 300 mV di caduta. La maggior par-             • richiedono circuiti di protezione abba-
te dei regolatori LDO con uscita a 3,3V               stanza sofisticati, spesso incorporati
sono fatti per lavorare con 5 V in ingres-            nel pacco batteria perché misurano
so e non funzionano con cadute inferiori              anche la temperatura delle celle;
al volt.                                           • non devono scaricarsi completamen-
Io ho utilizzato il chip smd MCP1825S-3302            te;
                                                   • costi relativamente maggiori.
                                                   Il fatto che ormai sono diffusissime su
                                                   molti dispositivi portatili come cellulati,
                                                   tablet, computer laptop, elettro-utensili,
                                                   evidenzia che i pregi sono superiori ai di-
                                                   fetti.
Figura 5 - Esempio di circuito di protezione per   Per applicazioni dove si richiede una
due celle.                                         notevole energia accumulata come ad

28 • Elettronica & Maker n° 2 - 2018
traddistinti        da     ulterio-
                                                                     ri sigle, ha due soglie,
                                                                     una di sovra-tensione e
                                                                     una di sotto-tensione al
                                                                     di fuori di queste sono
                                                                     aperti i rispettivi mo-
                                                                     sfet. Per esempio il chip
                                                                     MM3220H03NRH ha una
                                                                     soglia superiore di 4,25V
                                                                     e una inferiore di 3,20 V
                                                                     (per ogni cella), con iste-
Figura 6: Esempio di circuito di protezione per due celle.           resi e ritardi noti.
                                                                     Il circuito si collega, per
esempio veicoli elettrici, mezzi di solle-         esempio, con due batterie tipo 18650 (18
vamento etc., sono ora disponibili batte-          mm di diametro e 65 di lunghezza) come
rie al litio-ferro-fosfato (LiFePO4 ).             in figura 7. Esistono numerosi chip di
                                                   protezione adatti per una o più celle.
CIRCUITI DI PROTEZIONE DELLE                       Alcuni sono in grado anche di misurare e
BATTERIE AL LITIO                                  controllare la corrente di carica e la tem-
Per le considerazioni viste è bene pro-            peratura delle batterie, mediante termi-
teggere le batterie con appositi circuiti.         stori. Questi sono solitamente usati nei
Nei battery pack spesso sono già pre-              pacchi batterie dei computer.
senti questi circuiti. Essi proteggono le
batterie ricaricabili agli ioni di litio o ai
polimeri di litio da tensioni eccessive di
carica e di scarica scollegando le batte-
rie mediante i mosfet a canale N.
Un tipico circuito di protezione per due
celle è quello di figura 5. Nel circuito sono
usati due chip, ciascuno dei quali ha due
mosfet messi in parallelo per aumenta-
re la corrente, e il costruttore indica 3 A
come corrente massima sopportata.
In figura 6 è mostrato lo schema elet-             Figura 7 - Collegamento del circuito di
trico Il chip MM3220, nei vari tipi con-           protezione.

                                                                    Elettronica & Maker n° 2 - 2018 • 29
Gestire segnali I.R. con
                      Java e Arduino
                                                                   di Emanuele Paiano
                                                          e.paiano@elettronicaemaker.it

Molti sistemi di domotica, fanno
uso di apposite interfacce
hardware/software, che
                                        I   n questo articolo, verrà esposto un pro-
                                            getto basato su Arduino e su una libreria
                                        Java, per consentire la gestione di segnali
consentono la connessione di            infrarossi, oltre che l'eventuale elaborazio-
vari dispositivi ad un sistema di       ne all'interno di uno o più thread Java. In
elaborazione centrale, come ad          questo modo, si potrebbe pensare all'inte-
esempio un sistema embedded o           grazione di tale applicazione all'interno di
un apposito server che ne permette      una comoda interfaccia basata su Swing/
la supervisione da remoto.              AWT, JavaEE oppure su un'applicazione
In alcuni casi, si sente la necessità   Android.
di interfacciare con tali sistemi,
anche dispositivi non smart, dotati     STRUTTURA DEL PROGETTO
della sola interfaccia ad infrarossi,   Il progetto è composto da due parti, come
la quale permette la ricezione dei      illustrato in Figura 2:
comandi inviati da un telecomando.      • un modulo hardware formato da un sen-
                                             sore e un trasmettitore IR, gestiti da un
                                             microcontrollore (come Arduino), che si
                                             occupa di inviare o ricevere i segnali IR
                                             in base ai comandi ricevuti sulla porta
                                             seriale;
                                        • un modulo software che si occupa di

30 • Elettronica & Maker n° 2 - 2018
MODULO HARDWARE
                                                                      (IRDUINO)
                                                                      Per tale modulo, verrà uti-
                                                                      lizzato Arduino, noto mi-
                                                                      crocontrollore           low-cost
                                                                      impiegato da molti maker
                                                                      per la prototipazione rapi-
                                                                      da di progetti homebrew.
                                                                      L'idea generale consiste
                                                                      nel combinare gli sche-
Figura 1: Prototipo del circuito completo.                            mi elettrici di due proget-
                                                                      ti (reperibili su Adafruit e
   far comunicare il microcontrollore con         mostrati in seguito) per la ricezione e la tra-
   l'applicazione, grazie ad un protocollo        smissione dei segnali IR, tramite la libreria
   (applicativo) realizzato ad hoc, il quale si   IRLib2 di Chris Young, mentre lo sketch di
   appoggia su un collegamento seriale di         Arduino sarà realizzato con un protocollo
   tipo Usb, Wifi o Bluetooth;                    ad hoc per la comunicazione con la com-
La componente software è composta dalla           ponente software. Come vedremo dopo, la
futura applicazione Java, e dalla libreria che    libreria Java mette a disposizione delle in-
si interfaccia con la componente hardware,        terfacce per essere estesa e supportare al-
come mostrato in Figura 2: quest'ultima è         tri tipi di sketch Arduino o librerie IR, grazie
composta dal microcontrollore, ricevitore e       ai vantaggi offerti dalla programmazione a
trasmettitore ad infrarossi.                      oggetti.
                                                                 Circuito di ricezione
                                                                 La realizzazione di questo
                                                                 circuito è piuttosto semplice:
                                                                 nell'articolo originale, spiega
                                                                 come collegare il ricevitore
                                                                 TSOP38238, possiamo uti-
                                                                 lizzare collegamenti analoghi
                                                                 per altri tipi di ricevitori IR.
                                                                 Solitamente, tali ricevitori di-
                                                                 spongono di 3 pin:
                                                                 •      VCC, ossia il pin di ali-
Figura 2: Struttura del progetto                                 mentazione che va collegato

                                                                     Elettronica & Maker n° 2 - 2018 • 31
verso il diodo IR. Il collegamento avviene
                                                    nel modo seguente:
                                                    • la base del transistor va al pin 3 di Ardu-
                                                       ino, piazzando una resistenza nel mez-
                                                       zo;
                                                    • il collettore del transistor va al catodo
Figura 3: Il fotorecettore IR ed i rispettivi          del diodo (ovvero al piedino più corto);
collegamenti                                        • l'anodo del Diodo va collegato con il pin
                                                       5V di Arduino;
     all'alimentazione o all'uscita 5V di Ardu-     l'emettitore del transistor va al pin GND di
     ino;                                           Arduino.
• GND, ossia la massa che va collegata              Tale collegamento è illustrato in Figura 4:
     ad un'uscita GND di Arduino;                   se abbiamo collegato tutto a modo, è pos-
• OUT, ossia il pin su cui viaggiano i dati         sibile verificare il funzionamento di entram-
     in input al microntrollore, tale pin va col-   bi i circuiti, facendo delle prove tramite gli
     legato al pin 2 di Arduino.                    sketch di esempio presenti nella libreria
Il collegamento generale è illustrato in Fi-        IRLib2. Maggiori dettagli si possono trova-
gura 3 ed è possibile trovare maggiori det-         re nell'articolo originale di Adafruit (https://
tagli nell'articolo originale di Adafruit           goo.gl/zcFBpj).
(https://goo.gl/HRyiZa).                            Nota: Collegando il circuito all'alimentazione a 5V
Circuito di invio                                   (Vcc), sarebbe anche opportuno limitare la corren-
Tale circuito è leggermente più comples-            te di picco del LED durante i periodi di conduzio-
so del precedente: in un primo momento              ne del transistor. A questo scopo si può collegare
si potrebbe pensare di collegare il diodo
IR direttamente al pin del microcontrollore
ed inviare il segnale. Poichè i pin di I/O di
Arduino non sono in grado di erogare una
corrente sufficiente per poterli collegare di-
rettamente al diodo, è opportuno utilizzare
la linea di alimentazione a 5V di Arduino.
Nel prelevare tale tensione, si fa uso di un
transistor 2N2222, la cui base va collegata
ad un Pin 3 di Arduino tramite una resisten-
za da 470 ohm, ottenendo come risultato             Figura 4: Il LED IR collegato mediante un
un interruttore che apre e chiude il circuito       transistor 2N2222

32 • Elettronica & Maker n° 2 - 2018
una resistenza da 4,7 ohm 1/2W in serie a LED1      senza l'implementazione di un'apposita in-
Protocollo e Sketch                                 terfaccia software che semplifichi l'utilizzo.
Realizzato e testato il circuito, si necessita
di un protocollo applicativo, ovvero un'in-         MODULO SOFTWARE (JIRDUINO)
sieme di regole che stabiliscono i coman-           A questo punto è possibile descrivere la li-
di che l'applicazione Java dovrà inviare al         breria Java che mette a disposizione classi
microcontrollore, oltre alle risposte con-          e metodi per interagire con il microcontrol-
tenenti l'esito delle operazioni. Per motivi        lore, sfruttando il collegamento seriale.
di spazio, ci si limita alla sola descrizione       La libreria in questione si chiama jIRDuino,
del protocollo, mentre lo sketch lo si può          è ancora in via di sviluppo ma già utilizza-
scaricare già pronto da github all'indirizzo        bile: attualmente è composta da diversi
https://goo.gl/3UxRmQ.                              package e classi, tra cui quelle per la con-
Per le istruzioni da inviare al microcontrol-       versione dei segnali trasmessi da alcuni te-
lore, si è pensato di introdurre un set di          lecomandi IR, oltre che le classi di base per
istruzioni con lo stesso numero di campi            l'invio e la ricezione dei segnali. Per que-
separati da virgole, ovvero                         stioni di spazio, in questa sede verranno
opcode, param1, param2, param3                      descritte solo le classi di base, con il solo
dove opcode rappresenta il codice dell'o-           collegamento seriale tramite usb (jIRDuino,
perazione, mentre tutti gli altri sono i para-      con l'aggiunta di alcune classi, supporta
metri che specificano gli argomenti. Nello          anche collegamenti wireless con Arduino).
sketch sono presenti gli oggetti irSender e         Chi non mastica Java, può saltare questa
irReceiver che rappresentano
rispettivamente il trasmetti-
tore ed il ricevitore infrarossi.
Dalla porta seriale vengono
lette le istruzioni che vengono
interpretate in modo tale da ri-
chiamare le rispettive funzio-
ni. Alcune di queste istruzioni
sono elencate in Tabella 1 e
si possono inviare aprendo il
monitor seriale dell'IDE di Ar-
duino, impostando la ricezio-
ne a 9600bps. Tuttavia tale
dispositivo è poco efficiente       Tabella 1: Serie di istruzioni e azioni correlate

                                                                      Elettronica & Maker n° 2 - 2018 • 33
parte e sfruttare alcune funzionalità tramite        dicare il comando 0xE0E040BF;
irduino-tools: si tratta di un tool da riga di   • un parametro bits che rappresenta il nu-
comando che implementa alcune funzioni               mero di bit utilizzati dal protocollo spe-
di jIRDuino.                                         cificato.
Segnali IR in Java                               Per esempio, per istanziare un oggetto
Sono rappresentati dalle classi racchiuse        rappresentante il comando 0xE0E040BF
nel package org.jirduino.core, contenente:       con protocollo NECx, si usa:
• la classe Signal che istanzia gli oggetti      Signal     poweroff=new      Signal(Proto-
     che rappresentano un generico segnale       cols.NECx, "E0E040BF", 32);
     IR;                                         instanziando così l'oggetto poweroff che
• la classe Protocols che contiene delle         può essere passato alla classe responsa-
     costanti rappresentanti i vari protocolli   bile per l'invio del segnale. Tale comando
     (supportati da IRLib2).                     simula la pressione del tasto power su al-
Il costruttore della classe Signal, prevede      cune TV Samsung.
tre parametri in ingresso:                       Nell'immagine di Figura 5 sono illustrate le
• un parametro id, ovvero un intero rap-         interazioni tra le varie componenti hardwa-
     presentante il tipo di protocollo utiliz-   re e software.
     zato, che può essere un campo della         Invio e ricezione dei segnali
     classe Protocols (come ad esempio           Nel package org.jirduino.drivers si trova-
     Protocols.NECx);                            no le entità coinvolte nella comunicazione
• un parametro value che rappresenta il          con il microcontrollore: l'interfaccia IRDe-
     comando esadecimale da inviare in for-      vice che rappresenta il dispositivo IR su cui
     mato stringa, ovvero E0E040BF per in-       sono definiti i metodi principali come send-
                                                                       Data() e receiveData();
                                                                       la classe IRLib2Device
                                                                       che rappresenta l'im-
                                                                       plementazione       con-
                                                                       creta di IRDevice, la
                                                                       quale comunica con
                                                                       lo sketch descritto pri-
                                                                       ma, il quale è basato
                                                                       sulle librerie IRLib2;
                                                                       la   classe    IRDriver-
                                                                       Sample     rappresenta
Figura 5: interazioni tra le varie componenti hardware e software.     la struttura base una

34 • Elettronica & Maker n° 2 - 2018
ComLinkDevice              por-
                                                                     t=new        ComLinkDevi-
                                                                     ce(port, speed);

                                                                     /* istanza */
                                                                     IRDevice              irDevi-
                                                                     ce=new         IRLib2Devi-
                                                                     ce(port);

Figura 6: invio di un segnale IR                                     /* apri la connes-
                                                                     sione ad Arduino */
futura implementazione di un driver alter-      irDevice.init();
nativo (come ad esempio, uno non basato         ed inizializzarlo con il metodo init(). Un modo
su IRLib2 o uno che interagisca con altri       alternativo per ottenere la porta, riguarda
sketch, protocolli o altri microcontrollori     l'uso del metodo statico ComLinkDevice.
diversi da Arduino); Il costruttore dell'og-    getPorts() che restituisce la lista delle porte
getto IRLib2Device (che è anche un og-          disponibili sul sistema, mentre con Com-
getto IRDevice), richiede un parametro di       LinkDevice.getPortByName(String name) è
tipo LinkDevice: consiste in un'interfaccia     possibile ottenere il percorso completo (tra
(appartenente alla libreria SerialDuino - ht-   quelle restituite da getPorts()) dando una
tps://goo.gl/sq5NJZ) che è estesa dalla         stringa in input, come ttyUSB0 al posto di /
classe ComLinkDevice.                           dev/ttyUSB0.
Questa realizza un collegamento COM o           Per l'invio del segnale, basta utilizzare il
USB tra l'oggetto di tipo IRDevice e Ardui-     metodo sendData() e passare l'oggetto
no. Se ad esempio, si usa un sistema Linux      poweroff istanziato precedentemente:
con Arduino connesso sulla porta /dev/          Signal      poweroff=new         Signal(Proto-
ttyUSB0, è possibile istanziare l'oggetto       cols.NECx, "E0E040BF", 32);
IRDevice con                                    irDevice.sendData(poweroff);
String port="/dev/ttyUSB0";                     Una rappresentazione grafica della proce-
                                                dura di invio è illustrata nella Figura 6.
/* Velocità porta */                            Per la ricezione dei segnali, possiamo uti-
int        speed=ComLinkDevice.BAUDRA-          lizzare il metodo receiveData() dopo aver
TE_9600;                                        abilitato il ricevitore con setReceiverE-
                                                nabled():
/* creazione porta */                           /* Attiva ricezione */

                                                                 Elettronica & Maker n° 2 - 2018 • 35
irDevice.setReceiverEnabled(true);                       Adrs:0 (12 bits)
                                                         Decoded    Sony(2):      Value:5E6    Adrs:0
/* Attendi un segnale IR */                              (12 bits)
Signal in=irDevice.receiveData();                        Decoded    Sony(2):      Value:5E6    Adrs:0
                                                         (12 bits)
/* Stampalo sulla console */                             o leggermenti differenti, in base al protocol-
System.out.println("Il                 segnale   ri-     lo utilizzato dal trasmettitore. Se viene re-
cevuto è "+in);                                          stituito un segnale zero, allora il protocollo
il valore del comando ed il protocollo del               utilizzato dal telecomando non è supporta-
segnale possono essere recuperati con i                  to da IRLib2 (quindi nemmeno da IRDuino).
metodi getValue() e getProtocol() della clas-            In Figura 7 viene illustrata la procedura di
se Signal. Se il protocollo non è supportato             ricezione di un segnale IR.
da jIRDuino, verrà restituito il segnale nullo           Traduzione di segnali
(con tutti i valori impostati a zero).                   Un'altra interessante caratteristica di tale
È possibile fare una prova utilizzando il te-            libreria, è la possibilità di ricevere un se-
lecomando della propria tv. Impostando la                gnale in ingresso e tradurlo in un altro (an-
modalità sniffer, ed utilizzando il metodo               che di protocollo differente). Ciò è permes-
waitResponse() in un ciclo, possiamo ve-                 so dalle classi definite nel package org.
dere tutti i comandi inviati dal telecomando             jirduino.translators.
al televisore:                                           SignalRule, rappresenta una regola di tra-
irDevice.setPassiveSnifferMo-                            duzione del segnale. Permette di associa-
de(true);                                                re un segnale di ingresso a uno di uscita,
                                                         ovvero effettuare una traduzione. Inoltre
/* Attiva ricezione */                                   contiene il campo delay che specifica il
irDevice.setReceiverEnabled(true);                       numero di secondi in cui attendere prima

/* stampa su console i se-
gnali ricevuti */
while(true)
         System.out.printl-
n(ir.waitResponse());
premendo i tasti sul telecoman-
do, si dovrebbero notare valori
del tipo
Decoded Sony(2): Value:1E6                 Figura 7: ricezione di un segnale IR

36 • Elettronica & Maker n° 2 - 2018
dell'invio del segnale tradotto.                 questo sistema è possibile usare Arduino
SignalRuleTable permette di istanziare una       come un bridge di protocolli, ovvero come
“tabella” contenente una lista di SignalRu-      un “convertitore IR”, oltre che mappare e
le, ovvero una tabella delle traduzioni;         convertire tutti i tasti di un telecomando
SignalConverter, è l'implementazione del         non ufficialmente supportato dal disposi-
thread che, dopo aver ricevuto un segna-         tivo IR (per esempio è possibile utilizza-
le in input, utilizzerà la SignalRuleTable per   re il telecomando dell'impianto Hi fi sulla
la traduzione. Tale classe implementa l'in-      vecchia TV). Sono comprese delle classi
terfaccia Runnable di Java, ed il rispettivo     che permettono di automatizzare il tutto
oggetto istanziato, sarà passato al costrut-     (come JSONController e JSONConverter
tore della classe Thread.                        del package org.jirduino.config), definendo
Un esempio d'uso di tali classi è illustrato     due file di configurazione in formato JSON,
nel seguente codice:                             contenenti i rispettivi tasti del telecomando
IRDevice ir=new IRLib2Device(port);              reale e di quello che si vuole emulare. Un
ir.init();                                       esempio di questo tipo è possibile veder-
                                                 lo nella classe ConverterController.java del
SignalConverter       converter=new        Si-   package org.jirduino.demo.
gnalConverter(new              SignalRule-       Shell e prompt: irduino-tools
Table(),ir);                                     Qualora non si abbia dimestichezza con
Signal source=new Signal(Protocols.              Java, è possibile testare alcune le fun-
NECx, "E0E040BF", 32);                           zionalità descritte direttamente da shell,
Signal target=new Signal(Protocols.              grazie ad un'implementazione di jIRDuino
NEC, "E13650AF", 32);                            chiamata irduino-tools. Si tratta di un file
                                                 jar eseguibile che, accettando i vari para-
converter.addRule(source, target);               metri in input, permette di inviare, riceve e
converter.setDebugModeOn(true);                  convertire i segnali IR. La directory “data/”
                                                 contiene i vari file di configurazione in for-
Thread T1=new Thread(converter);                 mato JSON di alcuni telecomandi, mappati
T1.start();                                      e testati dall'autore del progetto.
in questo caso, il segnale 0xE0E040BF            Lanciando irduino-tools senza argomenti,
trasmesso con protocollo NECx viene tra-         si ottiene la guida con alcune opzioni:
dotto in un segnale 0xE13650AF che vie-          -------------------------
ne ritrasmesso con protocollo NEC, ma è           IRDuino Tools 0.9.5
possibile aggiungere altre regole di con-        -------------------------
versione, grazie al metodo addRule(). Con

                                                                  Elettronica & Maker n° 2 - 2018 • 37
Use: java -jar irduino-tools.jar                    for command value (i.e. E13650AF).
    [parametres]
                                                      - port, arduino-connected serial
  Available commands:                                 port (i.e. /dev/ttyUSB0)
  > show-protocols                     show suppor-   Supponiamo di avere un sistema linux
  ted protocols                                       con Arduino collegato sulla porta /dev/
  > send 			                           send IR com-   ttyUSB0. Per inviare il comando 0xE-
  mand                                                0E040BF con protocollo NECx, basta
  > sniff 		                 receive and print        lanciare irduino-tools seguito dall'opzio-
  IR signals                                          ne send, dal numero di protocollo (usia-
  > generate-json                         generate    mo 7 per NECx), dal comando da inviare
  json config for IR controller                       e dal numero di bit previsti dal protocollo:
  > probe-json                         probe exists   # java -jar irduino-tools.jar send
  json config, by key pressing                        /dev/ttyUSB0 7 E0E040BF 32
  > convert-signal                            con-    per ottenere la lista dei protocolli sup-
  vert single signal between diffe-                   portati, si usa l'opzione show-protocols:
  rent protocols                                      #   java     -jar    irduino-tools.jar
                                                      show-protocols
  Run java -jar irduino-tools.jar                     Supported IR Protocols:
   for advanced help
  mentre specificando un singolo coman-               id 0 for Unknown Protocol
  do, si ottiene la guida relativa al coman-          id 1 for NEC
  do:                                                 id 2 for Sony
  #     java      -jar       irduino-tools.jar        id 3 for RC5
  sniff                                               id 4 for RC6
                                                      id 5 for PANASONIC_OLD
  Use: java -jar irduino-tools.jar                    id 6 for JVC
  send                         id 7 for NECx
                                                      id 8 for SAMSUNG36
  where:                                              id 9 for GICABLE
  - id, integer id for infrared pro-                  id 10 for DIRECT_TV
  tocol (i.e. 1 for NEC). See Pro-                    id 11 for RCMM
  tocol.java.                                         id 12 for CYKM
                                                      Se si vuole ricevere dei segnali e stam-
  - value, integer in hex format                      parli a schemo, si ricorre al parametro

38 • Elettronica & Maker n° 2 - 2018
sniff anzicchè send:                          target's protocol (e.g. 2 for Sony)
# java -jar irduino-tools.jar sniff           : IR command target's
/dev/ttyUSB0                                  protocol (e.g. A90)
premendo un tasto sul telecomando, do-        : IR bits target's pro-
vrebbero apparire i segnali IR ricevuti da    tocol (e.g. 12)
Arduino:
Decoded Sony(2): Value:1E6 Adrs:0             per fare un esempio, è possibile tradurre
(12 bits)                                     il segnale A86 con protocollo Sony, in un
Decoded Sony(2): Value:5E6 Adrs:0             segnale 0xE13650AF con protocollo NEC:
(12 bits)                                     $ java -jar irduino-tools.jar con-
Decoded Sony(2): Value:5E6 Adrs:0             vert-signal /dev/ttyUSB0 2 A86 12 1
(12 bits)                                     E13650AF 32
Per la conversione dei tasti, si ricorre      premendo i tasti sul telecomando, dovreb-
all'opzione convert-signal:                   be apparire la conversione:
$ java -jar irduino-tools.jar con-            SUCCESS => Received: (2, A86, 12)
vert-signal                                   SUCCESS => (2, A86, 12) resolved to
                                              (1, E13650AF, 32)
Use: java -jar irduino-tools.jar              SUCCESS => Sent: (1, E13650AF, 32)
convert-signal                  e il dispositivo IR interessato dovrebbe ri-
                                      spondere alla ricezione del comando.

options list:                                 CONCLUSIONI
                                              Tale libreria ci consente di gestire i segnali
     :=       IR direttamente all'interno di un'applica-
             zione Java, rendendo possibile l'integra-
     :=       zione con framework come Spring, dando
             la possibilità di gestire i vecchi dispositivi
                                              IR con comandi RESTful, funzionalità utile
:       IR    command   per chi si occupa dello sviluppo di interfac-
source's protocol (e.g. 1 for NEC)            ce IoT o domotiche.
: IR command source's             Inoltre grazie alle sue interfacce Java, è
protocol (e.g. E13650AF)                      possibile estenderla aggiungendo il sup-
:   IR    bits     source's   porto per nuovi sketch, o addirittura è pos-
protocol (e.g. 32)                            sibile farla interagire con microcontrollori
:       IR    command   diversi da Arduino.

                                                               Elettronica & Maker n° 2 - 2018 • 39
LOGIN su WEB
                                       con un Pulsante

                                                                   di Antonello Della Pia
                                                          a.dellapia@elettronicaemaker.it
SECONDA PARTE

Un dispositivo delle dimensioni di
una chiavetta USB, che tramite
un unico pulsante ed un firmware
                                           P   assiamo ora ad analizzare il codi-
                                               ce del progetto. Per la scrittura e la
                                           compilazione del programma è stato uti-
personalizzabile, ricorda ed               lizzato il classico ambiente di sviluppo in-
inserisce per noi le credenziali di        tegrato (IDE) di Arduino, versione 1.6.12.
accesso (nome utente e password)           La scheda da installare e selezionare è
ai siti e servizi Internet preferiti. In   "Adafruit Trinket 16MHz", programmato-
questa seconda parte ci occupiamo          re "USBasp".
del software                               L'impostazione dei fuse per l' ATtiny85 è:
                                           L:0xF1, H:0xD5, E:0xFE.
                                           Lo sketch è abbastanza lungo anche se
                                           non particolarmente complesso, ma com-
                                           pletamente commentato, per cui rimando
                                           al codice stesso (allegato all'articolo) per
                                           una spiegazione dettagliata. Focalizzere-
                                           mo qui invece l'attenzione sulle sezioni
                                           più originali e specifiche del progetto.
                                           Si nota per prima cosa che lo sketch è di-
                                           viso in due file, Login_con_un_pulsante.
                                           ino, file principale, e form_data.ino.
                                           L'intenzione è di separare per così dire il

40 • Elettronica & Maker n° 2 - 2018
"motore del programma" dai dati, sem-
plificando il compito all'utente che debba          char* tagStrings[]={ "Elettronica e Maker", "eBay", "Subito.it",
                                                    "PostePay", "Gmail (Chrome)" };
modificare o aggiornare successivamen-
te i dati inseriti. Il file principale inizia con   byte tagsNumber = 5;
l'inclusione della libreria utilizzata, la de-      …………………………………………………………..

finizione del ruolo dei pin, la dichiarazio-
                                                    void loop(){
ne delle variabili necessarie.
                                                        unsigned long currentSeconds = millis()/1000
Troviamo poi due elementi chiave, un Ar-                waitForUnlock();
ray di stringhe ed una variabile contenenti             TrinketKeyboard.poll();

rispettivamente i nomi assegnati ai siti a              if (lockedDevice == false){
                                                          buttonState = digitalRead(PIN_BUTTON_FILL_FORM);
cui vogliamo accedere ed il loro numero.
                                                          if (buttonState == LOW && buttonPressed == false){
I dati riportati sono ovviamente di esem-                     buttonPressSeconds = currentSeconds;
pio e possono essere personalizzati a                         buttonPressed = true;

piacere. Dopo setup() che inizializza in                      formFilled = false;
                                                              digitalWrite(PIN_LED, HIGH);
particolare le funzionalità USB della li-
                                                          }
breria, la funzione loop() principale, dopo               if (buttonState == HIGH && buttonPressed == true){
la chiamata alla routine di sblocco, è oc-                    if (formFilled == false){

cupata principalmente dal codice di ge-                            if(buttonPressCounter == tagsNumber){
                                                                       buttonPressCounter = 0;
stione degli input dal pulsante. Grazie
                                                                   }
all'uso della funzione Millis() di Arduino e                       delTag();
di opportune variabili, riusciamo a capi-                          typeTag(tagStrings[buttonPressCounter]);

re se il pulsante è premuto brevemente
                                                                   delay(100);
oppure a lungo e ad effettuare quindi la
                                                                   buttonPressCounter = buttonPressCounter + 1;
chiamata alla funzione incaricata di com-                      }else{
pilare il form di login (come se stessimo           buttonPressCounter = 0;

scrivendo e inviando le sequenze di tasti                      }
                                                          }
desiderate digitando sulla tastiera), fil-
                                                    if (buttonPressed == true && currentSeconds ==
lForm(buttonPressCounter(), (Listato 1, a           buttonPressSeconds + 2){
destra).                                                      delTag();

Le funzioni che seguono il loop() sono                        if (buttonPressCounter > 0){
                                                              fillForm(buttonPressCounter);
state create per facilitare l'uso dei metodi
                                                              }
esposti dalla libreria, evitando continue                     buttonPressSeconds = 0;
ripetizioni e rendendo il codice più line-               }

are, intuitivo e leggibile. Troviamo quin-          if (buttonState == HIGH){buttonPressed = false;}
                                                    }
di switchKeyboardLayout() che invia la
                                                    }

                                                                                   Elettronica & Maker n° 2 - 2018 • 41
Puoi anche leggere