Download as pdf or txt
Download as pdf or txt
You are on page 1of 59

La criptovaluta IOTA

ED IT ORIA LE Ancora oggi, le macchine riescono a fare il loro lavoro senza l’intervento umano. Se, inol-
tre, si richiede una transazione autonoma di pagamento tra le macchine, è necessaria una
valuta digitale. L’IoT è attualmente molto interessante per la logistica, poiché sempre
più pacchi e contenitori devono essere inviati al nostro mercato globale. L’idea di base è
semplice: i pacchetti sono identificati da un chip, che non solo memorizza le informazioni
sul prodotto ma anche la destinazione. Come i flussi di dati su Internet, le trasmissioni si
dirigono verso la destinazione stessa. Se una partita arriva a una macchina smistatrice, la
informa della destinazione, verrà ordinata di conseguenza e inoltrata alla sua destinazione.

Questi processi funzionano rapidamente e autonomamente senza un’autorità centrale. Il


pacchetto trova così la sua strada. In questo concetto di IoT entra in gioco il Bitcoin che consiste in
un database, la blockchain, una sorta di diario in cui sono registrate tutte le transazioni. Il sistema
di pagamento Bitcoin utilizza una rete peer-to-peer a cui tutti i computer partecipanti si connettono.
La blockchain è archiviata in modo ridondante e decentrata su tutti i nodi Bitcoin, gestita
e costantemente aggiornata sulla rete, eliminando così la necessità di banche. IOTA offre
un’elaborazione rapida e sicura delle transazioni, senza Blockchain come sarebbe consuetudine
con Bitcoin. Lo IOTA si basa su un nuovo libro mastro distribuito, Tangle, che supera le inefficienze
dell’attuale design blockchain e introduce un nuovo metodo di consenso in un sistema peer-to-peer
decentralizzato. Ciò consente alle persone di utilizzare lo IOTA, ad esempio, per trasferire dena-
ro senza alcuna commissione. E in particolare i micro-trasferimenti come le tariffe dei parcheggi,
l’autolavaggio, l’acquisto di panini o il normale giornale possono essere eseguiti gratuitamente e
velocemente.

Per l’IoT, dove “le macchine pagano altre macchine”, abbiamo bisogno di un sistema di
pagamento in grado di elaborare minuscole transazioni in quantità enormi e in tempo reale. Deve
essere economico, o anche meglio, gratuito, veloce e scalabile. E questo è esattamente quello che
Bitcoin non può fare, secondo gli esperti, ma resta da vedere quali miglioramenti si avranno con la
nuova rete IOTA. Non senza ragione, molte aziende come la Bosch sono molto interessate a queste
tecnologie. Se lo IOTA può prevalere nel mercato, solo il futuro lo mostrerà, perché una “prova del
concetto” deve essere fornita nelle applicazioni del mondo reale.

Maurizio Di Paolo Emilio

1
EDITORIALE MAKER ROBOT
La criptovaluta IOTA 1 Sistema di Accesso con 3 Corso sugli Aeromobili 35
QRcode per Raspberry Pi a Pilotaggio Remoto
partendo da zero:
Founder & Publisher Corso di Elettronica per descrizione del modello
Emanuele Bonanni 16
ragazzi 7-12:
matematico
Editor-in-Chief primo approccio
Maurizio Di Paolo Emilio
Realizziamo un
Editorial Assistant 47
semplice Vocal
Maria Pisani
Commander con
Marketing ESPertino
Sara Ercolani
Advertising TECH
Francesca Ceroni
Sperimentiamo 10
francesca@emcelettronica.com
l’elettricità statica
Graphic Designer con ESPertino
Marilde Mirra
Le transazioni nel 31
Circulation
Users - 129.701 sistema IOTA con il
Social Network - 124.144 protocollo Tangle
© Copyright
Tutti i diritti di riproduzione o di traduzione BOARD
degli articoli pubblicati sono riservati.
Manoscritti e disegni sono di proprietà di Una piattaforma 23
EMCelettronica Srl. multisensore con
E’ vietata la riproduzione anche
parziale degli articoli salvo espressa interfaccia Arduino
autorizzazione scritta dell’editore. I
contenuti pubblicitari sono riportati senza
La scheda di sviluppo
responsabilità, a puro titolo informativo. 43
Marvin LoRa per l’IoT
Autorizzazione alla pubblicazione del
Tribunale MI n. 20 del 16/01/2006
Sistema di Accesso con
MAKER
QRcode per Raspberry Pi
di Gabriele Guizzardi

Le capacità di elaborazione dati e le librerie a disposizione per Raspberry Pi sono molto ampie e per-
mettono di prototipare un’ampia gamma di progetti. In questo articolo vedremo come impostare il
Raspberry per poter leggere “al volo” i QRcode stampati su carta o visualizzati su smartphone per
comandare o eseguire lavori. L’utilizzo del QRcode è ultimamente incrementato e permette di gestire
anche grandi quantità di informazioni in spazi ristretti come una immagine quadrata. Una camera CSI e
un pugno di righe di Python ci apriranno nuovi orizzonti di interfacciamento.

INTRODUZIONE oggetti, monumenti, parti elettroniche e quant’altro di-

P
robabilmente sappiamo tutti che il nome QRcode spongono di questo codice per la loro immediata identi-
significa Quick Response Code e che altro non è ficazione tramite Smartphone.
se un barcode a due dimensioni, forse però non Per poter leggere un QRcode lo si deve fotografare (o
tutti sanno che in un solo crittogramma possono essere comunque si deve sottoporre ad uno streaming di dati
contenuti 7.089 caratteri numerici o 4.296 alfanumerici. che verranno trasformati in immagine), analizzarlo poi
Nato poco più di una ventina di anni fa per identificare le con un software che lo identifica all’interno dell’imma-
parti di ricambio nell’industria automobilistica ne esisto- gine, ne legge le varie aree e ne produce il contenuto
no oggi di diverse forme e dimensioni (per es. esistono sotto forma di stringa. Questa stringa può essere for-
i micro qrcode) e ultimamente si trovano produttori che mattata in vari modi, dal semplice testo, all’URL di un
li personalizzano con loghi e colori. Oggi quasi tutti gli dominio, al formato Vcard di una rubrica ad un punto

Figura 1: programma di configurazione

3
MAKER

vete mai usata ne resterete


affascinati.
IL PROGETTO
Per questo piccolo ma utile
progetto, oltre ad una scheda
embedded Raspberry Pi 2 o 3
con installato il sistema ope-
rativo Raspbian aggiornato
all’ultima versione (consiglio
sempre e comunque la versio-
ne 3 della scheda se non ave-
te già una RPi e dovete quindi
procurarvela), sono necessari,
come detto, una telecamera
PiCamera CSI, un modulo relè
e la libreria ZBAR. Con la Ra-
spberry Pi 3 avrete una mag-
gior velocità operativa e meno
tempi di attesa nel caricamen-
to dei programmi. Inoltre, essa
fornisce tante altre innovazio-
ni, come potete osservare in
Figura 2: abilitazione Interfacce altri articoli inerenti la RPi.
Per prima cosa colleghiamo la
geografico, ecc. camera al Raspberry Pi e atti-
Per Raspberry Pi vi sono diverse librerie e diverse viamola, se ancora tale operazione non dovesse essere
soluzioni per poter leggere ed analizzare un QRco- stato fatta in precedenza. Per attivare la camera, quindi,
de, sia con la camera CSI sia utilizzando una came- occorre lanciare il programma di configurazione raspi-
ra USB. E’ possibile creare programmi e script oppure config oppure si può utilizzare il nuovo configuratore
eseguire le operazioni di scan da riga di comando. La da menù, molto semplice da utilizzare. Le videate che
soluzione che ho studiato è quella che mi ha dato meno seguono alle figure 1 e 2 sono relative al nuovo desktop
problematiche e a mio giudizio più semplice da imple- Pixel.
mentare forse anche a discapito di metodi più potenti e Portarsi su Interfacce e abilitare Camera.
performanti. Dopodiché apriamo la finestra di terminale, digitiamo il
comando sudo su per evitare di anteporre sudo ad ogni
LA CAMERA altro comando inoltrato successivamente e installiamo
La camera usata è una PiCamera ver. 2.1. Rilasciata la libreria. In questo modo otterremo i diritti di root per
nell’aprile 2016, la seconda versione della PiCamera è qualsiasi altra operazione. Ovviamente, è importante
la nuova versione di questo accessorio, che è andato a rammentare che tali super poteri potrebbero essere an-
sostituire l’ormai vecchio modello PiCamera v1.3. Resta che pericolosi, in quanto basterebbe l’invio erroneo di
compatibile con tutti i modelli di Raspberry esistenti. In- un solo comando, magari per una svista o una sbada-
fatti, il cavo piatto è rimasto invariato, comunque atto ad taggine) per cancellare definitivamente, e senza possi-
essere inserito nel connettore dedicato sul lato superio- bilità di recupero, tutto il sistema operativo con annesso
re di tutte le Raspberry. l’intero file system.
Questo nuovo modulo monta una fotocamera Sony
IMX219 con fotocamera da 8 megapixel, in modo da so- $ apt-get install python-zbar python-qrtools
stituire il vecchio OmniVision OC5647 con 5 megapixel
sul modello precedente. Le dimensioni sono veramente
ridotte, 25 mm x 23 mm x 9 mm per un peso di 3 grammi Ora colleghiamo la scheda relay (vedi figura 3) alla Ra-
circa. spberry. Servono solamente tre fili di connessione: la
Ne esiste un modello anche all’infrarosso. Se non l’a- massa, i 5V e il comando d’impulso (che trovate soli-

4
MAKER

tamente indicato come IN o SIG sui moduli relay), in # Bisogna impostare qui la password
questo progetto ho usato il pin 11 corrispondente alla
password = “1234567890”
GPIO17. Io ho usato un semplice modulo da due relay
come quelli che si trovano nei kit per Arduino e Raspber-
ry. Ovviamente ho utilizzato uno solo dei due relay. while 1:
# crea uno stream dati in memoria
stream = io.BytesIO()

# visualizzazione dello streaming della camera


with picamera.PiCamera() as camera:
camera.exposure_mode = ‘auto’
camera.preview_fullscreen = False
# ridimensiono il preview per poter interrompere
in caso di problemi
camera.preview_window = (300, 200, 640, 480)
camera.start_preview()
sleep(1) # aumentare se si vuole inquadrare
meglio
Figura 3: modulo relay
camera.capture(stream, format=’jpeg’)

Se volete usare il relay per comandare un carico come # recupera tutto il flusso per creare l’immagine
una lampada potrebbe aiutarvi lo schema di cui alla fi-
stream.seek(0)
gura 4:
E per finire il codice. pil = Image.open(stream)

# Progetto di Accesso con QRcode # inizializza lo scan dell’immagine


# scritto da Brain & Bytes scanner = zbar.ImageScanner()
# per Elettronica Open Source - EOS-Book

# configura il lettore
import io scanner.parse_config(‘enable’)
import picamera
import hashlib pil = pil.convert(‘L’)
import zbar width, height = pil.size
import RPi.GPIO as GPIO raw = pil.tostring()

from PIL import Image # wrap dati della immagine


from time import sleep image = zbar.Image(width, height, ‘Y800’, raw)

# inizializzo il pin della porta GPIO # cerca un QRcode


GPIO.setmode(GPIO.BCM) scanner.scan(image)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT) # stampa il valore badge e comanda il relay
GPIO.output(17, 1) # se la password corrisponde ed e’ esatta
for symbol in image:

5
MAKER

Il cuore del programma è nel WITH dove la libreria che


gestisce la camera la accende, la imposta come finestra
if hashlib.sha256(password).hexdigest() == sullo schermo ed infine ne cattura una immagine che
symbol.data: sarà poi elaborata.
GPIO.output(17, 0)
print ‘SHA256 : ‘, hashlib.sha256(password).
ESECUZIONE
Per poter utilizzare questo progetto si deve quindi re-
hexdigest()
alizzare un QRcode dalla crittografia di una stringa in
print symbol.type, ‘: ‘, ‘%s’ % symbol.data SHA256. La scelta della crittografia è alquanto arbitraria
sleep(1) anche se si cerca di evitare crittografie troppo semplici
GPIO.output(17, 1) o non più sicure. E’ meglio, infatti, prevedere un minimo
di sicurezza aggiuntiva.
else:
Ho creato quindi anche un piccolo e utile servizio web
print ‘QRCODE : non corrisponde alla pas-
che trovate a questo URL:
sword’

# pulisci e cancella
del(image) “ https://www.brainandbytes.com/
qrcode/

Il funzionamento è molto semplice ed


elementare, digitate numeri e lettere
che volete trasformare in QRcode nel-
la casella Password e cliccate sul pul-
sante CREA QRCODE. Ovviamente la
password dovrà corrispondere a quella
inserita in precedenza nel codice Py-
thon. Per esempio, possiamo creare
un QRcode della stringa numerica
1234567890, visualizzarlo e posizio-
narlo davanti alla telecamera. Possia-
mo anche stamparlo su carta o altro.
Noterete durante i test che la sensibi-
lità di lettura è molto accettabile anzi,
direi, più che buona, sia per quanto
Figura 4: schema relay riguarda l’inclinazione del QRcode sia
per quanto riguarda la luminosità del-
lo schermo dello smartphone/tablet o
Le parti del codice da sottolineare e focalizzare sono il dell’ambiente stesso.
ciclo infinito, nel quale il programma continua a fotogra- Alla figura 5 potete notare il servizio web in funzione.
fare l’ambiente inquadrato dalla telecamera e nell’im- Ora possiamo avviare il programma, se tutto è corretto
magine ricavata cerca un QRcode. Se c’è un QRcode e otterremo un risultato simile a quello riportato in figura 6.
questo è uguale e corrispondente alla password indica-
ta in codifica SHA256, allora verrà eccitato il relay per Nota: per chi se lo stesse chiedendo, si tratta di Ninja
un eventuale accesso e presenterà a video la stringa IDE.
crittografata (SHA256) del QRcode stesso (per scopi
di debug ma voi ovviamente potete eliminare la visua- Bisogna ricordare che i QRcode troppo piccoli, nell’ordi-
lizzazione o trasformarla in un Log su file, in caso di ne di 1 o 2 cm per lato, potrebbero non essere letti dal
applicazione definitiva). In questo modo solo chi ha la sistema se non perfettamente stampati e ben definiti,
password potrà entrare. sia se riprodotti su carta che su schermo. Potrebbero

6
MAKER

sorgere problemi anche con codici QR colorati in modo


disordinato e non omogeneo. Preferite, dunque, dei co-
dici dalle dimensioni idonee e perfettamente stampati in
modo molto nitido.

LATO WEB
Per creare e realizzare il servizio web sono partito dal
codice open source disponibile sul sito Sourgeforge, al
seguente indirizzo:

“ http://phpqrcode.sourceforge.net/

Al quale ho modificato l’index.php in questo:

<?php

echo ‘<!DOCTYPE html>

<head>

<meta name=”viewport”

content=”width=device-width,initial-

scale=1,maximum-scale=1,user-scalable=no”>
Figura 5: QRcode da smartphone/tablet
<meta http-equiv=”X-UA-Compatible”

content=”IE=edge,chrome=1”>

<meta name=”HandheldFriendly”

content=”true”>

</head>

<body>

‘;

echo ‘<h1>ACCESSO CON QRCODE</h1><hr/>’;

//set it to writable location, a place for temp gene-

rated PNG files

$PNG_TEMP_DIR = dirname(__FILE__).DIREC-

TORY_SEPARATOR.’temp’.DIRECTORY_SEPARA-

TOR;

//html PNG location prefix

$PNG_WEB_DIR = ‘temp/’;

Figura 6: esecuzione programma (notare la finestra dello


streaming video)
include “qrlib.php”;

7
MAKER

//of course we need rights to create a temp dir //config form

if (!file_exists($PNG_TEMP_DIR)) echo ‘<form action=”index.php” method=”post”>

mkdir($PNG_TEMP_DIR); Password:&nbsp;<input name=”data” value=”’.

(isset($_REQUEST[‘data’])?htmlspecialchars($_REQ

$filename = $PNG_TEMP_DIR.’test.png’; UEST[‘data’]):’1234567890’).’” />&nbsp;

<input type=”submit” value=” CREA QRCODE

$errorCorrectionLevel = ‘L’; “></form><hr/>’;

$matrixPointSize = 8; echo ‘</body>’;

if (isset($_REQUEST[‘data’])) {

//it’s very important!

if (trim($_REQUEST[‘data’]) == ‘’)

die(‘la stringa non può essere vuota! <a

href=”?”>indietro</a>’);

// user data

$filename = $PNG_TEMP_DIR.’test’.md5($_RE

QUEST[‘data’].’|’.$errorCorrectionLevel.’|’.$matrixPoi

ntSize).’.png’;

QRcode::png(hash(‘sha256’,$_

REQUEST[‘data’]), $filename, $errorCorrectionLevel,

$matrixPointSize, 2);

//display generated file

echo ‘<img src=”’.$PNG_WEB_DIR. Figura 7: videata su smartphone

basename($filename).’” /><hr/>’;
Il codice genera un QRcode crittografato SHA256 della
password digitata nella casella. Il risultato è quello che

8
MAKER

vedete in figura 7 sul tablet. A differenza della versione Anche Google ha un servizio uguale.
originale del programma ho anche aggiunto una serie
di <meta> per rendere la pagina il più responsive pos- https://chart.googleapis.com/chart?chs=300x300&cht
sibile, ovviamente è solo un lavoro parziale ma ha un =qr&chl=https://www.brainandbytes.com&choe=UTF-8
risultato accettabile.
La differenza sta nel nome dei parametri, nell’indicare
ALTERNATIVA JAVASCRIPT la grandezza del QRcode in pixel e nella possibilità di
Segnalo anche, in alternativa al PHP, una versatile e indicare la codifica, in questo caso UTF-8.
specifica libreria per realizzare QRcode in Javascript.
ULTIME INFORMAZIONI
http://davidshimjs.github.io/qrcodejs/ Per concludere l’articolo vi lascio con alcune interessan-
ti info sui comandi della PiCamera che possono esservi
Essa risulta molto semplice da usare e da inglobare nei utili per regolare al meglio l’immagine in caso di bisogno
propri progetti web. E’ possibile per esempio sfruttare e di necessità:
e utilizzare alcune sue funzioni per adattarla al proprio camera.brightness = 50 : usare un valore compreso tra
lavoro. Ecco un esempio per creare il QRcode di un in- 1 e 100 per regolare la luminosità
dirizzo web, dimensionarlo e cambiargli il colore. camera.resolution = (2592, 1944) : risoluzione da
640x480 a 2592x1944 in 4:3 di ratio oppure 1920x1080
in 16:9
<div id=”qrcode”></div>
camera.annotate_text = “testo da visualizzare” : testo in
<script type=”text/javascript”> sovraimpressione all’immagine
var qrcode = new QRCode(document. camera.annotate_size = 120 : grandezza del testo
getElementById(“qrcode”), { Vi sono altri metodi che si possono impostare, trovate
text: “https://www.brainandbytes.com/”, una documentazione completa al seguente indirizzo:
http://picamera.readthedocs.io/en/release-1.10/
width: 128,
height: 128, ALTRI UTILIZZI
colorDark : “#000000”, Nell’uso pratico il QRcode può risultare perfetto per for-
colorLight : “#ffffff”, nire informazioni ai propri clienti e per profilarli nelle loro
scelte, per esempio un negozio che pone a fianco dei
correctLevel : QRCode.CorrectLevel.H
propri prodotti un QRcode da inquadrare per avere in-
});
formazioni potrà anche capire quali sono i prodotti più
</script> selezionati e inquadrati anche se non necessariamente
acquistati. Esso potrà inoltre fornire ulteriori informazio-
ni come taglie, modelli, prodotti simili, basterà aprire al
ALTERNATIVA API cliente una pagina web da consultare per cui si tratte-
Se volete lavorare ancora meno, eseguendo e scriven- rebbe di un QRcode con un link URL, opzione molto
do meno codice, eccovi un servizio alternativo online di usata da molti operatori commerciali.
API al quale passare dimensioni e testo (oppure URL, Nell’abito degli accessi, per rimanere in tema del pre-
ecc.). Molto rapidamente avrete un QRcode a video di sente articolo, potrà essere utile registrare chi entra o
quanto richiesto. Se per esempio cliccate il seguente esce attribuendo diversi QRcode alle persone autoriz-
URL otterrete il QRcode del sito HTTP. zate e soprattutto tenere traccia degli orari. In questo
caso consiglio di aggiungere la gestione dei QRcode
h t t p : / / w w w. c o d e j u n g l e . o r g / a p i / q r _ i m g . tramite database.
php?s=8&d=https://www.brainandbytes.com

L’autore è a disposizione nei commenti per eventuali


Provate, adesso, a creare un QRcode modificando il va- approfondimenti sul tema dell’Articolo. Di seguito il link per
lore di s (size) che indica le dimensioni di un lato dell’im- accedere direttamente all’articolo sul Blog e partecipare alla
magine e cambiando il testo del parametro d. Inquadra- discussione:
https://it.emcelettronica.com/sistema-di-accesso-con-qrcode-
te il QRcode prodotto dal browser, con una applicazione
per-raspberry-pi
da smartphone e vedrete il testo o l’URL inserito.

9
Sperimentiamo
TECH l’elettricità statica
con ESPertino di Giovanni Di Maria

E’ sempre davanti a noi, ci confrontiamo con essa in qualsiasi occasione eppure non la vediamo mai. Di
cosa si tratta? Dell’elettricità statica, una importantissima e misteriosa forza che ci fa sempre compa-
gnia. Utilizziamo ESPertino, e qualche altro componente, per studiarla un po’ più da vicino, in maniera
semplice e divertente.

INTRODUZIONE L’ELETTRICITÀ STATICA

L
e grandi scoperte nella fisica sono state fatte due Quante volte abbiamo preso una forte scossa scenden-
o tre secoli fa, quando l’innovazione tecnologica do dalla nostra automobile, toccando la portiera. E’ ca-
era proprio agli inizi e non esistevano, ovviamen- pitato sicuramente a molti. Oppure, sfiorando il nostro
te, gli strumenti di misura che la tecnologia di oggi mette amico ci siamo beccati una “bella” e fastidiosa scarica
a disposizione. L’articolo che andiamo a leggere è rivol- elettrica. Altre volte, pettinandoci i capelli o togliendoci
to principalmente alla sperimentazione e si propone di il maglione abbiamo sentito dei “crepitii” e, al buio, visto
far scoprire gli effetti dell’elettricità statica, rilevandola addirittura delle minuscole scintille. Anche trascinando
con diversi dispositivi. Un’utile lettura per rivangare il il carrello della spesa, al supermercato, è possibile ri-
passato e provare il nuovo. cevere, a volte, tale fastidioso colpo. L’elettricità statica

Figura 1: l’Hindenburg esplose per una scintilla causata dall’elettricità statica

10
TECH

è, spesso, dolorosa e pericolosa ma se utilizzata bene


è fonte di tanti vantaggi. Mentre la corrente elettrica è
un flusso di elettroni, l’elettricità statica è uno squi-
librio tra cariche negative e positive nei corpi. Queste
cariche possono accumularsi sulla superficie di un og-
getto fino a trovare un modo per essere rilasciate e sca-
ricate in un solo istante. Uno dei modi per scaricarle è
attraverso l’attuazione di un corto circuito.
Una delle maggiori cause di accumulo dell’elettricità
statica è il contatto tra materiali solidi. Quando due og-
getti vengono strofinati tra loro, uno di essi “regala” gli
elettroni e diventa più carico positivamente mentre l’al-
tro materiale raccoglie tali elettroni e diventa più carico
negativamente. L’effetto è più osservabile quando l’aria
è secca.
Quando i due oggetti sono particolarmente vicini, o en-
trano in contatto tra di loro, può scoccare una scintilla,
che può essere anche caratterizzata da una differenza
di potenziale di parecchie decine di migliaia di volt. Il
suo effetto non è letale poiché, oltre a durare pochi mil-
lesimi di secondo, la scarica non ha praticamente cor-
rente (vi sono pochissimi elettroni). Può, invece, inne-
scare un’esplosione in stanze sature di gas o vapori di
sostanze infiammabili oppure, fatto molto consueto tra
i progettisti di elettronica, può distruggere i componenti Figura 2: un semplice elettroscopio realizzato in casa
elettronici, specialmente quelli di tipo MOS.
Anche un liquido che percorre un tubo è, potenzialmen- possiamo costruire un semplicissimo elettroscopio.
te, generatore di elettricità statica. Quando si fa riforni- Anche i bambini potranno creare, con divertimento, tale
mento di benzina con la pompa, occorre sempre pre- dispositivo didattico. Tutto quello che serve è:
stare la massima attenzione e scaricare a terra le parti • Un barattolo di vetro trasparente con coperchio
metalliche dell’auto. Molti incendi ed esplosioni, appa- isolante;
rentemente senza motivo, sono stati causati proprio • Un filo elettrico rigido;
dall’elettricità statica. Anche il dirigibile Hindenburg • Un foglio di alluminio estremamente sottile;
(vedi figura 1) fu distrutto da una piccola scintilla che • Una sfera metallica (opzionale).
fece esplodere in un attimo tutto l’idrogeno, altamente
infiammabile in esso contenuto. Durante il volo, infatti, Tutto quello che occorre fare è assemblare i materiali
aveva accumulato una quantità enorme di elettricità sta- sopra elencati, come visibile in figura 2, al fine di realiz-
tica ed è bastato veramente poco per attivare l’innesco zare un dispositivo sensibile alle cariche elettrosta-
di una piccola ma fatale scintilla. Il pallone, ricordiamolo, tiche.
era pieno d’idrogeno, altamente infiammabile. E’ sufficiente avvicinare un corpo fortemente elettriz-
Ovviamente l’elettricità statica non fa solo danno. Essa zato alla sommità dell’elettroscopio per vedere le foglio-
è molto utilizzata anche nell’elettronica. Si pensi, ad line di alluminio allontanarsi tra di loro. Molta documen-
esempio, quando si carica un condensatore elettrolitico tazione a riguardo si può attingere dalla Rete.
e si stacca, poi, l’alimentazione. Le armature restano
polarizzate per molto tempo. Se si avvicinano, poi, i ATTRAZIONE DI CARTA E POLISTIROLO
due contatti del componente sotto un certo limite di di- Il seguente esperimento mostra facilmente come due
stanza, scoccherà un’importante scintilla. corpi elettrizzati di carica opposta si attirino tra loro. Si
preparino alcuni pezzettini piccolissimi di carta o di po-
PER INIZIARE, REALIZZIAMO UN SEMPLICE listirolo. Si sfreghi, con molta energia, una penna di
ELETTROSCOPIO plastica (o un pettine) contro un panno di lana. La si
Per cominciare a sperimentare con l’elettricità statica avvicini, dunque, ai pezzettini di carta: si vedrà che essi

11
TECH

Figura 3: schema elettrico dell’elettroscopio con ESPertino

vengono istantaneamente, e con forza de-


cisa, attratti dal corpo in plastica altamen-
te elettrizzato. Più l’aria circostante risulta
secca e più il fenomeno è evidente.

ESPERTINO E L’OPAMP TL081


Finalmente, per il prossimo esperimento
utilizziamo ESPertino, a cui colleghiamo
anche un amplificatore operazionale ester-
no. Quest’ultimo è indispensabile per assi-
curare una impedenza altissima d’ingresso
del circuito sensore. Nella fattispecie, la
nostra scelta è caduta sul modello TL081,
un opamp a FET molto veloce e con una
resistenza d’ingresso veramente alta,
tipicamente 1000 Giga ohm (1012 ohm op-
pure 1 Tera ohm). Esistono sul mercato
modelli con una resistenza ancora più ele-
vata ma, per i nostri scopi, sarebbero del
tutto inutilizzabili, in quanto essi risultereb-
bero sempre in condizione di saturazione.

SCHEMA ELETTRICO
La figura 3 mostra lo schema elettrico del
circuito, composto dalle due unità prima
citate. Il sensore è formato dal TL081, col-
legato in configurazione d’inseguitore di
tensione (voltage follower a guadagno
unitario). Con questa soluzione si assicura
una impedenza d’ingresso estremamente Figura 4: il semplice cablaggio dell’elettroscopio con ESPertino

12
TECH

elevata (pari a quella intrinseca dell’operazionale), una il programma sulla scheda ESPertino, si può richiamare
impedenza di uscita alquanto bassa e un guadagno e avviare immediatamente il plotter seriale, acceden-
unitario. In pratica, il lavoro dell’amplificatore non viene do all’omonima voce sotto il menù “Strumenti” dell’IDE
“disturbato” da alcun evento elettrico esterno (se non in di Arduino, giunto alla versione 1.8.5 al momento della
minima parte dalla temperatura). Il piedino 2 del TL081 stesura del presente articolo. Si inizierà a vedere il livel-
rappresenta l’ingresso invertente mentre il piedino 3 l’in- lo di tensione a riposo dell’OPAMP. Le piccole fluttuazio-
gresso non invertente. ni di segnale sono del tutto normali in quanto il sistema
acquisisce differenti livelli di tensione cinque volte al
IL CABLAGGIO secondo. Si strofini, adesso, una penna di plastica su
Il collegamento tra i due componenti è estremamen- un panno di lana, molto velocemente, e la si avvicini,
te semplice e si può realizzare con una semplice bre- senza toccarla, all’estremità del piedino 3 del TL081. Si
adboard o con una piccola basetta millefori. La figura noteranno dei picchi significativi di tensione sul gra-
4 mostra il cablaggio del sistema. Il TL081 è alimentato fico, come mostrato in figura 5. La loro altezza dipende
dallo stesso ESPertino. L’uscita di quest’ultimo è colle- da molteplici aspetti e parametri come, ad esempio, alla
gata direttamente al suo ingresso invertente mentre la quantità di carica elettrica accumulata, alla distanza, al
stessa uscita fa capo all’ADC dell’ESP32. L’ingresso del tasso di umidità presente nell’aria e al tipo di materiale
circuito merita una particolare attenzione. Il piedino 3 isolante utilizzato. Se poi la bacchetta isolante dovesse
non è collegato a nulla e deve essere lasciato libero e toccare l’antenna ricevente, il grafico registrerebbe una
piegato verso l’alto, a mo’ di piccola antenna, per essere grossa saturazione di segnale per circa 5-10 secondi. E’
in grado di captare le cariche elettrostatiche circostanti. realmente difficile che l’amplificatore operazionale ven-
ga distrutto, occorrerebbe davvero l’effetto di un forte
LO SKETCH potenziale statico. Al posto della penna di plastica si può
Il corto e semplice programma che segue ha il compito provare a utilizzare un accendigas piezo o, meglio an-
di acquisire il segnale analogico proveniente dall’ester- cora, avvicinare il sensore a un vecchio televisore dota-
no, attraverso l’ingresso ADC di ESPertino, e d’in- to di schermo CRT. Quando esso si accende, una gran
viarlo nuovamente verso la porta COM del computer, quantità di elettricità statica viene generata attorno al
per poter essere visualizzato sul monitor seriale oppure tubo catodico e ciò si può evincere dalla forte capacità
osservato fisicamente e graficamente sul plotter seriale. del monitor di attirare piccoli pezzetti di carta, i peli del-
Esso risulta davvero molto elementare e non necessita- la mano e altri corpi leggeri, nonché dalla emissione di
no ulteriori commenti in merito. Per migliorare la rispo- brevi ma decisi crepitii. Il dispositivo creato è molto sen-
sta si può, eventualmente, accorciare ancora di più la sibile e se lo si lascia attivo per qualche giorno, magari
pausa di attesa durante la lettura dei campioni esterni registrando il segnale con un data logger, è possibile os-
di tensione. servare le variazioni di ten-
sione dovute alla presenza
del Sole.
void setup() {
analogSetAttenuation(ADC_6db); // Attenuazione ADC ESPERTINO, TL081
analogReadResolution(12); // Risoluzione ADC a 12 bit E IL RILEVATORE DI
Serial.begin(9600); // Configura velocità della comunicazione seriale PICCO STATICO
Utilizzando il medesimo cir-
}
cuito di cui sopra, e aggiun-
void loop() { gendo idealmente un diodo
int digitale = analogRead(35); // Legge la tensione analogica Led alla porta 5 di ESPerti-
Serial.println(digitale); // La invia sulla seriale no (già presente sulla sche-
da), possiamo creare una
delay(200); // Breve pausa (si può abbassare)
sorta di rilevatore di picco
}
massimo che ha lo scopo
d’illuminare, per un breve
lasso di tempo, il diodo Led
COLLAUDO E PROVE PRATICHE onboard quando il circuito registra un forte potenziale
Dopo aver correttamente digitato, compilato e caricato statico. E’ davvero molto suggestivo avvicinare la penna

13
TECH

Figura 5: le prove con l’elettroscopio elettronico

void setup() {
analogSetAttenuation(ADC_6db); // Configura attenuazione ADC
analogReadResolution(12); // Risoluzione ADC a 12 bit
Serial.begin(9600); // Setta la velocità della comunicazione seriale
pinMode(5,OUTPUT); // Porta 5 in uscita (per il diodo Led)
digitalWrite(5,HIGH); // Spegne il Led (è al contrario)
}
void loop() {
int digitale = analogRead(35); // Legge la tensione analogica
if(digitale>3000) { // Se la tensione supera un certo livello......
digitalWrite(5,LOW); // Accende il Led (è al contrario)
delay(1000); // Tempo durante il quale il diodo Led resta acceso
digitalWrite(5,HIGH); // Spegne il Led (è al contrario)
}
Serial.println(digitale); // Invia i dati sulla seriale
delay(200); // Piccola pausa (si può abbassare)
}

14
TECH

nale deve risultare scollegato dal circu-


ito e rivolto in su. In pratica esso deve
essere lasciato libero. Se, tuttavia, la
tensione a riposo in uscita dovesse ri-
sultare troppo bassa, anche se le prove
del suo funzionamento vanno a buon
fine, si può tentare di adottare una pic-
cola antenna saldata direttamente sullo
stesso terminale. Si saldi, allo scopo,
uno spezzone di filo di rame rigido di
circa 5 cm. sullo stesso piedino (vedi
figura 6) e si misuri la tensione d’uscita
a riposo. Con un piccolo tronchesino si
tagli, dunque, un pezzetto di antenna
alla volta fino a quando si leggerà, in
uscita, una tensione pari a VCC/2, os-
sia di circa 2,5V (o un valore digitale di
2048, che dir si voglia). I piedini dell’in-
tegrato TL081 sono molto fragili e non
si possono sottoporre a tante piegature
poiché si spezzerebbero subito. La fi-
gura 6 mostra un’antenna presaldata,
ma si può adottare tranquillamente un
unico spezzone di filo di rame rigido e
pulito.

CONCLUSIONI
La natura ci circonda di tanti fenomeni
che non aspettano altro di essere sco-
Figura 6: l’antenna, da accorciare opportunamente con tanta attenzione, au- perti, osservati e studiati. L’elettricità
menta la sensibilità del dispositivo
statica fornisce tante occasioni per in-
traprendere esperimenti didattici per
elettrizzata al sensore e notare l’accensione del diodo nulla pericolosi. Come si può notare, anche ESPertino
Led, per la durata di un secondo. Al posto del semicon- potrebbe diventare un utile strumento didattico con cui
duttore luminoso si potrebbe utilizzare un piccolo buzzer intraprendere tanti esperimenti nelle scuole. E’ molto
o un altro idoneo avvisatore acustico. In teoria sarebbe interessante e formativo, infatti, sapere che tutto
possibile anche sostituire l’OPAMP Tl081 con l’altro mo- ciò che è intorno a noi appartiene all’Universo. Gli
dello più famoso 741, ma occorre considerare che la antichi avevano molta paura dei fenomeni elettrici
sua intrinseca impedenza d’ingresso è molto più bassa proprio perché la loro ignoranza in materia li porta-
(nella pratica essa oscilla attorno ai 6 Mohm), per cui va a considerarli come azioni diaboliche, misteriose e
anche la sua sensibilità risulterebbe alquanto compro- oscure. Per fortuna noi viviamo in un tempo in cui tutto
messa e, in ogni caso, non sufficiente per i nostri scopi. è scientificamente provabile e dimostrabile, anche con
A seconda della tensione a riposo fornita all’uscita una strumentazione estremamente economica e alla
dell’operazionale, occorre ritoccare leggermente il va- portata di tutti.
lore della condizione di confronto, contenuta nella clau-
sola “if” dello sketch.
L’autore è a disposizione nei commenti per eventuali
approfondimenti sul tema dell’Articolo. Di seguito il link per
Leggi anche: Tesla e l’energia “libera” che ci circonda accedere direttamente all’articolo sul Blog e partecipare alla
discussione:
https://it.emcelettronica.com/sperimentiamo-lelettricita-statica-
ALLUNGAMENTO DELL’ANTENNA
con-espertino
Si ricorda che il piedino 3 dell’amplificatore operazio-

15
Corso di Elettronica per
MAK ER ragazzi 7-12:
primo approccio
di Giovanni Di Maria

Parte da questo mese un corso di elettronica base, indirizzato esclusivamente ai bambini con età com-
presa tra i sette e i dodici anni. Il corso sarà costituito da quattro puntate e fornirà i primi rudimenti
sull’elettricità e sull’elettronica, in maniera molto semplice, divertente e visuale. Cerchiamo di creare
un terreno fertile per la futura generazione che sarà, poi, quella che guiderà il mondo di domani, basato
sicuramente sulla tecnologia.

INTRODUZIONE • Una piccola breadboard, con cui effettuare facil-

I
bambini di oggi, probabilmente, fanno meno fatica mente le connessioni tra i componenti senza il
a comprendere l’elettronica rispetto a quelli d’ieri. saldatore;
La tecnologia, allo stato attuale, li immerge comple- • Alcuni componenti elettronici di base come, ad
tamente in quelle che costituiscono, a tutti gli effetti, i esempio, resistenze, diodi Led, lampadine, con-
dispositivi elettronici di normale utilizzo. TV, computer, densatori, ecc;
cellulari, tablet, automatismi, robot, sono tutti congegni • Cavetti rigidi unipolari per effettuare le connes-
di uso comune e questo, i bambini, lo sanno. Anche l’u- sioni;
tilizzo dei termini tecnici è diventato corrente e alla por- • Alcune pile da 4.5V e 9V;
tata di tutti. Oggi è normale sentire pronunziare, anche • Un tester;
dai bimbi in tenera età, parole come WiFi, Led, connes- • Si consiglia, anche, di utilizzare il software didat-
sione, Internet, circuiti e altri. tico Circuit construction kit virtual lab, con cui
Il corso sarà anche pratico e spesso vi saranno dei si potranno approntare i primi circuiti elettrici al
semplici circuiti da realizzare, per nulla pericolosi ma PC, senza il bisogno di realizzarli praticamente.
divertenti. Invitiamo, dunque, i giovani
tecnici a seguire con interesse e tanta
curiosità le semplici nozioni che forni-
remo in queste quattro puntate, magari
coadiuvati dai loro papà, che li assiste-
ranno nei loro progressi.

PROCURIAMO GLI INGREDIENTI


Prima ancora d’iniziare la lezione è op-
portuno procurarsi gli ingredienti,
proprio come una vera e propria ricetta
di cucina. Lo spirito principale è quello
del divertimento ma focalizzando la di-
dattica, grazie anche alla grande curiosi-
tà intrinseca dei bambini. Gli esperimenti
che eseguiremo saranno per niente pe-
ricolosi ed effettuati senza l’ausilio del
saldatore. Pertanto è opportuno, fin da
subito, procurarsi i seguenti materiali,
mostrati anche in figura 1: Figura 1: gli occorrenti per il corso di elettronica

16
MAKER

Figura 2: la similitudine tra la corrente elettrica e l’acqua

GLI ARGOMENTI NECESSARI Osserviamo i due schemi e, benché il primo trasporti


Affinché i bambini, ma anche i grandi, comprendano a corrente elettrica e il secondo acqua pura, possiamo ri-
fondo la filosofia dell’elettricità e dell’elettronica, è in- scontrare che il funzionamento logico è lo stesso. Nel
dispensabile capire alcuni tasselli fondamentali che la circuito elettrico possiamo notare la presenza dei se-
governano. Pertanto il corso non può esimersi dal trat- guenti componenti:
tare, seppur in maniera ludica e divertente, le seguenti • un generatore di tensione, che faccia muove-
tematiche: re gli elettroni all’interno del circuito (simile alla
• L’anello chiuso di un circuito, per far capire pompa dell’acqua che mette in circolo il liquido);
che la corrente elettrica ha bisogno di circolare • una resistenza che ha la funzione di limitare il
senza sosta attraverso un circuito conduttore, passaggio della corrente (simile al restringimen-
dal polo positivo al polo negativo del generatore; to del tubo);
• I tre concetti base della tensione, della corren- • un utilizzatore di corrente, che può essere una
te e della resistenza, tra loro legati attraverso la lampada, un motore o qualsiasi altra cosa che
legge di Ohm. L’argomento sarà affrontato an- funzioni con l’elettricità (simile alla ruota dentata
che paragonando la corrente elettrica all’acqua, che gira con il flusso dell’acqua che la colpisce);
come abbiamo fatto in un nostro precedente ar- • dei cavi elettrici, che hanno il compito di far
ticolo; passare la corrente elettrica (proprio come fan-
• I materiali conduttori, isolanti e semicondut- no i tubi per far passare l’acqua).
tori;
• Prove pratiche con lampadine, diodi Led, circu- Seguendo la direzione delle frecce blu, possiamo affer-
iti in serie e in parallelo; mare che in un circuito, per funzionare, il flusso della
• Alcune misurazioni elettriche. corrente deve essere continuato nel tempo. Se viene a
Ovviamente non si può pretendere di più ne’ da un nu- mancare una delle componenti (generatore, resistenza,
mero così limitato di lezioni ne’ dagli stessi bambini che, utilizzatore o conduttori) non c’è più il passaggio di elet-
seppur come un gioco, devono comprendere alcuni troni (o di acqua, nell’altro caso) e tutto si ferma.
concetti a loro un po’ estranei e complicati. Sempre sul circuito dell’acqua di cui sopra, facciamo al-
cune considerazioni:
IL CIRCUITO ELETTRICO: UNA GIOSTRA • se capovolgiamo la pompa dell’acqua, il tubo
SENZA FINE non pescherà più dal livello sottostante ma cer-
Bene, iniziamo subito parlando del circuito elettrico. cherà il liquido dall’altro lato bloccando, di fatto,
Per comprendere il concetto di corrente elettrica pro- il funzionamento. Questo significa che non si
viamo a paragonare un circuito elettrico a una piccola possono invertire i poli della batteria (“+” e “-”)
fontanella natalizia, tanto utilizzata nei presepi, come tra di loro;
mostrato in figura 2. • se togliamo la strettoia del tubo il flusso

17
MAKER

Figura 3: il circuito con diodo Led

dell’acqua potrebbe risultare troppo forte per la Per riconoscere il senso del diodo Led, bisogna fare
ruota. Una resistenza, dunque, limita la corrente riferimento alla figura 4. Esso possiede due terminali:
ai giusti valori di utilizzo; l’anodo (A) deve essere orientato verso il polo positivo
• se eliminiamo la ruota il circuito idraulico non della pila, preceduto solo dalla resistenza, mentre il ca-
ha più lo scopo di esistere. Se togliamo, allo todo (K), dal lato smussato, va collegato al polo negati-
stesso modo, la lampada dal circuito elettrico, vo (massa). Se tale componente si monta con i terminali
esso non avrà più alcuna finalità pratica. invertiti, esso non si illuminerà.

PRIMO ESPERIMENTO: ACCENDIAMO UN


DIODO LED
Siamo pronti, adesso, a effettuare il nostro primo espe-
rimento, anche con l’aiuto del papà. Procuriamo i se-
guenti componenti:
• una pila da 9 Volt;
• una resistenza da 470 ohm (con le bande di
colore giallo, viola, marrone), una da 10 Kohm
(con bande di colore marrone, nero, arancione)
e una da 22 ohm (bande di colore rosso, rosso,
nero);
• un diodo Led rosso (o altro colore);
• Alcuni fili elettrici, di colore rosso e nero. Figura 4: il riconoscimento dei terminali di un diodo Led

La prova che andiamo a effettuare non è assolutamente


pericolosa e, anche in caso di errori, non può arrecare Dopo aver realizzato il circuito, e constatato che esso
alcun danno a cose o a persone. Lavoriamo, dunque, funziona a dovere, eseguiamo le seguenti importanti
con la massima tranquillità. Assembliamo i materiali esperienze, che contribuiranno efficacemente ad au-
come mostrato in figura 3. mentare la percezione e la padronanza dei circuiti elet-
Se il montaggio è stato eseguito senza errori, si noterà trici:
la normale accensione del Led, con grande gioia di tutti. • ESPERIMENTO: Si stacchi e attacchi ripetuta-
Durante il lavoro occorre prestare attenzione all’orienta- mente il filo da un qualsiasi polo dalla pila. Quale
mento della pila e del diodo Led. Se montati “al contra- sarà il risultato?
rio”, infatti, il circuito non funzionerà. La resistenza, in- • RISULTATO: Se il filo sarà collegato, il diodo
vece, è un componente “non polarizzato” e può essere Led si illuminerà, viceversa rimarrà spento.
montato in entrambi i versi. ***

18
MAKER

Figura 5: effetti ai vari valori di resistenza

• ESPERIMENTO: Si inverta la polarità della pila, rosso, rosso, nero). Quale sarà il risultato?
connettendo il polo negativo al filo rosso e il polo • RISULTATO: Il diodo Led si illuminerà con molto
positivo al filo nero. Quale sarà il risultato? vigore.
• RISULTATO: Il diodo Led non si illuminerà. ***
*** • ESPERIMENTO: Si elimini la resistenza e al
• ESPERIMENTO: Si inverta il verso del diodo Led, suo posto si colleghi uno spezzone di filo. Quale
cambiando tra loro il catodo con l’anodo. Quale sarà il risultato?
sarà il risultato? • RISULTATO: Inizialmente il diodo Led si illumi-
• RISULTATO: Il diodo Led non si illuminerà. nerà con tanta forza ma poi, visto che non c’è la
*** limitazione di corrente, il componente si bruce-
• ESPERIMENTO: Si sostituisca la resistenza con rà e la luce, pian piano, si affievolirà. Il diodo può
un’altra dal valore di 10 Kohm (bande di colore essere gettato nella pattumiera.
marrone, nero, arancione). Quale sarà il risulta-
to?
• RISULTATO: Il diodo Led si illuminerà debol-
mente.
“ Ricordate che la conoscenza sui
circuiti elettrici si apprende facendo tante
prove pratiche e dagli errori. Più si sbaglia
***
e più si impara (almeno all’inizio). La sola
• ESPERIMENTO: Si sostituisca la resistenza con
lettura di un libro non è sufficiente.
un’altra dal valore di 22 ohm (bande di colore

19
MAKER

• se la resistenza elettrica o il tubo han-


no una misura “giusto”, il flusso dell’acqua
risulta regolare e sufficiente per lo scopo
prefissato (figura 5/B);
• se la resistenza elettrica ha un valo-
re troppo basso, oppure il tubo e troppo
largo, il flusso dell’acqua è estremamente
potente e, spesso, distruttivo (figura 5/C).

E ADESSO EFFETTUIAMO QUAL-


CHE MISURAZIONE
La distinzione tra tensione, corrente e re-
sistenza sarà approfondita nelle prossime
puntate. Possiamo, tuttavia, effettuare
qualche misura di tensione sul circuito
appena realizzato, utilizzando un comune
tester e facendoci aiutare dal nostro papà.
Figura 6: la misura della tensione sulla batteria
COME SCEGLIERE IL GIUSTO VALORE DEL- MISURA DI TENSIONE SULLA
LA RESISTENZA? BATTERIA
I componenti elettronici devono essere calcolati secon- Collegando il voltmetro direttamente sulla batteria,
do precise formule matematiche che, nel nostro caso, come mostrato in figura 6, e rispettando la corretta po-
appartengono alla famosa Legge di Ohm. In questa pri- larità (filo rosso sul positivo e filo nero sul negativo) si
ma puntata non affronteremo i calcoli, ripromettendoci leggerà la tensione del generatore. Staccando il diodo
di farlo nel corso delle successive puntate. Il concetto Led quest’ultima potrebbe innalzarsi di poco, in quanto
è il seguente: la pila non è più “stressata” dal carico collegato. Non ci
• se la resistenza elettrica ha un valore troppo si aspetti, ovviamente, di leggere una tensione “esat-
elevato, oppure il tubo è troppo stretto, il flusso ta” di 9.000V. Esistono tolleranze dei componenti che
dell’acqua risulta limitato e insufficiente per lo spostano leggermente i punti di lavoro per cui una lettu-
scopo prefissato (figura 5/A); ra compresa tra 8.5V e 9.2V è del tutto normale. Se la
tensione misurata, invece, è al di
sotto di 6V vorrà dire che la pila è
da gettare perché scarica.

MISURA DI TENSIONE SUL


DIODO LED
Spostiamo adesso i terminali del
tester sul diodo Led rispettando,
sempre, il corretto orientamen-
to dei puntali, come mostrato in
figura 7. Quello rosso va colle-
gato sull’anodo e quello nero sul
catodo. A circuito alimentato lo
strumento dovrebbe riportare una
tensione prossima a 1.8V. Questo
fatto ci indica che il Led avrà sem-
pre ai suoi capi una d.d.p. (diffe-
renza di potenziale) di tale entità e
che dovrà essere considerata nei
futuri calcoli dei componenti elet-
Figura 7: la misura della tensione sul diodo Led tronici.

20
MAKER

Figura 8: il circuito con due diodi Led in serie

Figura 11: la maschera di Iron Man con i due occhi luminosi


SECONDO ESPERIMENTO: DUE DIODI LED
IN SERIE
Come detto prima, il miglior modo per imparare è quello • del secondo diodo Led (in alto);
di sperimentare sempre. Pertanto approntiamo lo sche- • dei due diodi Led.
ma elettrico e il cablaggio di cui alla figura 8. In esso
notiamo che vi sono due diodi Led collegati in serie Colleghiamo i tester come mostrato in figura 10 e mi-
tra loro. In questo caso la stessa corrente attraverserà i suriamo le varie tensioni (si può usare tranquillamente
due componenti, facendoli illuminare. Dal momento che un solo tester ed effettuare le misure in passi successi-
la resistenza di limitazione è la medesima, la luce emes- vi). Come ci si aspetta, il valore letto sul display, ai capi
sa dei due diodi sarà lievemente minore. dei due diodi Led, corrisponde a circa 1,8V, come visto
anche in precedenza. La tensione ai capi dei due diodi
MISURA DI TENSIONE SULLA BATTERIA Led, ovviamente, ammonta a 3,6V. E’ tutta una questio-
Collegando nuovamente il voltmetro direttamente sulla ne di semplice aritmetica, nulla di più.
batteria, come mostrato in figura 9, non si otterrà alcuna
nuova sorpresa e si leggerà la tensione di 9V. Leggi anche: 1000 misure con il PoScope Mega1

MISURA DI TENSIONE SUI DIODI LED IRON MAN CON DIODI LED
Esaminiamo, adesso, la tensione ai capi: Lo schema elettrico di cui sopra può essere utile per
• del primo diodo Led (in basso); allestire la maschera di Iron Man con gli occhi lumi-
nosi, proprio grazie alla presenza
dei due diodi Led, come mostrato
in figura 11.

CONCLUSIONI
Le esperienze qui proposte hanno
avuto il compito di far “toccare con
mano” alcuni componenti elettro-
nici, assieme a qualche semplice
circuito elettrico. Non temete se
ancora qualche concetto non
risulta chiaro. Col tempo e con la
pratica anche le regole più com-
plicate saranno comprese perfet-
Figura 9: la batteria fornisce sempre la tensione di 9V tamente. Non temete di eseguire

21
MAKER

Figura 10: misura di tensioni ai capi dei diodi Led

le prove e gli esperimenti più vari e disparati, sempre


con l’ausilio di una pila e mai con la corrente della L’autore è a disposizione nei commenti per eventuali
presa elettrica di casa. Inoltre sarò sempre a vostra approfondimenti sul tema dell’Articolo. Di seguito il link per
accedere direttamente all’articolo sul Blog e partecipare alla
disposizione e non esitate a porre domande e questio-
discussione:
ni sulla sezione riservata ai commenti dell’articolo. Alla https://it.emcelettronica.com/corso-di-elettronica-per-ragazzi-7-
prossima puntata. 12-primo-approccio

22
Una piattaforma multi-
BO AR D
sensore con interfaccia
Arduino di Maurizio Di Paolo Emilio

SENSORSHLD1-EVK-101 è una piattaforma shield della ROHM Semiconductor che integra vari sensori
(tra cui temperatura, accelerometro, di prossimità) su una singola scheda. La shield utilizza pin di inter-
faccia standard Arduino, rendendo possibile la connessione a qualsiasi kit di valutazione.

INTRODUZIONE gico. H7 - Standard Digital Header. H10 - Intestazione

S
ensor Shield (SENSORSHLD1-EVK-101) offre ausiliaria per l’interfaccia del microfono. H6 - Standard
un’alternativa a basso costo che include vari Arduino Digital Header (figura 4 e 5).
sensori e i pin di interfaccia standard Ardu- Prima di collegare la shield con la scheda Arduino UNO
ino per il collegamento a qualsiasi kit di sviluppo. Ciò è consigliabile eseguire alcune modifiche visualizzate in
consente la verifica immediata del funzionamento del figura 6. I pin I2C (A4,A5) sono in conflitto con l’uscita
sensore e facilita la progettazione di dispositivi di ADC del sensore UV già presente sulla scheda. Quindi,
sensing, alleggerendo significativamente il carico di svi- per reindirizzare questo sulla scheda shield, bisogna di-
luppo, promuovendo l’espansione del mercato dei sen- sconnettere le reti esistenti rimuovendo R27, R31. Suc-
sori e nello stesso tempo offre un time-to-market per i cessivamente ricollegare il sensore UV ADC collegando
progettisti decisamente all’avanguardia. il pad superiore di R31 al pad inferiore di R27.
La shield Sensorshld1-EVK-101 (figura 1) integra i se- La libreria I2C standard per Arduino è la Wire Library.
guenti sensori: BDE0600G - Sensore di temperatura Mentre questa libreria è sufficiente per la maggior par-
analogico, BM1383AGLV - Sensore di pressione baro- te delle situazioni quando si desidera comunicare con i
metrica digitale, BU52014HFV
- Sensore interruttore Hall
(omnipolare con polarità di-
scriminante), BM1422GMV
- Sensore magnetico, KX122
- Accelerometro digitale,
KMX62 - Magnetometro digi-
tale e accelerometro, KXG03
- Giroscopio digitale e acce-
lerometro, ML8511A - Senso-
re UV analogico, RPR-0521
- Sensore di luminosità am-
bientale e sensore di pros-
simità, BH1745 - Sensore di
colore digitale. Nel prossimo
paragrafo analizzeremo alcu-
ni di questi sensori.
Dalla figura 2 è possibile os-
servare alcune intestazioni
denominate H. In particolare
H4 - Standard Power Header
(figura 3) collegata solo ai pin Figura 1: la shield della RHOM Semiconductor con l’indicazione dei vari sensori. Per esem-
4, 7 e 8. H5 - Standard analo- pio U1 è il sensore di temperatura. U2 quello di pressione, U4 è quello Hall e cosi via.

23
BOARD

e algoritmi di applicazione intelli-


genti programmabili dall’utente.
L’accelerometro viene fornito in
un contenitore di plastica LGA di
dimensioni 2 x 2 x 0,9 mm fun-
zionante con un’alimentazione
da 1,71 a 3,6 VCC. I regolatori
di tensione integrati vengono uti-
lizzati per fornire caratteristiche
operative stabili nell’intervallo
della tensione di alimentazione
(figura 7).
Il sensore di prossimità e luce
ambientale RPR-0521RS integra
la prossimità ottica, un sensore di
luminosità ambientale (ALS) e il
LED a infrarossi (IrLED). La parte
del sensore di prossimità rileva
l’avvicinamento all’uomo o all’og-
Figura 2: un’altra visuale della shield SENSORSHLD1-EVK-101
getto dal riflesso della luce IrLED
entro un intervallo di 1-100 mm.
dispositivi, ci sono situazioni in cui non è applicabile. E’ La parte ALS, invece, rileva l’ampia gamma di illumina-
consigliabile utilizzare la nuova libreria scaricabile zione e rifiuta il rumore della luce a 50Hz / 60Hz. Questo
dal seguente link attraverso il quale la casa madre of- sensore può regolare l’intensità dell’illuminante del di-
fre esempi di programmazione per una facile implemen- splay LCD e della tastiera. RPR-0521RS offre un mino-
tazione con Arduino. re consumo di corrente e/o una migliore visibilità sotto
l’ambiente luminoso, ed è compatibile con l’interfaccia
SENSORI bus I2C e l’interfaccia logica a 1.8V. Le applicazioni ap-
Il sensore di temperatura fa parte della serie BDExxx0G partengono soprattutto al mercato consumer, impiegato
a bassa corrente di riposo (16μA), con regolatore di in vari dispositivi quali smartphone, fotocamera digitale,
tensione, convertitore D/A e comparatore totalmente videogioco portatile, display LCD ecc (Figura 8).
integrati. Il sensore integra anche un termostato digi- BH1745NUC è un IC sensore di colore digitale con in-
tale per il rilevamento di una
soglia di temperatura. KX122-
1037 è un accelerometro a tre
assi ± 2 g, ± 4 g e ± 8 g con
buffer integrato da 2048 byte
e protocollo di comunicazione
I2C e SPI. L’elemento sensi-
bile è fabbricato utilizzando la
tecnologia di processo di mi-
crolavorazione al plasma di
Kionix. Il rilevamento dell’acce-
lerazione si basa sul principio
di una capacità differenziale
derivante dal movimento indot-
to dall’accelerazione dell’ele-
mento sensibile. Un dispositivo
ASIC separato fornito con l’e-
lemento di rilevamento fornisce
il condizionamento del segnale Figura 3: alimentazione della shield

24
BOARD

Figura 4: schema di collegamento delle interfacce H6 e H7

terfaccia I2C. Questo sensore rileva la luce rossa, verde


e blu (RGB) e li converte in valori digitali. L’alta
sensibilità, l’ampia gamma dinamica ed l’eccellente Ir-
cut, rendono questo IC adatto per ottenere il livello di
illuminazione e la temperatura del colore della luce am-
bientale al fine di regolare la retroilluminazione LCD di
TV, smartphone e tablet PC (figura 9).
ML8511 è un sensore adatto per l’acquisizione dell’in-
tensità UV (radiazione ultravioletta) in ambienti interni
o esterni. ML8511 è dotato di un amplificatore interno
che converte la foto-corrente in tensione a seconda
dell’intensità UV. Questa caratteristica offre un’interfac-
cia semplice per circuiti esterni quali convertitori ADC.
Nella modalità di spegnimento, con una tipica corrente
di standby di 0,1 μA, consente una maggiore durata del-
la batteria (figura 10 e 11).

ARDUINO
Il programma che andiamo a presentare qui di seguito
legge i valori di tutti i sensori implementati sulla sche-
da della ROHM Semiconductor. Oltre a quelli descritti
nel paragrafo precedente abbiamo anche un sensore
ad effetto Hall. Il programma richiede l’inclusione della
libreria I2C: Figura 5: schema di collegamento delle interfaccia H5

25
BOARD

Figura 6: modifiche hardware per il collegamento della piattaforma shield ROHM Semiconductor alla scheda Arduino

Figura 7: schema a blocchi del KX122-1037

26
BOARD

Figura 8: schema a blocchi del sensore RPR-0521RS

Figura 9: schema a blocchi del sensore BH1745NUC

// ----- Debugging Definitions -----


#include <SoftI2CMaster.h>
#define AnalogTemp //BDE0600G

E alcune definizioni come riportate di seguito: #define AnalogUV //ML8511

27
BOARD

temperatura, UV, accelerometro e quello per i colori ri-


portiamo di seguito il codice.

//Temp, UV
#ifdef AnalogTemp
int ADCpin_AnalogTemp = A2;
#endif

#ifdef AnalogUV
int ADCpin_AnalogUV = A0;
#endif

int sensorValue = 0;
Figura 10: il sensore UV ML8511
float sensorConvert = 0; //nell’esempio successivo le
definiremo come variabili locali
//----- Start Initialization for KX122 Accel Sensor -----
#define HallSen //BU52014 #ifdef KX122
#define KMX62 //KMX62 //1. CNTL1 (0x18) loaded with 0x41
#define Pressure //BM1383GLV //2. ODCNTL (0x1B) loaded with 0x02
#define ALSProx //RPR-0521 //3. CNTL3 (0x1A) loaded with 0xD8
//4. TILT_TIMER (0x22) loaded with 0x01
#define Color //BH1745
//5. CNTL1 (0x18) loaded with 0xC1 (Enable bit on)
#define KX122 //KX122
#define KXG03 //KXG03
i2c_start(KX122_DeviceAddress); //This needs the
8 bit address (7bit Device Address + RW bit... Read
// ----- Included Files ----- = 1, Write = 0)
//#include //Default I2C Library i2c_write(0x18);
i2c_write(0x41);

#define SCL_PIN 5 //A5 //Note that if you are i2c_stop();

using the Accel/Mag Sensor, you will need to down-


i2c_start(KX122_DeviceAddress); //This needs the
load and
8 bit address (7bit Device Address + RW bit... Read
#define SCL_PORT PORTC //install the = 1, Write = 0)
“SoftI2CMaster” as “Wire” does not support repeated i2c_write(0x1B);
start... i2c_write(0x02);
#define SDA_PIN 4 //A4 //References: i2c_stop();
#define SDA_PORT PORTC // http://playground.
i2c_start(KX122_DeviceAddress); //This needs the
arduino.cc/Main/SoftwareI2CLibrary
8 bit address (7bit Device Address + RW bit... Read
= 1, Write = 0)
#define I2C_TIMEOUT 1000 // Sets Clock Stretching
i2c_write(0x1A);
up to 1sec i2c_write(0xD8);
#define I2C_FASTMODE 1 // Sets 400kHz opera- i2c_stop();
ting speed
i2c_start(KX122_DeviceAddress); //This needs the
8 bit address (7bit Device Address + RW bit... Read
La funzione setup consiste principalmente nell’inizia- = 1, Write = 0)
lizzazione dei vari sensori, in particolare per i sensori i2c_write(0x22);

28
BOARD

i2c_write(0x01);
i2c_stop();
i2c_write(0x02);
i2c_stop();
i2c_start(KX122_DeviceAddress); //This needs the
8 bit address (7bit Device Address + RW bit... Read
#endif
= 1, Write = 0)
//----- END Initialization for BH1745 Color Sensor
i2c_write(0x18);
-----
i2c_write(0xC1);
i2c_stop();
#endif
//----- END Initialization for KX122 Accel Sensor -----

//----- Start Initialization for BH1745 Color Sensor


-----
#ifdef Color
//BH1745 Init Sequence
// 1. Persistence (0x61), write (0x03)
// 2. Mode Control 1 (0x41), write (0x00)
// 3. Mode Control 2 (0x42), write (0x92)
// 4. Mode Control 3 (0x43), write (0x02)

Figura 11: responsività relativa del sensore UV


i2c_start(BH1745_DeviceAddress); //This needs
the 8 bit address (7bit Device Address + RW bit...
Read = 1, Write = 0) Analizziamo due casi molto semplici relativamente alla
lettura del sensore di temperatura e quello UV. Le
i2c_write(0x61);
due letture necessitano di calibrazione per far si che la
i2c_write(0x03);
scheda possa inviare il valore corretto. Il codice espres-
i2c_stop();
so in due semplici funzioni denominate read_tempera-
tura() e read_UV() sono riportate nel codice seguente.
i2c_start(BH1745_DeviceAddress); //This needs
the 8 bit address (7bit Device Address + RW bit... void read_temperatura() {
Read = 1, Write = 0)
i2c_write(0x41);
int sensorValue;
i2c_write(0x00);
float sensorConvert;
i2c_stop();

i2c_start(BH1745_DeviceAddress); //This needs sensorValue = analogRead(ADCpin_AnalogTemp);


the 8 bit address (7bit Device Address + RW bit...
Read = 1, Write = 0) /* //Uncomment this for Raw Values
i2c_write(0x42); Serial.write(“ADC Raw Value Return = “);
i2c_write(0x92); Serial.print(sensorValue);
i2c_stop();
Serial.write(0x0A); //Print Line Feed
Serial.write(0x0D); //Print Carrage Return
i2c_start(BH1745_DeviceAddress); //This needs
the 8 bit address (7bit Device Address + RW bit... */

Read = 1, Write = 0)
i2c_write(0x43); //Calculations for Analog Temp Sensor - BDE0600G

29
BOARD

// Temperature Sensitivity = -10.68mV/degC


// Temperature Sensitivity = -0.01068V/degC
// Temperature Sensitivity = -93.63degC/V Convert to V

// Temp Known Point = 1.753V @ 30DegC // ADC_Voltage = sensorValue * (3.3V/670)


// ADC_Voltage = sensorValue * 0.004925

// Math: ADC_Voltage = (sensorValue / 670) * 3.3V // // UV Intensity = (ADC_Voltage - 2.2)/(0.129) + 10 //

Convert to V Conver to Temperature in DegC

// ADC_Voltage = sensorValue * (3.3V/670)


// ADC_Voltage = sensorValue * 0.004925 sensorConvert = (float)sensorValue * 0.004925;

// Temperature = (ADC_Voltage - 1.753)/(-0.01068) sensorConvert = (sensorConvert - 2.2)/(0.129)+10;

+ 30 Serial.write(“ML8511 UV Sensor = “);


Serial.print(sensorConvert);

sensorConvert = (float)sensorValue * 0.004925; Serial.write(“ mW/cm2”);

sensorConvert = (sensorConvert - 1.753)/ Serial.write(0x0A); //Print Line Feed

(-0.01068)+30; Serial.write(0x0D); //Print Carrage Return

Serial.write(“BDE0600G Temp = “);


Serial.print(sensorConvert); }

Serial.write(“ degC”);
Serial.write(0x0A); //Print Line Feed
Serial.write(0x0D); //Print Carrage Return
Il codice completo può essere scaricato dal link riportato
alla fine dell’articolo.
}
CONCLUSIONI
void read_UV() { Il SENSORSHLD1-EVK-101 è un kit di sviluppo di se-
conda generazione con 10 sensori integrati insieme
ad una interfaccia standard Arduino che consente la
int sensorValue;
compatibilità con diverse piattaforme di prototipazione
float sensorConvert; open source esistenti. La Shield fornisce un’alternativa
a basso costo per il test di sensori, offrendo nello stes-
sensorValue = analogRead(ADCpin_AnalogUV); so tempo la possibilità di progettare in maniera molto
semplice diversi dispositivi in vari ambienti applicativi
che coinvolgono il mercato IoT e quello industriale.
/* //Uncomment this for Raw Values La Shield della ROHM Semiconductor è disponibile a
Serial.write(“ADC Raw Value Return = “); catalogo Mouser Electronics - Distributore autorizzato.
Serial.print(sensorValue);
Serial.write(0x0A); //Print Line Feed DOWNLOAD
• Codice Arduino
Serial.write(0x0D); //Print Carrage Return
• Schemi elettrici e PCB
*/

//Calculations for UV Sensor - ML8511 L’autore è a disposizione nei commenti per eventuali
//Known Point = 2.2V @ 10mW/cm2 approfondimenti sul tema dell’Articolo. Di seguito il link per
accedere direttamente all’articolo sul Blog e partecipare alla
//Rate = 0.129 discussione:
https://it.emcelettronica.com/una-piattaforma-multi-sensore-con-
interfaccia-arduino
// Math: ADC_Voltage = (sensorValue / 670) * 3.3V //

30
Le transazioni nel
TECH
sistema IOTA con il
protocollo Tangle
di Maurizio Di Paolo Emilio

IOTA è una nuova criptovaluta open source che non utilizza una blockchain. Il suo innovativo proto-
collo quantum-proof, noto come Tangle, dà origine a nuove caratteristiche uniche come tariffe zero,
scalabilità infinita, transazioni veloci, trasferimento sicuro dei dati e molte altre.

INTRODUZIONE tente deve semplicemente confermare altre due tran-

I
OTA utilizza il Tangle: un protocollo software che diffe- sazioni su tangle (la rete). Per confermare queste due
risce fondamentalmente da quello blockchain. Tangle transazioni, un dispositivo esegue “prove di lavoro” a
elabora le transazioni in parallelo e si differenzia dalla bassa difficoltà, che essenzialmente sono solo una se-
blockchain in due modi principali: IOTA è in grado di rie di problemi matematici. L’utente e il validatore (miner,
ottenere un elevato throughput; man mano che il tan- staker, ecc.) non sono più entità disaccoppiate in IOTA.
gle cresce con più transazioni, IOTA diventa più veloce Poichè il Tangle elimina il requisito di minatori / stakers /
e più sicuro. Il modo in cui il consenso viene raggiunto in ecc., non vi è necessità di estrarre dal sistema nuo-
una blockchain avviene attraverso un meccanismo rigo- ve commissioni di transazione per pagare le tasse
roso che richiede a più parti di “gareggiare” l’una contro di convalida. Il risultato è che IOTA ha zero commis-
l’altra nel tentativo di aggiungere il blocco successivo sioni. IOTA è direttamente comparabile a Hashcash con
e guadagnare i corrispondenti premi. Poiché “minatori” un obiettivo: prevenire lo spam e gli attacchi di Sybil. La
e “utenti” sono entità disaccoppiate, i premi di blocco prova di lavoro in IOTA può anche essere esternalizzata
pagati ai minatori consistono in gran parte nelle com- da piccoli dispositivi leggeri a qualcosa di più, in grado
missioni di transazione degli utenti. Nel Tangle, “mina- di gestire il carico computazionale. Sybil è un attacco
tori” e “utenti” non sono più entità disaccoppiate. Affin- informatico dove viene violata l’identità di una persona.
ché una transazione possa essere confermata su una
blockchain, è necessario un certo intervallo di tempo ar- QUANTO VELOCEMENTE CRESCE IL PESO
bitrario per la creazione del blocco. Il tangle consente CUMULATIVO?
un regolamento asincrono, il che significa che non ci Nell’articolo precedente abbiamo visto il significato di
sono vincoli temporali arbitrari estranei alla finalizzazio- peso cumulativo. Nella moneta IOTA, la transazione è
ne della transazione; è programmato in logica ternaria individuata mediante un peso o weight proporzionale
che è una derivazione del codice binario tradizionale alla quantità di lavoro che il nodo emittente ha investito
con alcuni significativi miglioramenti nella funzionalità. Il su di esso. I tempi di transazione sono inversamente
sistema ternario (chiamato anche base-3) ha tre come proporzionali al numero di transazioni. Più transazioni vi
base. Analogamente a un bit, una cifra ternaria è un trit sono nel tangle, più rapidamente ogni transazione sarà
(cifra trinaria). Un trit è equivalente ai bit di informazio- confermata (figura 1).
ne log23 (circa 1.58496). Sebbene il termine ternario si Supponiamo che la rete sia in regime di basso carico.
riferisca più spesso a un sistema in cui le tre cifre sono Ovvero, il numero tipico di tips (con tip una transazione
tutti numeri non negativi, in particolare 0, 1 e 2, il termi- non approvata) è piccolo e spesso diventa 1. Questo
ne presta anche il nome al sistema ternario bilanciato, può accadere quando il numero di transazioni è così
comprendente le cifre -1, 0 e +1 , utilizzato nella logica piccolo tale da risultare poco probabile che diverse tran-
di confronto e nei computer ternari. sazioni approvino lo stesso tip. Inoltre, dobbiamo sup-
porre che non ci siano hackers che cercano di entrare
COMMISSIONI ZERO artificialmente modificando il numero di suggerimenti
Per inviare una transazione IOTA, il dispositivo dell’u- (Figura 2).

31
TECH

Figura 1: tempi di transazione

Dopo che una transazione viene approvata più volte, in regime di carico elevato, ovvero quando il numero
il suo peso cumulativo crescerà con la velocità perché di transazioni è elevato e ritardi computazionali insie-
tutte le nuove transazioni faranno riferimento indiretta- me alla latenza di rete rendono probabile che diverse
mente a questa transazione. Nel caso in cui la rete sia transazioni approvino lo stesso tip, una vecchia transa-

Figura 2: situazione di basso carico (immagine in alto) e alto carico (immagine in basso)

32
TECH

zione con un grande peso cumulativo sperimenterà la con K(t) espresso dalla seguente formula:
crescita del peso con la velocità perché essenzialmente
tutte le nuove transazioni faranno riferimento in maniera
indiretta. Inoltre, quando la transazione viene aggiun-
ta al grafo potrebbe aspettare un po’ di tempo prima di
essere approvata. In questo intervallo di tempo, il peso
cumulativo della transazione si comporta in modo con W la funzione di Lambert. A questo punto riprenden-
casuale. Per caratterizzare la velocità con cui il peso do l’espressione di H differenziale possiamo estrapolare
cumulativo cresce dopo che la transazione riceve diver- la funzione definita nel seguente modo:
se approvazioni, definiamo H(t) come il peso cumulativo
previsto al tempo t (per semplicità, iniziamo a contare il
tempo nel momento in cui la nostra transazione è sta-
ta rivelata alla rete) e K (t) come il numero previsto di
suggerimenti che approvano la transazione al tempo t.
Una transazione che entra nella rete al momento t in ge- Dopo che una transazione è stata approvata più volte
nere sceglie due tip da approvare in base allo stato del nel regime di basso carico, il peso cumulativo cresce
sistema al momento (t - h), perché il nodo deve fare al- con la velocità λw (λ, numero medio di eventi), dove w è
cuni calcoli e verifiche prima di emettere effettivamente il peso medio di una transazione generica. Nel regime di
la transazione. Per H(t) possiamo definire la seguente carico elevato, ci sono due distinte fasi di crescita: una
equazione differenziale: dove il peso cumulativo H (t) cresce con l’aumentare
della velocità durante il periodo di adattamento (adap-
tation period). Successivamente al completamento del

Figura 3: peso cumulativo in funzione del tempo per il regime ad alto carico

33
TECH

periodo di adattamento, il peso cresce con la velocità lizzati nella pratica - RSA, DSA e ECDSA - si basano su
w (Figura 3). Si può pensare al periodo di adattamen- concetti legati a problemi teorici numerici, ovvero la
to di una transazione come il tempo durante il quale la fattorizzazione di interi e il calcolo dei logaritmi discreti.
maggior parte dei tips approvano indirettamente quella Nel 1994, Peter Shor mostrò che questi problemi teorici
transazione. La lunghezza tipica del periodo di adatta- sarebbero diventati fragili in presenza dell’informatica
mento è data da: quantistica. I computer quantistici potrebbero risolver-
li in poco tempo, compromettendo la sicurezza degli
schemi di firma digitale utilizzati oggi. Mentre i computer
quantistici non sono ancora disponibili, il loro sviluppo
sta avvenendo a un ritmo rapido e costituisce quindi una
“vera minaccia” per i prossimi decenni. Fortunatamente,
la crittografia post-quantistica fornisce una varietà di al-
SCENARIO DI ATTACCO ternative resistenti agli schemi di firma digitale classici.
Analizziamo un possibile scenario dove un malintenzio- Le firme hash-based o le firme di Merkle come sono
nato tenta di accedere alla rete. Un aggressore invia un anche conosciute, sono una delle più promettenti
pagamento a un commerciante e riceve la merce dopo di queste alternative. IOTA utilizza firme hash-based
che il commerciante decide che la transazione ha un invece di crittografia a curva ellittica (ECC). Non solo le
peso cumulativo abbastanza elevato. Successivamen- firme basate su hash sono molto più veloci di ECC, ma
te l’autore dell’attacco emette una transazione a doppia semplificano notevolmente il processo di firma e riduco-
spesa (double-spending). L’aggressore utilizza la pro- no la complessità del protocollo Tangle. Le firme basate
pria potenza di calcolo per emettere molte piccole su hash si basano sulle cosiddette “one time signature”
transazioni che approvano la transazione a doppia (OTS). Come suggerisce il termine, una singola coppia
spesa, ma non quella originale che ha inviato al com- di chiavi deve essere utilizzata una sola volta. In caso
merciante direttamente o indirettamente. contrario, un utente malintenzionato può rivelare più
Un metodo alternativo potrebbe essere che l’aggresso- parti della chiave privata e falsificare le firme.
re rilasci una transazione a doppia spesa utilizzando tut-
ta la sua potenza di calcolo. Questa transazione con un CONCLUSIONI
peso proprio molto grande potrebbe approvare le tran- La rapida crescita dell’Internet of Things è una rispo-
sazioni precedenti a quella utilizzata per pagare il com- sta alla costante domanda di connettività e nuove
merciante. E’ importante notare come il flusso in input applicazioni: semplificazione dei processi quotidiani e
di transazioni “oneste” dovrebbe essere grande rispetto creazione di nuovi servizi. Tutti i settori di attività sono
alla potenza computazionale dell’aggressore. Questo ora influenzati, sia che si tratti di salute, trasporti o au-
indica la necessità di ulteriori misure di sicurezza. tomazione domestica. Tuttavia, tale progresso porta
Quando si sceglie una strategia per decidere quale del- con sé livelli di controllo e verifica più rigorosi: poiché
le due transazioni in conflitto sia valido, bisogna stare gli attacchi denial-of-service si moltiplicano, il mondo si
attenti quando si usa il peso cumulativo come parame- trova a dover riconsiderare la sicurezza dell’IoT e delle
tro di decisione. Ciò è dovuto al fatto che il peso cumu- reti utilizzate per combattere questi problemi. Questa
lativo può essere soggetto ad un attacco, vale a dire, osservazione ha portato IOTA - una comunità di innova-
l’aggressore può preparare una transazione double- zione open source - a mobilitare il considerevole know-
spending con largo anticipo, e quindi trasmettere quel how dei suoi contributori per fornire soluzioni per queste
sub-tangle dopo che il commerciante ha accettato la nuove esigenze di sicurezza.
transazione legittima.
Un metodo migliore per decidere tra due transazioni in
conflitto potrebbe essere quello di eseguire l’algoritmo
di selezione dei tips e vedere quale delle due transa-
zioni sono approvate indirettamente dal tip selezionato.
L’autore è a disposizione nei commenti per eventuali
approfondimenti sul tema dell’Articolo. Di seguito il link per
QUANTUM PROOF accedere direttamente all’articolo sul Blog e partecipare alla
Le firme digitali sono massicciamente utilizzate online, discussione:
https://it.emcelettronica.com/le-transazioni-nel-sistema-iota-con-
in particolare per l’autenticazione e il controllo dell’inte-
il-protocollo-tangle
grità. Gli algoritmi di firma digitale più comunemente uti-

34
Corso sugli Aeromobili
R O BO T
a Pilotaggio Remoto
partendo da zero:
descrizione del modello
matematico
di Giuseppe Silano

Continua il corso dedicato agli Aeromobili a Pilotaggio Remoto (APR). Nell’articolo precedente abbia-
mo analizzato cos’è un sistema di riconoscimento e la loro importanza nei droni, introducendo l’idea
di visione artificiale ed object detection, focalizzando l’attenzione sui simulatori di scenari ed i sistemi
di riferimento. Nella puntata di oggi descriveremo il modello matematico di un multi-rotore, in parti-
colare quello di un esacottero, utilizzando due differenti approcci: Eulero-Lagrange e Newton-Eulero.
Ricavate le equazioni del moto ne esprimeremo l’equivalente rappresentazione nella forma dello spazio
di stato, fondamentale per la simulazione del velivolo nello scenario virtuale (e non solo) nonché per
la progettazione del controllo di volo (argomento del prossimo articolo). Il tutto verrà affrontato senza
scendere in tediosi dettagli tecnici matematici, fornendo al contempo le basi necessarie per successivi
approfondimenti.

NOZIONI PRELIMINARI dell’articolo).

P
er descrivere il modello matematico di un multi- Il momento di imbardata, la cui origine è da individua-
rotore è necessario riprendere quanto introdotto, re nella differente velocità dei sei propulsori, può essere
nella seconda puntata di questo mini-corso, in cancellato modificando il verso di rotazione delle eliche:
merito ai sistemi di riferimento. Difatti, è possibile uti- tre si muoveranno in senso orario e tre in senso antiora-
lizzare il sistema di riferimento verticale-locale e quello rio. Le eliche si dividono, quindi, in due gruppi diametral-
assi corpo [In letteratura è indicato con il pedice ABC, mente opposti, facilmente individuabili grazie allo stes-
acronimo di Aircraft Body Center] per la modellazione so verso di rotazione. Al contrario, gli effetti giroscopici
del sistema: il primo definisce la posizione lineare as- costituiscono una caratteristica dei droni commerciali di
soluta (x, y e z), il secondo l’orientamento (ψ, φ e θ) del piccole dimensioni, noti anche come MAV (Micro Aerial
velivolo. In Figura 1 è evidenziata la relazione tra i due Vehicle), di cui l’esempio più noto è l’AR.Drone. Si tratta
sistemi di riferimento. di effetti difficilmente eliminabili ma di facile compensa-
L’altitudine e la posizione dell’aeromobile possono zione attraverso l’utilizzo di tecniche ben note in lette-
essere controllate, portandole al valore desidera- ratura.
to, variando la velocità dei sei motori di cui è equi- Volendo essere quanto più precisi possibili, incremen-
paggiato il drone. Le forze ed i momenti che si gera- tando o decrementando la velocità di rotazione delle
no modificano così le prestazioni dell’APR: la spinta è eliche si determina il cambiamento dell’altitudine in po-
una diretta conseguenza dell’aumento di velocità delle sizione e velocità, mentre variando la velocità delle due
pale, il momento di beccheggio e quello di rollio, inve- eliche (Ω1 e Ω6 o Ω3 e Ω4) si causa una rotazione del
ce, sono ottenuti da un cambiamento della spinta fornita velivolo intorno all’asse y il quale descrive un angolo
dai sei motori, dalla gravità, dagli effetti giroscopici e dal di beccheggio indicato con θ. In modo del tutto simile
momento di imbardata (argomenti chiariti nel seguito variando la velocità di rotazione delle tre eliche (Ω1, Ω2

35
ROBOT

Figura 1: Drone nel sistema di riferimento assi corpo (ABC, destra) e in quello inerziale (FI, sinistra).

e Ω3 o Ω4, Ω5 e Ω6) causeremo una rotazione dell’aero- il sistema nel suo complesso è formato da sei variabili
mobile intorno all’asse x descrivendo un angolo di rollio in ingresso e sei in uscita e, come vedremo più avanti
indicato con φ. Infine, il vettore somma dei momenti di quando giungeremo alle equazioni del moto, si tratta di
reazione ottenuto dalla rotazione di Ω1, Ω3 e Ω5 ed i mo- un sistema fortemente non lineare.
menti di reazione prodotti dalla rotazione di Ω2, Ω4 e Ω6 In definitiva, un multi-rotore è un sistema meccanico
causeranno una rotazione dell’esacottero intorno all’as- complesso, una raccolta di effetti fisici di diverso do-
se z descrivendo un angolo di imbardata indicato con minio. Al fine di sintetizzare il modello matematico si è
ψ (per maggiori dettagli si veda quanto esposto nella assunto che:
prima puntata, in merito al funzionamento di un velivolo • la struttura dell’aeromobile sia rigida e simme-
multi-rotore). trica;
Per quanto concerne lo spazio del moto, quello di un • il centro di gravità e l’origine del corpo coinci-
APR è diviso in due parti: i movimenti del baricentro e dono;
quelli intorno al baricentro. Sei DOFs (Degree of Free- • le eliche sono indeformabili;
dom) sono richiesti per descrivere il suo andamento nel • la spinta è proporzionale al quadrato della velo-
tempo. Tre esprimono i movimenti del baricentro e tre cità dei rotori.
quelli angolari, ovvero, i tre moti traslazionali (x, y e z) e
tre rotazionali (ψ, φ e θ). MODELLAZIONE CON EULERO-LAGRANGE
Come sopraccitato, il controllo dei sei DOFs è ottenuto In questa sezione sono modellate le dinamiche di rota-
variando le velocità di rotazione dei sei motori. Quindi, zione utilizzando il formalismo di Eulero-Lagrange. Tale

36
ROBOT

metodologia (già descritta ed utilizzata in un precedente


articolo) di analisi utilizza il baricentro energetico per ot-
(6)
tenere l’insieme di equazioni che descrivono il compor-
tamento del sistema.
dove la derivata di qi è Γi indicano rispettivamente le
CINEMATICA coordinate del sistema e le forze generalizzate. Da qui,
Per un punto P (xp, yp e zp) dello spazio, espresso nel è possibile scrivere:
sistema di riferimento verticale-locale, si può scrivere:

(7)
(1)

Le relative velocità, ottenute derivando l’equazioni pre- Dall’altra parte, le coppie non conservative agiscono sul
cedenti, consentono così di calcolare la radice quadrata multi-rotore in primo luogo con l’azione di una spinta dif-
dell’ampiezza delle velocità per un dato punto P: ferente per ogni coppia (Figura 2):

(2)
(8)

ENERGIA
Partendo dalla (eq. 2), assumendo che la matrice d’i- Oltre agli effetti giroscopici che pongono in rotazione le
nerzia I sia diagonale, è possibile estrarre l’equazione eliche, e che possono essere tenuti in conto come:
cinematica dell’energia (eq. 4).

(3)

(4)

Utilizzando la nota formula che descrive l’energia po-


tenziale V, è possibile esprimere la (eq. 4) nel sistema (9)

di riferimento verticale-locale come:

(5)

IL MODELLO MATEMATICO DERI-


Noti i legami dell’energia cinetica (eq. 4) e di quella po- VATO
tenziale (eq. 5) è possibile, finalmente, descrivere l’e- Il modello matematico del multi-rotore derivato, in sinte-
quazioni del moto (paragrafo successivo). si, descrive le rotazioni dell’angolo di rollio (φ), imbarda-
ta (ψ) e beccheggio (θ), contiene tre termini che tengo-
EQUAZIONI DEL MOTO no conto degli effetti giroscopici risultanti dalla rotazione
Utilizzando la Lagrangina L è possibile derivare le del corpo rigido (τx, τy e τz) e di quelli derivanti dai due
formule che descrivono il moto del velivolo (eq. 7) gruppi di eliche (τx’ e τu’), ed infine dell’azione degli at-
partendo dall’espressione generale: tuatori:

37
ROBOT

Da qui, è possibile linearizzare l’equazione (eq. 13) in-


torno ad un generico punto di lavoro, la derivata di ω0, e
(10)
scriverla nella forma:

con

(14)

MODELLAZIONE CON IL FORMALISMO DI


NEWTON-EULERO
Il modello ottenuto attraverso il formalismo di Newton-
Eulero è sviluppato per passi successivi. La versione
descritta in questo articolo include le forze che agisco-
Figura 2: Distanza dai rotori e centro di gravità dell’esacotte- no sui mozzi H, i momenti di rollio Rm ed i coefficienti
ro, con beta = 60° ed alpha = 30°. variabili aerodinamici J. Quest’ultimi rendono il modello
più realistico particolareggiandolo per il volo in ambienti
outdoor. Il fine ultimo è quello di introdurre il model-
LA DINAMICA DEI ROTORI lo impiegato per lo sviluppo del sistema di controllo
I rotori che equipaggiano il velivolo sono costituiti dai progettato (argomento del prossimo appuntamento)
sensori AC, di cui bene note sono le equazioni che ne utilizzando la tecnica Integral Backstepping, combi-
descrivono la dinamica: nazione tra la classica PID (lineare) e quella Backstep-
ping (non lineare).
La dinamica del corpo rigido, sottoposta all’azione delle
(11) sopraccitate forze esterne applicate al centro di massa
ed espresse nel sistema di riferimento assi-corpo con il
formalismo di Newton-Eulero, è descritta dalle equazio-
ni di seguito:

Per chi non ne conoscesse la struttura, ricordo di legge-


re le precedenti lezioni del corso e quanto presente in (15)
un precedente articolo.
I motori presentano un piccolo valore di induttanza, per
tale ragione la dinamica del secondo ordine può essere
approssimata come: Si ricorda l’utilizzo del sistema di riferimento verticale-
locale e di quello assi-corpo, come mostrato in Figura
(12) 1, per descrivere il moto dell’aeromobile. Dunque, uti-
lizzando la parametrizzazione degli angoli di Eulero,
l’orientamento del velivolo nello spazio è dato dalla ro-
A questo punto, introducendo i modelli delle eliche e tazione tra un sistema di riferimento e l’altro come de-
della scatola di trasmissione, l’equazione (eq. 12) può scritto nel secondo episodio di questo mini-corso.
essere riformulata come: Quanto formulato altro non è che una generalizzazione
del modello matematico che descrive il comportamento
di un quadri-rotore, particolare tipologia di multi-rotore.
(13)
FORZE E MOMENTI AERODINAMICI
Le forze ed i momenti aerodinamici sono derivati uti-

38
ROBOT

lizzando una combinazione teorica sulla quantità di esempio utilizzando tecniche adattive (approfondimenti
moto delle pale del velivolo. Per una veloce lettura delle sono presenti nei riferimenti presenti a fondo pagina).
equazioni di seguito sono riportati i significati dei simboli Si ricorda che l’obiettivo, però, è ottenere un modello
utilizzati: in grado di catturare le principali variazioni della velo-
cità indotta dall’aria. Su tale considerazione si è segui-
to quando descritto da Cheeman: la velocità indotta al
centro del rotore è data dalla sua immagine

Da qui è possibile scrivere la forza di spinta come la


risultate delle forze verticali che agiscono sulle pale del Da qui, si ottiene la relazione riportata nel seguito as-
multi-rotore, nel caso in esame dell’esacottero. sumendo che vi e δvi siano costanti per tutto il disco
consentendo di scrivere vi ,IGE = vi - δvi

La forza sui mozzi è la risultante delle forze orizzontali


che agiscono, invece, sulle sue eliche.
Un altro semplice modo per procedere è considerare
che il rapporto del flusso in ingresso negli effetti di terra
sia pari a

Si parla, al contrario, di momento di rollio di un’elica dove la variazione della velocità indotta è uguale è
quando il velivolo si muove in avanti durante il volo, e
più precisamente quando le pale producono più spinta
di quella necessaria a mantenere il velivolo in staziona-
mento (hovering). E’ l’integrazione completa dei rotori, i Dunque, è possibile riscrivere il coefficiente di spinta
quali producono una spinta per ogni sezione del velivolo IGE come:
che agisce su di un dato raggio. Il momento è da non
confondere assolutamente con il raggio delle eliche,
con la matrice di rotazione Cb/r (incontrata quando ab-
biamo descritto i sistemi di riferimento) o con i momenti
di rollio complessivi, i quali sono causati da una serie di
altri effetti.

Quando gli aeromobili lavorano vicino alla terra (a metà


Figura 3: Effetti di terra. A destra la dimensione della spinta
del diametro del rotore) la crescita della spinta è dovu-
prodotta dai rotori (velivolo prossimo all’atterraggio); a
ta alla migliore efficienza del motore. Tale propulsione sinistra, l’aumento della rotazione delle eliche (aeromobile
è funzione della riduzione di velocità indotta dal flusso lontano da terra).
d’aria. Quanto appena introdotto è nome come effetto
di terra (Figura 3). In letteratura diversi sono approcci EQUAZIONI DEL MOTO
utilizzati per trattare con questa topologia di effetti, ad In quest’ultima sezione sono riportate le equazioni del

39
ROBOT

moto dell’aeromobile derivate dalla (eq. 15) e da tutte


le forze ed i momenti che agiscono sul velivolo. Come
ci si aspettava, il modello finale è esattamente lo stesso
di quello presentato nel paragrafo precedente (quello a
conclusione del primo formalismo con cui si è sintetizza-
to il modello dell’esacottero):

La matrice di trasforma-
zione tra il tasso di va-
riazione degli angoli di
orientamento (le derivate
degli angoli di rollio, bec-
cheggio ed imbardata)
e le velocità angolari del
corpo (p, q e r) possono
essere considerate matri-
ce unitarie se le perturba-
zioni del volo stazionario
sono piccole. Dunque, è
MODELLO NELLO SPAZIO DI STATO possibile effettuare la seguente approssimazione
L’insieme di equazioni differenziali del secondo ordine
(presentate nel paragrafo precedente) descrivono la po-
sizione e l’orientamento assunto dal velivolo nello spa-
zio. Nella formulazione del modello sono trascurate le ottenendo così le equazioni presentate in precedenza
forze centrali ed i momenti di rollio, mentre sono stati con:
tenuti in conto i coefficienti di spinta e traslazione. Il si-
stema, a questo punto, può essere riscritto nella forma
X=f(X, U) dove U indica il vettore degli ingressi ed X
quello degli stati scelto come segue:

dove gli ingressi (U1, U2, U3 e U4) sono mappati da:

40
ROBOT

E’ chiaro che il sistema finale così composto è sot- In Figura 5 è riportato lo schema Simulink con il quale
to attuato poiché dipende sia dalle variabili di stato è stata simulata la dinamica del sistema, e successiva-
traslazionali che da quelle rotazionali. Vale la pena mente realizzato il controllo in traiettoria.
notare, inoltre, che gli angoli e le loro derivate nel tempo Ai fini simulativi sono stati presi in considerazione i se-
non dipendono dai componenti traslati. Dall’altra parte, guenti valori numerici:
le traslazioni sono funzione degli angoli. In sintesi, si
può idealmente immaginare che il sistema completo
sia costituito da due sottosistemi: le rotazioni ango-
lari e le traslazioni lineari (Figura 4).

RIFERIMENTI
Il poco spazio a disposizione non ha consentito, in al-
cuni casi, di approfondire con il giusto grado di dettaglio
le informazioni presentate nel corso di questo appun-
tamento. Per tale ragione si riportano di seguito i rife-
rimenti che, ancora una volta, il lettore più curioso può
utilizzare per approfondire quanto solo parzialmente
presentato in questi paragrafi.

• Francesco Sabatino, Quadrator control: mode-


ling, nonlinear control design and simulation.
Figura 4: Connessione delle rotazioni e traslazioni dei sotto-
Master’s thesis, KTH Royal Institute of Techno-
sistemi.

Figura 5: Schema Simulink della dinamica del sistema. Per chi non avesse mai sentito parlarne, consigliamo di leggere il relativo
articolo.

41
ROBOT

logy, 2015;
• D. Balmford, G. Done. Bramwell’s Helicopter
Dynamics. Oxford Butterworth-Heinemann,
2001;
• S. Bouabdallah. Design and control of quadra-
tors with application to autonomous flying. PhD
thesis, EPFL, 2007;
• V. Artale, C. Milazzo e A. Ricciardello. Mathema-
tical modeling of hexacopter. Appl. Math. Sci.,
7(97):4805-4811,2013.
• Mostafa Moussid, Adil Sayouti and Hichman Me-
dromi. Dynamic modeling and control of a hexa-
rotor using linear and nonlinear methods.
• S. Boubdallah, P. Murrieri and R. Siegward. De-
sign and control of an indoor micro quadrotor.
In Robotics and Automation, 2004. Proceedings,
ICRA’04. 2004 IEEE International Conference
on, volume 5, pages 4393-4398.
• S. Bouabdallah e R. Siegwart. Backstepping
and sliding-mode techniques applied to an indo-
or micro quadrotor. In Robotics and Automation,
2005. Proceedings of the 2005 IEEE Internatio-
nal Conference on, pagine 2247-2252.
• S. Bouabdallah e R. Riegward. Field and Ser-
vice Robotics: reseults of the 5th international
conference, capitolo Toward Intelligent Miniature
Flying Robots, pagina 429-440. Springer Berlin
Heidelberg, 2006.
• J. G. Leishman et al. Principles of Helicopter
Aerodynamics. Cambridge University Press, 2
edizione, 2006.
• N. Geunard, T. Hamel e L. Eck. Control laws for
the tele operation of an unmanned aerial vehicle
known as an x4-flyer. In Intelligent Robots and
System, 2006, pagine 3249-3254.
• I. Cheeseman e W. Bennett. The effect of the
ground on a helicopter rotor in forward flight.
Numero 3021. Aeronautical Research Council,
1957.

L’autore è a disposizione nei commenti per eventuali


approfondimenti sul tema dell’Articolo. Di seguito il link per
accedere direttamente all’articolo sul Blog e partecipare alla
discussione:
https://it.emcelettronica.com/corso-sugli-aeromobili-a-pilotaggio-
remoto-partendo-da-zero-descrizione-del-modello-matematico-3

42
La scheda di sviluppo
BO AR D
Marvin LoRa per l’IoT
di Maurizio Di Paolo Emilio

La scheda di sviluppo Marvin LoRa per l’Internet of Things rappresenta la scelta ideale per iniziare a
progettare dispositivi sfruttando le potenzialità del protocollo LoRa. Il kit di sviluppo permette di acce-
lerare il time-to-market di un progetto, realizzando una infinità di soluzioni in diversi campi applicativi.

INTRODUZIONE che si può attingere a un’enorme comunità di sviluppa-

L
a scheda di sviluppo Marvin è stata progettata tori per accelerare il processo di sviluppo. Il protocollo di
come un tool molto semplice anche per chi non ha comunicazione è LoRa, acronimo di Long Range Radio.
familiarità con la programmazione e la progetta- È la tecnologia wireless per eccellenza, destinata alle
zione elettronica, con la possibilità di utilizzare i sensori reti M2M e IoT. Questa tecnologia consentirà alle reti
Marvin Grove nel modo più semplice possibile con l’op- pubbliche di connettere più applicazioni in esecuzione
zione di visualizzare i dati online tramite un applicativo nella stessa rete, soddisfando nello stesso tempo lo svi-
Web. Con quest’ultimo è possibile impostare la scheda luppo di smart city con l’ausilio di sensori e prodotti au-
per far eseguire varie logiche di programmazione, sele- tomatizzati. Le principali specifiche sono riassunte nei
zionando semplicemente il sensore e scaricando diret- punti seguenti:
tamente il codice già pronto (figura 1). • MCU – Atmel/Microchip ATmega32u AVR MCU
Marvin è una scheda di sviluppo plug and play per la lo stesso di Arduino Leonardo).
prototipazione rapida di soluzioni IoT. Funziona con • Connettività – LoRa via Microchip RN2483; 868
la piattaforma IDE Arduino open source, il che significa MHz e 433 MHz.

Figura 1: la scheda Marvin LoRa

43
BOARD

Figura 2: la scheda Marvin con i dettagli hardware

Categoria Scheda di prototipazione

Serie ATMega32

Adatto per Rete LoRa

Interfacce Grove, USB 2.0 spina A, USB 2.0 presa Micro-B

Voltaggio Max. 5V

Voltaggio operativo Min. 3.3 V

Tensione d’esercizio 3.3 - 5 V

Ingressi digitali 5

Numero di ingressi analogici 6

Numero di uscite digitali 4

Numero I/O 14

Numero di uscite analogiche 6

Numero di ingressi digitali 4

Lunghezza - Profondità 85 mm

Larghezza 30 mm

Altezza 2.4 mm

Colore Nero

Assorbimento di corrente Tipico 50 mAh, un massimo di 200 mAh, 40 mAh per I/O

Memoria Flash 32k

Materiale Plastica

Potenza 1W

Tabella 1: dati tecnici della scheda Marvin LoRa

44
BOARD

Figura 3: schema a blocchi del modulo RN2483

• USB – 1x USB, 1x micro USB port per alimenta- no Leonardo e con sensori grove da implementare sulla
zione e programmazione. scheda. La scheda è progettata come una porta USB
• Debugging – USB, e ISP header. (pcb da 2,4 mm di spessore) in modo da poterla colle-
• Espansione – connettori 5x Grove. gare sia al laptop che al powerbank per configurare /
• Power Supply – 5V via USB port. alimentare l’applicazione (Figura 2).
La scheda Marvin offre la possibilità di sviluppare pro-
CARATTERISTICHE TECNICHE totipi IoT, funzionando, di fatto, come dispositivo stand-
Marvin è una scheda di sviluppo compatibile con Ardui- alone. I sensori si possono collegare come plug and

Figura 4: sensori grove da collegare alla scheda Marvin

45
BOARD

Figura 5: gli step per creare il progetto IoT con la scheda Marvin

play, offrendo un basso consumo energetico grazie al di rete LoRaWAN compatibile, sia pubblica che privata.
protocollo di comunicazione LoRa e ad un ottimo design Il modulo è progettato specificamente per la facilità d’u-
basato essenzialmente sul modulo RN2483 della Mi- so, riducendo così i tempi di sviluppo e accelerando il
crochip. Ci sono molti sensori compatibili da implemen- time-to-market (figura 4).
tare: da quello di temperatura passando per i sensori di
pressione e accelerometri vari. La scheda è compatibile CONCLUSIONI E CONSIDERAZIONI
con Arduino in termini di software: è possibile utilizzare Al giorno d’oggi sono disponibili vari protocolli di comu-
l’IDE per la programmazione come Arduino Leonardo nicazione wireless, e LoRa è un esempio che si aggiun-
(ATmega32u), ma le shield Arduino non possono esse- ge all’insieme di connettività presente nel mercato. Con
re implementate direttamente sulla scheda (se non con Internet of Things e Marvin si possono realizzare
modifiche hardware per i più esperti). La principali ca- una infinità di soluzioni a basso costo, nei più dispa-
ratteristiche sono riassunte in tabella 1. rati campi che spaziano da quello industriale passando
ATmega32u combina 32KB di memoria flash ISP con per il consumer. Ci sono cinque passaggi fondamentali
capacità di lettura e scrittura, 1KB EEPROM, 1KB per creare un progetto IoT (Figura 5); in primo luogo
SRAM, 22 linee di I/O per uso generico, 32 registri, connettere la scheda Marvin al PC e aggiungere i sen-
due timer/contatori flessibili con modalità di confronto sori necessari, poi scrivere il codice ed effettuare l’uplo-
e PWM, USART, timer watchdog programmabile con ad sulla scheda, a conclusione, dopo aver verificato il
oscillatore interno, porta seriale SPI, interfaccia WIRE funzionamento, collegare Marvin all’alimentazione per
per debug e programmazione on-chip e cinque modalità testare il progetto.
di risparmio energetico selezionabili da software. Il cuo-
re della scheda è il modulo LoRa Microchip RN2483.
Il modulo fornisce una lunga portata di comunicazione LA SCHEDA DI SVILUPPO MARVIN LORA PER IOT
con alta immunità all’interferenza. Utilizzando la tecni- È DISPONIBILE A CATALOGO CONRAD CON SPEDI-
ca di modulazione della tecnologia LoRa, RN2483 può ZIONE 24H
raggiungere una sensibilità del ricevitore di -146 dBm.
L’alta sensibilità combinata con l’integrato amplificatore
da +14 dBm, offre un collegamento ottimale per le appli-
cazioni che richiedono una gamma estesa e buona ro-
bustezza. Il modulo RN2483 offre ottimi valori in termini
di rumore di fase, selettività, linearità del ricevitore e un
minor consumo di energia (figura 3).
Il modulo lavora sulle frequenze ISM europee 433/868
MHz, ed è in grado di coprire ampie distanze dell’ordine
L’autore è a disposizione nei commenti per eventuali
di una decina di km in aree urbane. L’efficiente sistema approfondimenti sul tema dell’Articolo. Di seguito il link per
di power management offre un’alimentazione a batteria accedere direttamente all’articolo sul Blog e partecipare alla
con autonomia di circa 10 anni. Il protocollo LoRa- discussione:
https://it.emcelettronica.com/la-scheda-di-sviluppo-marvin-lora-
WAN di classe A del modulo RN2483 integrato consente
per-liot
la connettività senza problemi a qualsiasi infrastruttura

46
Realizziamo un semplice
MAK ER
Vocal Commander con
ESPertino
di Giovanni Di Maria

In questo articolo proponiamo un interessante dispositivo capace di abilitare due diversi carichi con
il semplice comando della voce. La particolarità del circuito risiede nel fatto che non sono utilizzate
shields supplementari o circuiti aggiuntivi, per raggiungere lo scopo. L’intero sistema usa, infatti, solo
un semplice microfono a condensatore. Il prototipo costituisce un punto iniziale per sviluppare appli-
cazioni più importanti e utili.

LA VOCE CHE COMANDA la forma d'onda prodotta dalla voce e la confronta con
dei modelli presenti in memoria. Il modello più simile

É
spesso comodo poter attivare un circuito con la dovrebbe corrispondere al comando vocale impartito
voce, magari se si hanno entrambe le mani oc- tramite il microfono. La digitalizzazione di parole e frasi,
cupate. Quello proposto di seguito è un didattico infatti, crea dei segnali audio caratterizzati da una parti-
circuito che attiva due diversi carichi con altrettanti co- colare forma d'onda. Uno dei metodi seguiti è quello di
mandi vocali. Per la precisione, il comando “TV” attiva rappresentare tale insieme di dati in forma matematica
il diodo Led collegato alla porta 16 di ESPertino, men- per poi confrontarli con dei modelli standard. La figura 1
tre il comando “SCALDABAGNO” attiva il Led collegato mostra le registrazioni delle parole "SCALDABAGNO" e
alla porta 17 della stessa scheda. Dal momento che si "TV" eseguite da tanti individui appartenenti a entrambi i
tratta solo di un circuito sperimentale è necessario pre- sessi e a varie fasce d'età. Si nota subito la somiglianza
mere il tasto “Reset” sulla scheda, ad ogni invio del tra i segnali registrati, a parità di parole pronunciate. Il
comando. Tale comportamento può essere facilmente sistema sfrutta proprio tale aspetto.
modificato. Nonostante i comandi vocali siano stati dettati da perso-
ne diverse, si può notare che il pattern di ogni parola
ESPERTINO NON CONOSCE LE PAROLE rispetta un modello simile e costante.
Attenzione: il sistema proposto non è in grado di discri- La figura 2, invece, focalizza la diversità dinamica tra
minare realmente le parole e identificare i fonemi che le le due forme d'onda appartenenti, rispettivamente, alle
compongono. L'algoritmo, infatti, si limita ad analizzare parole "SCALDABAGNO" e "TV".

Figura 1: le forme d'onda delle parole create da soggetti diversi

47
MAKER

Figura 2: le differenze dinamiche tra le due forme d'onda relative alle parole "Scaldabagno" e "TV"

COME CREARE UN MODELLO DI PAROLA/ successive elaborazioni, come si può osservare nella
COMANDO figura 4.
La prima fase da seguire è quella dell'addestramento
di ESPertino. E' una procedura, se vogliamo, lontana- SECONDA FASE: SUDDIVISIONE IN 20 SEG-
mente simile a ciò che fa l'uomo. Esso impara a ricono- MENTI
scere dei modelli di suoni, senza analizzarne campione La RAM dell'ESP32 non è molto grande. Inoltre non è
per campione. Per la registrazione dei due modelli di necessario gestire le migliaia di campioni che fan-
comando, corrispondenti alle parole "SCALDABAGNO" no parte dell'intera forma d'onda. Ne bastano molti di
e "TV", utilizziamo il programma Wavosaur, un bel meno, diciamo venti, per descrivere in forma generale
software leggero e semplice per la gestione dei segnali un determinato comando.
audio. Esaminiamo, dunque, tutte le fasi, al fine di rica- Per questo scopo si deve esportare, sempre con il Wa-
vare i modelli da memorizzare nella memoria RAM di vosaur, il segnale registrato in formato TXT, acceden-
ESPertino. do al menù File, Export e, infine, Export as Text. Sarà
creato un file testuale contenente tutti i campioni della
PRIMA FASE: REGISTRAZIONE DEL CO- forma d'onda registrata, compresi tra -1 e 1. La figura
MANDO 5 mostra uno stralcio di tale documento.
Si avvii il programma Wavosaur (a breve pubblichere- Tutti i campioni esportati si devono suddividere in ven-
mo un articolo descrittivo in merito). Si prema il tasto ti gruppi e di ogni raggruppamento occorre prendere il
rosso e si può registrare subito il comando, ad esempio valore massimo. Quest'ultimo costituisce il campione
"Scaldabagno", parlando vicino al microfono. La figura 3 modello da considerare nei raffronti successivi. Non si
mostra la videata subito dopo questa operazione. Fate può prendere il valore medio di essi in quanto il segnale
in modo da non tagliare le semionde, parlando troppo contiene semionde positive e negative e il risultato sa-
forte. Al limite ripetete la registrazione. rebbe, praticamente, nullo. Abbiamo realizzato, a tutti gli
Il segnale così acquisito non va bene, deve essere effetti, una sorta di rivelazione d'onda di tipo softwa-
post-processato. In particolare occorre: re, radiantisticamente parlando.
• Trasformare le due tracce in mono (menù Pro- Il nostro segnale dell'esempio contiene ben 24280 cam-
cess); pioni. Ognuno dei venti gruppi, pertanto, dovrà contene-
• Eseguire un resample a 22050 Hz (menù Pro- re 1214 campioni (24280/20). La ricerca del massimo di
cess); ogni gruppo può avvenire tramite foglio elettronico op-
• Tagliare il silenzio iniziale e quello finale (sele- pure con l'ausilio di un piccolo script, scritto in qualun-
zionare con il mouse e premere il tasto Canc). que linguaggio di programmazione. I venti valori massi-
mi calcolati per l'esempio sono riportati nella seguente
Solo così si può ottenere una forma d'onda adatta alle tabella:

48
MAKER

0 0.093282

1 0.0807

2 0.285447

3 1

4 0.609658

5 0.256361

6 0.931281

7 1

8 0.363859

9 0.260479

10 0.941954

11 0.946097

12 0.500263

13 0.43764

14 0.292481

15 0.31729

16 0.319028

17 0.220881

18 0.129024

19 0.070921

Essi generano un modello molto più semplice che ben cilmente trattabili dall'ESP32;
rappresenta la forma sommaria dell'onda, come visua- • Il fatto di risultare di tipo "intero" migliora la loro
lizzato in figura 6. Ribadiamo, ancora una volta, che le elaborazione.
parole di comando scelte devono essere molto diverse
tra loro, sia a livello di fonetica che di dinamica tempora- E' un'operazione semplice quella di "trasportare" e ade-
le, al fine di creare il meno possibile occasioni di ambi- guare le informazioni al nuovo intervallo. E' sufficiente,
guità tra i modelli. Si esegua tale procedura per tutte le infatti, applicare una proporzione in modo che il valore
parole di comando previste nel prototipo. minimo della serie corrisponda a 0 nel nuovo insieme e
il valore massimo corrisponda a 100. Non basta, quin-
TERZA FASE: ADEGUAMENTO DEL MODEL- di, moltiplicare semplicemente i valori per 100. Questa
LO ALL'INTERVALLO 0~100 operazione sarà egregiamente svolta dalla funzione
I venti campioni ottenuti con l'operazione precedente, di map() dello sketch. Si viene, così, a creare, la seguente
tipo float e compresi tra 0.00 e 1.00, devono essere nuova tabella.
adeguati a un nuovo intervallo, per la loro migliore ge- Le nuove informazioni, visibili graficamente in figura 7,
stione. In particolare, essi saranno compresi tra 0 e 100 disegnano la medesima onda di modello vista in pre-
e di tipo intero, per le seguenti motivazioni: cedenza, ma questa volta vengono fissati sicuramente
• In questo modo essi sono velocemente e più fa- a 0 e a 100, rispettivamente, i relativi volumi minimi e

49
MAKER

n Range 0~1 FLOAT Range 0~100 FLOAT Range 0~100 INT

0 0.093282 2.406792 2

1 0.0807 1.05254 1

2 0.285447 23.09017 23

3 1 100 100

4 0.609658 57.98613 58

5 0.256361 19.9595 20

6 0.931281 92.60353 93

7 1 100 100

8 0.363859 31.52993 32

9 0.260479 20.40278 20

10 0.941954 93.75230 94

11 0.946097 94.19823 94

12 0.500263 46.21156 46

13 0.43764 39.4712 39

14 0.292481 23.84727 24

15 0.31729 26.51755 27

16 0.319028 26.70461 27

17 0.220881 16.14071 16

18 0.129024 6.253828 6

19 0.070921 0 0

massimi. In altre parole, se la voce con cui si impartisce di due euro. I relativi collegamenti prevedono la con-
il comando è troppo bassa o troppo alta, non fa differen- nessione a una fonte di alimentazione. L'uscita di 3.3V
za, l'onda è sempre riadattata ai limiti imposti e la sua di ESPertino è adatta allo scopo. E' necessario che il
forma è sempre la medesima. microfono sia sempre preceduto da una resistenza di
L'array di esempio contenente il modello per la parola polarizzazione in modo da limitare il flusso di corren-
"SCALDABAGNO" è, dunque, il seguente: te e porre a metà strada la sua tensione di uscita, a
riposo. Nel nostro caso si è utilizzata
una resistenza da 10 kohm ma è utile
int array_voca-
controllare sempre la reale tensione
le[]={2,1,23,100,58,20,93,100,32,20,94,94,46,39,24,27,27,16,6,0}; //
a riposo. La figura 8 mostra tale di-
Scaldabagno spositivo, assieme al relativo schema
di collegamento e ai due grafici della
risposta, sia in regime statico che di-
Leggi anche: Come costruire un microfono-etilome- namico. E' consigliabile posizionare la tensione del se-
tro con Arduino gnale audio statico a metà strada (ossia tra 0V e VCC)
in modo che esso possa oscillare liberamente nei due
IL MICROFONO quadranti senza essere tagliato (distorsione).
Per il Vocal Commander si è adoperato un semplice
microfono a condensatore provvisto di due terminali. SCHEMA ELETTRICO E CABLAGGIO
Il suo costo è molto basso e si trova anche per meno Il collegamento dell'intero sistema è molto semplice e

50
MAKER

Figura 3: la registrazione del comando "Scaldabagno" con Wavosaur

utilizza la scheda ESPertino più il microfono a conden- deve essere, ovviamente, rimosso in fase di editing e
satore e due diodi Led per controllare le due uscite rela- compilazione sull'IDE di Arduino. Vediamo, in dettaglio,
tive ai comandi vocali impartiti. Esso è mostrato in figura le varie porzioni di codice:
9. Il microfono risulta collegato alla porta 35 di ESPerti- • Riga 1: la definizione SAMPLE fissa il numero
no, trattata come ingresso analogico. Su di essa, a ri- di campioni registrabili. Non si deve superare il
poso, si dovrebbe rilevare la tensione di VCC/2, ossia di valore di 30000 pena il crash del sistema;
circa 1.6V. Qualche decimo di volt in più o in meno non • Righe 2~4: si definiscono i numeri delle porte
è assolutamente critico. I due diodi Led sono, invece, dove sono collegati i diodi Led. Alla porta 13
collegati, alle porte 16 e 17 di ESPertino. Sono sem- risulta connesso il Led che informa della regi-
plici indicatori di stato logico ma potrebbero essere so- strazione in corso, mentre alla 16 e alla 17 sono
stituiti da carichi più robusti precedendoli, ovviamente, collegati i due Led dei carichi da pilotare;
da dispositivi di potenza come, ad esempio, transistor, • Righe 7~8: l'array campioni1[10000] contiene
mosfet o gli stessi due piccoli relè montati sulla scheda i reali campioni registrati attraverso il microfo-
ESPertino. no. L'array campioni2[20] contiene, invece, i 20
campioni ricavati dalla registrazione;
LO SKETCH • Righe 9~10: gli array array_vocale1[] e array_
Il listato sorgente è un po' lungo e merita di essere vocale2[] contengono i modelli delle due parole
compreso alla perfezione. E' composto da blocchi logici di comando. Costituiscono, dunque, la cono-
ognuno dei quali esegue una ben precisa funzionalità. scenza di base del sistema e su essi vengono
Le righe di programma sono numerate progressiva-
mente per essere facilmente commentate. Tale numero [ Continua a pag. 58 ]

51
MAKER

Figura 4: il segnale è stato ripulito e adattato con Wavosaur

Figura 5: esportazione dei campioni in formato TXT

52
MAKER

Figura 6: il comando vocale (in blu) e il relativo modello semplificato (in rosso)

Figura 7: i venti campioni riadeguati al nuovo intervallo 0~100

53
MAKER

Figura 8: il microfono a condensatore e suo funzionamento a riposo e a regime

Figura 9: il cablaggio del Vocal Commander

54
MAKER

Figura 10: la visualizzazione dei risultati su monitor seriale. E' stato pronunciato il comando "SCALDABAGNO"

1 #define SAMPLES 10000

2 int LED_ESPERTINO=13;

3 int LED_CARICO1=16;

4 int LED_CARICO2=17;

5 int digitale;

6 int k;

7 int campioni1[SAMPLES]; //---Contiene la voce

8 int campioni2[20]; //---Contiene il modello semplificato

9 int array_vocale1[]={1,1,0,0,1,1,100,100,6,2,1,96,44,5,12,2,0,0,1,1}; // TV

10 int array_vocale2[]={4,3,3,39,40,0,32,59,18,7,59,100,4,64,43,24,4,5,16,21}; // Scaldabagno

11 void setup() {

55
MAKER

12 pinMode(LED_ESPERTINO,OUTPUT);

13 pinMode(LED_CARICO1,OUTPUT);

14 pinMode(LED_CARICO2,OUTPUT);

15 digitalWrite(LED_ESPERTINO,HIGH); // Spegne Led (è al contrario)

16 digitalWrite(LED_CARICO1,LOW); // Spegne Led del carico

17 digitalWrite(LED_CARICO2,LOW); // Spegne Led del carico

18 analogSetAttenuation(ADC_11db);

19 analogReadResolution(12); // Risoluzione ADC a 12 bit

20 Serial.begin(9600);

21 }

22 void loop() {

23 //-------------Inizia la registrazione e memorizza in array-----------------

24 digitalWrite(LED_ESPERTINO,LOW); // Accende Led (è al contrario)

25 for(k=0;k<SAMPLES;k++) {

26 digitale=analogRead(35); // Legge la voce dall'ADC

27 campioni1[k]=digitale; // Memorizza la voce in array

28 delayMicroseconds(100);

29 }

30 digitalWrite(LED_ESPERTINO,HIGH); // Spegne Led

31 //--------Calcola i vari massimi e li memorizza in un vettore----------

32 //--- Non posso calcolare media per presenza di semionde positive e negative-----

33 int i=0;

34 int massimo=0;

35 for(k=0;k<SAMPLES;k++) {

36 if(campioni1[k]>massimo)

37 massimo=campioni1[k]; // Trova il valore massimo

38 if((k+1)%500==0) { // Divide il segnale in 20 gruppi

39 campioni2[i]=massimo;

40 massimo=0;

41 i++;

42 }

56
MAKER

43 }

44 //------Adegua il vettore ai limiti 0-100-----

45 int fromLow=22222; // Valore assurdo iniziale

46 int fromHigh=0;

47 for(k=0;k<20;k++) {

48 if(campioni2[k]>fromHigh)

49 fromHigh=campioni2[k]; //---Trova il massimo del vettore2

50 if(campioni2[k]<fromLow)

51 fromLow=campioni2[k]; //---Trova il minimo del vettore2

52 }

53 for(k=0;k<20;k++)

54 campioni2[k]=map(campioni2[k],fromLow,fromHigh,0,100); //-----Trasforma nel range 0..100

55 //------Determina il vettore (MODELLO) più simile alla registrazione----

56 float differenza_comando1=0;

57 float differenza_comando2=0;

58 for(k=0;k<20;k++) {

59 differenza_comando1+=abs((float)campioni2[k]-array_vocale1[k]);

60 differenza_comando2+=abs((float)campioni2[k]-array_vocale2[k]);

61 }

62 //--------Attiva il CARICO corrispondente-----------

63 if(differenza_comando1<differenza_comando2)

64 digitalWrite(LED_CARICO1,HIGH); // Accende Led

65 else

66 digitalWrite(LED_CARICO2,HIGH); // Accende Led

67 //----Visualizzazione per debug----

68 Serial.println(" ");

69 for(k=0;k<20;k++) {

70 Serial.println(campioni2[k]);

71 }

72 Serial.println(" ");

73 Serial.println(" ");

57
MAKER

74 Serial.println(differenza_comando1);

75 Serial.println(differenza_comando2);

76 while(1);

77 }

eseguiti i raffronti per stabilire quale parola è sta- UTILIZZO


ta pronunciata al microfono; L'utilizzo è semplice. Le fasi del funzionamento sono le
• Righe 11~21: la funzione setup(), eseguita solo seguenti:
una volta, configura l'ambiente di lavoro. In parti- 1. Si prema il tasto reset posto sulla scheda ESPer-
colare, le tre porte facenti capo ai diodi Led sono tino;
configurate come output e, soprattutto, viene 2. Appena si accende il diodo Led onboard si inizi
programmata la configurazione per il funziona- immediatamente a parlare (si pronuncino le pa-
mento dell'ADC; role "TV" o "SCALDABAGNO"). La registrazione
• Righe 24~30: Inizia la registrazione, testimonia- dura solo un secondo, quindi occorre stare at-
ta dal diodo Led presente sulla board di ESPer- tenti a non sbordare da tale limite;
tino. Si deve iniziare immediatamente a parla- 3. Al termine della registrazione il diodo onboard
re, vicino il microfono. La registrazione dura un Led si spegne e si illuminerà uno dei due diodi
secondo (100 microsecondi di pausa per 10000 Led esterni, corrispondenti alle due utenze che
campioni formano, infatti 1 secondo). Il campio- si intende controllare;
namento è eseguito, dunque, alla frequenza di 4. Per imporre un ulteriore comando premere nuo-
10 Khz alla risoluzione iniziale di 12 bit; vamente il tasto reset.
• Righe 31~43: crea un vettore di 20 elementi nel
quale si memorizzano i valori massimi di ogni CONCLUSIONI
gruppo, come spiegato in precedenza; Il mercato tecnologico offre già soluzioni e shields pron-
• Righe 44~54: viene effettuato l'adeguamento te all'uso, proprio con lo scopo di riconoscere un coman-
del vettore ridotto al nuovo range 0~100, come do vocale e attivare un determinato carico. Gli studi, in
illustrato nel precedente paragrafo. La funzio- tal senso, risultano estremamente sofisticati e i metodi
ne map() svolge un importantissimo lavoro, in rivolti al processo audio con la voce sono diversi, con
quanto adegua un intervallo a un altro; risultati impressionanti. L'articolo ha avuto lo scopo di
• Righe 55~61: confronta la registrazione con i dimostrare che è sempre possibile realizzare un proget-
due modelli in memoria e determina quale co- to da zero, anche per il piacere di esplorare i vari metodi
mando vocale è stato pronunciato al microfono. di funzionamento di questa categoria di sistemi. Ovvia-
In pratica si calcolano le differenze aritmetiche mente il prototipo presentato non è perfetto, anzi è molto
tra i vettori. La differenza minore decreta il vet- semplicistico e ogni tanto qualche comando vocale può
tore più simile; essere interpretato erroneamente. Per questo motivo si
• Righe 62~66: attiva materialmente il carico corri- consiglia di scegliere dei comandi vocali estremamente
spondente alla parola dettata; diversi tra loro, in modo che i relativi modelli risultino di-
• Righe 67~75: i 20 campioni e i due indici di diffe- namicamente differenti e facilmente riconoscibili. Al po-
renza sono visualizzati su monitor seriale (vedi sto dei due diodi Led possono essere pilotati gli stessi
figura 10), per esclusivi motivi di debug. Si po- due relè presenti a bordo di ESPertino.
trebbe eventualmente rimuovere tale porzione di
codice, se non risulta necessaria;
L’autore è a disposizione nei commenti per eventuali
• Riga 76: ciclo infinito che blocca e congela il pro- approfondimenti sul tema dell’Articolo. Di seguito il link per
gramma. Si tratta, in pratica, di un loop a vuoto, accedere direttamente all’articolo sul Blog e partecipare alla
con ciclo senza fine. Per rieseguire la registra- discussione:
https://it.emcelettronica.com/realizziamo-un-semplice-vocal-
zione si deve premere il tasto reset presente sul-
commander-con-espertino
la scheda ESPertino.

58

You might also like