Professional Documents
Culture Documents
progetto dalle finalità diametralmente opposte senza toccare un solo componente elettronico ma
semplicemente riprogrammando il tutto.
Eh si, oggi i giovani progettisti hanno la vita estremamente comoda e i prototipi che essi creano
sono dei veri e propri capolavori. Ma la realizzazione di un progetto elettrico a componenti discreti,
senza l’ausilio di processori o MCU, inculca maggiormente il concetto di elettronica. E consente di
comprendere a fondo il ruolo dei diversi stadi di un circuito, di capire la migliore soluzione di ottimiz-
zazione da adottare e di creare da sé un dispositivo complesso ma funzionante in tutte le sue parti.
E’ meglio ieri oppure oggi? Penso entrambi i periodi. Il progettista deve conoscere l’arte di costruire
circuiti alla vecchia maniera, pur sapendo programmare i microcontrollori. Il bagaglio culturale deve
essere completo. Non basta saper a menadito tutte le istruzioni dell’Esp32 se poi non si sa realiz-
zare un lampeggiatore a transistor.
Sarebbe opportuno che i ragazzi e gli studenti di oggi approfondiscano molto questo settore dell’e-
lettronica ma sarebbe anche utile che gli appassionati più “datati”, spesso titubanti e contrari ai
nuovi metodi, entrino in contatto con questa meravigliosa tecnologia elettronica, fatta di software e
di programmazione.
Lancio una sfida a chi si voglia mettersi in gioco. Si provi a realizzare, anche solo come idea di
progetto e schema, un sistema che inneschi un allarme quando due porte vengano aperte contem-
poraneamente. Lo stesso si concepisca in due versioni differenti: la prima usando solo ESPertino,
la seconda disegnando lo schematico a componenti discreti. Sarebbe interessante leggere le vostre
riflessioni. A presto.
Giovanni Di Maria
1
EDITORIALE MAKER ROBOT
Per i Makers, l’hardware Termocamera Corso sugli Aeromobili
diventa sempre più
1 3 6
VOLTCRAFT PT-32 a Pilotaggio Remoto
semplice partendo da zero:
Founder & Publisher Avvisatore di opportunità e problematiche
18
Emanuele Bonanni allagamento con
ESPertino IoT
Editor-in-Chief
Near Infra-Red:
Maurizio Di Paolo Emilio Mini registratore 13
33 una originale
allo stato solido con applicazione di IoT
Technical Editor
Giovanni Di Maria ESPertino
BOARD
Marketing Il Kit di ESPertino:
39 Starter Kit TRL 25
Sara Ercolani temperatura e umidità
Funksysteme
sotto controllo con il DHT11
Advertising
Michela Lemma SCI & TECH
WallPi: quando LEGO
michela@emcelettronica.com 46 Bitcoin: la moneta
incontra Raspberry Pi 28
decentralizzata
Circulation
Il Kit di ESPertino:
Users - 129.701 PCB
Social Network - 124.144 misuriamo le distanze 61
con il modulo a Il mercato Italiano dei
78
© Copyright ultrasuoni HY-SRF05 PCB
Tutti i diritti di riproduzione o di traduzione
degli articoli pubblicati sono riservati.
Manoscritti e disegni sono di proprietà di Controllo gestuale e
EMCelettronica Srl. 68
E’ vietata la riproduzione anche ausilio per non vedenti
parziale degli articoli salvo espressa con la scheda Arduino
autorizzazione scritta dell’editore. I
contenuti pubblicitari sono riportati senza [Progetti completi open
responsabilità, a puro titolo informativo. source]
Autorizzazione alla pubblicazione del
Tribunale MI n. 20 del 16/01/2006
Termocamera
MAKER
VOLTCRAFT PT-32
di Maurizio Di Paolo Emilio
La termocamera permette di ottenere una distribuzione senza contatto della temperatura su superfici,
indicando punto-punto il valore come misurazione diretta. La telecamera Voltcraft può essere impiega-
ta per svariati materiali e superfici in diverse applicazioni.
U
na fotocamera termografica (chiamata anche no essere salvate le immagini termiche con i dati di
fotocamera a infrarossi o fotocamera termica o temperatura e timestamp. In questo modo è possibile
termocamera) è un dispositivo che forma un’im- una valutazione in un momento successivo dei dati di
magine utilizzando radiazioni a raggi infrarossi, simile misura (figura 1).
a una fotocamera comune che forma un’immagine con Le principali caratteristiche possono essere riassunte
luce visibile. Invece dell’intervallo di 400-700 nanometri nei seguenti punti:
della telecamera a luce visibile, le telecamere a infraros- • Display: 2,2” (5,6 cm), 320 x 240 Pixel.
si funzionano con lunghezze d’onda fino a 14.000 nm • Memorizzazione su schede MicroSDHC.
(14 μm). In linea generale, la radiazione più infrarossa • Valori emissioni regolabili.
viene emessa come radiazione corpo-nero. Una tele- • Unità temperatura ºC / ºF.
camera speciale può rilevare questa radiazione in un • Valori max./min.
modo simile in cui una telecamera normale rileva la luce • Scala cromatica, luminosità LED e temperatura
visibile. Il livello di luce ambientale non influenza la misu- retro regolabili.
ra, ottenendo anche una buona stima della temperatura • Galleria immagini.
in condizioni di oscurità totale. Ciò lo rende utile per le
operazioni di soccorso in edifici
di fumo e sotterranei. Una gran-
de differenza con le telecamere
ottiche sono le lenti di messa a
fuoco che non possono essere
fatte di vetro, devono essere uti-
lizzati materiali speciali come i
cristalli di germanio o zaffiro.
Le lenti al germanio sono anche
piuttosto fragili, quindi spesso
hanno un rivestimento duro per
proteggerle contro il contatto ac-
cidentale.
CARATTERISTICHE
La telecamera termica Voltcraft
consente di visualizzare la distri-
buzione della temperatura sulle
superfici, modificando a piaci-
mento le tavolozze dei colori al
fine di rendere più facile l’analisi.
Con le sue 6 combinazioni di co-
lori selezionabili, la PT-32 offre
una soluzione per tutte le appli- Figura 1: Termocamera Voltcraft
3
MAKER
Tipo PT-32
Frequenza immagine 9 Hz
Peso 494 g
Memorie 24000
Categoria Termocamera
Interfacce microSD
Precisione di base ± °C 2 °C
Larghezza 58 mm
Combinazioni di colori 6
Altezza 205 mm
Precisione ± 2%
4
MAKER
CONCLUSIONI
Una termocamera a infrarossi rileva
l’energia emessa da un oggetto, e
converte il tutto in un segnale elet-
tronico visivo affinchè si possa ave-
re una rappresentazione schemati-
Figura 2: display della termocamera con le varie indicazioni
ca della distribuzione di calore. Una
termocamera può essere impiegata
Incluso nella scatola abbiamo una custodia, la batteria per monitorare l’andamento termico di un oggetto ma
Li-Ion 3.7V, 1400mA, l’alimentatore USB con cavo, un anche per valutare problemi legati all’emissione di calo-
treppiede per meglio controllare la postazione fissa, una re. Una telecamera termica è in grado di eseguire algo-
SD da 4GB con adattatore SD e il manuale. In tabella 1 ritmi per interpretare i dati e costruire un’immagine.
riportiamo le principali caratteristiche tecniche: il campo Anche se l’immagine mostra sul display una appros-
di misura si estende da +300 °C fino a -20 °C con una simazione della temperatura, la fotocamera utilizza in
precisione di 2°C e una interfaccia display TFT. realtà più fonti di dati in base alle aree che circondano
L’immagine termica può essere di 0-100% in fasi del l’oggetto per determinare tale valore anziché rilevare la
25%, ottenendo un miglior orientamento e una visua- temperatura effettiva
lizzazione dei dettagli nei mini particolari. La compen-
sazione delle riflessioni sono rilevati da un sistema di
controllo riducendo così gli errori di misura. Le aree dei LA TELECAMERA VOLTCRAT PT-32 E’ DISPONIBILE
picchi di freddo e caldo appaiono nell’immagine come A CATALOGO CONRAD CON SPEDIZIONI 24H
marcatore diretto. In questo modo è più veloce avere
una panoramica della distribuzione del calore (figura 2).
TERMOGRAFIA
La quantità di radiazione emessa da un oggetto aumen-
ta con la temperatura; quindi, la termografia permette di
vedere variazioni di temperatura. Gli oggetti caldi si di-
stinguono bene dagli ambienti più freddi; gli esseri uma-
ni e gli altri animali a sangue caldo diventano facilmente
visibili di giorno e notte. Di conseguenza, la termografia
è particolarmente utile per i militari e gli altri utenti delle
telecamere di sorveglianza. La termografia utilizza una L’autore è a disposizione nei commenti per eventuali
approfondimenti sul tema dell’Articolo. Di seguito il link per
telecamera speciale per misurare la temperatura della
accedere direttamente all’articolo sul Blog e partecipare alla
pelle sulla superficie del seno. È un test non invasivo discussione:
che non comporta alcuna radiazione. La termografia si https://it.emcelettronica.com/termocamera-voltcraft-pt-32
basa su due idee: poiché le cellule tumorali crescono e
5
Corso sugli Aeromobili a
R O BO T Pilotaggio Remoto partendo
da zero: opportunità e
problematiche
di Giuseppe Silano
Inizia con questo articolo una lunga serie di puntate dedicate agli Aeromobili a Pilotaggio Remoto
(APR). Si tratta, a tutti gli effetti, di un corso completo, pensato e dedicato, soprattutto, ai principianti
ed ai neofiti. Semplici lezioni, esempi e tanto altro chiariranno perfettamente le idee ed illustreranno,
in maniera estremamente semplice e chiara, i fondamenti della tecnologia, i principi di funzionamento,
lo stato dell’arte e la storia di questi magnifici velivoli. Si consiglia vivamente di seguire cronologica-
mente le lezioni che seguiranno, senza fretta ed impazienza nel terminare subito il corso, ma con la
consapevolezza di maturare i concetti presentati gradatamente nel tempo.
N
egli ultimi decenni è molto cresciuto l’interesse passive dell’ambiente circostante. La visione artificiale
nei confronti della progettazione e dello svi- consente così di creare un ciclo del tipo “guarda e poi
luppo di piccoli velivoli sprovvisti di pilota UAV muovi”, un ciclo di comando dei movimenti del velivolo
(Unmanned Aerial Vehicle), più noti come droni, che in con retroazione visiva. In altri termini, utilizzando un ci-
maniera autonoma possano effettuare missioni sia mi- clo chiuso di posizionamento, la camera fornisce tutte
litari che civili, quali inseguimento (appunto) di obietti- le informazioni necessarie all’aeromobile (vedi nota 1
vi mobili e non, monitoraggio ambientale, del traffico e a fine paragrafo) per l’attuazione della legge di control-
della sicurezza nelle città. Gli UAV sono sistemi inte- lo, formando un sistema che prende il nome di visual
grati relativamente complessi, in grado di spostarsi in servoing (asservimento visivo). Ciò consente di sfrut-
modo indipendente all’interno di un ambiente specifico, tare, nell’ambito più vario, noti nati per scopi commer-
equipaggiati con una strumentazione di bordo per la ciali, riducendo notevolmente i costi, rendendo così la
navigazione e trasmissione dei dati e che, per questo, tecnologia facilmente accessibile: tanti sono i modelli a
hanno suscitato interesse anche nell’ambito della ricer- disposizione, differenti per prestazioni e dimensioni. Tali
ca scientifica, come abbiamo visto in un precedente ar- caratteristiche li rendono estremamente personalizzabi-
ticolo. li, quindi facilmente adattabili in funzione della specifica
applicazione di interesse.
STATO DELL’ARTE Dal primo sistema di asservimento visivo, sviluppato nei
La maggior parte delle applicazioni commerciali (alcu- primi anni ‘80, i progressi nel controllo visuale dei robot
ne già citate in un precedente articolo) vedono gli UAV - si parla di robot, e non di UAV, perché quanto si sta
impiegati come dispositivi per lo streaming di dati e vi- affermando abbraccia una più ampia schiera di dispo-
deo ad una stazione centrale, comandi in remoto da un sitivi - sono stati abbastanza lenti, ma negli ultimi anni
supervisore (una persona) che sceglie di volta in volta grazie all’aumento della potenza computazionale della
il prossimo compito da eseguire sulla base delle imma- scala di integrazione, è stato possibile installare schede
gini che vengono raccolte dalla camera presente sul per l’elaborazione dati in real-time. Sistemi in grado di
corpo del drone. La presenza della camera consente di garantire che un elaborazione (o task) termini entro un
estendere le scarse capacità sensoriali di quest velivoli, dato vincolo temporale o scadenza (detta in gergo de-
utilizzando concetti già noti nel campo della robotica in- adline). Il tempo per l’elaborazione deve essere minore
6
ROBOT
Esempio-di-un-modello-visual-servoing
di quello con cui giungono i campioni, dunque il siste- • eye in hand: la camera è fissata al corpo del
ma deve permanere in uno stato di hidle (attesa) per un robot, tramite il suo movimento si cerca di man-
tempo non nulla tra un campione ed il successivo. tenere il bersaglio nell’area di visione.
Tanto sono i lavori presenti in letteratura che impiegano
l’asservimento visivo per gli scopi più vari, ad esempio Una variazione a questi modelli include il posizionamen-
per il controllo di robot manipolatori, per la pianificazio- to di telecamera multiple, installate negli angoli di una
ne di percorsi, etc. Caratteristica comune a tutte le stanza dunque per applicazioni indoor, in grado di for-
pubblicazioni è l’utilizzo di paradigmi, quattro i più nire una visione stereoscopica dell’ambiente. Tali appli-
diffusi: cazioni, oltre ad avare un costo più elevato, presentano
• dynamic look and move: la visione fornisce i anche problemi di gestione ed elaborazione di doppie
punti nel quale il robot si deve portare, mentre immagini. Nel corso di questi articoli ci si focalizzerà sul
il controllore aziona gli attuatori in modo da as- modello rappresentato (Figura 1) image based utilizzan-
sumere la configurazione necessaria per il rag- do la camera nella configurazione eye in hand.
giungimento di tali punti; In sintesi, la vetrina di ricerca sull’inseguimento visivo
• direct visual servo: il controllore è completa- di oggetti per UAV è molto varia, soprattutto in contesti
mente eliminato poiché il sistema visivo control- suburbani. La progettazione di un sistema di naviga-
la direttamente gli attuatori; zione per un robot volante, rispetto ad un equivalente
• position-based: le informazioni estratte dall’im- a terra, è un obiettivo non da poco perché richiede un
magine (features, saranno approfondite nel cor- elevato numero di feedback per la stabilizzazione , e
so dei successivi articoli) vengono utilizzate per coinvolge sistemi fortemente non lineari.
ricostruire la posa (posizione/orientamento) 3D La capacità di identificare ed inseguire autonomamente
corrente dell’oggetto rispetto alla telecamera. Si un oggetto arbitrario, oltre ad essere interessante già di
genera un segnale di errore “cartesiano” dato per se, trova facile applicazione negli ambienti civili in
dalla differenza tra la posa 3D desiderata e quel- particolare per tutto quello che è il contesto esplorativo.
la attuale. Ad esempio, nell’ispezione di edifici con pericoli di crollo
• image-based: l’errore viene calcolato in 2D nel o centrali nucleari dismesse, in contesti ambientali, e
piano immagine, senza stimare la posizione de- così via. La grande forza di questo sistema è la sua at-
gli oggetti esaminati. Il robot si muove in modo tuabilità anche in spazi non noti.
da portare le features 2D osservate verso i valori
desiderati. Nota 1: da non confondere con l’aeromodello, che a
differenza del primo è impiegato per scopi hobbistici o
Per quanto concerne, invece, la telecamera si parla di sportivi: il volo avviene sotto il controllo visivo diretto e
sistemi: costante dell’aeromodellista).
• eye to hand: la camera è in grado di muoversi in
completa autonomia rispetto alla posizione del CONFIGURAZIONI PIÙ COMUNI
robot, variando i suoi tre gradi di libertà (yaw, Si definisce rotorcraft, dall’unione di rotatory-wing ai-
pitch e roll); rcraft, o aerogiro, un aeromobile ad ala rotante più pe-
7
ROBOT
sante dell’aria che per volare utilizza la portanza gene- zione a V, nel quale gli otto rotori sono equamente divisi
rata da superfici alari dette pale in rotazione attorno ad in due braccia divergenti.
un albero. Diverse pale montate su di un unico albero, La differenza principale tra le diverse configurazioni
in aeronautica, sono definite come un rotore (parte di è il carico di lavoro che esse sono in grado di so-
questi concetti sono stati affrontati in un altro articolo). stenere: maggiore è il numero dei rotori, maggiore è
Il modello tipico che rappresenta questa classe di ve- anche il carico di lavoro. Inoltre, un alto numero di rotori
livoli è certamente l’elicottero che però, a causa delle assicura una maggiore affidabilità: la rottura di un roto-
sue caratteristiche, è utilizzato soltanto nella sua veste re, o un suo malfunzionamento, non condiziona il prose-
manned (vedi nota 2 a fine paragrafo). guo della missione. Nel caso, poi, dei velivolo dotati di
Un multi-rotore (o multicopter) è un dispositivo in grado un doppio rotore coassiale, la diminuzione del rapporto
di volare, composto di una parte centrale, che contiene peso/potenza consente, a parità di carico di lavoro, di
la maggior parte dell’elettronica, e più eliche a passo avere una maggiore manovrabilità.
fisso: a differenza dell’elica a passo variabile, non è
possibile agire sull’orientamento delle pale, ruotandole, Nota 2: Lo svantaggio dell’elicottero tradizionale è rap-
perché ancorate al mozzo. Per ragioni prestazionali, le presentato dalla complessità della sua meccanica dif-
eliche sono tipicamente posizionate più lontano possibi- ficilmente riproducibile in piccola scala con sufficiente
le dal corpo del velivolo, come si può vedere in Figura 2, precisione; i vincoli di peso e costo presenti nella rea-
mentre la maggior parte del peso è posizionato nel cor- lizzazione di un mini-UAV impongono, infatti, l’utilizzo di
po (parte centrale). Inoltre, le eliche sono tutte orientate materiale plastico, meno resistente delle leghe metalli-
parallelamente alla forza di gravità in modo che l’aerea che e molto più sensibile alla presenza di giochi mec-
spazzata dalle pale sia perpendicolare, rispetto alla ter- canici.
ra che funge da riferimento, alla forza di gravità.
In funzione del numero di rotori si parla di tricotteri, PRINCIPI DI FUNZIONAMENTO
quadricotteri, esacotteri ed ottocotteri, che utilizzano ri- In questa sezione viene presentato in modo intuitivo il
spettivamente un totale di tre, quattro, sei ed otto rotori. funzionamento basilare che regola il volo di un si-
Le versioni più utilizzate prevedono un minimo di quat- stema multi-rotore (sia esso un tri-, quadri-, esa- o
tro rotori disposti in configurazione simmetrica a + o x otto-rotore); questi concetti elementari non richiedono
come mostrato in Figura 3. un’approfondita conoscenza dell’hardware o del mo-
Altre configurazioni, ma non sono poi così comuni, si dello fisico, ma danno un’appropriata comprensione su
prestano al sollevamento di carichi da lavoro pesanti, e come funziona il velivolo.
per le principali missioni con esigenti standard di sicu- Si prenda in considerazione lo schema del quadricotte-
rezza. In Figura 2 è riportato un ottocottero a configura- ro in Figura 4, in rosso è rappresentata l’elica principale
8
ROBOT
9
ROBOT
10
ROBOT
11
ROBOT
12
Near Infra-Red:
IoT una originale
applicazione di IoT
di Giorgio Giaccaglini
Quante volte di fronte a un alimento che stiamo per comprare al supermercato ci siamo domandati di
quali ingredienti sia la sua effettiva composizione oltre a quella indicata sull’etichetta del prodotto? O
quale contenuto di grassi, di zuccheri sia racchiuso nelle appariscenti e allettanti pietanze che stiamo
per mangiare? Un’azienda israeliana ha realizzato uno spettrometro di massa NIR (Near Infra-Red) per
scoprire la composizione molecolare delle sostanze.
C
onsumer Physics Inc. è una startup israeliana L’aspetto innovativo di questo prodotto non risiede in un
nata nel 2011 il cui obiettivo visionario – sono originale algoritmo elaborativo o in una tecnologia mai
loro parole – era quello di costruire uno spettro- utilizzata prima. Anzi, il principio di funzionamento dello
metro di massa che si potesse tenere nel palmo di una spettrometro di massa non è certo una novità. Le ingom-
mano. A giudicare dai lanci pubblicitari e dai riconosci- branti dimensioni degli apparati elettronici con cui viene
menti tecnologici raccolti in questi ultimi mesi, sembra realizzato ne confinavano però l’utilizzo in laboratori o in
proprio che la visione dei fondatori sia diventata realtà. grossi ambienti industriali (figura 2). La sfida dei tecnici
SCiO, questo è il nome del prodotto, è una scatoletta della Consumer Physics è stata quella di realizzare un
delle dimensioni di 54 x 36,4 x 15,4 mm (figura 1) e del dispositivo dalle misure ridotte sfruttando le tecnologie
peso di 35 grammi capace, secondo le affermazioni del- più avanzate e aggiornate nel campo dell’ottica e della
la startup, di riconoscere la composizione molecola- microelettronica.
Il fatto di portare a livello consumer, e
quindi a un mercato enorme di potenziali
consumatori, un oggetto dotato di un sen-
sore capace di riconoscere quale sia la
composizione molecolare delle sostanze
che mangiamo, tocchiamo e, in genere,
fanno parte delle nostre vite, ha destato
l’interesse dalla Analog Devices Inc.,
uno tra i maggiori produttori di com-
ponenti elettronici a livello mondiale.
Tra le due aziende, la multinazionale e la
start-up israeliana, è stato stipulato un ac-
cordo di collaborazione. In poche parole,
Analog Device andrà ad utilizzare, con op-
portuni improvement tecnologici, le solu-
zioni implementate su SCiO. È gioco forza
pensare che lo spettrometro di massa non
sarà implementato solo nella scatoletta
mostrata in figura 1, ma è desiderio del-
la Analog Devices inserirne l’applicazio-
Figura 1: SCiO, lo spettrometro di massa NIR portatile della Consumer ne nel promettente mondo dei sensori e
Physics. dell’Internet of Things.
13
IoT
14
IoT
l’energia trasportata dal fotone alla frequenza dell’on- zione unica) di una molecola.
da stessa. Per cui, se con λ indichiamo la lunghezza Nella fisica “classica” il termine di vibrazione di un siste-
d’onda, con f la frequenza e con E l’energia del fotone, ma è sinonimo di oscillazione armonica rispetto alla sua
possiamo ripescare dai nostri ricordi scolastici, la ben posizione di equilibrio e la forza applicata per indurre
nota relazione: E = h f = h c/ λ dove h è la costante di tale perturbazione è proporzionale alla perturbazione
Planck (la costante che prende il nome del fisico Max stessa (es. un corpo collegato a una molla allontanato
Planck che la scopri nel 1900). Per riassumere all’estre- dal suo punto di equilibrio).
mo i concetti espressi poco sopra, possiamo affermare: Nel caso delle molecole, le vibrazioni non vengono de-
quando una onda di luce si propaga con lunghezza scritte dalla classica oscillazione armonica, bensì tra-
d’onda λ, essa è trasportata da un certo numero di foto- mite una versione per così dire, “quantistica”. Se nella
ni ciascuno dei quali ha una energia pari a hc/ λ. oscillazione armonica classica la quantità di energia
varia in modo continuo, nel caso della oscillazione ar-
Ma i fotoni sono, per così dire, esseri bizzarri: prima di monica quantistica l’energia che entra in gioco varia
tutto non hanno massa e in secondo luogo sono capaci solo in quantità discrete e ben definite. In pratica, una
di apparire o scomparire nel nulla. Ovviamente nean- molecola può cambiare la sua energia (acquisirla o per-
che loro, per i fotoni, il principio di conservazione derla ed entrare in vibrazione) per quantitativi discreti.
dell’energia è una opinione, e se un fotone decide L’insieme di questi quantum di energia di cui è dotata
di scomparire, l’energia da lui posseduta deve essere una molecola, è una specie di patrimonio genetico della
ceduta a qualcuno disposto a prenderla. Se un fotone molecola stessa: sono unici e ben definiti. Questi quan-
compare dal nulla, questo avviene se e solo se qualcu- tum di energia sono le impronte digitali che andavamo
no è disposto a cedere energia. Ci stiamo avvicinando cercando.
al nocciolo del funzionamento del nostro spettrometro di E i fotoni cosa c’entrano? Precedentemente abbiamo
massa: il fotone che scompare. affermato che i fotoni hanno la bizzarra abitudine di
scomparire qualora decidessero di cedere la loro ener-
UN QUANTUM DI ENERGIA gia a un atomo con cui hanno, lasciatemi passare il
Ma perché il fotone scompare? termine, una certa simpatia. Questo avviene qualora il
La materia è composta da molecole e le molecole da quantitativo di energia posseduto da un fotone, coinci-
gruppi di atomi strettamente connessi tramite legami de esattamente con uno dei livelli “discreti” (quantum di
chimici. Gli atomi hanno una propria massa, diversa da energia) posseduti dall’atomo colpito dal fotone stesso.
atomo ad atomo, e opportunamente sollecitati possono A questo punto, dal momento che:
entrare in vibrazione. Il modo in cui una molecola può 1. Il fotone possiede una energia il cui valore è le-
entrare in vibrazione è unico in quanto legato dal tipo gato dalla propria lunghezza d’onda (E = h f =
e numero di atomi e dai legami chimici che li tengono h c/ λ),
stretti. Insomma, se riuscissimo a mettere in vibrazione 2. Il fotone può cedere il suo quantum di energia
una molecola e ad osservarne il modo in cui essa vi- ad un atomo che possiede esattamente quel
bra, avremmo una visione unica per ogni molecola: una quantum di energia,
specie di impronta digitale della molecola sotto esame.
Andando poi a ricercare questa impronta digitale in un riusciamo a dedurre il principio di funzionamento di
enorme database in cui sono memorizzate le vibrazioni uno spettrometro di massa.
molecolare di tutte le molecole note allo scibile umano, 1. viene illuminato il campione sotto esame con
sarà possibile ricavare informazioni dettagliate sul no- una sorgente di luce visibile a larga banda;
stro ricercato (avere appunto le generalità della mole- 2. la luce riflessa viene raccolta e analizzata nel
cola sotto esame). Dobbiamo quindi trovare il modo di suo spettro elettromagnetico;
mettere in vibrazione una molecola e catturare la sua 3. si confronta lo spettro della luce inviata con
impronta digitale. quello della luce riflessa e tramite una algorit-
mo comparativo (alcuni fotoni sono scomparsi in
DUE PAROLE DI MECCANICA QUANTISTICA quanto assorbiti dagli atomi) si decifra l’impron-
Tranquilli. Non ho intenzione di parlare di formulazione ta digitale della materia sotto esame.
Lagrangiana o Hamiltoniana della meccanica quantisti- 4. l’impronta digitale molecolare viene inviata a un
ca. Due parole solo per capire come il nostro fotone, database con la quale si va a rintracciare nome
possa aiutarci per ricavare l’impronta digitale (la vibra- e cognome della sostanza.
15
IoT
16
IoT
17
Avvisatore di allagamento
MAKER
con ESPertino di Giovanni Di Maria
Grazie alle sue possibilità intrinseche di collegarsi a Internet, ESPertino può rivelarsi un utile avvisato-
re di allagamento di un ambiente. Il progetto utilizza anche uno dei relè a bordo per innescare il potente
avviso di una sirena a 12 Volt. L’articolo è molto didattico poiché esplora tante possibilità offerte da
questa magnifica scheda.
I
l dispositivo presentato in questo articolo è interes- trica. La resistenza risultante è, dunque, quasi infinita.
sante e utile in molte occasioni. Può essere utilizza- In presenza d’acqua, invece, si instaura un lieve pas-
to per la sicurezza negli esercizi pubblici, ristoranti, saggio di elettroni tra le due parti. Il prezioso liquido,
alberghi, uffici ma può fornire tutta la sua utilità anche infatti, presenta una determinata resistenza elettrica
in ambito casalingo e domestico. Si tratta di un senso- che, seppur abbastanza alta e non matematicamen-
re di allagamento molto rudimentale quanto efficace te lineare alle diverse condizioni fisiche e chimiche, è
che, in caso d’importanti perdite d’acqua non previste, sufficiente a innescare il circuito di rilevazione. L’acqua
provvede subito ad avvertire i proprietari, mediante di- salata riesce a condurre ancora molta più corrente. Per
versi canali di comunicazione. Il tempestivo intervento l’utilizzo continuativo del circuito, non esiste il problema
dell’uomo, infatti, può scongiurare allagamenti ben più di una eventuale elettrolisi, in quanto il dispositivo opera
gravi, permettendo agli operatori di chiudere in tempo sempre in stato di riposo, ossia senza la presenza del
valvole e rubinetti interrompendo, di fatto, il pericoloso liquido tra i contatti. I momenti in cui l’acqua si trova a
flusso d’acqua. contatto con le sonde, dunque, sono molto limitati, anzi,
davvero rari (si spera) e corrispondenti esclusivamente
PRINCIPIO DELLA RILEVAZIONE DELL’ACQUA agli accadimenti degli allagamenti.
Il dispositivo descritto è fornito di due puntali o di due
piastre metalliche e conduttive (vedi figura 1) che sono PROTOTIPO DI PROVA
poste, praticamente sul pavimento. In mancanza d’ac- Prima di proseguire con la realizzazione dello schema
18
MAKER
definitivo, è molto utile e didattico provare, con uno dell’acqua, invece, chiude il circuito, causando un de-
sketch minimale, la conduttività dell’acqua. Il circuito di bole passaggio di elettroni e la porta GPIO34 commuta
test non ha bisogno di amplificatori di segnali poiché nettamente e decisamente il suo stato a livello logico
lo stesso sfrutta l’alta impedenza degli ingressi digi- alto, grazie alla sua alta impedenza. Per aumentare
tali di ESPertino (HIGHZ). Lo schema di prova è mo- ancor di più la sensibilità della porta è sufficiente alzare
strato in figura 2. il valore della resistenza anche a 3-4 Mohm. Cos’è che
Come si nota, la porta d’ingresso GPIO34 è collegata fornisce la tensione positiva per alimentare il circuito di
a massa attraverso una resistenza di alto valore (com- rilevazione? Lo stesso ESPertino, tramite il suo pin di
presa tra 100kohm e 1 Megaohm). Questa componen- alimentazione etichettato con 3.3V. Senza la resistenza
te assicura un potenziale basso a riposo (resistenza di di pull-down le rilevazioni potrebbero risultare casuali e
pull-down) quando i due puntali non sono collegati tra impreviste, per cui la sua presenza è obbligatoria.
loro e non scorre alcuna corrente tra essi. La presenza Il seguente sketch di prova serve per effettuare il test. E’
void setup() {
void loop() {
19
MAKER
sufficiente riempire un bicchiere d’acqua dal rubinetto. passare a descrivere il prototipo definitivo, assieme alle
Se i due terminali non sono immersi, il diodo Led onbo- sue funzionalità. In caso di rilevazione di perdita d’ac-
ard, collegato alla porta 13 di ESPertino, resta spento. qua da parte del sensore, il prototipo eseguirà i seguenti
Non appena i puntali sono sommersi dal liquido, si otter- compiti d’informazione, come mostrato in figura 3:
rà la netta e immediata illuminazione del semicondut- • Illumina il diodo Led presente sulla scheda
tore. Si ricorda altresì che in presenza di acqua salata ESPertino;
il passaggio degli elettroni è di gran lunga superiore. Il • Attiva il relè a bordo della scheda. Esso può pi-
diodo Led onboard ha un funzionamento “al contrario”. lotare piccoli carichi come sirene, avvisatori acu-
Per illuminarlo, infatti, occorre portare il suo catodo a stici e luminosi, elettrovalvole o elettroserrature
livello logico basso. oppure ulteriori relè per comandare utilizzatori
Il listato è semplicissimo. La porta 34 è posta in ingresso ancora più grossi;
mentre la porta 13 è configurata in uscita per il pilotaggio • Invia un messaggio SMS a uno o più numeri di
del diodo Led. La funzione loop() legge ciclicamente lo telefono programmati;
stato logico della porta 34. Il relativo stato è “riversato”
e assegnato alla porta 13 per la relativa illuminazione. Leggi anche: Realizziamo un sistema di monitorag-
Questa operazione è effettuata in forma negata poiché gio grafico delle temperature con ESPertino
il catodo del Led è collegato alla porta di uscita dell’E-
SP32 (vedi schema elettrico ufficiale di ESPertino). IL CABLAGGIO DEL SISTEMA
Esaminiamo, adesso, lo schema elettrico di cablaggio,
IL PROTOTIPO molto simile a quello di principio visto nel precedente
Bene, dopo che la teoria è stata esaminata e che il fun- paragrafo e mostrato in figura 4. In aggiunta è stato uti-
zionamento di principio è stato ben compreso, si può lizzato uno dei due relè presenti sulla scheda. Il fatto
che ESPertino disponga
di tali componenti mec-
canici costituisce indub-
biamente una estrema co-
modità. A essi può essere
connesso davvero di tutto,
purché non vengano su-
perate importanti coeffi-
cienti di potenze. Il colle-
gamento del carico (sirena
o avvisatore luminoso) fa
capo al contatto N.A. (nor-
malmente aperto) del relè,
ossia il contatto centrale e
quello superiore. In caso
di sua eccitazione, il cir-
cuito viene chiuso e l’uti-
lizzatore a esso collegato
è attivato. Se il progetto lo
richiede, è possibile usa-
re anche il contatto N.C.
(normalmente chiuso).
Per l’allestimento dei
due sensori del liquido è
possibile adottare diversi
metodi. Uno dei più
validi è quello proposto
precedentemente in
Figura 3: le attivazioni del sistema, in caso di allagamento [segue a pag. 32]
20
MAKER
//------------------------------------------
// by Giovanni Di Maria
//------------------------------------------
#include <WiFi.h>
long secondi_per_sms = 0;
bool stato;
void setup() {
Serial.println();
WiFi.begin(ssid, password);
delay(10000);
void loop() {
21
MAKER
b393289999999&message=Allagamento+in+corso”;
client.stop();
//-------Lampeggio del diodo Led per l’attesa per permettere al messaggio di partire----------
for(int i=1;i<=40;i++) {
delay(125);
delay(125);
22
MAKER
Figura 5: un altro metodo per realizzare il sensore d’acqua. I dadi sono avvitati a terra e le connessioni elettriche sono nascoste
sotto il pavimento
figura 1. In alternativa, per occultare alla perfezione Di metodi per inviare gli SMS ne esistono parecchi.
i collegamenti elettrici e i fili di cablaggio, è possibile Quello adottato nel presente progetto si avvale dei ser-
far fuoriuscire dal pavimento solamente due contatti vizi online preposti alla gestione di messaggi. Le solu-
metallici, ad esempio due viti, che fungono, così, da zioni sono molte e diversificate. Alcune di queste, deci-
puntali, come mostrato in figura 5. I due puntali di sa mente buone, prevedono l’acquisto di un pacchetto
pescaggio possono anche trovarsi parecchio distanti tra di SMS dal costo davvero irrisorio. Ad esempio Aruba o
loro, purché non ostacolino il normale transito di persone Skebby forniscono un ottimo servizio a prezzi molto
o di cose. Inoltre essi non costituiscono minimamente un bassi e contenuti. Anche l’affidabilità della spedizione
pericolo, in quanto risultano interessati a una tensione è importante e queste due aziende la garantiscono al
di solo 3.3V. cento per cento.
Per inviare con Aruba, via protocollo HTTP con metodo
COME ESPERTINO INVIA GLI SMS GET, un SMS a un determinato numero di telefono cel-
23
MAKER
24
Starter Kit TRL
BO AR D Funksysteme
di Maurizio Di Paolo Emilio
Il kit IRIS Starter TRL Funksysteme è stato sviluppato per essere un’introduzione ai moduli radio e un
veloce sistema di prototipazione. Ci sono due unità IRIS Starter kit pre-programmate in una configura-
zione di test. Basta collegare i cavi di alimentazione e il sistema IRIS è pronto per un nuovo progetto.
U
n sistema IRIS è costituito da un gruppo di unità la versione standard utilizza un’alimenta-
disposte in una struttura ad albero collegate tra zione a 5 volt, mentre la versione a bassa
loro (figura 1). L’unità master determina la con- potenza utilizza 3 volt. Tutti i modelli IRIS
nessione all’utente finale tramite, ad esempio, un’inter- possono comunicare tra loro tramite coppie
faccia seriale, un modulo web o un modulo GSM. Le di moduli radio o in reti radio più complesse.
altre unità del sistema sono collegate a varie apparec- • Antenna.
chiature elettroniche o agiscono come ripetitori per con- • 2 cavi seriali.
sentire la comunicazione su lunghe distanze. Esistono • 2 adattatori AC/DC.
diversi tipi di unità IRIS con diverse funzioni. Gli ingressi • 1 CD.
digitali e analogici, le uscite digitali, l’interfaccia seriale,
i timer e i contatori sono esempi di alcune delle funzioni CARATTERISTICHE
disponibili. È possibile configurare le unità IRIS prima Il kit contiene due unità IRIS Starter kit. Un’unità Starter
di impostare il sistema in posizione o dopo l’utilizzo del Kit è composta da due parti: un modulo IRIS Base che
collegamento radio o dell’interfaccia seriale. gestisce tutte le funzionalità e una scheda di valutazio-
ne IRIS che gestisce la connessione all’utente.
Ci sono sei ingressi, quattro uscite, un modulo di co-
municazione radio e una porta di comunicazione seriale
disponibili su ciascuna unità IRIS Starter kit. Con queste
soluzioni e la possibilità di reagire con diverse azioni su
eventi diversi, IRIS rende il sistema da realizzare molto
flessibile. La prima cosa da fare, dopo aver collegato
le unità, è controllare la comunicazione, assicurandosi
che entrambe le unità siano collegate correttamente. Le
unità IRIS Starter sono pre-programmate con una
configurazione di test.
Le unità IRIS possono essere utilizzate per la supervi-
sione e il controllo di dispositivi esterni. È fondamentale
Figura 1: esempi di collegamento di varie unità IRIS, la prima che le unità siano configurate attentamente per una fun-
sulla sinistra è l’unità Master e poi a seguire le restanti Slave zione ottimale. Le unità IRIS comunicano tra loro tramite
reti radio e con altri dispositivi sfruttando gli ingressi, le
uscite e le interfacce seriali. L’unità IRIS Starter kit di-
Lo starter kit include (figura 2): spone di sei ingressi che possono essere analogici o di-
• 2 IRIS starter kit units: gitali a seconda della configurazione. Ogni ingresso ha
• Evaluation board. un pulsante per simulare i valori di input e una connes-
• IRIS base: fa parte della serie di prodotti sione per collegare dispositivi esterni come switch, sen-
IRIS ed è sviluppata per l’integrazione in altri sori e trasduttori. L’unità IRIS Starter kit dispone di
sistemi. La serie IRIS contiene diversi mo- quattro uscite digitali. Ogni uscita dispone di un diodo
delli che forniscono soluzioni per varie e una connessione per collegare l’unità IRIS ad altri di-
25
BOARD
Tipo 60901
Altezza 11 mm
Larghezza 51 mm
spositivi. Le unità IRIS Starter kit gestiscono RS-232 e te, che lo rendono adatto ad interagire con la maggior
RS-485, sia half-duplex che full-duplex, a seconda della parte dei sistemi. Per collegare IRIS-Base ad altre ap-
configurazione. È possibile impostare le unità IRIS in parecchiature potrebbe essere necessario un certo nu-
modo che corrispondano all’interfaccia delle unità ester- mero di circuiti aggiuntivi a seconda dell’applicazione.
ne. Le unità IRIS Starter Kit comunicano tra loro tramite L’uso più comune di IRIS-Base è come un collega-
collegamenti radio sulla banda di 433Mhz e in alcuni mento radio tra sistemi che sono distanti o mobili.
paesi della banda di 439 MHz. È possibile modificare le I dati possono essere indirizzati a un PC tramite IRIS-
frequenze in modo che diversi sistemi IRIS nella stessa RS232 o IRIS-USB, in un database su Internet trami-
area non interferiscano tra loro (figura 3). te IRIS-CUW o può essere utilizzato per controllare le
IRIS-Base dispone di interfaccia seriale, ingressi e usci- uscite su un IRIS-IO. Con funzioni quali timer e conta-
26
BOARD
CONCLUSIONI
Il kit Starter IRIS permette un rapido design dei mo-
duli radio utilizzati anche come schede di valutazione. L’autore è a disposizione nei commenti per eventuali
approfondimenti sul tema dell’Articolo. Di seguito il link per
Esempi di applicazioni sono: lettura remota del conta- accedere direttamente all’articolo sul Blog e partecipare alla
tore, M2M (Machine to Machine), macchinette auto- discussione:
matiche e slot machine, sistemi di controllo remoto e https://it.emcelettronica.com/starter-kit-trl-funksysteme
di misurazione remota, registratore di dati, trasmissione
27
Bitcoin: la moneta
TECH
S C I&
decentralizzata di Stefano Lovati
Con il termine Bitcoin si intende un tipo di moneta utilizzata a livello globale, e che, come ogni altra
moneta, può essere convertita in un’altra valuta, ad esempio il dollaro statunitense. L’aspetto interes-
sante del Bitcoin è che con la sua nascita è stato introdotto un sistema monetario che opera in modo
decentralizzato, come vedremo meglio e più in dettaglio nell’articolo.
I
due aspetti fondamentali che rendono la moneta zioni relative a ogni transazione monetaria, per evitare
Bitcoin diversa da un qualunque altro tipo di sistema future controversie e perchè richiesto per legge.
monetario moderno, come il dollaro oppure l’euro, Una volta premesso cosa si intende per sistema mone-
sono i seguenti: tario centralizzato, possiamo a questo punto affermare
1. la decentralizzazione: in questo tipo di sistema che un sistema decentralizzato differisce da quest’ul-
monetario non esiste alcun organismo centra- timo soprattutto per la mancanza di un’autorità cen-
le che conia la moneta, e potremmo piuttosto trale. Nonostante ciò, un sistema decentralizzato è in
dire che la moneta viene coniata dal popolo (il grado di operare correttamente, proprio come se dietro
“crowd”). Il Bitcoin è pertanto un sistema mone- di esso vi fosse un’autorità centrale.
tario decentralizzato; Il concetto di “operare correttamente” è tuttavia abba-
2. l’anonimato: le persone che utilizzano la mone- stanza vago, e dipende strettamente dalle leggi e dalle
ta Bitcoin assumono che la propria identità non norme in ambito finanziario che ogni paese applica a
venga mai rilevata. Ciò si differenzia dal modo questo tipo di sistema. In generale, nella maggior parte
comune con cui eseguiamo acquisti su internet, dei paesi, un sistema monetario che operi correttamen-
utilizzando tipicamente una carta di credito, e te dovrebbe applicare qualche forma di tassazione, e
fornendo i nostri dati personali affinchè possano queste regole potrebbero differire tra un paese e l’al-
essere verificati dalla banca presso la quale ab- tro. Tuttavia, in tutti i paesi (o federazioni), deve neces-
biamo la disponibilità di denaro. sariamente essere attuata una procedura, efficace e
controllabile, per la stampa della moneta. Possiamo
Nel corso dell’articolo ci soffermeremo soltanto sul pri- affermare con certezza che il sistema Bitcoin soddisfa
mo dei due aspetti menzionati in precedenza, ovvero la quest’ultimo requisito, mentre per quanto riguarda altri
decentralizzazione del Bitcoin, lasciando aperto l’aspet- aspetti (come quelli legati alla tassazione e alla regola-
to relativo all’anonimato per eventuali commenti. mentazione) , il giudizio è soggetto alla libera interpre-
tazione.
LA DECENTRALIZZAZIONE Prima di illustrare come venga generato questo nuo-
Per assimilare a fondo il concetto di “sistema moneta- vo tipo di moneta (il bit-coin), è utile analizzare più in
rio decentralizzato”, dobbiamo anzitutto capire cosa si dettaglio il modo in cui la moneta è stata percepita dal-
intende per sistema monetario “centralizzato”. In ter- le popolazioni nel corso della storia. Se prendiamo in
mini semplificati, per sistema monetario centralizzato si considerazione i sistemi monetari utilizzati nel corso dei
intende un sistema in cui l’autorità centrale, tipicamente secoli passati, possiamo osservare come, con l’instau-
il governo, è responsabile di tutti gli aspetti legati alla rarsi delle prime attività commerciali, le popolazioni uti-
sfera economica, inclusa la stampa delle banconote e il lizzassero un sistema decentralizzato, per poi passare,
conio delle monete, la riscossione delle tasse sui profitti, successivamente, a un sistema di tipo centralizzato. Si
la regolamentazione delle banche e del credito in gene- arriva così ai nostri giorni, in cui la comunità crittogra-
rale, e così via. In questo tipo di sistema, quasi ogni fica sta compiendo enormi sforzi affinchè si ritorni
aspetto è regolato da leggi e politiche approvati dal a un sistema decentralizzato, anche se in una forma
governo. La maggiorparte delle transazioni di denaro più moderna ed attuale. Vediamo ora più in dettaglio i
passano attraverso terze parti, tipicamente le banche, le diversi approcci al sistema monetario che si sono sus-
28
TECH
seguiti nella storia. posto protetto dei lingotti d’oro per la propria clientela,
e apponendo la propria firma sulle corrispondenti note
L’ANTICHITÀ: IL SISTEMA DECENTRALIZZATO emesse. Il ruolo della banca era ovviamente cruciale: in
Il primo tipo di sistema monetario messo in atto era mol- questo tipo di sistema era necessario avere fiducia nelle
to semplice: un grammo d’oro valeva semplicemente banche, ed essere in grado di riconoscere se una nota
e soltanto un grammo d’oro. L’oro era infatti il metallo utilizzata da un cliente per un pagamento aveva appo-
prezioso utilizzato come strumento basilare di scambio, sta una firma valida oppure falsificata (figura 1).
anche se successivamente venne utilizzato l’argen-
to, oppure entrambi. Esisteva inoltre un vero e proprio L’ERA MODERNA: LA MONETA CENTRALIZ-
tasso di scambio tra un qualunque tipo di merce e l’o- ZATA
ro, e viceversa. In questo modo, le persone potevano Quello creato nell’era moderna è il sistema monetario
acquistare ciò di cui avevano particolarmente bisogno che tutti noi siamo abituati a conoscere e utilizzare nella
semplicemente scambiando la merce desiderata con la vita quotidiana. Anche questo tipo di sistema moneta-
corrispondente quantità di oro, oppure con un altro tipo rio, come quello menzionato nel precedente paragrafo,
di merce, a condizione però che avesse lo stesso valore si basa sull’utilizzo di appositi certificati e monete. La
equivalente in oro. Questo tipo di sistema era comune- differenza è che ora i certificati e la moneta non rappre-
mente accettato, in quanti tutti sapevano quanto l’oro sentano un bene materiale concreto e prezioso, come
fosse raro, e perciò prezioso. Non c’era alcun bisogno di l’oro o l’argento, ma piuttosto hanno valore solo in vir-
un’autorità centrale che stabilisse l’esatta equivalenza tù di un decreto governativo.
tra una certa quantità di oro e una determinata quantità Se, ad esempio, volessimo vendere degli hot-dog per le
di merce (ad esempio, di legno). Il valore dei prodotti strade di New York, dovremmo necessariamente accet-
era invece determinato dal loro valore fisico reale, e si tare i dollari statunitensi come merce di scambio per i
trattava pertanto di un sistema decentralizzato. panini venduti. I dollari statunitensi non verrebbero però
accettati in virtù del loro valore intrinseco (dopo tutto, si
LA PRIMA INTRODUZIONE DELLA MONETA tratta semplicemente di un pezzo di carta), ma perchè
Il primo passo verso l’introduzione del sistema moneta- sono le regole stabilite dal governo che ci obbligano a
rio che tutti oggi conosciamo, si verificò con la creazione farlo. Il governo ha fatto sì che i dollari diventassero oggi
di un sistema centralizzato merce-denaro. In questo tipo il bene più fungibile (persino più utile dei lingotti d’oro).
di sistema, l’acquirente non com-
prava la merce (ad esempio il cibo)
dando in cambio al venditore una
certa quantità di oro, ma piuttosto
consegnava una nota rilasciata e
firmata da una banca. Questa nota,
o certificato, attestava che la ban-
ca avrebbe riservato nelle proprie
casseforti una quantità di oro cor-
rispondente al valore del certificato
emesso. Chiunque fosse entrato
in possesso di questo certificato,
avrebbe potuto riscuoterlo in ogni
momento consegnandolo alla ban-
ca. Si trattava quindi di una vera e
propria moneta (o se si preferisce,
di una banco-nota), che poteva es-
sere trasferita di mano in mano e
utilizzata per acquistare cibo o altri
generi di merce. In questo tipo di
sistema, la banca rappresentava
il punto centralizzato, la cui fun-
zione era quella di conservare in un Figura 1: i lingotti d’oro custoditi dalle banche
29
TECH
Come già accennato, queste banconote, di per sè, non il termine corretto in questo ambito è quello di “query”).
hanno alcun valore, ma come conseguenza del regola- L’accesso a queste informazioni è inoltre riservato, oltre
mento messo in atto posseggono esattamente il valore che alla banca, ai soli titolari del conto, in modo tale da
stampato su di esse (questo numero viene anche indi- garantire la riservatezza dei dati.
cato dagli esperti di economia con il termine di “valore Supponiamo ora che il database utilizzato dalla banca
facciale”). Per identificare questo tipo di moneta si usa possa contenere un numero illimitato di record, e che
anche spesso il termine latino “Fiat”, che potremmo tra- quindi non vi sia un limite al numero di transazioni re-
durre in italiano con “sia fatta”, intendendo con questa gistrabili. Supponiamo inoltre che la banca inizi a popo-
accezione il significato di un ordine, o decreto, stabilito lare il database per un certo cliente scrivendo il record
da un governo. numero 1, e continui seguendo un numero crescente di
record. Possiamo a questo punto individuare due rego-
IL FUTURO: TRA DECENTRALIZZAZIONE E le fondamentali che la banca deve seguire scrupolo-
BLOCKCHAIN samente:
Blockchain, la tecnologia che sta dietro la moneta Bit- 1. irreversibilità – se in un dato momento la banca
coin, rappresenta un concetto molto più semplice di sta scrivendo la transazione associata al record
quanto si possa immaginare. numero X, non dovrà mai tornare indietro, mo-
Possiamo capire facilmente in cosa consiste la dificando ad esempio le transazioni con indice
blockchain e come essa funziona, facendo un’analogia inferiore a X;
con il conto corrente bancario. Chiunque abbia un conto 2. latenza – se in un certo istante la banca sta
corrente in una banca, sa come sia possibile conoscere scrivendo il record numero X, la corrispondente
il saldo del conto, e come ottenere la lista delle transa- transazione (in quel frangente) non può anco-
zioni inerenti quel conto riferita a un certo periodo (tran- ra essere ritenuta valida, e non si può fare affi-
sazioni sia in uscita che in entrata). La banca memo- damento su di essa quando il cliente chiede ad
rizza tutte queste informazioni in un proprio database esempio il saldo del proprio conto. Ciò avviene
privato e protetto, permettendo ai propri clienti di ese- anche con l’esperienza quotidiana che ognu-
guire delle interrogazioni su di esso (come sappiamo, no di noi può avere nel gestire il proprio conto
30
TECH
corrente: non sempre le transazioni si riflettono verificando che sul suo conto vi siano fondi sufficienti
immediatamente sullo stato del conto corrente per onorare la transazione. Clair, per guadagnarsi la
(vengono cioè “contabilizzate”), può essere in commissione associata alla transazione, non devrà fare
generale richiesto un certo tempo prima che ciò altro che creare una nuova transazione (creare cioè un
avvenga, e che il saldo del conto assuma per- nuovo record nel database), e aggiungerla al database
tanto il valore effettivo. comune condiviso tra tutti gli impiegati. Ciò è necessa-
rio, in quanto Clair deve assicurarsi che ogni altro impie-
Queste due regole indicano che il record X è l’unico gato possa convenire sul fatto che la transazione è già
che può essere scritto, ma non può ancora essere letto, stata processata da Clair, e che pertanto soltanto a lei
mentre i record 1, 2, .., (X-1) possono tutti essere letti, spettino le commissioni relative all’operazione. Quan-
ma non sono più scrivibili (figura 2). do tutti gli impiegati sono d’accordo su questo punto,
Un’altra questione importante riguarda le spese asso- la transazione è dichiarata valida, e a Clair può essere
ciate alla transazione. Ogni volta in cui la banca registra accreditata la commissione.
una transazione che ha come origine Alice e come de- Come è facile comprendere, la necessità di aggiungere
stinatario Bob, addebiterà ad Alice una certa somma di una transazione al database comune, e far sì che tutti
denaro come commissione per il servizio svolto dalla gli impiegati approvino ogni operazione, non è un com-
banca. L’importo di questa commissione non è fisso, ma pito semplice. Supponiamo infatti che Dan, un altro im-
ogni banca opera in una sorta di mercato libero. piegato che come Clair abbia ricevuto le stesse informa-
zioni sulla transazione da processare, cerchi anche lui
DECENTRALIZZIAMO! di aggiungere un nuovo record con la transazione al da-
I concetti esposti nel paragrafo precedente indicano tabase condiviso. La transazione di Alice, ovviamente,
come si dovrebbe comportare un sistema centralizzato. non può essere processata due volte, poichè in tal caso
Vediamo ora, invece, come si dovrebbe comportare un Alice dovrebbe pagare due volte le commissioni sulla
sistema decentralizzato. stessa transazione. A chi allora spettano le commissioni
La decentralizzazione del sistema implica comunque la per la transazione di Alice? A Clair oppure a Dan? La
necessità di memorizzare in modo efficiente e affidabile risposta è molto semplice: le commissioni spetteranno
ogni transazione, ma senza richiedere per questa ope- a chi tra i due impiegati si dimostrerà più veloce nel pro-
razione il controllo di una banca centrale. Inoltre, è cessare la transazione.
importante notare come, nel caso non esistesse un’au- Nel mondo reale, processare una transazione tramite
torità centrale riconosciuta da tutti (come la banca, op- un computer è un’operazione molto semplice, e può
pure il governo stesso), occorrerebbe comunque met- richiedere soltanto alcuni millisecondi (o persino un
tere in atto un meccanismo in base al quale chiunque tempo inferiore). Ciò potrebbe instaurare un clima di
possa riconoscere il valore di un oggetto, sia che si tratti competizione tra Clair e Dan, ciascuno nel tentativo di
di una banconota o di una moneta. Nel nostro caso, tut- processare il più velocemente la transazione e accap-
tavia, estendiamo quest’ultimo aspetto, assegnando un pararsi le commissioni. Non solo, si potrebbe anche
valore anche a un certo tipo di informazione digitale. creare una situazione in cui (nel decidere a chi tra i due
Nel seguito dell’articolo parleremo di decentralizzazione debbano essere accreditate le commiissioni) parte degli
dell’archivio delle transazioni, e successivamente ve- impiegati sostiene Clair, mentre un’altra parte sostiene
dremo come questi “oggetti digitali” (ai quali è assegna- Dan. Esiste tuttavia un modo per far sì che tutti gli impie-
to un determinato valore) vengono creati nel sistema. gati concordino su chi abbia processato la transazione,
Supponiamo ora che, anzichè una banca, abbiamo a e a chi, di conseguenza, andranno accreditate le com-
disposizione un gruppo di impiegati in grado di proces- missioni. La soluzione consiste nell’utilizzare un puzzle:
sare le transazioni di Alice. Alice, però, non conosce per ogni transazione che può essere processata da ogni
tutti questi impiegati, ma soltanto alcuni. Quando Alice impiegato, e aggiunta al database comune e condiviso,
vuole inviare una somma di denaro a Bob, fornisce le viene generato in modo del tutto casuale un puzzle uni-
informazioni relative alla transazione ad ogni impiegato co, molto difficile da risolvere. Il fatto che ogni puzzle
che conosce. Queste informazioni contengono il nume- venga generato in modo casuale e sia diverso da tutti gli
ro di conto di Bob, la cifra da trasferire, e l’importo delle altri creati in precedenza è molto importante: con riferi-
commissioni che Alice è disposta a pagare in cambio mento al nostro esempio, ciò implica che la transazione
del servizio. Almeno uno di questi impiegati (supponia- che sta per essere processata da Clair contiene un puz-
mo che si chiami Clair) riceverà il messaggio di Alice, zle differente da quello della transazione di Dan, nono-
31
TECH
stante gli altri dati della trnasazione siano gli stessi (si traccia degli indirizzi IP dei minatori. I minatori associa-
tratta per entrambi dell’operazione richiesta da Alice). ti a questi indirizzi IP vengono notificati ogni volta che
Essendo i puzzle molto complessi, la loro risoluzione chiediamo al nostro portafoglio elettronico di trasferire
richiederà un certo tempo, ed è pertanto plausibile che a qualcuno del denaro, cioè ogni volta che creiamo una
uno degli impiegati arrivi alla soluzione prima degli altri, transazione da processare. Inoltre, l’applicazione inter-
avendo a disposizione un tempo sufficiente per convin- roga periodicamente i minatori per verificare se qualcu-
cerli di essere arrivato per primo. no ha ordinato un trasferimento di denaro verso di noi
A questo punto sappiamo come la moneta viene tra- (se cioè, abbiamo ricevuto una qualche forma di paga-
sferita, e come gli impiegati possano guadagnarsi dei mento).
soldi processando le transazioni in cambio delle relative Una volta che i minatori sono stati notificati circa la tran-
commissioni. Ma che cos’è realmente questa moneta, sazione che intendiamo eseguire, essi la processeran-
e come ha ottenuto Alice la quantità di denaro poi tra- no cercando una soluzione al puzzle ad essa associato.
sferita a Bob? Il minatore che troverà per primo la soluzione al puzzle
Possiamo senz’altro dire che questa moneta non è di- si guadagnerà la commissione, oltre a un ammontare
sponibile in una forma fisica, dal momento che non fisso di denaro (in Bitcoin, o frazioni di esso).
abbiamo dato mandato ad alcuna entità centrale affin- Vediamo ora di dare a tutti gli “oggetti” sopra menzionati
chè crei la moneta e la diffonda tra il popolo. Per rispon- i nomi corretti scelti dalla comunità Bitcoin. L’insieme di
dere alla domanda, possiamo prendere ancora come transazioni (processabili da ogni minatore) viene chia-
riferimento gli impiegati dell’esempio precedente, chia- mato “block”, e un insieme di transazioni viene perciò
mandoli ora “minatori”. Queste termine riflette il duro detto “blocco” di transazioni. Il database comune e con-
lavoro da essi compiuto, che consiste nel trovare una diviso viene chiamato “block-chain”, dal momento che
soluzione a un problema di complessità elevatissima, si tratta di una catena di blocchi ordinati, ciascuno dei
un compito analogo a quello svolto da un minatore re- quali contiene un insieme di transazioni già processate
ale, alla ricerca di minerali o pietre preziose nascosti e validate. Il puzzle di elevata complessità che i mina-
dietro spessi strati di roccia. tori devono cercare di risolvere è in sostanza rappre-
Resta da capire come venga generata la moneta. sentato dall’output prodotto da una funzione di hash
Come è facile intuire, i minatori sono proprio coloro crittografico.
che danno origine alla nuova moneta. Essi investono Inoltre, dal momento che ai minatori è richiesto di ese-
un’enorme quantità di tempo e lavoro, incentivati dal- guire un numero elevato di tentativi al fine di trovare una
la ricompensa offerta dal sistema. I minatori, infatti, soluzione al puzzle, si dice che essi stanno dimostran-
guadagnano sia attraverso le commissioni legate alle do (“provando”) di avere lavorato duramente; in inglese
transazioni processate, sia con ogni record creato lo- questo termine prende il nome di “proof of work”, o
calmente e assegnato a una transazione da processare semplicemente PoW.
(con riferimento all’esempio precedente, sia Clair che
Dan avrebbero creato un record simile). Occorre pre- LINK
stare attenzione a una proprietà molto importante L’articolo originale, “Bitcoin – Money Decentralization”
del Bitcoin: un minatore, anche lavorando duramente, apparso sul blog vpnMentor, ha come Autore Avishay
potrebbe non guadagnare nulla. Tutti i minatori concor- Yanay, appartenente al gruppo di ricerca crittografico
dano su questa regola fondamentale: a chi tra loro trovi presso il Bar-Ilan Cyber Center. Come l’Autore stesso
per primo la soluzione a un puzzle, verranno non solo precisa, l’articolo è stato scritto da un esperto di infor-
accreditate le commissioni relative alla transazione, ma matica e non da un esperto di economia, pertanto alcuni
anche un ammontare fisso di nuove monete digitali, cre- concetti inerenti il mondo economico e il sistema mone-
ate in quel momento appositamente per questo scopo. tario sono stati volutamente semplificati.
RIASSUMIAMO IL TUTTO
Alice, che vuole trasferire una certa somma di denaro
a Bob, potrebbe rappresentare una qualunque perso- L’autore è a disposizione nei commenti per eventuali
approfondimenti sul tema dell’Articolo. Di seguito il link per
na che utilizzi un’applicazione di portafoglio elettronico
accedere direttamente all’articolo sul Blog e partecipare alla
installata sul proprio smartphone o PC. Questa appli- discussione:
cazione non è altro che un programma in grado di me- https://it.emcelettronica.com/bitcoin-la-moneta-decentralizzata
morizzare i bitcoin sul dispositivo elettronico, tenendo
32
Mini registratore
MAK ER allo stato solido con
ESPertino
di Giovanni Di Maria
A grande richiesta pubblichiamo una semplice e didattica applicazione audio. Molti lettori ci hanno
chiesto, infatti, se era possibile registrare o riprodurre dei suoni audio con ESPertino. La risposta è
si. La durata del campionamento dipende, ovviamente, dalla memoria RAM disponibile nella MCU. Per
grosse quantità di dati è conveniente utilizzare le SD esterne. Il dispositivo presentato in questo artico-
lo usa la memoria interna dell’ESP32 e si avvale dell’ADC e del DAC.
INTRODUZIONE è digitale.
O
ggi si sente molto parlare di registratori allo
stato solido. Si tratta di dispositivi che usano la ADC E DAC
tecnologia a stato solido per registrare e con- Il concetto di ADC e DAC è chiaramente illustrato in fi-
servare le informazioni audio. Tale modalità permette di gura 1. Se parliamo attraverso un microfono, il segnale
acquisire e riprodurre i segnali audio sotto forma di dati prelevato alla sua uscita è caratterizzato da una forma
digitali, consentendo una successiva e semplice gestio- elettrica analogica. Le varie parole o musiche acquisi-
ne. Tale tecnologia, se ci pensiamo bene, è più alla por- te dal trasduttore sono convertite in equivalenti segna-
tata di mano di quella analogica. E’ sufficiente, infatti, li elettrici di diversa entità. La conversione analogico-
memorizzare il segnale audio in tante celle di memoria, digitale, l’ADC, consiste nel trasformare tale segnale
campione per campione, tramite acquisizione ADC, per analogico, continuo nel tempo e con infiniti valori, in
poi riprodurle dallo stesso supporto con una riproduzio- una sequenza di dati numerici, gestibili e memorizzabili
ne DAC, senza utilizzare supporti meccanici in movi- facilmente nella memoria di elaboratore. Purtroppo c’è
mento o in rotazione. L’insieme delle informazioni viene una piccola perdita d’informazione, in quanto la memo-
letto e riprodotto, cella per cella, come avviene per un ria non è infinita e la bontà del segnale deve essere ne-
nastro magnetico, ma in questo caso l’intero processo cessariamente ridotta. Il DAC si comporta esattamente
33
MAKER
al contrario. Converte, infatti, un segnale digitale in uno densatore, provvisto di due terminali. Il suo costo è dav-
analogico. La rete è stracolma di letteratura a riguardo vero irrisorio, si trova anche per meno di due euro. Lo
e una semplice ricerca su Internet consente di trovare schema di cablaggio prevede la connessione a una
migliaia di argomentazioni. E’ inutile, pertanto, ripetere fonte di alimentazione. I 3.3V di ESPertino vanno più
gli stessi concetti, in questa sede. che bene per lo scopo. Il microfono deve essere prece-
duto da una resistenza di polarizzazione in modo da
IL REGISTRATORE CON ESPERTINO limitare il flusso di corrente e porre a metà quadrante
Nel corso dei precedenti articoli basati sulla scheda di lavoro la sua tensione di uscita, a riposo. Nel nostro
ESPertino, molti lettori hanno espresso il desiderio di caso abbiamo utilizzato una resistenza da 10 kohm ma
vedere pubblicati consigli o istruzioni che dessero la è bene controllare effettivamente la tensione a riposo,
possibilità, quanto meno, d’iniziare a trattare questo im- da caso a caso. Essa può, infatti, risultare diversa a
portante argomento dell’elettronica. Il nostro registrato- seconda del tipo di microfono in possesso. La figura 2
re, come dice il titolo, è realmente minimale. Lo scopo mostra tale dispositivo, assieme al relativo schema di
della presente pubblicazione è, infatti, esclusivamente collegamento e ai due grafici della risposta, sia in re-
quello didattico. E, inoltre, costituisce una delle tante gime statico che dinamico. Si preferisce, solitamente,
idee che si possono seguire per lo scopo prefissato. Le collocare la tensione del segnale audio a riposo a metà
caratteristiche del recorder sono le seguenti: strada (ossia tra 0V e VCC) in modo che esso possa
• Uso di microfono a condensatore; oscillare liberamente senza eventuali clipping che po-
• Durata della registrazione: 1,35 secondi; trebbero produrre indesiderate distorsioni. Le misure
• Risoluzione della riproduzione: 8 bit (è la risolu- dei dati e dei relativi grafici sono stati prodotti con il Po-
zione del DAC dell’ESP32); Scope Mega1.
• Frequenza di campionamento: 22 Khz.
CABLAGGIO DI PRINCIPIO
IL MICROFONO Lo schema di collegamento dell’intero sistema risulta
Per il progetto si è utilizzato un piccolo microfono a con- estremamente semplice e, soprattutto, utilizza esclu-
34
MAKER
35
MAKER
e VDD, a seconda del parametro passato “dac_value” inoltrandolo verso la porta DAC.
(0~255). Non è necessario configurare la porta in uscita In questa fase è importante gestire correttamente
poiché quando la funzione viene invocata, essa è auto- la temporizzazione tra un campione e il successivo.
maticamente settata con funzionalità di RTC DAC. Cambiandola, è possibile creare effetti di rallentamento
I parametri da passare, come si vede, sono due: o accelerazione della voce, ottenendo interessanti truc-
• channel: che costituisce il canale DAC scelto; chi audio. Ecco di seguito lo sketch, con le varie righe
• dac_value: che rappresenta il livello di tensione numerate progressivamente per poter spiegare e chia-
da generare, compreso tra 0 e 255 (0V~VDD). rire, in dettaglio, le funzioni più critiche e maggiormente
La funzione ritorna ESP_OK, se l’operazione è andata a importanti.
buon fine, oppure ESP_ERR_INVALID_ARG, quando si • Riga 1: è necessario includere questo file di he-
verifica un errore di parametro. ader per gestire le funzioni e le costanti per il
E’ necessario far seguire a essa una pausa di attesa del trattamento del DAC. Si invita il lettore anche a
corretto tempo calcolato, in quanto la sua esecuzione dargli una occhiata. E’ memorizzato all’interno
risulta estremamente veloce. della cartella ..\arduino-1.8.4\hardware\espres-
In alternativa si può anche usare la funzione: sif\esp32\tools\sdk\include\driver\driver;
• Riga 2: il programma può gestire fino a 30000
dacWrite(port, dac_value). campioni. Purtroppo la memoria RAM dell’E-
SP32 è abbastanza limitata e un incremento di
Leggi anche: Corso di programmazione Python tale numero lo potrebbe facilmente mandare in
su Flip&Click: ADC e DAC crash;
• Riga 3: tra un campione e il successivo viene
IL DISPOSITIVO DI RIPRODUZIONE AUDIO rispettata una pausa di attesa di 45 microsecon-
Per le prime prove e sperimentazioni si può tranquilla- di. Con tale configurazione la registrazione ha
mente utilizzare un piccolo altoparlante dal diametro di una durata di 30000*(45/1000000)=1.35 secon-
5 cm. oppure un riproduttore piezo. Il volume di riprodu- di e la riproduzione avviene alla frequenza di
zione sarà, ovviamente, estremamente basso ma co- 1000000/45=circa 22 Khz;
munque sufficiente per percepire chiaramente il parlato. • Riga 8: viene dichiarato l’array d’interi che ospi-
Anche una piccola cuffia va senz’altro bene. In seguito terà tutti i campioni sonori. La gestione di tale
sarà possibile aggiungere un piccolo amplificatore au- array avviene per suo scorrimento;
dio, magari realizzato con un transistor o con l’integra- • Righe 14~15: vengono predisposti i parametri
to LM386 o, addirittura, con un semplice operazionale operativi per l’ADC, ossia un fondo scala di 3.3V
(741 o TL081). e una risoluzione di acquisizione pari a 12 bit;
• Righe 18~26: si accende il diodo Led che avvi-
LO SKETCH sa della registrazione in corso ed ESPertino
Il listato proposto, ovviamente di principio, non è parti- inizia ad acquisire la voce dal microfono (vedi
colarmente complicato e dovrebbe risultare abbastanza figura 4). Si ricorda che i diodi Led a bordo della
comprensibile anche per i principianti e i programmatori scheda hanno l’anodo a VCC il catodo collegato
alle prime armi. L’importante è capire bene il suo con- verso le porte di I/O per cui, gioco forza, si devo-
cetto di funzionamento. La sua filosofia è la seguente: no pilotare tramite uno stato logico invertito;
• Deve acquisire un certo numero di campioni dal • Righe 27~30: adegua l’intero array dei campioni
microfono e li deve memorizzare, in forma digi- a 8 bit per il DAC, dividendo semplicemente i
tale, all’interno di un array in memoria RAM. Tale valori per 16;
acquisizione è effettuata a 12 bit; • Righe 31~38: riproduce la forma d’onda memo-
• Deve adeguare (trasformare) tutti i campioni a 8 rizzata all’interno dell’array, inviando ogni singo-
bit per poterli consegnare al DAC, che lavora a lo campione alla porta DAC. In questo modo, in
tale risoluzione. L’adeguamento viene effettua- uscita, sarà riprodotto l’esatto (quasi) segnale e,
to semplicemente dividendo i valori per sedi- quindi, inoltrato successivamente all’altoparlan-
ci. Oppure, in alternativa, si può effettuare uno te.
shift di bit di 4 posti a destra, per ottenere il
medesimo risultato; COME SI USA
• Deve riprodurre i campioni “scorrendo” l’array e Il dispositivo inizia subito a funzionare non appena si
36
MAKER
1 #include <driver/dac.h>
2 #define SAMPLES 30000
3 #define PAUSA 45
4 int LED1=13; // Led acceso durante la registrazione
5 int LED2=5; // Led acceso durante la riproduzione
6 int digitale; // Variabile che contiene un solo campione microfonico acquisito
7 int k;
8 int campioni[SAMPLES]; // Vettore contenente tutta la registrazione
9 void setup() {
10 pinMode(LED1,OUTPUT); // Porta in uscita
11 pinMode(LED2,OUTPUT); // Porta in uscita
12 digitalWrite(LED1,HIGH); // Spegne Led
13 digitalWrite(LED2,HIGH); // Spegne Led
14 analogSetAttenuation(ADC_11db); // Fondo scala ADC: 3.3V
15 analogReadResolution(12); // Risoluzione ADC a 12 bit
16 }
17 void loop() {
18 //-----Inizia la registrazione e memorizza in array-----------------
19 digitalWrite(LED1,LOW); // Accende Led
20 for(k=0;k<SAMPLES;k++) {
21 digitale=analogRead(35); // Legge il microfono
22 campioni[k]=digitale; // Memorizza segnale in array
23 delayMicroseconds(PAUSA); // Aspetta
24 }
25 digitalWrite(LED1,HIGH); // Spegne Led
26 delay(200);
27 //-----Divide i campioni per 16 per riportarli a 8 bit per il DAC-------
28 for(k=0;k<SAMPLES;k++) {
29 campioni[k]=campioni[k]/16; // Adeguamento per DAC
30 }
31 //-----------Riproduce la registrazione in altoparlante-------
32 digitalWrite(LED2,LOW); // Accende Led
33 for(k=0;k<SAMPLES;k++) {
34 dac_out_voltage(DAC_CHANNEL_1, campioni[k]); // Invia il segnale al DAC
35 delayMicroseconds(PAUSA);
36 }
37 digitalWrite(LED2,HIGH); // Spegne Led
38 delay(2000);
39 }
37
MAKER
Figura 4: il segnale proveniente dal microfono a condensatore, registrato con il PoScope Mega1
applica l’alimentazione elettrica a ESPertino. Esso non fono. A pensarci bene, la maggior parte del carico svolto
ha bisogno di alcuna taratura o regolazione, se non è determinato dal firmware creato. La soddisfazione nel
quella di controllare la tensione a riposo del microfono, realizzare tali tipologie di applicazioni è davvero tanta.
che deve risultare circa VCC/2. Le sue fasi operative, Con opportuni accorgimenti è possibile salvare le pro-
appena avviato, sono le seguenti: prie parole e creare, in tal modo, una sorta di piccola li-
1. Il Led 1 resta illuminato per i primi 1.35 secondi. breria composta da suoni e da messaggi, per poi essere
In questa frazione di tempo si deve iniziare subi- utilizzati all’occorrenza. Si ricordi, però, che la memoria
to a parlare, posizionandosi molto vicini al micro- RAM nativa dell’ESP32 è molto ridotta e non permette
fono. Dobbiamo ricordare, infatti, che quest’ulti- grosse memorizzazioni di dati e d’informazioni.
mo non è preamplificato e la voce prodotta deve Durante la riproduzione potrebbe udirsi un leggero fru-
risultare abbastanza robusta; scio (molto simile al rumore bianco) che si riduce di tan-
2. Quindi, trascorsi i primi 1.35 secondi, la registra- to alla presenza fisica della voce. Si può tentare di atte-
zione termina e il Led 1 si spegne. Si illumina, nuarlo con l’adozione di filtri in entrata e utilizzando dei
così, il Led 2 che testimonia l’inizio della ripro- dispositivi di registrazione migliori, magari coadiuvati da
duzione su altoparlante. Il tutto avviene con il cavetti schermati.
medesimo tempo; Nei nostri futuri articoli approfondiremo di più la gestio-
3. Dopo di ciò, la riproduzione ha termine e anche ne dei segnali audio, proponendo altre interessantissi-
il secondo Led si spegne. Dopo una pausa di 2 me applicazioni con la scheda ESPertino.
secondi l’intero processo si ripete da capo, all’in- Alle prossime.
finito.
CONCLUSIONI
L’autore è a disposizione nei commenti per eventuali
Quello presentato nell’articolo è solo un prototipo spe- approfondimenti sul tema dell’Articolo. Di seguito il link per
rimentale (ma d’importanza notevole) che illustra come accedere direttamente all’articolo sul Blog e partecipare alla
registrare e riprodurre un breve segnale audio. Si può discussione:
https://it.emcelettronica.com/mini-registratore-allo-stato-solido-
considerare, a tutti gli effetti, un fedele pappagallo elet-
con-espertino
tronico, che ripete ciò che viene pronunciato al micro-
38
Il Kit di ESPertino:
MAK ER temperatura e umidità
sotto controllo con il
DHT11 di Giovanni Di Maria
Il kit di ESPertino prevede, tra gli altri, il sensore di umidità e di pressione DHT11. Vediamo come uti-
lizzarlo al meglio con la nostra scheda, ricordando che i dati da esso misurati e restituiti sono di tipo
digitali e non è necessario alcun ingresso analogico. Utilizzando delle apposite librerie , la gestione del
modulo è ancora più semplice.
IL SENSORE
S
i tratta di un dispositivo per rilevare la
temperatura e l’umidità (vedi figura 1).
Può essere adottato in tanti ambiti di-
versi come, ad esempio, deumidificatori, con-
trolli automatici, stazioni meteo, domotica, ecc.
Le sue misure risultano molto ridotte e, non
considerando i piedini di connessione, sono di
12mm. x 5.5mm. x 15.5mm. E’ dotato di un sen-
sore di umidità e di un termistore di tipo NTC.
Come detto nell’introduzione, esso fornisce le
elaborazioni tramite un segnale digitale e non
analogico. E’ necessario, pertanto, predisporre
un adeguato algoritmo di acquisizione e deco-
difica. La lettura delle informazioni acquisite,
per la sua conformazione elettronica, può es-
sere effettuata, come affermato dal datasheet,
almeno ogni sei secondi. Letture consecutive
più ravvicinate potrebbero influire negativamen-
te sulla bontà delle misurazioni. Al di la di tale Figura 1: il sensore di temperatura e di umidità DHT11
aspetto esso può essere considerato un com-
ponente esente da interferenze, molto affidabile non deve essere collegato.
e preciso, anche a lungo termine. Il datasheet fornisce
preziose informazioni in merito. CARATTERISTICHE TECNICHE
Ogni esemplare del sensore è stato accuratamente Il DHT11 misura l’umidità all’interno dell’intervallo 20-
calibrato in laboratorio. I coefficienti della calibrazione 90%RH, con una precisione del +/-5%. La temperatura,
eseguita vengono memorizzati nella sua memoria e invece, è rilevata in un range compreso tra 0°C e 50°C,
utilizzati successivamente dal processo di misurazio- con una accuratezza di +/-2°C. Il dispositivo è, dunque,
ne delle due grandezze fisiche. Il componente riesce a adatto per la maggior parte delle applicazioni.
trasmettere i dati fino a una distanza di 20 metri, con il
cavo naturalmente. La sua piedinatura prevede il colle- LA COMUNICAZIONE DEI DATI
gamento con quattro piedini, anche se il pin numero tre Il DHT11 utilizza una semplificata comunicazione su un
39
MAKER
solo bus di dati. Essi transitano su una sequenza com- contrario si potrebbe verificare una instabilità di funzio-
pleta di 40 bit e precisamente: namento del sistema. E’ caldamente consigliato, altresì,
• 8 bit per la parte intera dell’umidità; l’adozione di un condensatore da 100nF collegato tra
• 8 bit per la parte decimale dell’umidità; l’alimentazione del sensore e la massa, con funzione
• 8 bit per la parte intera della temperatura; di filtro. Può essere montato vicino a esso. Inoltre se il
• 8 bit per la parte frazionaria della temperatura; sensore viene alimentato con una tensione di 3.5VDC, i
• 8 bit per il checksum. relativi cavi di collegamento non dovrebbero superare la
lunghezza di 20cm. In caso contrario, l’inevitabile cadu-
Qualche esempio chiarirà meglio il concetto. Si suppon- ta di tensione della linea abbasserà l’alimentazione del
ga che il sensore spedisca la seguente sequenza di 40 sensore causando, molto probabilmente, errori di misu-
bit: ra. Il sensore dovrebbe essere anche montato distante
da altri componenti elettronici “caldi” e non esposto a
00110101 00000000 00011000 00000000 01001101 luce ultravioletta, pena il degrado delle prestazioni.
Si può calcolare manualmente il checksum in maniera LA LIBRERIA PER LA GESTIONE DEL SEN-
estremamente semplice, sommando i primi 4 bytes e SORE DHT11
confrontando la somma con il quinto byte: Sebbene la programmazione “grezza” e a basso livello,
per la comunicazione di ESPertino con il sensore, possa
essere effettuata con un po’ di difficoltà, essa potrebbe
00110101+
costituire una sfida molto didattica e utile per il program-
00000000+ matore e lo sviluppatore. Ne verrebbe fuori, tuttavia, un
codice un po’ più lungo ma estremamente riutilizzabile.
00011000+
In ogni caso esistono tante librerie che gestiscono egre-
00000000= giamente il DHT11 e con un minimo sforzo e di tempo si
--------- possono scrivere programmi molto complessi, con po-
che righe di codice. Tutto il funzionamento del sensore
01001101
si basa sulla sua restituzione delle informazioni in un
pacchetto composto da 40 bit.
Il metodo proposto dall’articolo installa la libreria in ma-
La somma è equivalente al checksum dell’esempio, niera estremamente semplice e trasparente. Non occor-
pertanto il pacchetto è stato spedito correttamente. Se re installare nulla ma si deve solo accedere alla gestio-
la somma risultasse differente dal quinto byte il dato ne delle librerie sull’IDE di Arduino, come mostrato in
finale non sarebbe attendibile. Sempre relativamente figura 3, e scegliere la SimpleDHT.
all’esempio di cui sopra, possiamo leggere le seguenti Dopo la sua selezione essa sarà automaticamente
informazioni sulle due grandezze fisiche: installata nella cartella C:\Users\NomeUtente\Docu-
• l’umidità è pari a (00110101)2=(53%RH)10 ments\Arduino\libraries. Se ciò dovesse risultare un
• la temperatura è pari a (00011000)2=(24°C)10 problema logistico, si può tranquillamente “spostare” la
cartella SimpleDHT nel percorso più comodo ..\ardui-
SCHEMA DI PRINCIPIO no-1.8.5\libraries. In questo modo tutte le librerie saran-
Lo schema di principio di collegamento è visibile in figu- no allocate nel medesimo posto, ottenendo un ordine
ra 2. La sua semplicità, come si può notare, è estrema. maggiore delle directory. E’ consigliabile esplorare un
Le informazioni, circa le grandezze fisiche misurate, po’ tale cartella, come mostrato in figura 4. Essa contie-
viaggiano su una sola linea di dati, bit dopo bit. La resi- ne anche tanti utilissimi esempi, che possono costituire
stenza di pull-up da 5K sulla linea dei dati è consigliata un passo iniziale per iniziare a scrivere i propri progetti.
se il cavo risulta più corto di 20 metri. Per lunghezze Inoltre, in essa troviamo anche un utile file “readme”, il
maggiori occorrerà scegliere valori differenti. Il modu- file d’inclusione “SimpleDHT.h” e il sorgente della libre-
lo del sensore può essere alimentato con una tensio- ria “SimpleDHT.cpp”.
ne compresa tra 3.5V e 5.5V. Una raccomandazione
per i programmatori è la seguente: dopo aver fornito APPROCCIO INIZIALE CON IL MODULO
tensione al DHT11 occorre aspettare almeno un se- DHT11
condo, prima d’inoltrare qualsiasi comando. In caso Bene, dopo aver predisposto l’ambiente operativo, sia-
40
MAKER
mo pronti per conoscere il sensore DHT11 e vederne il notare, essa è anche collegata a VCC tramite la resi-
suo funzionamento sul campo. Colleghiamolo, dunque, stenza di pull-up da 5Kohm. Ovviamente si può utiliz-
al nostro ESPertino con dei cavi abbastanza corti, se- zarne anche una dal valore commerciale di 4.7Kohm.
guendo il semplice cablaggio di cui alla figura 5. Il sensore è alimentato direttamente dalla VCC della
La porta 2 di ESPertino è collegata al pin 2 del sensore. scheda e la massa, ovviamente, deve essere in comu-
Tale linea costituisce il trasporto dei dati. Come si può ne ai due dispositivi. Il pin 3 del DHT11 non deve essere
41
MAKER
utilizzato, secondo le specifiche del suo datasheet. Il loro possiamo passare, finalmente, alla parte software
condensatore poliestere da 100nF è collegato tra VCC del progetto. Come esperimento per rompere il ghiac-
e GND per garantire un buon filtraggio da eventuali in- cio, proviamo semplicemente a far colloquiare ESPer-
terferenze esterne. tino e il sensore, realizzando un semplice sketch che
visualizzi, sul monitor seriale, la temperatura e l’umidità
LO SKETCH DI PROVA dell’ambiente in cui si effettua la misura. Il listato è molto
Dopo aver connesso fisicamente i due dispositivi tra di leggero ma serve per comprendere la filosofia di funzio-
42
MAKER
01 #include <SimpleDHT.h>
04 void setup() {
05 Serial.begin(9600);
07 }
08 void loop() {
09 byte temperature = 0;
10 byte humidity = 0;
12 //---------Visualizza temperatura-------------
13 Serial.print(“Temperature: “);
14 Serial.print((int)temperature);
16 //---------Visualizza umidita’-------------
17 Serial.print(“Umidita’: “);
18 Serial.print((int)humidity);
19 Serial.println(“ H”);
20 delay(6000);
21 }
namento della libreria SimpleDHT. Esso e riportato sot- • Linea 3: il funzionamento del programma si basa
to. Lo commenteremo insieme tra poco. I numeri di linea sull’utilizzo della classe SimpleDHT11, sulla quale
progressivi non devono, naturalmente, essere digitati, creiamo l’istanza dell’oggetto “dht11” (o altro nome,
e servono solamente come riferimento per i commenti. secondo le proprie esigenze);
Descriviamo, adesso, in dettaglio le linee di programma • Linee 4÷7: la funzione setup() configura la comuni-
più significative, in modo da comprenderne a fondo il cazione seriale a 9600 baud (per la visualizzazione
principio di funzionamento. dei risultati al PC o altri dispositivi equivalenti) e,
• Linea 1: il file di header SimpleDHT.h deve essere soprattutto, imposta una pausa di attesa minima
incluso nel programma. Si consiglia, anche, di dare di un secondo, per dare modo al sensore di essere
un’occhiata a tale file, per studiare i metodi, i proto- operativo. Tale concetto è stato spiegato anche in
tipi di funzioni e le costanti in esso contenute; precedenza;
• Linea 2: la variabile pinDHT11 contiene il numero • Linee 9÷10: vengono definite, come tipo byte, le va-
del pin al quale fa capo la linea dei dati del sensore. riabili “temperature” e “humidity”. Esse conterranno
Ovviamente è possibile utilizzare qualunque altro le rispettive grandezze fisiche, dopo aver effettuato
nome di variabile e qualsiasi altra porta di ESPer- la lettura dal sensore;
tino; • Linea 11: questa è la riga più importante di tutto
43
MAKER
Figura 6: la misurazione della temperatura e dell’umidità con il monitor seriale dell’IDE di Arduino
44
MAKER
SimpleDHTErrSuccess 0 Success
Tabella 1: costanti
nere dei dati più accurati, in quanto di tipo float: del segnale in figura 7). Almeno si saprebbe cosa c’è
virtual int read2(int pin, float* ptemperature, float* “dentro” il programma e in caso di problemi sarebbe
phumidity, byte pdata[40]); possibile intervenire immediatamente. Le informazioni
Per altri metodi si consiglia di studiare più approfondita- acquisite dal sensore, nell’esempio proposto, sono sta-
mente il file SimpleDHT.h. te visualizzate sul monitor seriale dell’IDE di Arduino.
Ovviamente il loro fine ultimo può essere qualsiasi altro
Leggi anche: Monitoraggio della temperatura con dispositivo grafico come, ad esempio, un display LCD,
ESPertino in WiFi con consultazione su Internet un visualizzatore a diodi Led o trasmessi, addirittura, su
Internet, con funzionamento di Web Server.
CONCLUSIONI
Con ESPertino e il sensore DHT11 il programmatore
ha la vita abbastanza facile nel realizzare i suoi proget-
L’autore è a disposizione nei commenti per eventuali
ti. Ovviamente le librerie agevolano di tanto il lavoro e approfondimenti sul tema dell’Articolo. Di seguito il link per
permettono di dedicarsi ad altri aspetti del sistema, ri- accedere direttamente all’articolo sul Blog e partecipare alla
sparmiando tanto tempo. L’ideale, ovviamente, sarebbe discussione:
https://it.emcelettronica.com/il-kit-di-espertino-temperatura-e-
quello di realizzare da sé le proprie librerie, in modo da
umidita-sotto-controllo-con-il-dht11
riutilizzarle secondo l’esigenze (vedi temporizzazione
45
WallPi: quando LEGO
MAK ER incontra Raspberry Pi
di Lorenzo Columbo
LEGO è sicuramente uno dei marchi più noti al mondo. Tra le numerose serie prodotte dalla casa da-
nese, una che suscita particolare interesse tra gli hobbisti è LEGO Technic, che consente di realizzare
piccoli veicoli in plastica. C’è poi un altro marchio che piace tanto a noi, ovvero Raspberry Pi. Ma cosa
succede quando si mettono insieme le enormi potenzialità di queste due realtà? Una delle infinite rispo-
ste possibili è WallPi, un veicolo cingolato dotato di webcam e controllabile over IP.
Q
uando si acquista un kit LEGO Technic, il gioco modifica, il vagone posteriore e la cabina di controllo,
consiste nell’assemblare un veicolo seguendo la struttura dei cingolati è stata semplificata ai minimi
un libretto di istruzioni che descrive l’esatta termini e resa rigida (nel senso che non è più possibile
sequenza di step partendo da una collezione di pezzi sterzare), molti dettagli puramente estetici, così come
elementari, dai semplici mattoncini alle meccaniche e tutta la parte di trasmissione, sono stati rimossi per ri-
agli snodi, tutto rigorosamente in plastica. Una volta che ciclarne i componenti o anche solo per alleggerire la
il veicolo è stato assemblato, il gioco prosegue appor- struttura. Nel modello finale di WallPi, i cingolati vengo-
tando modifiche al modello di base realizzato in maniera no movimentati a partire dalle ruote anteriori cui sono
del tutto libera, eliminando alcune parti del veicolo che direttamente applicati i due motorini DC, particolarmen-
ci interessano meno e assemblandone di nuove. I vei- te evidenti in Figure 2 e 3: la rotazione del veicolo su
coli sono poi spesso associati a kit di estensione che sé stesso viene quindi ottenuta movimentando in senso
includono specifici motorini, di vario tipo e formato, che opposto i due cingolati. Nella parte alta del veicolo, nella
consentono di movimentare la struttura meccanica as- stessa Figura, è poi riconoscibile una struttura realizzata
semblata. Per la realizzazione di WallPi è stato scelto con lo scopo di consentire una ampia movimentazione
il kit 42038, mostrato in Figura 1, sulla base di raf- verticale (tilt) della webcam: il servomotore è ben fissato
finatissime considerazioni di alta ingegneria: il case al veicolo e i suoi terminali di controllo sono anch’essi,
del Raspberry Pi si adattava perfettamente, per forma e come quelli dei motori DC, riportati su un circuito con-
dimensioni, al suo vagone posteriore! trollato da Raspberry Pi.
Il modello finale di WallPi, mostrato in copertina, è evi-
dentemente una semplificazione del veicolo di parten- ELENCO DEI COMPONENTI
A questo punto, facciamo un elenco dei
principali componenti, di qualunque natu-
ra, che sono stati necessari alla realizza-
zione di WallPi:
• LEGO 42038 – Arctic Truck;
• LEGO 88003 – Power Functions L-
Motor (2x);
• LEGO 88004 – Power Functions Ser-
vo Motor;
• LEGO 8886 – Power Functions Exten-
sion Wire (2x);
• Raspberry Pi 2 Starter Kit (comprensi-
vo di case e WiFi dongle, O.S. Raspbian
Jessie);
Figura 1: manuale del kit LEGO Techinc 42038. Il modello rappresentato, • Webcam Logitech C170;
detto “Arctic Truck”, è stato il punto di partenza per la realizzazione di WallPi. • USB Power Bank;
46
MAKER
CIRCUITO DI CONTROL-
LO DEI MOTORINI
In Figura 4 è riportato lo sche- Figura 3: modello finale di WallPi, vista laterale. Il servomotore, riconoscibile in alto, è
matico KiCad del circuito per il dedicato al tilt di una struttura meccanica solidale alla webcam.
47
MAKER
Figura 4: schematico KiCad del circuito per il controllo dei motorini di WallPi.
lo costituiscono, quindi saldare alla estremità di ciascu- L’applicazione sarà distribuita tra due terminali, un
no di essi un cavo unipolare. Il punto di saldatura sarà server costituito appunto dal veicolo, nonché dal
ricoperto con la guaina termorestringente. Il risultato fi- Raspberry Pi di cui è dotato, e un client che potrà ot-
nale, rappresentato in Figura 5, è un cavo LEGO final- tenere il controllo delle funzionalità del veicolo tra-
mente adatto alla connessione su breadboard. mite connessione ad uno specifico indirizzo IP e ad
una specifica porta. Naturalmente, tutto potrà avvenire
CONTROLLO TRAMITE PYTHON 3, WIRING all’interno di una WLAN o, previa opportuna configura-
PI E GSTREAMER zione del router cui il server è collegato, tra due nodi IP
A questo punto, l’hardware di WallPi è completo e si dislocati in qualunque parte del mondo.
tratta di individuare gli strumenti di sviluppo SW che La scelta per l’implementazione della parte di acquisi-
rendano semplice l’implementazione della funzionalità zione e trasmissione dello streaming audio/video è ri-
di controllo del veicolo over IP. caduta su una eccellente libreria C open-source appo-
48
MAKER
Figura 5: cavo LEGO modificato per un uso agevole con la breadboard. I quattro terminali sono prolungati tramite altrettanti sem-
plici cavetti unipolari, saldati ad essi e mantenuti in posizione tramite una guaina termorestringente.
sitamente pensata per semplificare la realizzazione di no tramite UDP/IP. Dopo la definizione iniziale di questi
applicazioni che trattano dati multimediali: GStreamer parametri e l’import di alcuni package standard, viene
definisce un’architettura a pipeline che consente di con- eseguito uno script che definisce una classe WallPiStre-
nettere in pochissimo tempo una serie di componenti amer: come vedremo in seguito, tale classe incapsula
software virtualmente per qualunque tipo di elaborazio- le funzionalità di GStreamer richieste dall’applicazione,
ne di dati multimediali. La libreria include già compo- fornendo un comodo layer intermedio per il loro utilizzo.
nenti ampiamente collaudati e utili per esempio all’ac- Le righe 50-59 verificano che il sistema operativo in uso
quisizione e alla riproduzione di streaming audio/video, sia basato su Linux ed eseguono il parsing degli argo-
alla realizzazione di vari tipi di filtraggio, all’encoding e menti specificati al lancio dello script: in particolare, l’ap-
decoding nei formati audio/video più diffusi. plicazione server può essere lanciata abilitando seletti-
Per quanto riguarda il controllo dei GPIO del Raspberry vamente gli streaming audio e video verso il client e lo
Pi in WallPi, l’utilizzo del modulo RPi.GPIO pone un pro- streaming audio proveniente da client. Una nota su que-
blema non trascurabile: la sua release più recente non sto aspetto: sul veicolo, come anticipato, lo streaming
fornisce ancora il supporto per l’hardware PWM, di cui audio e video viene catturato dalla webcam dedicata; la
WallPi ha bisogno per il controllo del servomotore. Per riproduzione audio, invece, dovrebbe avvenire tramite
questo motivo, è stato necessario impiegare un’altra li- l’uscita mini-jack resa disponibile dal Raspberry Pi 2.
breria open-source per il controllo dei GPIO di Raspber- L’istruzione a riga 66 estrae l’indirizzo IP del server ese-
ry Pi: la scelta è ricaduta su Wiring Pi, una libreria C in guendo un comando shell: tale indirizzo è necessario
grado di sfruttare l’hardware PWM sui pin del BCM2835 a realizzare il setup del server socket alle righe 77-81.
che prevedono la circuiteria dedicata a questo scopo e Successivamente, si procede al setup dei GPIO neces-
che offre anche un controllo da linea di comando. sari alla movimentazione del veicolo tramite comandi
shell che richiamano le funzioni della già citata libreria
L’APPLICAZIONE WALLPI: IL SORGENTE Wiring Pi. Quindi, alla riga 98, il server socket viene po-
COMPLETO sto in attesa di una singola connessione entrante: da
Analizziamo quindi il sorgente Python 3 che implementa questo momento in poi, l’applicazione WallPi sul nodo
le funzionalità descritte. di client che raggiunga la porta TCP/IP corretta potrà
Lato server, l’applicazione dovrà essenzialmente aprire guadagnare il controllo del veicolo. In corrispondenza
una porta TCP/IP in attesa di connessioni dall’esterno: delle righe 103-108, viene quindi abilitata la trasmis-
come si evince dalle definizioni di righe 32-35, oltre a sione/ricezione degli streaming audio/video tramite co-
questa porta sarà necessario definire altre tre porte struzione di appositi oggetti WallPiStreamer: al termine
per lo streaming dei dati audio e video che viaggeran- [segue a pag. 60]
49
MAKER
###############################################################################
## Project : WallPi
## Module : wallpi_server
## Language : Python3
##
## Filename : wallpi_server.py
##
## Created by : Lorenzo Columbo
## Created at : 03.07.16
## Revision : 1.0.0
##
## ++
## Description : WallPi Application - Server Side
## This script allows to prepare for and serve an incoming
## TCP/IP connection request from the WallPi client, in order
## to provide all available remote control features.
## By executing this script, the following information is sent
## over the network towards the WallPi client:
## 1) video streaming captured from the local webcam, in order
## to reproduce it remotely;
## 2) audio streaming captured from the local microphone, in
## order to reproduce it remotely.
## At the same time, the following information is received over
## the network from the WallPi client:
## 1) controls for the motors available on the WallPi machine;
## 2) audio streaming captured from the remote microphone, in
## order to reproduce it on the WallPi machine.
## ++
###############################################################################
50
MAKER
exec(fid.read())
# Check current operating system (only Linux-based operating systems are allowed)
if(sys.platform != “linux”):
print(“Can’t start WallPi on “ + sys.platform + “ platform. Only linux-based platforms are allowed. Exiting.”)
sys.exit()
s2c_aud_en = args.s2c_aud
s2c_vid_en = args.s2c_vid
c2s_aud_en = args.c2s_aud
# Setup a server socket waiting for a single incoming TCP/IP connection request
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serversocket.bind((wallpi_server_addr, WALLPI_CTRL_PORT))
# Setup the WallPi servo-motor control pin (BCM number) to PWM mark-space mode
51
MAKER
# Open a client socket towards the IP address specified by the server socket and accept only
# an incoming connection from the specified client address; handle a single client connection
# at time; to break the infinite loop, use Ctrl-C key (raising Keyboard Interrupt)
address = (0, 0);
while (True):
serversocket.listen(1)
(clientsocket, address) = serversocket.accept()
wallpi_client_addr = address[0]
52
MAKER
53
MAKER
della connessione, l’eliminazione di tali oggetti consenti- Passiamo quindi al commento del sorgente relativo
rà di interrompere gli streaming e liberare quindi le porte all’applicazione client. In questo caso, dopo la necessa-
UDP che erano state ad essi associate. ria definizione delle porte IP (che dovranno ovviamente
Resta quindi da implementare unicamente il controllo matchare quelle specificate nell’applicazione server),
del movimento del veicolo sulla base dei caratteri che l’import dei package standard e il parsing degli argo-
il server riceve dal client tramite la connessione TCP/IP menti specificati da linea di comando, tra i quali compa-
precedentemente realizzata: il codice alle righe 111-148 re l’indirizzo IP del server che deve naturalmente essere
esegue un semplice ciclo while che, sulla base del ca- noto al momento del lancio della applicazione, si proce-
rattere ricevuto, pilota le GPIO dedicate al controllo del de all’apertura di un client socket verso il server. Se tale
servomotore e dei motorini DC (i caratteri usati a questo operazione va a buon fine, si costruiscono gli oggetti
scopo sono quelli del tastierino numerico). Alla ricezione WallPiStreamer che consentono di trasmettere e riceve-
del carattere speciale ‘-‘, il ciclo viene interrotto e l’ap- re gli streaming audio/video previsti dalla applicazione,
plicazione server procede alla chiusura degli streaming ammesso che l’utente abbia richiesto la loro abilitazione
audio/video, per portarsi nuovamente nella condizione al lancio della applicazione.
di attesa di un’eventuale connessione da parte di un al- Le righe 101-108 eseguono un ciclo while che consente
tro client. [segue a pag. 63]
###############################################################################
## Project : WallPi
## Module : wallpi_client
## Language : Python3
##
## Filename : wallpi_client.py
##
## Created by : Lorenzo Columbo
## Created at : 03.07.16
## Revision : 1.0.0
##
## ++
## Description : WallPi Application - Client Side
## This script allows to establish a TCP/IP connection with the
## WallPi server, in order to access to all of its remote
## control features.
## By executing this script, the following information is sent
## over the network towards the WallPi server:
## 1) controls for the motors available on the WallPi machine;
## 2) audio streaming captured from the local microphone, in
## order to reproduce it on the WallPi machine.
## At the same time, the following information is received over
## the network from the WallPi server:
## 1) video streaming captured from the remote webcam, in order
## to reproduce it locally;
## 2) audio streaming captured from the remote microphone, in
## order to reproduce it locally.
## ++
###############################################################################
54
MAKER
WALLPI_CTRL_PORT = 10000
WALLPI_AUDIO_S2C_PORT = 10010
WALLPI_VIDEO_S2C_PORT = 10011
WALLPI_AUDIO_C2S_PORT = 10012
# Check current operating system (only Linux-based operating systems are allowed)
if(sys.platform != “linux”):
print(“Can’t start WallPi on “ + sys.platform + “ platform. Only linux-based platforms are allowed. Exiting.”)
sys.exit()
wallpi_server_addr = args.host
s2c_aud_en = args.s2c_aud
s2c_vid_en = args.s2c_vid
c2s_aud_en = args.c2s_aud
55
MAKER
“streaming will be sent; moreover, the client side user will be able to control “ + “\n” + \
“the movement of the WallPi machine using the following numeric pad keys:” + “\n” + \
“8 => move forward” + “\n” + \
“2 => move backward” + “\n” + \
“6 => turn right” + “\n” + \
“4 => turn left” + “\n” + \
“5 => stop” + “\n” + \
“9 => raise camera vertical angle” + “\n” + \
“3 => lower camera vertical angle” + “\n” + \
“- => close connection” + “\n” + \
“--------------------------------------------------------------------------------” + “\n”)
# Continuously get single control characters from the stdin and send it to sock
ctrl_char = ‘\x00’
while ctrl_char != ‘-’:
ctrl_char = getch()
sent = sock.send(ctrl_char.encode())
if sent == 0:
raise RunTimeError(“Socket connection broken!”)
else:
pass
56
MAKER
all’utente di immettere un carattere alla volta, tramite Alla costruzione dell’oggetto WallPiStreamer, vengono
esecuzione della funzione getch: tale funzione è definita eseguite tutte le operazioni necessarie alla creazione
tramite lo script eseguito in precedenza, in righe 46-47, e inizializzazione della pipe per la ricezione o trasmis-
e se ne può recuperare il sorgente in rete. Alla pressio- sione (send/recv) di un certo tipo di streaming (audio/
ne del carattere speciale ‘-‘, il ciclo while viene interrotto video) da o verso un certo indirizzo e una certa por-
e l’applicazione client termina, dopo tutte le necessarie ta IP (ip_addr e ip_port). Dopo il necessario parsing
operazioni di chiusura e rilascio delle risorse allocate. dei suoi argomenti (righe 16-47), il costruttore crea
Infine, diamo uno sguardo al sorgente della classe la pipeline GStreamer e ne inizializza il bus per il
WallPiStreamer, la cui responsabilità è quella di forni- reporting dei messaggi provenienti dai componen-
re le funzionalità di audio/video streaming necessarie ti che saranno istanziati all’interno di essa. Quindi
all’applicazione WallPi in maniera del tutto trasparente (righe 55-89), sulla base del tipo di streaming richiesto,
ad essa: come già discusso, l’implementazione di tali viene creato il set di tutti i componenti necessari alla
funzionalità è stata ottenuta tramite utilizzo della libreria sua trasmissione e ricezione: di questi componenti,
GStreamer. [segue a pag. 66]
import gi
gi.require_version(‘Gst’, ‘1.0’)
gi.require_version(‘GstBase’, ‘1.0’)
gi.require_version(‘Gtk’, ‘3.0’)
from gi.repository import GObject, Gst, GstBase, Gtk, GObject
import re
class WallPiStreamer:
Gst.init(None)
if (isinstance(send_recv, str)):
if (re.match(“^(send|recv)$”, send_recv)):
self.send_recv = send_recv
else:
raise ValueError(“For argument send_recv, specify one value among {‘send’, ‘recv’}.”)
else:
raise TypeError(“For argument send_recv, specify a string value.”)
if (isinstance(ip_addr, str)):
if (re.match(“^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-
5])$”, ip_addr)):
57
MAKER
self.ip_addr = ip_addr
else:
raise ValueError(“For argument ip_addr, specify one properly formatted IP address (e.g., ‘127.0.0.1’).”)
else:
raise TypeError(“For argument ip_addr, specify a string value.”)
if (isinstance(ip_port, int)):
if (ip_port >= 0 and ip_port <= 65535):
self.ip_port = ip_port
else:
raise ValueError(“For argument ip_port, specify one value in the range 0-65535.”)
else:
raise TypeError(“For argument ip_port, specify an integer value.”)
# Create gst elements needed for all usage scenarios of this class
if (audio_video == “audio”):
mediasrc = Gst.ElementFactory.make(“alsasrc”, “gst4rtp_audiosrc” )
mediasrc.set_property(“device”, “hw:CARD=C170,DEV=0”)
mediasrccaps = Gst.ElementFactory.make(“capsfilter”, “gst4rtp_audiosrccaps”)
mediasrccaps.set_property(“caps”, Gst.Caps.from_string(“audio/x-raw, format=(string)S16LE, layout=(string)
interleaved”))
mediasink = Gst.ElementFactory.make(“autoaudiosink”, “gst4rtp_audiosink” )
mediaenc = Gst.ElementFactory.make(“mulawenc”, “gst4rtp_mulawenc” )
mediadec = Gst.ElementFactory.make(“mulawdec”, “gst4rtp_mulawdec” )
mediapay = Gst.ElementFactory.make(“rtppcmupay”, “gst4rtp_rtppcmupay” )
mediadepay = Gst.ElementFactory.make(“rtppcmudepay”, “gst4rtp_rtppcmudepay”)
udpsink = Gst.ElementFactory.make(“udpsink”, “gst4rtp_udpsink”)
udpsink.set_property(“host”, ip_addr)
udpsink.set_property(“port”, ip_port)
udpsrc = Gst.ElementFactory.make(“udpsrc”, “gst4rtp_udpsrc”)
udpsrc.set_property(“address”, ip_addr)
udpsrc.set_property(“port”, ip_port)
udpsrc.set_property(“caps”, Gst.Caps.from_string(“application/x-rtp”))
else:
mediasrc = Gst.ElementFactory.make(“v4l2src”, “gst4rtp_videosrc” )
mediasrc.set_property(“device”, “/dev/video0”)
mediasrccaps = Gst.ElementFactory.make(“capsfilter”, “gst4rtp_videosrccaps”)
mediasrccaps.set_property(“caps”, Gst.Caps.from_string(“video/x-raw, width=(int)640, height=(int)480, pixel-
aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, framerate=(fraction)15/1”))
mediasink = Gst.ElementFactory.make(“autovideosink”, “gst4rtp_videosink” )
58
MAKER
# Add to the pipeline all elements needed by the specific chosen configuration and link them properly
if (send_recv == “send”):
self.pipeline.add(mediasrc)
self.pipeline.add(mediasrccaps)
self.pipeline.add(mediaenc)
self.pipeline.add(mediapay)
self.pipeline.add(udpsink)
mediasrc.link(mediasrccaps)
mediasrccaps.link(mediaenc)
mediaenc.link(mediapay)
mediapay.link(udpsink)
else:
self.pipeline.add(udpsrc)
self.pipeline.add(mediadepay)
self.pipeline.add(mediadec)
self.pipeline.add(mediasink)
udpsrc.link(mediadepay)
mediadepay.link(mediadec)
mediadec.link(mediasink)
def __del__(self):
# Stop the media streaming
self.pipeline.set_state(Gst.State.NULL)
59
MAKER
naturalmente, soltanto una parte verrà realmente istan- destra; la pressione del pulsante 5 fermerà il veicolo;
ziata nella pipe, a seconda della direzione dello strea- infine, la pressione dei pulsanti 9 e 3 comporterà l’in-
ming specificata. La costruzione della pipe viene quindi clinazione della webcam rispettivamente verso l’alto e
ottenuta dalle righe 93-101 per la trasmissione e 103- verso il basso.
109 per la ricezione. Infine, il costruttore avvia lo strea-
ming ponendo la pipe nello stato di riproduzione. CONCLUSIONE
WallPi è niente più che un giocattolo, privo di qualunque
ESECUZIONE DELL’APPLICAZIONE WALLPI utilità che non sia il mero divertimento. D’altra parte, tra-
Una volta lanciata l’applicazione server sul Raspberry mite la sua realizzazione, si è potuto mettere in luce an-
Pi che controlla il veicolo, è possibile lanciare in maniera cora una volta la versatilità della piattaforma Raspberry
analoga l’applicazione client su una qualunque macchi- Pi e soprattutto cominciare a sperimentare le enormi po-
na sulla stessa rete IP, eseguendo il comando: tenzialità della libreria GStreamer, estremamente utile
A questo punto, lo streaming audio e video in ricezione in tutte quelle applicazioni che richiedono un qualunque
verrà riprodotto e si otterrà il controllo remoto del veico- tipo di manipolazione di dati multimediali.
lo, come mostrato nello screenshot di Figura 6.
Al lancio dell’applicazione client, un messaggio descri-
L’autore è a disposizione nei commenti per eventuali
ve in maniera chiara i comandi di movimento: la pres- approfondimenti sul tema dell’Articolo. Di seguito il link per
sione dei pulsanti 8 e 2 comporterà la movimentazione accedere direttamente all’articolo sul Blog e partecipare alla
del veicolo rispettivamente in avanti e indietro, mentre discussione:
https://it.emcelettronica.com/wallpi-quando-lego-incontra-
i pulsanti 4 e 6 determineranno la rotazione del veico-
raspberry-pi
lo su sé stesso rispettivamente verso sinistra e verso
60
Il Kit di ESPertino:
MAK ER
misuriamo le distanze
con il modulo a
ultrasuoni HY-SRF05
di Giovanni Di Maria
Il kit di ESPertino comprende anche un modulo a ultrasuoni per la rilevazione di distanze da oggetti.
Con esso, la nostra scheda può contare su un ulteriore sistema sensoriale, per la realizzazione di robot,
automatismi e circuiti di rilevazione intelligente.
E
SPertino è una scheda basata su ESP32, pro- di distanze da oggetti, dotato di cinque pin, che utiliz-
gettata e prodotta in Italia da Elettronica Open za gli ultrasuoni. E’ anche molto economico, tuttavia si
Source. Permette di realizzare facilmente qualsi- tratta di una evoluzione rispetto al precedente mo-
asi tipologia di applicazione e di sistema. Per agevolare dello HC-SR04, in quanto riesce a coprire una distanza
ancora di più i progettisti è a disposizione il Kit ESPerti- maggiore, fino a 4.5 metri. Inoltre, per il suo cablaggio
no, una fantastica raccolta di componenti elettronici tra con la MCU, si può anche unificare il pin del trigger e
i quali sono presenti sensori, componentistica attiva e dell’echo, consentendo un risparmio di porte di I/O per
passiva e altre grandi utilità per l’elettronica. le unità intelligenti.
La seguente tabella riporta le caratteristiche più impor-
IL SENSORE DI DISTANZE HY-SRF05 tanti:
61
MAKER
62
MAKER
Velocità di propagazione
Sostanza
(metri/secondo) [m/s]
Gomma 50
Sughero 500
Idrogeno 1260
Acqua 1460
Mattoni 3650
Marmo 3800
Ferro 5000
Vetro 5200
re prestare molta attenzione è quello della tensione medesima tensione in uscita. Si potrebbero, per esem-
elettrica erogata dal piedino “Echo”, che equivale a 5V, pio, utilizzare anche due resistenze, rispettivamente dal
non compatibile con quella dell’Esp32. Per “traslare” il valore di 470 ohm e 1000 ohm. Per questa tipologia di
livello e abbassarlo ai fatidici 3.3V è sufficiente adotta- calcolo, con Vcc pari a 5V, una regola da seguire af-
re un partitore resistivo, formato dai valori di 1Kohm e ferma che la resistenza collegata a massa deve avere
2.2Kohm. Le informazione di tale pin, pertanto, sono in- un valore ohmico doppio a quello dell’altra resistenza.
viate alla porta 16 di ESPertino mentre la linea del “Trig- Valori commerciali corretti e ammessi potrebbero esse-
ger” fa capo alla porta 17 della stessa scheda. re, pertanto, i seguenti: 470 ohm e 1000 ohm, 560 ohm
Per calcolare i valori delle due resistenze del partitore e 1200 ohm, 1000 ohm e 2200 ohm, 2200 ohm e 4700
è stata utilizzata, ovviamente, la legge di Ohm. Esisto- ohm, e così via. Per effettuare il calcolo si proceda nel
no tantissime combinazioni di resistori per ottenere la seguente modo:
63
MAKER
1. Si stabilisca la corrente di transito nella linea te bassa, nell’ordine dei millesimi di Watt. Pos-
dell’Echo, in caso di uscita a livello logico alto, sono andare bene, dunque, anche le resistenze
per esempio si assuma un valore di 1.5mA (an- di 1/4 di Watt.
che altri bassi valori vanno bene);
2. Per calcolare la prima resistenza (quella in alto Leggi anche: Distanza: sensore ultrasuoni HC-
verso il pin “Echo”) si utilizzi la formula R=V/I, SR04 e Arduino
ossia R=(5-3.3)/0.0015, che restituisce il valore
1133, assimilabile al valore commerciale di 1K LA PROGRAMMAZIONE
oppure di 1.2K; Come detto in precedenza il sensore deve essere ali-
3. Per calcolare la seconda resistenza (quella in mentato con una tensione di 5V sull’omonimo pin Vcc
basso verso massa) si esegua la formula R=V/I, e la massa su GND. L’attivazione della emissione de-
ossia R=3.3/0.0015, che restituisce il valore gli ultrasuoni è effettuata inviando un impulso sul pin
2200 esatti. “Trigger” dell’HY-SRF05 della durata di almeno 10
4. La dissipazione di tali resistenze è estremamen- microsecondi. Sul fronte di discesa di tale segnale il
64
MAKER
sensore inizia a emettere un “treno” di 8 brevi impulsi zare, ancor di più, le potenzialità di alcune funzioni di
della frequenza di 40KHz. Subito dopo, lo stato logico libreria, che rendono il lavoro di programmazione più
del pin “Echo” si porta a livello alto. Occorre aspettare e snello e affidabile.
misurare la durata di tale impulso, fino a quando il suo
livello logico commuta in basso, segno della ricezione LA FUNZIONE PULSEIN()
del suono di ritorno. Se il sensore non capta tale suono Con l’utilizzo di tale funzione si riesce, in un unico sta-
di rimbalzo, dopo qualche istante si pone in stato di ti- tement, a controllare e a misurare l’impulso di eco, pro-
meout. Con queste specifiche e la potenza del linguag- veniente dal sensore di distanza. Cosa fa tale funzione?
gio di programmazione, legata anche alla gestione delle Essa legge un impulso digitale (alto o basso) da un pin
porte digitali, è molto semplice realizzare uno sketch su della MCU. Per esempio, se il contenuto del parametro
misura. “value” passatole è HIGH, la funzione attende che lo
L’esempio che segue utilizza le due linee di dati (echo stato logico del pin esaminato diventi ALTO, quindi ini-
e trigger) indipendenti tra loro, anche per una più sem- zia a misurarne il tempo e, quando lo stato logico della
plice programmazione. Come si evince dal flusso dei porta passa a BASSO, arresta il cronometraggio, resti-
dati in figura 5, il pin echo del sensore invia un segnale tuendolo al programma. Si potrebbe fare a meno della
digitale al pin 16 di ESPertino, quindi quest’ultima deve funzione pulseIn() e creare, ex novo, tutto il prototipo da
essere configurata come ingresso, mentre il pin trigger sé. La sua sintassi di utilizzo è la seguente:
del sensore riceverà l’impulso di start dalla MCU attra- dove:
verso la porta numero 17, pertanto essa deve essere • pin è il numero della porta sulla quale si intende
configurata come uscita. leggere l’impulso;
Lo sketch proposto sotto implementa una sorta di metro • value è il tipo d’impulso che si vuole leggere e
elettronico ed esegue le seguenti funzionalità: può essere HIGH o LOW;
• Configura le porte coinvolte nelle operazioni; • timeout, opzionale, è il numero di microsecondi
• Invia il segnale di trigger (di 10 microsecondi) di attesa per l’inizio dell’impulso.
per fare iniziare l’emissione degli impulsi ultra- Se il timeout non è specificato esso, per default, equi-
sonici; vale alla pausa di un secondo. La funzione restituisce la
• Misura la durata dell’impulso di eco ricevuto; durata dell’impulso misurato, espresso in microsecondi
• Calcola la corrispondente distanza, in centimetri; oppure il valore 0 se nessun impulso è iniziato entro il
• Effettua una piccola pausa di attesa pari a un timeout impostato.
quarto di secondo e reinizia l’intero processo.
65
MAKER
void setup()
Serial.begin(9600);
void loop()
//--------- Invio del segnale iniziale di trigger della lunghezza di 10us (Low, High, Low)
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(2);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
distanza=distanza/58; // L’impulso ultrasonico viene inviato e rimbalza indietro. Calcolo di conversione da tempo
a distanza
Serial.print(distanza);
Serial.println(“ cm”);
delay(250);
66
MAKER
Figura 6: il collaudo del sistema durante le prove di avvicinamento e di allontanamento di un oggetto posto dinanzi al sensore
colo effettivo della distanza percorsa restituirebbe, per- sempre molto interessante. La loro implementazione nei
tanto, un valore doppio. Quindi, si preferisce dividere propri sistemi consente di realizzare dispositivi in grado
per due il risultato di cui sopra: d’interagire con il mondo esterno. Un sistema sensoria-
Spazio = (341 * Tempo)/2 le che accresce le capacità del circuito, consentendogli
da cui: di rilevare gli oggetti nelle immediate vicinanze, è sem-
Spazio = 170.5 * Tempo pre il primo passo per realizzare progetti di robotica e di
Spesso è consigliabile trasformare le moltiplicazioni in automazione. In rete vi sono anche alcune librerie per
divisioni, adottando il calcolo del numero reciproco. la gestione ottimale del sensore di distanza. Personal-
L’equivalente formula di cui sopra diventa, quindi: mente, l’ultima fornitura richiesta da un cliente, dotata
Spazio = Tempo / (1/170.5) di sensore di distanza a ultrasuoni, comprendeva un
Spazio = Tempo / 0.0058 sistema idraulico per piegare i tubi di ferro. La corsa del-
Dal momento che il tempo misurato da ESPertino non è la piegatrice teneva conto, appunto, della distanza del
espresso in secondi ma in microsecondi, occorre cam- sensore da un ostacolo di riferimento e l’entità della pie-
biare la formula in: ga era programmata attraverso la scheda ESPertino. Le
Spazio = Tempo / 5800 applicazioni pratiche sono infinite. Si va dal sensore
Inoltre la formula deve restituire lo spazio espresso in di retromarcia per automobile al contametri elettronico,
metri e non in centimetri, per cui quella definitiva è: dal sistema robotizzato per evitare gli ostacoli alla guida
Spazio = Tempo / 58 automatica di un piccolo modellino di veicolo, e così via.
Se si riscontrano piccole differenze nei risultati si può
ritoccare leggermente il valore della costante, maga-
ri aggiungendo qualche cifra decimale. La velocità del
L’autore è a disposizione nei commenti per eventuali
suono, infatti, potrebbe cambiare in dipendenza della approfondimenti sul tema dell’Articolo. Di seguito il link per
temperatura. accedere direttamente all’articolo sul Blog e partecipare alla
discussione:
https://it.emcelettronica.com/il-kit-di-espertino-misuriamo-le-
CONCLUSIONI
distanze-con-il-modulo-a-ultrasuoni-hy-srf05
Sperimentare con i sensori di distanza a ultrasuoni è
67
Controllo gestuale e
MAK ER
ausilio per non vedenti
con la scheda Arduino
[Progetti completi
open source]
di Stefano Lovati
In questo articolo presentiamo due progetti innovativi open source, entrambi basati sulla piattaforma
di prototipazione rapida Arduino, le cui finalità non sono soltanto didattiche, ma anche pratiche, con la
possibilità di migliorare la qualità della vita di molte persone.
I
l primo progetto permetterà infatti di controllare remo- 7. motore elettrico a 12v/9v;
tamente un piccolo robot o veicolo radiocomandato 8. alimentazione 12/9v;
tramite il movimento (gestualità) della mano. Il secon- 9. regolatore di tensione 7805;
do progetto consentirà invece di realizzare un vero e 10. telaio per robot (opzionale), eventualmente au-
proprio bastone elettronico per non vedenti, in grado di tocostruito. Al seguente link una panoramica di
segnalare la presenza di ostacoli lungo il cammino tra- articoli sui robot e le relative tecnologie.
mite vibrazione tattile e segnalazione acustica.
PRINCIPIO DI FUNZIONAMENTO
PRIMO PROGETTO: CONTROLLO GESTUA- Il principale sensore utilizzato in questo progetto è rappre-
LE PER ROBOT sentato da un accelerometro a tre assi di tipo ADXL335.
Aggiungere a un piccolo robot una funzionalità avanza- Accelerometri di questo tipo (si osservi la Figura 1) sono
ta come il controllo gestuale è più semplice di quan- ampiamente utilizzati sui dispositivi mobile (smartphone
to si possa immaginare. Il progetto si compone di due e tablet) per numerose applicazioni, tra cui le notifiche e i
parti: un trasmettitore e un ricevitore. Il trasmettitore giochi (ad esempio Temple Run).
andrà opportunamente modificato in modo tale da in- Il cervello del robot è rappresentato dalla board Arduino
viare i controli gestuali sotto forma di comandi. Come Uno (Atmega32) che, accompagnata da un opportuno
piattaforma di sviluppo verrà utilizzato Arduino, il quale software (sketch), è in grado di riconoscere il movimen-
riconoscerà i gesti e i movimenti della mano utilizzando to gestuale in base ai dati forniti dall’accelerometro. Lo
come sensore un comune accelerometro. schema a blocchi dell’applicazione è visibile in Figura 2.
L’accelerometro legge le cooordinate X Y Z associate
MATERIALE RICHIESTO ai movimenti della mano, e le invia ad Arduino. In que-
I componenti richiesti per la realizzazione del progetto sta applicazione non siamo interessati ai valori misurati
sono elencati di seguito: lungo l’asse Z, per cui utilizzeremo soltanto i valori re-
1. accelerometro ADXL335; lativi alle coordinate X e Y. Lo sketch Arduino controlla i
2. scheda Arduino; valori delle coordinate ricevuti, e invia un’informazione
2. modulo ricetrasmittente RF Module 434-MHz; composta da 4 bit (funzione dei valori di X e Y) all’en-
3. circuito integrato encoder HT12E; coder. L’encoder, a sua volta, inoltra i dati verso il tra-
4. circuito integrato decoder HT12D; smettitore RF. I dati trasmessi da quest’ultimo vengono
5. circuito integrato per il pilotaggio dei motori; ricevuti dal ricevitore RF, che invia i 4 bit dati al circuito
68
MAKER
69
MAKER
riducendo una tensione da 12 V a 5 V). senza di due led: uno si accende quando al ricevitore
viene fornita l’alimentazione, mentre l’altro quando l’ali-
STEP 2 – IL TRASMETTITORE mentazione viene fornita al trasmettitore.
Il trasmettitore comprende il sensore accelerometro, Il led vicino all’integrato HT12D si accende quando l’a-
la cui funzione è quella di rilevare i gesti della mano e limentazione viene fornita al trasmettitore, indicando di
inviare l’informazione ad Arduino. Succes-
sivamente, i dati verranno inoltrati all’enco-
der, per essere poi trasmessi verso il ricevi-
tore (Figura 4).
Una volta assemblato, il circuito dovrebbe
essere simile a quello visibile in Figura 5.
STEP 4 – IL RICEVITORE
Il circuito del ricevitore comprende due cir-
cuiti integrati (il decoder HT12D e il driver
per motori L293D), e il modulo ricevitore RF.
Il circuito deve essere assemblato come in-
dicato in Figura 6. Notiamo subito la pre- Figura 5: il circuito per il controllo gestuale assemblato
70
MAKER
conseguenza la condizione di stato trasmissione valido. soluzione che rende permanente il progetto qui descrit-
Se ciò non avviene, c’è probabilmente qualcosa da con- to. Il layout del PCB associato alla versione standalone
trollare e sistemare nei cablaggi. del progetto è visibile in Figura 8.
Quali tipi di movimenti della mano possono essere
riconosciuti dal robot? Il robot è stato progettato per SECONDO PROGETTO: BASTONE ELET-
riconoscere cinque diverse tipologie di gesti: avanti, TRONICO PER NON VEDENTI
indietro, sinistra, destra, e stop (si osservi la Figura 7). L’obiettivo di questo progetto è stato quello di realizzare
uno strumento in grado di assistere i non vedenti, mi-
STEP 5 – APPRONTAMENTO DEL PCB (OP- gliorando possibilmente la qualità della loro vita e ren-
ZIONALE) dendoli più indipendenti negli spostamenti. Il risultato
La scheda Arduino Uno presenta degli ingombri non tra- è stato la realizzazione di un bastone elettronico, o
scurabili, a maggior ragione se la si vuole impugnare bastone “intelligente” se vogliamo chiamarlo così, ba-
per rilevare le gestualità manuali. Inoltre, se si in futuro sato sulla piattaforma di prototipazione rapida Arduino.
si vuole realizzare un altro progetto con la stessa sche- Questo progetto open source ha lo scopo di assistere i
da, occorre rimuoverla dal circuito proposto in questo non vedenti quando camminano da soli, in autonomia,
articolo ed eliminare tutti i collegamenti, perdendo di in ambienti per loro nuovi e inesplorati. Un sensore ad
fatto il lavoro compiuto in quell’occasione. Ciò non è ultrasuoni rileva infatti la presenza di ostacoli lungo il
sempre accettabile, ed è stata pertanto sviluppata una cammino, fornendo un feedback sia di tipo tattile (pro-
71
MAKER
MATERIALE RICHIE-
STO
L’elenco dei componenti ri-
chiesti per la realizzazione Figura 9: componenti necessari per realizzare il progetto
72
MAKER
73
MAKER
74
MAKER
#define trigPin 13
#define echoPin 12
duration = pulseIn(echoPin, HIGH);
#define motor 7
distance = (duration/2) / 29.1;
#define buzzer 6
75
MAKER
76
MAKER
BIBLIOGRAFIA
1. From Mayoogh Girish, Con-
trol your robot using hand gestures
Figura 17: assemblaggio finale - Maker at DIY Hacking
2. From Suhail, Arduino smart
lungo circa un metro e mezzo; cane for the visually impaired: best Arduino
• prendete la curva a gomito, e attaccatela a una project - Maker at DIY Hacking
delle estremità del bastone;
• prendete un altro tratto di tubo di PVC, lungo
circa 10 cm, e attaccatelo all’altra estremità del
bastone;
• fissate tutti i pezzi con della colla o mastice ade-
sivo.
77
Il mercato Italiano
PCB
dei PCB
di Maurizio Di Paolo Emilio
La crescente complessità e la miniaturizzazione dei dispositivi elettronici sono il catalizzatore per l’e-
voluzione continua della progettazione e produzione di PCB. Ma come le aziende possono far fronte a
questa evoluzione? I produttori hanno necessità di campionare immediatamente fornendo un deciso
time-to-market per la realizzazione del prodotto e arrivare prima di tutti quanti sul mercato. In questo
contesto è indispensabile disporre di aziende dinamiche che offrono non solo innovazione tecnologica
ma anche un processo lavorativo flessibile e veloce.
G
INTRODUZIONE L’industria PCB europea serve principalmente i mercati
li analisti di mercato hanno stimato una crescita europei, ma esporta anche prodotti di fascia alta in Asia e
del mercato PCB con un CAGR di circa il 3% entro Nord America. I mercati principali serviti sono quelli indu-
il 2020. Dal momento che questo mercato è una striali, strumentazione e controllo, medicale, militare, aero-
parte integrante della produzione di smartphone e altri spaziale e automotive. Le prospettive per l’industria PCB
dispositivi intelligenti, il recente aumento della domanda europea dipendono dalla salute degli OEM che compon-
porterà ad una decisa crescita. Inoltre, l’avvento delle gono i mercati chiave, e tutto ciò che è valore aggiunto in
tecnologie avanzate, come IoT, IIoT e Wearable, con- grado di compensare la concorrenza off-shore. Di seguito
tribuiranno a favorire la domanda di PCB durante i pros- riportiamo un elenco di principali aziende che operano nel
simi anni (figura 1). settore PCB.
Figura 1: il mercato PCB in funzione delle applicazioni (a) e del settore geografico (b)
78
PCB
Aiutiamo le aziende e le persone a creare prodotti elettronici in modo più semplice per insediare prima il mercato ed
aumentare i loro profitti. Servizi offerti: sviluppo prodotto, montaggio schede, gestione prodotto. Valore aggiunto: pro-
dotti funzionanti, prodotti funzionanti nel tempo, consegne immediate, massima collaborazione. “Se hai intenzione di
lanciare il tuo prodotto innovativo nel mercato, possiamo lavorare insieme per farlo al meglio”.
La produzione è principalmente indirizzata ai prototipi intesi più nel senso di piccolissime produzioni, anche ricorrenti
che "materiale da test". PCB Project srl produce circuiti stampati Singola Faccia, Doppia Faccia, Multistrato princi-
palmente in FR4 e circuiti stampati Metal Core (IMS) su base alluminio; con tecnologia tradizionale a foro passante,
SMD o mista. Alcune delle principali lavorazioni sono: Foratura CNC, Solder mask fotografico, Finitura H.A.L. o
Argento Chimico, Test elettrico.
Safe-PCB è un produttore internazionale di circuiti stampati specializzato in prototipi e medie serie per consegna ra-
pida. I punti di forza sono: fabbrica ultra-moderna nel cuore di Shenzhen, la più grande area al mondo di produzione
di PCB; sito intuitivo per configurare, preventivare, ordinare e controllare la produzione e la spedizione dei tuoi PCB;
prezzi chiari che includono attrezzatura, test elettrico, oneri doganali e spedizione per corriere; supporto tecnico e
commerciale in Italia per rispondere a tutte le vostre domande. Safe-PCB produce come standard PCB rigidi con le
seguenti caratteristiche: FR4, IMS, CEM3, Poliimmide (PI) (SUBSTRATO FR4 MARCHIO VENTEC); da 2 a 12 facce
e risoluzione 0,1 mm; spessore totale da 0,2 a 3,2 millimetri; finitura HAL, NiAu, Argento, OSP, Carbonio; spessore
rame da 17 a 140 micron; solder resist verde, bianco, nero, blu, rosso.
CUSTOM SOLUTION S.R.L. ha come attività principale l'assemblaggio delle schede elettroniche per conto terzi e
la progettazione hardware e firmware di schede dedicate alle esigenze del cliente. La storia professionale dei soci,
è tale da assicurare alla CUSTOM SOLUTION una elevata esperienza in molti ambiti progettuali, con particolare
propensione alla progettazione dei prodotti con comunicazione a radiofrequenza. CUSTOM SOLUTION si propone
come partner a qualsiasi livello del progetto: assemblaggio schede elettroniche per conto terzi in conto pieno o conto
lavoro per produzione da pochi pezzi e decina di migliaia di pezzi, collaudati ed inscatolati; progettazione completa
di hardware e firmware.
79
PCB
Bianchi Master offre un servizio a “360 gradi” partendo dalla masterizzazione del circuito fino ad arrivare alla sua
costruzione. Avvalendoci della nostra trentennale esperienza nel campo siamo in grado di eseguire masterizzazioni
di qualsiasi tipologia (dai “monofaccia” ai “multistrati” ,alimentatori , schede ad impedenza controllata , ecc.). Grazie a
selezionati partner siamo in grado di fornire PCB di varie tipologie , dal monofaccia ai multilayer , circuiti in alluminio,
finiture in oro chimico e coperture per pannelli in vetroresina. Al cliente finale proponiamo anche l’assemblaggio delle
schede , con kit componenti di nostra fornitura oppure con fornitura parziale o totale da parte del cliente stesso. L’as-
semblaggio viene eseguito da noi direttamente per quanto riguarda le campionature e le piccole produzioni, mentre
per le grosse produzioni ci affidiamo a nostri partner consolidati da anni e di grande esperienza nel settore. Assicuria-
mo al cliente tempi brevi in base al lavoro da eseguire , la nostra priorità e di soddisfare le richieste del cliente parten-
do dalla precisione del lavoro, passando per tutti i controlli sulla masterizzazione , assicurando materiali certificati e
verificati con test di controllo automatizzati in fase di realizzazione del PCB e consegnando il tutto nei tempi richiesti.
Esseti Circuiti Stampati Srl Via del Lavoro, 90, 40050 Zona
Artigianale Argelato BO - http://www.circuiti-stampati.com
Nel 1979 a Bologna, grazie alla passione per l’elettronica e l’innovazione, due amici posarono le basi di quella che
sarebbe diventata una grande azienda: Esseti Srl, che da oltre 35 anni produce e trasforma circuiti stampati ed è in
grado di assicurare qualità, disponibilità, competitività, flessibilità produttiva e supporto tecnico. Esseti Srl produce
ed importa circuiti stampati (PCB) per applicazioni nei settori dell’elettronica di consumo, industriale e di potenza,
broadcasting, lighting, elettromedicale e automotive.
Azienda Flessibile e Dinamica, formata da periti elettronici con esperienza pluriennale nei seguenti settori: Montag-
gio SMD e PTH di schede elettroniche tramite macchine industriali pick&place e saldatrici ( sia ad onda che selettive
); assemblaggio, cablaggio di apparecchiature elettroniche generiche; taratura e collaudo di apparecchiature elet-
troniche e schede stand alone; specializzazione nell'assemblaggio della micro elettronica.
P.A.C. DI BEZZETTO SANDRO & C. S.N.C. Via del lavoro, 271 37050
- Angiari - Verona Italia - http://www.pacpcb.it
Dal 1973 P.A.C. è tra i leader nel mercato dei circuiti stampati (C.S.) o PCB (Printed Circuit Board). E' più di trent’anni
che si interessa alle varie richieste dei settori di elettronica, automazione, potenza, robotica, telecomunicazioni, illu-
minotecnica, ecc. per potersi arricchire di quell'esperienza che ha permesso di assistere e far parte dell’evoluzione
di questo mercato, sviluppando direttamente nuovi processi e sistemi produttivi finalizzati a realizzare piccole, medie
e grandi serie di circuiti stampati di altissima qualità.
80
PCB
Cistelaier si propone di affiancare il Cliente già a inizio progetto contribuendo, quando richiesto, al miglioramento del
progetto stesso attraverso analisi del tipo "Design forManufacturing” (DFM), per ottimizzare affidabilità in uso e per
minimizzare i costi del dispositivo. Il servizio di prototipazione veloce (QTA) completa l’offerta di supporto al Cliente
in fase di progettazione. Cistelaier S.p.A. è in grado di offrire una vasta gamma di circuiti stampati, caratterizzati
dall’elevata tecnologia. L’attenzione prestata nei processi di produzione, dalla scelta delle materie prime utilizzate
alla consegna del prodotto finito, garantita dalle diverse certificazioni in nostro possesso, permette a Cistelaier S.p.A.
di garantire ai propri Clienti un’apprezzata rapidità nelle forniture abbinata a un’elevata qualità del prodotto.
L'azienda Lorj s.r.l. opera nel settore della produzione di circuiti stampati (PCB) da più di 40 anni ed è specializzata
nella produzione, civile e professionale, di mono e multistrati, flessibili e su base di alluminio, con consegne brevi e
veloci sia per piccole che per medie produzioni. Le continue ricerche e aggiornamenti della parte tecnica per man-
tenere sempre i più alti standard qualitativi, hanno contribuito ad ottenere altre certificazioni come l' ISO 9001, ISO
14001 - 2004. Oggi in ottemperanza alla normativa RoHS tutto il processo produttivo è stato rivisto e modificato
adeguandolo anche all'utilizzo delle leghe Lead Free.
MD collabora con le più grandi aziende fornitrici di processi chimici e di semilavorati per il settore dei circuiti stampati
(Atotech, Panasonic, Sun Chemicals, Union Tool, ...). Per garantire la qualità promessa, MD collauda ogni circuito
con una macchina per il test elettrico a sonde mobili di nuova generazione, e allega il referto al prodotto finito. Que-
ste, oltre a fornirle i loro prodotti di gamma superiore, controllano la qualità dei circuiti ottenuti intervenendo, quando
necessario, per apportare migliorie al processo produttivo. Il prodotto di punta è ovviamente il multistrato, ma una
delle ragioni del successo è la gamma estesa, che comprende circuiti stampati IMS (Insulated Metal Substrate),
mono e doppio strato tradizionali, lamine SMD in acciaio, circuiti per alte frequenze e, ultimo ma non meno importan-
te, l'Assemblaggio dei componenti!
I punti di forza di Baselectron sono sempre stati la velocità di produzione, la flessibilità nell'andare incontro alle più
svariate richieste e la costante attenzione all'innovazione in un settore che non smette mai di proporre soluzioni
all'avanguardia. I PCB prodotti da Baselectron sono per questi motivi diretti a soddisfare le più svariate esigenze,
trattandosi di circuti stampati a singola faccia o a doppia faccia, multistrato (fino a ventiquattro strati) o speciali, flessi-
bili e rigid-flex, eccetera. La costante attenzione alle più moderne tecnologie permette a Baselectron di offrire anche
la campionatura in tempi ridottissimi (anche in sole 24/48 ore per le richieste più urgenti), spesso improponibili per le
altre imprese del settore; il tutto, offrendo sempre un prodotto dall'elevato standard qualitativo.
81