Elettronica Maker - I Prototipi: Elettronica e Maker
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
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 CostruzioneElettronica
&
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ù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
74Tecniche 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- 2018ingressi 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 • 5der-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
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 • 7risultando 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 - 2018pio (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 • 9mentare 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 - 2018caso 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 • 11PCB 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 • 13Alimentiamo
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 - 2018tatore 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 • 25Dopo 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 • 27che 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 - 2018traddistinti 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 • 29Gestire 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 - 2018MODULO 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 • 31verso 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 - 2018una 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 • 33parte 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 - 2018ComLinkDevice 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 • 35irDevice.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 - 2018dell'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 • 37Use: 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 - 2018sniff 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 • 39LOGIN 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 • 41Puoi anche leggere