Professional Documents
Culture Documents
EOS Book3D PDF
EOS Book3D PDF
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.
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.
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.
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
3
MAKER
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()
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)
# 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()
5
MAKER
# pulisci e cancella
del(image) “ https://www.brainandbytes.com/
qrcode/
6
MAKER
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/
<?php
<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>
‘;
$PNG_TEMP_DIR = dirname(__FILE__).DIREC-
TORY_SEPARATOR.’temp’.DIRECTORY_SEPARA-
TOR;
$PNG_WEB_DIR = ‘temp/’;
7
MAKER
(isset($_REQUEST[‘data’])?htmlspecialchars($_REQ
if (isset($_REQUEST[‘data’])) {
if (trim($_REQUEST[‘data’]) == ‘’)
href=”?”>indietro</a>’);
// user data
$filename = $PNG_TEMP_DIR.’test’.md5($_RE
QUEST[‘data’].’|’.$errorCorrectionLevel.’|’.$matrixPoi
ntSize).’.png’;
QRcode::png(hash(‘sha256’,$_
$matrixPointSize, 2);
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
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.
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
10
TECH
11
TECH
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
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
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.
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.
16
MAKER
17
MAKER
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à.
18
MAKER
• 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
20
MAKER
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
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.
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
24
BOARD
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
26
BOARD
27
BOARD
//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);
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 -----
Read = 1, Write = 0)
i2c_write(0x43); //Calculations for Analog Temp Sensor - BDE0600G
29
BOARD
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.
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
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.
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
(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)
(5)
37
ROBOT
con
(14)
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
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.
39
ROBOT
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:
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.
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.
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.
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.
43
BOARD
Serie ATMega32
Voltaggio Max. 5V
Ingressi digitali 5
Numero I/O 14
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
Materiale Plastica
Potenza 1W
44
BOARD
• 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
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".
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
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
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
52
MAKER
Figura 6: il comando vocale (in blu) e il relativo modello semplificato (in rosso)
53
MAKER
54
MAKER
Figura 10: la visualizzazione dei risultati su monitor seriale. E' stato pronunciato il comando "SCALDABAGNO"
2 int LED_ESPERTINO=13;
3 int LED_CARICO1=16;
4 int LED_CARICO2=17;
5 int digitale;
6 int k;
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
11 void setup() {
55
MAKER
12 pinMode(LED_ESPERTINO,OUTPUT);
13 pinMode(LED_CARICO1,OUTPUT);
14 pinMode(LED_CARICO2,OUTPUT);
18 analogSetAttenuation(ADC_11db);
20 Serial.begin(9600);
21 }
22 void loop() {
25 for(k=0;k<SAMPLES;k++) {
28 delayMicroseconds(100);
29 }
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)
39 campioni2[i]=massimo;
40 massimo=0;
41 i++;
42 }
56
MAKER
43 }
46 int fromHigh=0;
47 for(k=0;k<20;k++) {
48 if(campioni2[k]>fromHigh)
50 if(campioni2[k]<fromLow)
52 }
53 for(k=0;k<20;k++)
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 }
63 if(differenza_comando1<differenza_comando2)
65 else
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 }
58