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 Costruzione
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ù
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
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
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
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
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
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
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
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