SlideShare a Scribd company logo
1 of 85
La frontiera dell’Internet of
Things
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Software Engineer
francescopascale87@gmail.com
OUTLINE
Arduino
– Architettura e moduli
– La programmazione Arduino
– Librerie
– Esempio
Differenze tra Arduino e un Microcontrollore PIC
– Dispositivi a confronto
– Codici a confronto
Microcontrollore vs Microprocessore
– Differenze
– Esempi di utilizzo
Problematiche in Arduino
– Problemi noti risolti
– Come rendere arduino professionale: alcune problematiche
29/10/2016 2
IoT e la piattaforma Arduino
Ing. Francesco Pascale
OUTLINE
Come strutturare la progettazione e lo sviluppo di un sistema
embedded
– Definizione dell’architettura
– Sviluppo SW-FW e HW
– Esempi di Sistemi Embedded
Arduino in Iot
– Problematiche sulla connessione alla rete per un MCU
– Arduino e la connessione alla rete
Arduino e Cyber Security
– Problematiche generali
– Come rendere sicuro Arduino come device IoT: Esempio
DDOS
29/10/2016 3
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Arduino
• Arduino è una scheda elettronica dotata di un microcontrollore ATmega,
sviluppata da alcuni membri dell'Interaction Design Institute di Ivrea
• L’hardware nella sua versione Arduino uno è composto da un circuito
stampato in cui sono presenti un microcontrollore (Atmega328) con
dei pin connessi alle porte I/O, un regolatore di tensione, un header
ICSP (In-Circuit Serial Programming), un jack di alimentazione, un
risuonatore utilizzato come oscillatore, un pulsante di reset e
un'interfaccia USB che permette la comunicazione con il computer.
• L'ambiente di sviluppo integrato (IDE) di Arduino è un'applicazione
multipiattaforma in Java (per Linux, Apple Macintosh e Windows
29/10/2016 4
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Arduino
• l'IDE include un editor di testo con al suo interno syntax highlighting per il controllo
delle parentesi e l'indentazione automatica
• L'editor è inoltre in grado di compilare e lanciare il programma eseguibile in una sola
passata e con un solo click. In genere non vi è bisogno di creare dei Makefile o far girare
programmi dalla riga di comando
• L'ambiente di sviluppo integrato di Arduino è fornito di una libreria software C/C++
che prende il nome di wiring
• L’IDE Arduino è gratuito e scaricabile dal sito ufficiale
https://www.arduino.cc/en/Main/Software con licenza GNU GPLv2
• I programmi in Arduino vengono prendono il nome di sketch
• E’possibile sviluppare programmi per connettere, a questo hardware, più o meno
qualsiasi oggetto elettronico, computer, sensori, display o attuatori
29/10/2016 5
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Architettura e Moduli
29/10/2016 6
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Architettura e Moduli
29/10/2016 7
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Componente Caratteristiche
Microcontroller Atmega328
Tensione di funzionamento 5V
Tensione in ingresso 7-12V (consigliata)
Tensione in ingresso 6-20V (limiti)
I / O digitali 14 (di cui 6 di fornire output PWM)
Ingressi analogici 6
Corrente continua per I / O Pin 40 mA
Corrente per Pin 3,3 V CC 50 mA
Flash Memory 32 KB di cui 0,5 KB utilizzati dal bootloader
SRAM 2 KB
EEPROM 1 KB
Velocità di clock 16 MHz
Riepilogo caratteristiche Principali
Architettura e Moduli
29/10/2016 8
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Generalmente il microcontrollore della scheda è pre-programmato con un
bootloader che semplifica il caricamento dei programmi sulla memoria
flash incorporata nel chip
• Per alimentare il microcontrollore, è sufficiente collegarsi a un computer
con un cavo USB (l'alimentazione può essere derivata alla presa USB)
oppure alimentare con un adattatore AC-DC oppure tramite batteria
• La Scheda Arduino Uno si differenzia principalmente da tutte le schede
precedenti, dal fatto che non usa come convertitore USB/seriale un chip
driver FTDI ma è utilizzato un processore Atmega8U2 programmato
come convertitore seriale/USB
La programmazione Arduino
29/10/2016 9
IoT e la piattaforma Arduino
Ing. Francesco Pascale
La programmazione Arduino
29/10/2016 10
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Per poter creare un file eseguibile, non è richiesto di scrivere
un programma in C, ma solo di definire due funzioni:
void setup ()
funzione invocata una sola volta all'inizio di un programma
che può essere utilizzata per i settaggi iniziali
void loop ()
funzione invocata ripetutamente, la cui esecuzione si
interrompe solo con lo spegnimento della scheda
La programmazione Arduino
29/10/2016 11
IoT e la piattaforma Arduino
Ing. Francesco Pascale
1 #define LED_PIN 13
2
3 void setup () {
4 pinMode (LED_PIN, OUTPUT); // abilita il pin 13 per l'output digitale
5 }
6
7 void loop () {
8 digitalWrite (LED_PIN, HIGH); // accende il LED
9 delay (1000); // aspetta 1 secondo (1000 millisecondi)
10 digitalWrite (LED_PIN, LOW); // spegne il LED
11 delay (1000); // aspetta un secondo
12 }
Un tipico esempio di programma per iniziare a far pratica con un microcontrollore è
quello che permette l'accensione ripetuta di un LED
La programmazione Arduino
29/10/2016 12
IoT e la piattaforma Arduino
Ing. Francesco Pascale
La programmazione Arduino
29/10/2016 13
IoT e la piattaforma Arduino
Ing. Francesco Pascale
1 #include "WProgram.h" // include la libreria WProgram
2 #define LED_PIN 13
3
4 void setup () {
5 pinMode (LED_PIN, OUTPUT); // abilita il pin 13 per l'output digitale
6 }
7
8 void loop () {
9 digitalWrite (LED_PIN, HIGH); // accende il LED
10 delay (1000); // aspetta 1 secondo (1000 millisecondi)
11 digitalWrite (LED_PIN, LOW); // spegne il LED
12 delay (1000); // aspetta 1 secondo
13 }
14
15 int main(void)
16 {
17 init();
18
19 setup();
20
21 for (;;)
22 loop();
23
24 return 0;
25 }
Quando l'utilizzatore seleziona il bottone di comando "Upload to I/O board" (presente nell'IDE), una copia del codice viene
automaticamente trascritta in un file temporaneo con l'aggiunta di un extra include header all'inizio del codice e l'implementazione
di una semplicissima funzione main()
La programmazione Arduino
29/10/2016 14
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• "WProgram.h" è lo header file principale per la libreria Wiring.
• La funzione main() effettua solo tre chiamate, init(), setup() e loop();
• le ultime due sono definite dall'utente, mentre la prima è scritta nella
libreria stessa.
• La funzione loop(), come richiesto, è automaticamente nidificata in un
loop infinito
La programmazione Arduino
29/10/2016 15
IoT e la piattaforma Arduino
Ing. Francesco Pascale
La programmazione Arduino
29/10/2016 16
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Sintassi
• Punto e virgola ;
• Le parentesi graffe { }
La programmazione Arduino
29/10/2016 17
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Commenti
– Blocco di commenti /* …. */
– Linea di commento //
Funzioni
• Dichiarazione di funzione
La programmazione Arduino
29/10/2016 18
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Le costanti
• Costanti booleane
• Costanti INPUT e OUTPUT
– INPUT
– OUTPUT
• Costanti HIGH e LOW
– HIGH
– LOW
• Costanti a numero interi ( Integer )
• Formattatori U e L (Unsigned e Long)
La programmazione Arduino
29/10/2016 19
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Le variabili
• Dichiarazione di una variabile
int inputVar=0; //inizializza la variabile di nome inputVar
inputVar=analogRead(2); // assegna alla variabile su inizializzata il valore
// letto dal pin analogico 2 variandone il contenuto
• Variabile globale e locali
La programmazione Arduino
29/10/2016 20
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Static
• const
– #define or const
La programmazione Arduino
29/10/2016 21
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Tipo di dati
• Void (dichiarazione di funzione che non restituisce un risultato)
• Boolean (variabile di tipo true o false)
• Char (1 byte 1 Carattere da 0 a 255 ASCII)
• Unsigned Char
• Byte (8bit Es. B010101)
• Int (2 byte interi da -32768 a 32767)
• Unsigned int
• Word (2 byte senza segno)
• Long (4byte)
• unsigned long (4byte senza segno)
• char array - String (Stringhe di caratteri)
– Array di char (Es. char Str[ ]= “arduino”; )
– Array di stringhe (Es. char* mieStringhe[ ]= { “Stringa 1”, “Stringa 2”, “Stringa 3”, “Stringa 4”, “Stringa 5” };)
– String – oggetto (classe)
• Array
– Creazione e/o dichiarazione di un array Es. int mioArray[]={1,2,3,4,5};
– Accesso agli elementi di un array Es. int var = mioArray[n];
– Assegnare un valore ad un array Es. mioArray[n]=3;
La programmazione Arduino
29/10/2016 22
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Istruzioni condizionali
• Istruzione if
• Condizioni if/else
• Istruzioni switch … case
• Istruzione for / ciclo for
• Ciclo while
• Ciclo do/while
• Break
• continue
• Return
• #define
La programmazione Arduino
29/10/2016 23
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Operatori aritmetici
• Operatore di assegnamento =
• Addizione(+), sottrazione (-), moltiplicazione (*) e divisione ( / )
• Modulo %
Operatori di confronto
• Operatore booleano
– && operatore AND
– || operatore OR
– ! operatore not
• Operatori tra bit ( su interi a 16 bit )
– AND tra bit &
– Operatore OR tra bit |
– Operatore tra bit XOR
– Operatore NOT tra bit ~
• Scorrimento verso sinistra (<<) e verso destra ( >> )
– Operatori composti
– ++ (incremento) - - (decremento)
– += -= *= /=
• AND composto tra bit (&=) e OR composto tra bit ( | = )
– AND composto ( & =)
– OR composto ( |= )
La programmazione Arduino
29/10/2016 24
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Funzioni I/O
• I/O digitali
– pinMode(pin,mode);
– digitalWrite
– digitalWrite(pin,valore)
– digitalRead
• I/O analogici
– analogReference(type)
– analogRead()
– analogWrite( )
• Time
– mills()
– micros( )
– delay( )
– delayMicroseconds()
La programmazione Arduino
29/10/2016 25
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Altre Funzioni
• min(x,y)
• max(x,y)
• abs(x)
• sin(rad)
• cos(rad)
• tan(rad)
• lowByte()
• highByte( )
• bitRead( )
• Serial
– begin()
– end( )
– available( )
– read( )
– flush( )
– print( )
– println( )
– write( )
Librerie
29/10/2016 26
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Esistono vari tipi di librerie, quelle standard (10) e quelle terze parti
• Alle librerie terze parti appartengono quelle sviluppate per supportare in
modo specifico uno shield o un particolare chip, quelle legate ad hardware
specifici e le librerie funzionali
• Tutte le librerie sono pensate al fine di migliorare e di espandere le
potenzialità di arduino sui vari dispositivi
Librerie
29/10/2016 27
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• EEPROM – per leggere e scrivere su memorie EEPROM, che conservano
i dati anche senza alimentazione
• Ethernet - per collegarsi ad Internet e a una rete Ethernet attraverso
Arduino Ethernet Shield
• Firmata – per comunicare con il computer collegato ad Arduino secondo
un protocollo standard
• LiquidCrystal – per gestire i display a cristalli liquidi basati su controller
HD44780 o compatibile (LCD)
• SD – per leggere e scrivere le schede di memoria SD.
• Servo – per controllare i servomotori (I/O PWM)
• SPI – per dialogare con dispositivi che utilizzano l’interfaccia e il protocollo
Serial Peripheral Interface (SPI)
• SoftwareSerial – per creare una porta seriale su qualsiasi pin digitale
• Stepper – per gestire i motori passo passo (stepper)
• Wire - per gestire la comunicazione con uno o più dispositivi che impiegano
la modalità di comunicazione a due fili Two Wire Interface (TWI/I2C)
Librerie Standard
Esempio
29/10/2016 28
IoT e la piattaforma Arduino
Ing. Francesco Pascale
/* uso del display LCD 16x2 standard Hitachi HD44780
Circuito:
* pin RS collegato al pin digitale 12
* pin E (Enable) collegato al pin digitale 11
* pin D4 collegato al pin digitale 5
* pin D5 collegato al pin digitale 4
* pin D6 collegato al pin digitale 3
* pin D7 collegato al pin digitale 2
* pin R/W collegato al GND
* pin 1 e pin 4 collegati a GND
* pin 2 collegato a +Vcc
* centrale del potenziometro/trimmer da 10 KOhm collegato al pin 3 del'LCD
* pin SX potenziometro/trimmer collegato a +Vcc
* pin DX potenziometro/trimmer collegato a GND
* i pin SX e DX del potenziometro/trimmer possono essere interscambiati
*/
// includere la libreria:
#include <LiquidCrystal.h>
/*
Viene creata l'istanza dell'oggetto LiquidCrystal chiamata lcd in cui
sono indicati i pin dell'LCD collegati alle uscite digitali di Arduino
*/
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Esempio
29/10/2016 29
IoT e la piattaforma Arduino
Ing. Francesco Pascale
void setup() {
//impostiamo il numero di colonne ed il numero di righe di lcd
lcd.begin(16, 2);
// Visualizzo il messaggio sul display
lcd.print("Salve mondo!");
}
void loop() {
// posiziona il cursore in colonna 0 e linea 1
// (nota: la linea 1 e la seconda linea, poichè si conta incominciando da 0):
lcd.setCursor(0, 1);
// stampa il numero di secondi dall'ultimo reset
lcd.print(millis()/1000);
}
Esempio
29/10/2016 30
IoT e la piattaforma Arduino
Ing. Francesco Pascale
https://www.arduino.cc/en/Reference/LiquidCrystal
Esempio
29/10/2016 31
IoT e la piattaforma Arduino
Ing. Francesco Pascale
https://www.youtube.com/watch?v=i2r7rSvAwBw
Differenze tra Arduino e un
Microcontrollore PIC
29/10/2016 32
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Arduino come detto fa parte della famiglia dei microcontrollori ed è
dotato nella sua versione Arduino uno di un microcontrollore Atmega328
• PIC è una famiglia di circuiti integrati a semiconduttore con funzioni
di microcontrollore
• Il PIC è un microcontrollore che opportunamente programmato è in grado
di svolgere diverse funzioni in modo autonomo. Essenzialmente gestisce
delle linee di input e di output in relazione al programma in esso
implementato
• Molto utilizzati soprattutto nel settore industriali e dell’automazione, ma
anche in ambito biomedico e domotico
Dispositivi a confronto
29/10/2016 33
IoT e la piattaforma Arduino
Ing. Francesco Pascale
PIC1655AAtmega328
Dispositivi a confronto
29/10/2016 34
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• I microcontrollori PIC equelli della famiglia AVR prodotti dalla
Atmel usati da Arduino presi in considerazione hanno architettura
RISC
• I PIC sono disponibili nelle versioni 8 bit, 16 bit e 32bit, mentre AVR
presente su Arduino Uno è a 8 bit
• I PIC sono programmabili in Assembler o C mentre con Arduino è
possibile utilizzare codice derivato da C/C++
Dispositivi a confronto
29/10/2016 35
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Per programmare un PIC c’è bisogno di programmi appositi (Es.
Ktechlab) mentre Arduino è dotato di un proprio IDE
• Il costo di un microcontrollore PIC varia dai 2€ ai 5€ in base al
modello, mentre quello di un Arduino varia dai 10€ ai 40€
• Il PIC è un chip al quale vanno collegati tutti gli altri elementi
hardware, mentre Arduino essere una board già completa e dotata
di altri elementi può essere utilizzata facilmente e a questo si
aggiunge la possibilità di montarci sopra altre shield per ampliarle
sue funzionalità
Codici a confronto
29/10/2016 36
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Led_on_off
; setup a pointer to the base address of port 1
LDR R1,=0x2009c020 ; pointer to base of port1
loop
LDR R3,=0x00000000 ; set LED 1 off (all bits 'zero')
CALL Delay
LDR R3,=0x00040000 ; set LED 1 on (bit 18 aka P1.18 is
'one')
CALL Delay
B loop ; branch to loop (endless loop!)
Delay
…
END
Microcontrollore vs Microprocessore
29/10/2016 37
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Microcontrollore: dispositivo elettronico
integrato su singolo chip, che nasce come
evoluzione del Microprocessore, utilizzato
all’interno dei sistemi embedded (special purpose)
Microprocessore: Processore elettronico
costituito da uno o più circuiti integrati
di dimensioni molto ridotte
Differenze
29/10/2016 38
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Un microprocessore è attualmente l'implementazione fisica più
comune di una CPU ed ha bisogno di elementi esterni per funzionare
(Es. memoria, periferiche I/O), mentre un microcontrollore,
riunisce tutti gli elementi all'interno di un unico piccolo contenitore
• Le capacità di calcolo di un microcontrollore sono estremamente
ridotte. Ad esempio la memoria RAM è formata da qualche
centinaio di celle, e di solito non è espandibile. I microprocessori,
al contrario, possono essere usati per effettuare elaborazioni
complesse su grandi quantità di informazioni
Differenze
29/10/2016 39
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• I microcontrollori vengono utilizzati per gli antifurti, gli strumenti
di misurazione, quelli per la regolazione della luminosità, i carica
batterie e i trasmettitori/ricevitori. I microprocessori invece sono
il core di elaborazione all’interno dei PC, capace di leggere,
elaborare e scrivere informazioni in una memoria o in altri
dispositivi digitali
• I microprocessori eseguono i programmi applicativi sfruttando
dispositivi di memoria di massa o a memoria volatile, i
microcontrollori eseguono il programma applicativo che è
solitamente memorizzato su un dispositivo di memoria ROM.
Esempi di utilizzo
29/10/2016 40
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Personal Computer Domotica
Problematiche in Arduino
29/10/2016 41
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Uno dei problemi principali su Arduino è la saturazione della
memoria. Questo avviene quando ad esempio si alloca più spazio di
quello disponibile in fase di inizializzazione o durante un ciclo
Questo problema prende il nome di Stack Overflow
Problematiche in Arduino
29/10/2016 42
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• La saturazione della RAM porta a comportamenti strani del
microcontrollore dato che i dati delle variabili iniziano ad essere
recuperati a caso nella memoria, portando ad esempio a
visualizzazioni di caratteri strani su un display LCD, alla stampa di
dati senza senso sulla seriale oppure al blocco stesso dell’esecuzione
del codice.
• La saturazione della RAM è anche un problema che spesso non
viene diagnosticato correttamente: l’utente, spesso, pensa che i
motivi di queste anomalie possano risiedere nel suo codice oppure
nello stesso circuito
Problematiche in Arduino
29/10/2016 43
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Come prevenire lo stack overflow?
• Attraverso un software messo a disposizione dalla toolchain
Avr, avr-size. Questo programma restituisce l’occupazione statica di
RAM e della FLASH analizzando lo sketch compilato, prima di
farne l’upload sul microcontrollore
Problematiche in Arduino
29/10/2016 44
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Come prevenire lo stack overflow?
• Attraverso l’uso di una libreria denominata MemoryFree che
permette di avere il consumo di memoria istantaneo, vale a dire
durante l’esecuzione del programma stesso
Problematiche in Arduino
29/10/2016 45
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Come prevenire lo stack overflow?
• Attraverso la funzione freeRam che fa semplicemente la differenza
fra l’indirizzo di inizio dell’HEAP e quello di inizio dello STACK,
restituendo il numero di byte di SRAM ancora disponibili
Problemi noti risolti
29/10/2016 46
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Esistono una serie di problemi noti risolti che sono riportati sul sito
ufficiale di Arduino:
http://playground.arduino.cc/Italiano/Pobleminoti
Questi problemi riguardano sia l’hardware che il software che sono
stati rilevati dalla community nel corso degli anni. Sul portale è
possibile segnalare un nuovo problema ancora non riscontrato il
quale verrà poi trattato ed elaborato al fine di ottenere la risoluzione
dello stesso
Problemi noti risolti
29/10/2016 47
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Problemi noti risolti
29/10/2016 48
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Come rendere Arduino
professionale: Alcune problematiche
29/10/2016 49
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Alimentazione della scheda: nel momento in cui la scheda va su un
circuito più complesso che deve essere alimentato ad un voltaggio
maggiore (Es. 12V) si rischia di avere dei problemi. Questo può
essere risolto con un regolatore di tensione o con un alimentazione a
voltaggio differente
• Protezione degli I/O : i pin Input e Output non sono protetti e come
tale se li colleghiamo male o gli applichiamo una sovratensione si
rischia di bruciare tutto. Questo può essere risolto sia facendo molta
attenzione sia aggiungendo ad esempio delle resistenze di protezione
in serie
• Vibrazioni meccaniche della board: E’ possibile che durante
l’utilizzo vi possano essere delle vibrazioni meccaniche che possono
andare a danneggiare la board. E’ possibile ovviare a ciò andando ad
applicare dei fissaggi meccanici
Come strutturare la progettazione e
lo sviluppo di un sistema embedded
29/10/2016 50
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Un sistema embedded è un sistema sia hardware che software,
progettato appositamente per una determinata applicazione (special
purpose)
DEFINIZIONE DELL’ARCHITETTURA
29/10/2016 51
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Durante questa fase si pongono le basi per la definizione
dell’architettura di base del sistema e la scelta dei componenti da
utilizzare.
• Verranno effettuate scelte sia tecniche che economiche che di
reperibilità
• Successivamente verrà mappata l’applicazione scelta
sull’architettura e si stimano le prestazioni
• Questa fase iniziale richiede molto tempo e preparazione da parte di
chi la svolge
SVILUPPO SW-FW e HW
29/10/2016 52
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Lo Sviluppo Software-Firmware consiste nella programmazione vera
e propria del sistema e consiste in: Codifica dell’algoritmo, definizione
e codifica dei protocolli di comunicazione interni ed esterni,
customizzazione delle routine di sistema.
•Lo sviluppo Hardware consiste nella realizzazione EX-NOVO o nella
personalizzazione di Circuiti dedicati. Questo avviene quando non è
possibile utilizzare componenti hardware già implementati quali
microprocessori o microcontrollori
•Le due fasi vengono svolte in stretto contatto tra di loro
Esempi di Sistemi Embedded
29/10/2016 53
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Telefoni Cellulari (WAP, UMTS, ECC.)
• Sottosistemi intelligenti per il controlo di funzionalità particolari di
auto, treni o aerei (AUTOMOTIVE). Ad Esempio il sistena ABS, il
sistema di controllo dei tergicristalli, sistema di espulsione degli
AIRBAG o la centralina di bordo
• Dispositivi e/o sensori collegati in rete per l’automazione di una casa
(HOME AUTOMATION)
• Riproduttori digitali di suoni portatile ES. Lettore MP3;
• Telecamere di
• Elettrodomestici intelligenti (MACCHINA DA
CAFFÈ;FRIGORIFERO; CONDIZIONATORE; ECC.)
• Dispositivi di automazione di macchine industriali
Esempi di Sistemi Embedded
29/10/2016 54
IoT e la piattaforma Arduino
Ing. Francesco Pascale
https://www.youtube.com/watch?v=nfqEt4SSFsQ
Arduino in Iot
29/10/2016 55
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Utilizzare la rete Internet per far comunicare tra di loro “oggetti”
• Anche oggetti non strettamente elettronici possono essere collegati o
“attuati” tramite Internet
• Ponte tra il mondo reale e “virtuale”
• Potenzialità cloud offerte dal Web (>=2.0) su oggetti che ne sono
esclusi per natura
Arduino in Iot
29/10/2016 56
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Arduino in Iot
29/10/2016 57
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• L'elemento di criticità di questo approccio é che sono pochi i
tentativi di normalizzare i protocolli di comunicazione tra questi
dispositivi - spesso chiusi - , impedendo di avere un approccio
olistico nei confronti della domotica e degli oggetti che parlano alla
rete
• Arduino ha introdotto diversi devices in grado di parlare, in diversi
modi, ad internet
Problematiche sulla connessione alla
rete
29/10/2016 58
IoT e la piattaforma Arduino
Ing. Francesco Pascale
1. Co-processore
• Soluzione adatta per MCU di fascia bassa (core a 8 bit)
• Semplice e veloce per progetti non complessi
• Arduino Ethernet Shield utilizza il coprocessore Wiznet W5100
• Layer di rete TCP/IP implementato in hardware nel chip
• Layer applicativo a carico della MCU
Problematiche sulla connessione alla
rete
29/10/2016 59
IoT e la piattaforma Arduino
Ing. Francesco Pascale
2. MCU con Ethernet
• Si può trovare nelle MCU di fascia media (es. processori Cortex-
M3 in su)
• Layer di rete TCP/IP software nel firmware
• Strato software consistente, ma permette ancora di svolgere compiti
realtime
Problematiche sulla connessione alla
rete
29/10/2016 60
IoT e la piattaforma Arduino
Ing. Francesco Pascale
2. MCU con Ethernet
• Implementazione della crittografia (HTTPS) non banale
• Crescente richiesta di utilizzo di API Web complesse (OAuth,
OpenID, etc.)
• Microcontroller non adatti a gestire questo tipo di applicazioni
Problematiche sulla connessione alla
rete
29/10/2016 61
IoT e la piattaforma Arduino
Ing. Francesco Pascale
3. Embedded PC/SoC (System-on-a-Chip)
• SoC con processori di fascia alta
• Chipset dedicati per il networking
• Software implementa tutti i livelli di rete e applicativi
• Kernel multithread
• Spesso utilizzato GNU/Linux per il vasto supporto e applicazioni
disponibili
Problematiche sulla connessione alla
rete
29/10/2016 62
IoT e la piattaforma Arduino
Ing. Francesco Pascale
3. Embedded PC/SoC (System-on-a-Chip)
• La presenza del kernel non permette controlli realtime
• Mancano (o sono molto complesse da utilizzare) le interfacce
elettriche tipiche dei dispositivi elettronici (SPI, I2C...)
Problematiche sulla connessione alla
rete
29/10/2016 63
IoT e la piattaforma Arduino
Ing. Francesco Pascale
4. Ibrido Soc + MCU
• Modulo SoC affiancato da un microcontroller
• Il micro si interfaccia ai dispositivi elettronici e svolge i task
realtime
• Il modulo SoC ha il ruolo di supervisione e si occupa della
comunicazione internet
Problematiche sulla connessione alla
rete
29/10/2016 64
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Arduino e la connessione alla rete
29/10/2016 65
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Shield Ethernet (Co-processore)
Arduino e la connessione alla rete
29/10/2016 66
IoT e la piattaforma Arduino
Ing. Francesco Pascale
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177);
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
Arduino e la connessione alla rete
29/10/2016 67
IoT e la piattaforma Arduino
Ing. Francesco Pascale
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print(“Start Connection");
Serial.println(Ethernet.localIP());
}
Arduino e la connessione alla rete
29/10/2016 68
IoT e la piattaforma Arduino
Ing. Francesco Pascale
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
while (client.connected()) {
if (client.available()) {
…….
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disconnected");
}
}
Arduino e la connessione alla rete
29/10/2016 69
IoT e la piattaforma Arduino
Ing. Francesco Pascale
https://www.youtube.com/watch?v=nYzEbEOMGuo
Arduino e la connessione alla rete
29/10/2016 70
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Arduino Yun (Ibrido Soc + MCU)
Arduino e la connessione alla rete
29/10/2016 71
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Arduino e la connessione alla rete
29/10/2016 72
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Arduino e la connessione alla rete
29/10/2016 73
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Scheda in modalità Access Point alla prima accensione
• Configurazione tramite WebPanel semplificato
• Programmazione del microcontrollore tramite wireless e tramite
Ethernet
• La libreria Bridge consente la comunicazione tra Arduino e il
sistema operativo (SoC)
• Per poter comunicare si crea una connessione protetta tra Yún ed il
computer via SSH
• La classe Process consente al microcontrollore di richiamare
processi eseguiti dal sistema operativo (SoC)
• Sul processore di YUN è disponibile un server web. Per poterlo
utilizzare bisogna inserire una scheda micro-SD e crearci sopra le
cartelle “/arduino/www” e “/data” che saranno poi utilizzate dal
webserver
Arduino e Cyber Security
29/10/2016 74
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Uno dei problemi principali è quello di garantire la sicurezza dei
dispositivi che si utilizzano
• Spesso errori banali quali rendere l’IP pubblico o non utilizzare
alcun sistema di crittografia dei dati sono alla base di possibili
vulnerabilità
• In generale ogni dispositivo ogni volta che aggiungiamo un
dispositivo alla rete dobbiamo ricordarci che questo dovrà essere
trattato come ogni altro oggetto già esistente, sicurezza inclusa.
• La problematica della Cyber Security in ambito IoT è ad oggi molto
dibattuta
Problematiche generali
29/10/2016 75
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• IP Pubblici
• Comunicazioni non Criptate
• Attacchi DDOS
• Vulnerabilità di sistema
• Credenziali di accesso
• Mancanza di Firewall
• Mancanza di Approccio Middleware (Esempio sistemi Scada)
• …
Come rendere sicuro Arduino come device
IoT: Esempio DDOS
29/10/2016 76
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• Verificare il comportamento le performance dei moduli di rete
ethernet software TCP/IP e hardware TCP/IP nel caso di attacco di
tipo DDOS
• Questo è un caso molto comune al giorno d’oggi in quanto la
saturazione della banda comporta una indisponibilità del sistema che
nel caso di sistemi delicati potrebbe essere un grosso problema
• Nell’esempio verranno valutate le prestazioni di 2 dispositivi in
particolare: Hardware TCP/IP ethernet module - WIZ550io e
Software TCP/IP ethernet module - ENC28J60
• Nell’esempio l’attacco verrà simulato via software tramite il
programma DDOS attack tool : LOIC (Freeware)
Come rendere sicuro Arduino come device
IoT: Esempio DDOS
29/10/2016 77
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Come rendere sicuro Arduino come device
IoT: Esempio DDOS
29/10/2016 78
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Verranno efettuati 4 test in questo modo:
• 1. Hardware TCP/IP Ethernet module / no DDOS network attack
• 2. Hardware TCP/IP Ethernet module / DDOS network attack
• 3. Software TCP/IP Ethernet module / no DDOS network attack
• 4. Software TCP/IP Ethernet module / DDOS network attack
Come rendere sicuro Arduino come device
IoT: Esempio DDOS
29/10/2016 79
IoT e la piattaforma Arduino
Ing. Francesco Pascale
https://player.vimeo.com/video/119504737
Come rendere sicuro Arduino come device
IoT: Esempio DDOS
29/10/2016 80
IoT e la piattaforma Arduino
Ing. Francesco Pascale
https://player.vimeo.com/video/119504736
Come rendere sicuro Arduino come device
IoT: Esempio DDOS
29/10/2016 81
IoT e la piattaforma Arduino
Ing. Francesco Pascale
https://player.vimeo.com/video/119504738
Come rendere sicuro Arduino come device
IoT: Esempio DDOS
29/10/2016 82
IoT e la piattaforma Arduino
Ing. Francesco Pascale
https://player.vimeo.com/video/119504739
Come rendere sicuro Arduino come device
IoT: Esempio DDOS
29/10/2016 83
IoT e la piattaforma Arduino
Ing. Francesco Pascale
Riferimenti
29/10/2016 84
IoT e la piattaforma Arduino
Ing. Francesco Pascale
• http://forum.arduino.cc/index.php?topic=36509.0
• http://thegeniusworkshop.forumcommunity.net/?t=29002947
• http://www.robot-italy.net/roboforum/archive/index.php?t-1429.html
• http://www.baronerosso.it/forum/circuiti-elettronici/254907-linguaggio-c-nel-pic-e-nellarduino.html
• http://electronics.stackexchange.com/questions/159857/how-does-the-arduino-compare-to-pic-and-avr-for-serious-learners
• http://playground.arduino.cc/Italiano/Pobleminoti
• http://it.emcelettronica.com/arduino-ai-raggi-x-cosa-fare-renderlo-professionale-prima-parte
• http://ismanettoneblog.altervista.org/blog/lezione-13-arduino-si-connette-ad-internet-shield-ethernet-ufficiale/
• http://www.html.it/pag/48799/arduino-e-la-connessione-a-internet/
• http://www.html.it/pag/49123/iot-la-scelta-del-protocollo-http-vs-mqtt/
• http://ismanettoneblog.altervista.org/blog/lezione-13-arduino-si-connette-ad-internet-shield-ethernet-ufficiale/
• http://www.betterembedded.it/media/conference/slides/arduino-e-linternet-delle-cose.pdf
• https://www.digital4.biz/executive/approfondimenti/internet-of-things-ecco-due-tecnologie-da-conoscere-di-cui-una-
italiana_4367215615.htm
• http://www.logicaprogrammabile.it/arduino-ethernet-shield-controllo-remoto-via-web-con-http/
• http://www.competere.eu/news_detail.php?id=338
• https://www.reddit.com/r/AskNetsec/comments/2sk0zp/cyber_security_and_arduino/
• http://www.scoop.it/t/cybersecurity-by-milos-constantin/?tag=Arduino
• http://www.instructables.com/id/How-to-make-unattackable-secure-arduino-IoT-device/
• https://www.researchgate.net/publication/291956647_Network_Security_ARDUINO_Yun_Based_IDS
• http://www.giordanicaserta.it/frapec/clang/yun.htm
• http://www.slideshare.net/emcelettronica/come-rendere-arduino-professionale
• http://www.alberti-porro.gov.it/wordpress/wp-content/uploads/2014/01/ProgrammareArduino.pdf
• http://www.diee.unica.it/eolab2/ASE-0607/Lucidi-ASE-0607-A.pdf
Grazie per
l’attenzione
Ing. Francesco Pascal
Software Engineer
francescopascale87@gmail.com

More Related Content

What's hot

Corso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino GenuinoCorso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino GenuinoMauro Alfieri
 
Introduzione a Arduino
Introduzione a ArduinoIntroduzione a Arduino
Introduzione a ArduinoPietro Aiuola
 
Lezione 1 arduino - corso 20 ore
Lezione 1 arduino - corso 20 oreLezione 1 arduino - corso 20 ore
Lezione 1 arduino - corso 20 oreMirko Mancin
 
Intro to Arduino
Intro to ArduinoIntro to Arduino
Intro to ArduinotrevisoAUG
 
Lezione introduttiva su Arduino
Lezione introduttiva su ArduinoLezione introduttiva su Arduino
Lezione introduttiva su ArduinoMirko Mancin
 
Arduino basic workshop
Arduino basic workshopArduino basic workshop
Arduino basic workshopDaniele Iori
 
Arduino: breve introduzione & progetti
Arduino: breve introduzione & progettiArduino: breve introduzione & progetti
Arduino: breve introduzione & progettiMirco Piccin
 
Workshop Arduino by Fiore Basile
Workshop Arduino by Fiore BasileWorkshop Arduino by Fiore Basile
Workshop Arduino by Fiore BasileCommit University
 
Corso Arduino Base - MUST
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUSTOPS Italia
 
Come rendere Arduino professionale
Come rendere Arduino professionaleCome rendere Arduino professionale
Come rendere Arduino professionaleEmanuele Bonanni
 
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11
Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11Ionela
 
Arduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteArduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteMirco Sbrollini
 
Arduino prima spiegazione
Arduino  prima spiegazioneArduino  prima spiegazione
Arduino prima spiegazioneFlaviano Fior
 
Introduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: ArduinoIntroduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: ArduinoStefano Varano
 
Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1Daniele Costarella
 
Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011Michele Maffucci
 

What's hot (20)

Corso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino GenuinoCorso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino Genuino
 
Introduzione a Arduino
Introduzione a ArduinoIntroduzione a Arduino
Introduzione a Arduino
 
Lezione 1 arduino - corso 20 ore
Lezione 1 arduino - corso 20 oreLezione 1 arduino - corso 20 ore
Lezione 1 arduino - corso 20 ore
 
Intro to Arduino
Intro to ArduinoIntro to Arduino
Intro to Arduino
 
Lezione introduttiva su Arduino
Lezione introduttiva su ArduinoLezione introduttiva su Arduino
Lezione introduttiva su Arduino
 
Arduino&Raspberry
Arduino&RaspberryArduino&Raspberry
Arduino&Raspberry
 
Arduino basic workshop
Arduino basic workshopArduino basic workshop
Arduino basic workshop
 
Arduino: breve introduzione & progetti
Arduino: breve introduzione & progettiArduino: breve introduzione & progetti
Arduino: breve introduzione & progetti
 
Workshop Arduino by Fiore Basile
Workshop Arduino by Fiore BasileWorkshop Arduino by Fiore Basile
Workshop Arduino by Fiore Basile
 
Corso Arduino Base - MUST
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUST
 
Workshop su Arduino
Workshop su ArduinoWorkshop su Arduino
Workshop su Arduino
 
Come rendere Arduino professionale
Come rendere Arduino professionaleCome rendere Arduino professionale
Come rendere Arduino professionale
 
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11
Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11
 
Introduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLabIntroduzione ad Arduino del Maker DevLab
Introduzione ad Arduino del Maker DevLab
 
Arduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteArduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolante
 
Arduino prima spiegazione
Arduino  prima spiegazioneArduino  prima spiegazione
Arduino prima spiegazione
 
Introduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: ArduinoIntroduzione all'elettronica con i microcontrollori: Arduino
Introduzione all'elettronica con i microcontrollori: Arduino
 
Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1
 
Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011
 
Arduino primo v1
Arduino primo v1Arduino primo v1
Arduino primo v1
 

Similar to Arduino ICT2016 [IT]

Microcontrollori
MicrocontrolloriMicrocontrollori
Microcontrollorisamu97
 
Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2Michele Maffucci
 
Csp@scuola uav corso1_lez3
Csp@scuola uav corso1_lez3Csp@scuola uav corso1_lez3
Csp@scuola uav corso1_lez3CSP Scarl
 
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012Mirco Piccin
 
Lezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreMirko Mancin
 
LinuxDay 2010, Arduino il re dell'hardware open
LinuxDay 2010, Arduino il re dell'hardware openLinuxDay 2010, Arduino il re dell'hardware open
LinuxDay 2010, Arduino il re dell'hardware openMauro Fava
 
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...Ionela
 
Arduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteArduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteMirco Sbrollini
 
Free Software e Open Hardware
Free Software e Open HardwareFree Software e Open Hardware
Free Software e Open HardwareStefano Sanna
 
Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3Daniele Costarella
 
Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3Salvatore Carotenuto
 
Stm32 vl discovery recensione - 2010-11-11
Stm32 vl discovery   recensione  - 2010-11-11Stm32 vl discovery   recensione  - 2010-11-11
Stm32 vl discovery recensione - 2010-11-11Ionela
 
Fpga il componente universale 2010-11-09
Fpga  il componente universale   2010-11-09Fpga  il componente universale   2010-11-09
Fpga il componente universale 2010-11-09Ionela
 
Review4 u icd2 mplab pic programmer 2010-11-02
Review4 u icd2 mplab pic programmer   2010-11-02Review4 u icd2 mplab pic programmer   2010-11-02
Review4 u icd2 mplab pic programmer 2010-11-02Ionela
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embeddedDaniele Costarella
 
LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino Matteo Troìa
 

Similar to Arduino ICT2016 [IT] (20)

Microcontrollori
MicrocontrolloriMicrocontrollori
Microcontrollori
 
Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2
 
Csp@scuola uav corso1_lez3
Csp@scuola uav corso1_lez3Csp@scuola uav corso1_lez3
Csp@scuola uav corso1_lez3
 
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
Arduino : l'esperienza di IRES FVG - OpenSourceDay2012
 
Arduino day 2017
Arduino day 2017Arduino day 2017
Arduino day 2017
 
Lezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 ore
 
LinuxDay 2010, Arduino il re dell'hardware open
LinuxDay 2010, Arduino il re dell'hardware openLinuxDay 2010, Arduino il re dell'hardware open
LinuxDay 2010, Arduino il re dell'hardware open
 
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
Come Abilitare La Connettività Usb Con La Famiglia Di Js16 8 A 8 Bit Della Fr...
 
Grix.it wood board usb
Grix.it    wood board usbGrix.it    wood board usb
Grix.it wood board usb
 
Raspberry
RaspberryRaspberry
Raspberry
 
Arduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincenteArduino&raspberry pi - Un connubio vincente
Arduino&raspberry pi - Un connubio vincente
 
Free Software e Open Hardware
Free Software e Open HardwareFree Software e Open Hardware
Free Software e Open Hardware
 
Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3
 
Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3Electronics LAB [with Arduino] | DAY 3
Electronics LAB [with Arduino] | DAY 3
 
Stm32 vl discovery recensione - 2010-11-11
Stm32 vl discovery   recensione  - 2010-11-11Stm32 vl discovery   recensione  - 2010-11-11
Stm32 vl discovery recensione - 2010-11-11
 
Tesi
TesiTesi
Tesi
 
Fpga il componente universale 2010-11-09
Fpga  il componente universale   2010-11-09Fpga  il componente universale   2010-11-09
Fpga il componente universale 2010-11-09
 
Review4 u icd2 mplab pic programmer 2010-11-02
Review4 u icd2 mplab pic programmer   2010-11-02Review4 u icd2 mplab pic programmer   2010-11-02
Review4 u icd2 mplab pic programmer 2010-11-02
 
Software libero nei sistemi embedded
Software libero nei sistemi embeddedSoftware libero nei sistemi embedded
Software libero nei sistemi embedded
 
LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino
 

Arduino ICT2016 [IT]

  • 1. La frontiera dell’Internet of Things IoT e la piattaforma Arduino Ing. Francesco Pascale Software Engineer francescopascale87@gmail.com
  • 2. OUTLINE Arduino – Architettura e moduli – La programmazione Arduino – Librerie – Esempio Differenze tra Arduino e un Microcontrollore PIC – Dispositivi a confronto – Codici a confronto Microcontrollore vs Microprocessore – Differenze – Esempi di utilizzo Problematiche in Arduino – Problemi noti risolti – Come rendere arduino professionale: alcune problematiche 29/10/2016 2 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 3. OUTLINE Come strutturare la progettazione e lo sviluppo di un sistema embedded – Definizione dell’architettura – Sviluppo SW-FW e HW – Esempi di Sistemi Embedded Arduino in Iot – Problematiche sulla connessione alla rete per un MCU – Arduino e la connessione alla rete Arduino e Cyber Security – Problematiche generali – Come rendere sicuro Arduino come device IoT: Esempio DDOS 29/10/2016 3 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 4. Arduino • Arduino è una scheda elettronica dotata di un microcontrollore ATmega, sviluppata da alcuni membri dell'Interaction Design Institute di Ivrea • L’hardware nella sua versione Arduino uno è composto da un circuito stampato in cui sono presenti un microcontrollore (Atmega328) con dei pin connessi alle porte I/O, un regolatore di tensione, un header ICSP (In-Circuit Serial Programming), un jack di alimentazione, un risuonatore utilizzato come oscillatore, un pulsante di reset e un'interfaccia USB che permette la comunicazione con il computer. • L'ambiente di sviluppo integrato (IDE) di Arduino è un'applicazione multipiattaforma in Java (per Linux, Apple Macintosh e Windows 29/10/2016 4 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 5. Arduino • l'IDE include un editor di testo con al suo interno syntax highlighting per il controllo delle parentesi e l'indentazione automatica • L'editor è inoltre in grado di compilare e lanciare il programma eseguibile in una sola passata e con un solo click. In genere non vi è bisogno di creare dei Makefile o far girare programmi dalla riga di comando • L'ambiente di sviluppo integrato di Arduino è fornito di una libreria software C/C++ che prende il nome di wiring • L’IDE Arduino è gratuito e scaricabile dal sito ufficiale https://www.arduino.cc/en/Main/Software con licenza GNU GPLv2 • I programmi in Arduino vengono prendono il nome di sketch • E’possibile sviluppare programmi per connettere, a questo hardware, più o meno qualsiasi oggetto elettronico, computer, sensori, display o attuatori 29/10/2016 5 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 6. Architettura e Moduli 29/10/2016 6 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 7. Architettura e Moduli 29/10/2016 7 IoT e la piattaforma Arduino Ing. Francesco Pascale Componente Caratteristiche Microcontroller Atmega328 Tensione di funzionamento 5V Tensione in ingresso 7-12V (consigliata) Tensione in ingresso 6-20V (limiti) I / O digitali 14 (di cui 6 di fornire output PWM) Ingressi analogici 6 Corrente continua per I / O Pin 40 mA Corrente per Pin 3,3 V CC 50 mA Flash Memory 32 KB di cui 0,5 KB utilizzati dal bootloader SRAM 2 KB EEPROM 1 KB Velocità di clock 16 MHz Riepilogo caratteristiche Principali
  • 8. Architettura e Moduli 29/10/2016 8 IoT e la piattaforma Arduino Ing. Francesco Pascale • Generalmente il microcontrollore della scheda è pre-programmato con un bootloader che semplifica il caricamento dei programmi sulla memoria flash incorporata nel chip • Per alimentare il microcontrollore, è sufficiente collegarsi a un computer con un cavo USB (l'alimentazione può essere derivata alla presa USB) oppure alimentare con un adattatore AC-DC oppure tramite batteria • La Scheda Arduino Uno si differenzia principalmente da tutte le schede precedenti, dal fatto che non usa come convertitore USB/seriale un chip driver FTDI ma è utilizzato un processore Atmega8U2 programmato come convertitore seriale/USB
  • 9. La programmazione Arduino 29/10/2016 9 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 10. La programmazione Arduino 29/10/2016 10 IoT e la piattaforma Arduino Ing. Francesco Pascale Per poter creare un file eseguibile, non è richiesto di scrivere un programma in C, ma solo di definire due funzioni: void setup () funzione invocata una sola volta all'inizio di un programma che può essere utilizzata per i settaggi iniziali void loop () funzione invocata ripetutamente, la cui esecuzione si interrompe solo con lo spegnimento della scheda
  • 11. La programmazione Arduino 29/10/2016 11 IoT e la piattaforma Arduino Ing. Francesco Pascale 1 #define LED_PIN 13 2 3 void setup () { 4 pinMode (LED_PIN, OUTPUT); // abilita il pin 13 per l'output digitale 5 } 6 7 void loop () { 8 digitalWrite (LED_PIN, HIGH); // accende il LED 9 delay (1000); // aspetta 1 secondo (1000 millisecondi) 10 digitalWrite (LED_PIN, LOW); // spegne il LED 11 delay (1000); // aspetta un secondo 12 } Un tipico esempio di programma per iniziare a far pratica con un microcontrollore è quello che permette l'accensione ripetuta di un LED
  • 12. La programmazione Arduino 29/10/2016 12 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 13. La programmazione Arduino 29/10/2016 13 IoT e la piattaforma Arduino Ing. Francesco Pascale 1 #include "WProgram.h" // include la libreria WProgram 2 #define LED_PIN 13 3 4 void setup () { 5 pinMode (LED_PIN, OUTPUT); // abilita il pin 13 per l'output digitale 6 } 7 8 void loop () { 9 digitalWrite (LED_PIN, HIGH); // accende il LED 10 delay (1000); // aspetta 1 secondo (1000 millisecondi) 11 digitalWrite (LED_PIN, LOW); // spegne il LED 12 delay (1000); // aspetta 1 secondo 13 } 14 15 int main(void) 16 { 17 init(); 18 19 setup(); 20 21 for (;;) 22 loop(); 23 24 return 0; 25 } Quando l'utilizzatore seleziona il bottone di comando "Upload to I/O board" (presente nell'IDE), una copia del codice viene automaticamente trascritta in un file temporaneo con l'aggiunta di un extra include header all'inizio del codice e l'implementazione di una semplicissima funzione main()
  • 14. La programmazione Arduino 29/10/2016 14 IoT e la piattaforma Arduino Ing. Francesco Pascale • "WProgram.h" è lo header file principale per la libreria Wiring. • La funzione main() effettua solo tre chiamate, init(), setup() e loop(); • le ultime due sono definite dall'utente, mentre la prima è scritta nella libreria stessa. • La funzione loop(), come richiesto, è automaticamente nidificata in un loop infinito
  • 15. La programmazione Arduino 29/10/2016 15 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 16. La programmazione Arduino 29/10/2016 16 IoT e la piattaforma Arduino Ing. Francesco Pascale Sintassi • Punto e virgola ; • Le parentesi graffe { }
  • 17. La programmazione Arduino 29/10/2016 17 IoT e la piattaforma Arduino Ing. Francesco Pascale • Commenti – Blocco di commenti /* …. */ – Linea di commento // Funzioni • Dichiarazione di funzione
  • 18. La programmazione Arduino 29/10/2016 18 IoT e la piattaforma Arduino Ing. Francesco Pascale Le costanti • Costanti booleane • Costanti INPUT e OUTPUT – INPUT – OUTPUT • Costanti HIGH e LOW – HIGH – LOW • Costanti a numero interi ( Integer ) • Formattatori U e L (Unsigned e Long)
  • 19. La programmazione Arduino 29/10/2016 19 IoT e la piattaforma Arduino Ing. Francesco Pascale Le variabili • Dichiarazione di una variabile int inputVar=0; //inizializza la variabile di nome inputVar inputVar=analogRead(2); // assegna alla variabile su inizializzata il valore // letto dal pin analogico 2 variandone il contenuto • Variabile globale e locali
  • 20. La programmazione Arduino 29/10/2016 20 IoT e la piattaforma Arduino Ing. Francesco Pascale • Static • const – #define or const
  • 21. La programmazione Arduino 29/10/2016 21 IoT e la piattaforma Arduino Ing. Francesco Pascale Tipo di dati • Void (dichiarazione di funzione che non restituisce un risultato) • Boolean (variabile di tipo true o false) • Char (1 byte 1 Carattere da 0 a 255 ASCII) • Unsigned Char • Byte (8bit Es. B010101) • Int (2 byte interi da -32768 a 32767) • Unsigned int • Word (2 byte senza segno) • Long (4byte) • unsigned long (4byte senza segno) • char array - String (Stringhe di caratteri) – Array di char (Es. char Str[ ]= “arduino”; ) – Array di stringhe (Es. char* mieStringhe[ ]= { “Stringa 1”, “Stringa 2”, “Stringa 3”, “Stringa 4”, “Stringa 5” };) – String – oggetto (classe) • Array – Creazione e/o dichiarazione di un array Es. int mioArray[]={1,2,3,4,5}; – Accesso agli elementi di un array Es. int var = mioArray[n]; – Assegnare un valore ad un array Es. mioArray[n]=3;
  • 22. La programmazione Arduino 29/10/2016 22 IoT e la piattaforma Arduino Ing. Francesco Pascale Istruzioni condizionali • Istruzione if • Condizioni if/else • Istruzioni switch … case • Istruzione for / ciclo for • Ciclo while • Ciclo do/while • Break • continue • Return • #define
  • 23. La programmazione Arduino 29/10/2016 23 IoT e la piattaforma Arduino Ing. Francesco Pascale Operatori aritmetici • Operatore di assegnamento = • Addizione(+), sottrazione (-), moltiplicazione (*) e divisione ( / ) • Modulo % Operatori di confronto • Operatore booleano – && operatore AND – || operatore OR – ! operatore not • Operatori tra bit ( su interi a 16 bit ) – AND tra bit & – Operatore OR tra bit | – Operatore tra bit XOR – Operatore NOT tra bit ~ • Scorrimento verso sinistra (<<) e verso destra ( >> ) – Operatori composti – ++ (incremento) - - (decremento) – += -= *= /= • AND composto tra bit (&=) e OR composto tra bit ( | = ) – AND composto ( & =) – OR composto ( |= )
  • 24. La programmazione Arduino 29/10/2016 24 IoT e la piattaforma Arduino Ing. Francesco Pascale Funzioni I/O • I/O digitali – pinMode(pin,mode); – digitalWrite – digitalWrite(pin,valore) – digitalRead • I/O analogici – analogReference(type) – analogRead() – analogWrite( ) • Time – mills() – micros( ) – delay( ) – delayMicroseconds()
  • 25. La programmazione Arduino 29/10/2016 25 IoT e la piattaforma Arduino Ing. Francesco Pascale Altre Funzioni • min(x,y) • max(x,y) • abs(x) • sin(rad) • cos(rad) • tan(rad) • lowByte() • highByte( ) • bitRead( ) • Serial – begin() – end( ) – available( ) – read( ) – flush( ) – print( ) – println( ) – write( )
  • 26. Librerie 29/10/2016 26 IoT e la piattaforma Arduino Ing. Francesco Pascale • Esistono vari tipi di librerie, quelle standard (10) e quelle terze parti • Alle librerie terze parti appartengono quelle sviluppate per supportare in modo specifico uno shield o un particolare chip, quelle legate ad hardware specifici e le librerie funzionali • Tutte le librerie sono pensate al fine di migliorare e di espandere le potenzialità di arduino sui vari dispositivi
  • 27. Librerie 29/10/2016 27 IoT e la piattaforma Arduino Ing. Francesco Pascale • EEPROM – per leggere e scrivere su memorie EEPROM, che conservano i dati anche senza alimentazione • Ethernet - per collegarsi ad Internet e a una rete Ethernet attraverso Arduino Ethernet Shield • Firmata – per comunicare con il computer collegato ad Arduino secondo un protocollo standard • LiquidCrystal – per gestire i display a cristalli liquidi basati su controller HD44780 o compatibile (LCD) • SD – per leggere e scrivere le schede di memoria SD. • Servo – per controllare i servomotori (I/O PWM) • SPI – per dialogare con dispositivi che utilizzano l’interfaccia e il protocollo Serial Peripheral Interface (SPI) • SoftwareSerial – per creare una porta seriale su qualsiasi pin digitale • Stepper – per gestire i motori passo passo (stepper) • Wire - per gestire la comunicazione con uno o più dispositivi che impiegano la modalità di comunicazione a due fili Two Wire Interface (TWI/I2C) Librerie Standard
  • 28. Esempio 29/10/2016 28 IoT e la piattaforma Arduino Ing. Francesco Pascale /* uso del display LCD 16x2 standard Hitachi HD44780 Circuito: * pin RS collegato al pin digitale 12 * pin E (Enable) collegato al pin digitale 11 * pin D4 collegato al pin digitale 5 * pin D5 collegato al pin digitale 4 * pin D6 collegato al pin digitale 3 * pin D7 collegato al pin digitale 2 * pin R/W collegato al GND * pin 1 e pin 4 collegati a GND * pin 2 collegato a +Vcc * centrale del potenziometro/trimmer da 10 KOhm collegato al pin 3 del'LCD * pin SX potenziometro/trimmer collegato a +Vcc * pin DX potenziometro/trimmer collegato a GND * i pin SX e DX del potenziometro/trimmer possono essere interscambiati */ // includere la libreria: #include <LiquidCrystal.h> /* Viene creata l'istanza dell'oggetto LiquidCrystal chiamata lcd in cui sono indicati i pin dell'LCD collegati alle uscite digitali di Arduino */ LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  • 29. Esempio 29/10/2016 29 IoT e la piattaforma Arduino Ing. Francesco Pascale void setup() { //impostiamo il numero di colonne ed il numero di righe di lcd lcd.begin(16, 2); // Visualizzo il messaggio sul display lcd.print("Salve mondo!"); } void loop() { // posiziona il cursore in colonna 0 e linea 1 // (nota: la linea 1 e la seconda linea, poichè si conta incominciando da 0): lcd.setCursor(0, 1); // stampa il numero di secondi dall'ultimo reset lcd.print(millis()/1000); }
  • 30. Esempio 29/10/2016 30 IoT e la piattaforma Arduino Ing. Francesco Pascale https://www.arduino.cc/en/Reference/LiquidCrystal
  • 31. Esempio 29/10/2016 31 IoT e la piattaforma Arduino Ing. Francesco Pascale https://www.youtube.com/watch?v=i2r7rSvAwBw
  • 32. Differenze tra Arduino e un Microcontrollore PIC 29/10/2016 32 IoT e la piattaforma Arduino Ing. Francesco Pascale • Arduino come detto fa parte della famiglia dei microcontrollori ed è dotato nella sua versione Arduino uno di un microcontrollore Atmega328 • PIC è una famiglia di circuiti integrati a semiconduttore con funzioni di microcontrollore • Il PIC è un microcontrollore che opportunamente programmato è in grado di svolgere diverse funzioni in modo autonomo. Essenzialmente gestisce delle linee di input e di output in relazione al programma in esso implementato • Molto utilizzati soprattutto nel settore industriali e dell’automazione, ma anche in ambito biomedico e domotico
  • 33. Dispositivi a confronto 29/10/2016 33 IoT e la piattaforma Arduino Ing. Francesco Pascale PIC1655AAtmega328
  • 34. Dispositivi a confronto 29/10/2016 34 IoT e la piattaforma Arduino Ing. Francesco Pascale • I microcontrollori PIC equelli della famiglia AVR prodotti dalla Atmel usati da Arduino presi in considerazione hanno architettura RISC • I PIC sono disponibili nelle versioni 8 bit, 16 bit e 32bit, mentre AVR presente su Arduino Uno è a 8 bit • I PIC sono programmabili in Assembler o C mentre con Arduino è possibile utilizzare codice derivato da C/C++
  • 35. Dispositivi a confronto 29/10/2016 35 IoT e la piattaforma Arduino Ing. Francesco Pascale • Per programmare un PIC c’è bisogno di programmi appositi (Es. Ktechlab) mentre Arduino è dotato di un proprio IDE • Il costo di un microcontrollore PIC varia dai 2€ ai 5€ in base al modello, mentre quello di un Arduino varia dai 10€ ai 40€ • Il PIC è un chip al quale vanno collegati tutti gli altri elementi hardware, mentre Arduino essere una board già completa e dotata di altri elementi può essere utilizzata facilmente e a questo si aggiunge la possibilità di montarci sopra altre shield per ampliarle sue funzionalità
  • 36. Codici a confronto 29/10/2016 36 IoT e la piattaforma Arduino Ing. Francesco Pascale Led_on_off ; setup a pointer to the base address of port 1 LDR R1,=0x2009c020 ; pointer to base of port1 loop LDR R3,=0x00000000 ; set LED 1 off (all bits 'zero') CALL Delay LDR R3,=0x00040000 ; set LED 1 on (bit 18 aka P1.18 is 'one') CALL Delay B loop ; branch to loop (endless loop!) Delay … END
  • 37. Microcontrollore vs Microprocessore 29/10/2016 37 IoT e la piattaforma Arduino Ing. Francesco Pascale Microcontrollore: dispositivo elettronico integrato su singolo chip, che nasce come evoluzione del Microprocessore, utilizzato all’interno dei sistemi embedded (special purpose) Microprocessore: Processore elettronico costituito da uno o più circuiti integrati di dimensioni molto ridotte
  • 38. Differenze 29/10/2016 38 IoT e la piattaforma Arduino Ing. Francesco Pascale • Un microprocessore è attualmente l'implementazione fisica più comune di una CPU ed ha bisogno di elementi esterni per funzionare (Es. memoria, periferiche I/O), mentre un microcontrollore, riunisce tutti gli elementi all'interno di un unico piccolo contenitore • Le capacità di calcolo di un microcontrollore sono estremamente ridotte. Ad esempio la memoria RAM è formata da qualche centinaio di celle, e di solito non è espandibile. I microprocessori, al contrario, possono essere usati per effettuare elaborazioni complesse su grandi quantità di informazioni
  • 39. Differenze 29/10/2016 39 IoT e la piattaforma Arduino Ing. Francesco Pascale • I microcontrollori vengono utilizzati per gli antifurti, gli strumenti di misurazione, quelli per la regolazione della luminosità, i carica batterie e i trasmettitori/ricevitori. I microprocessori invece sono il core di elaborazione all’interno dei PC, capace di leggere, elaborare e scrivere informazioni in una memoria o in altri dispositivi digitali • I microprocessori eseguono i programmi applicativi sfruttando dispositivi di memoria di massa o a memoria volatile, i microcontrollori eseguono il programma applicativo che è solitamente memorizzato su un dispositivo di memoria ROM.
  • 40. Esempi di utilizzo 29/10/2016 40 IoT e la piattaforma Arduino Ing. Francesco Pascale Personal Computer Domotica
  • 41. Problematiche in Arduino 29/10/2016 41 IoT e la piattaforma Arduino Ing. Francesco Pascale • Uno dei problemi principali su Arduino è la saturazione della memoria. Questo avviene quando ad esempio si alloca più spazio di quello disponibile in fase di inizializzazione o durante un ciclo Questo problema prende il nome di Stack Overflow
  • 42. Problematiche in Arduino 29/10/2016 42 IoT e la piattaforma Arduino Ing. Francesco Pascale • La saturazione della RAM porta a comportamenti strani del microcontrollore dato che i dati delle variabili iniziano ad essere recuperati a caso nella memoria, portando ad esempio a visualizzazioni di caratteri strani su un display LCD, alla stampa di dati senza senso sulla seriale oppure al blocco stesso dell’esecuzione del codice. • La saturazione della RAM è anche un problema che spesso non viene diagnosticato correttamente: l’utente, spesso, pensa che i motivi di queste anomalie possano risiedere nel suo codice oppure nello stesso circuito
  • 43. Problematiche in Arduino 29/10/2016 43 IoT e la piattaforma Arduino Ing. Francesco Pascale Come prevenire lo stack overflow? • Attraverso un software messo a disposizione dalla toolchain Avr, avr-size. Questo programma restituisce l’occupazione statica di RAM e della FLASH analizzando lo sketch compilato, prima di farne l’upload sul microcontrollore
  • 44. Problematiche in Arduino 29/10/2016 44 IoT e la piattaforma Arduino Ing. Francesco Pascale Come prevenire lo stack overflow? • Attraverso l’uso di una libreria denominata MemoryFree che permette di avere il consumo di memoria istantaneo, vale a dire durante l’esecuzione del programma stesso
  • 45. Problematiche in Arduino 29/10/2016 45 IoT e la piattaforma Arduino Ing. Francesco Pascale Come prevenire lo stack overflow? • Attraverso la funzione freeRam che fa semplicemente la differenza fra l’indirizzo di inizio dell’HEAP e quello di inizio dello STACK, restituendo il numero di byte di SRAM ancora disponibili
  • 46. Problemi noti risolti 29/10/2016 46 IoT e la piattaforma Arduino Ing. Francesco Pascale Esistono una serie di problemi noti risolti che sono riportati sul sito ufficiale di Arduino: http://playground.arduino.cc/Italiano/Pobleminoti Questi problemi riguardano sia l’hardware che il software che sono stati rilevati dalla community nel corso degli anni. Sul portale è possibile segnalare un nuovo problema ancora non riscontrato il quale verrà poi trattato ed elaborato al fine di ottenere la risoluzione dello stesso
  • 47. Problemi noti risolti 29/10/2016 47 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 48. Problemi noti risolti 29/10/2016 48 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 49. Come rendere Arduino professionale: Alcune problematiche 29/10/2016 49 IoT e la piattaforma Arduino Ing. Francesco Pascale • Alimentazione della scheda: nel momento in cui la scheda va su un circuito più complesso che deve essere alimentato ad un voltaggio maggiore (Es. 12V) si rischia di avere dei problemi. Questo può essere risolto con un regolatore di tensione o con un alimentazione a voltaggio differente • Protezione degli I/O : i pin Input e Output non sono protetti e come tale se li colleghiamo male o gli applichiamo una sovratensione si rischia di bruciare tutto. Questo può essere risolto sia facendo molta attenzione sia aggiungendo ad esempio delle resistenze di protezione in serie • Vibrazioni meccaniche della board: E’ possibile che durante l’utilizzo vi possano essere delle vibrazioni meccaniche che possono andare a danneggiare la board. E’ possibile ovviare a ciò andando ad applicare dei fissaggi meccanici
  • 50. Come strutturare la progettazione e lo sviluppo di un sistema embedded 29/10/2016 50 IoT e la piattaforma Arduino Ing. Francesco Pascale Un sistema embedded è un sistema sia hardware che software, progettato appositamente per una determinata applicazione (special purpose)
  • 51. DEFINIZIONE DELL’ARCHITETTURA 29/10/2016 51 IoT e la piattaforma Arduino Ing. Francesco Pascale • Durante questa fase si pongono le basi per la definizione dell’architettura di base del sistema e la scelta dei componenti da utilizzare. • Verranno effettuate scelte sia tecniche che economiche che di reperibilità • Successivamente verrà mappata l’applicazione scelta sull’architettura e si stimano le prestazioni • Questa fase iniziale richiede molto tempo e preparazione da parte di chi la svolge
  • 52. SVILUPPO SW-FW e HW 29/10/2016 52 IoT e la piattaforma Arduino Ing. Francesco Pascale • Lo Sviluppo Software-Firmware consiste nella programmazione vera e propria del sistema e consiste in: Codifica dell’algoritmo, definizione e codifica dei protocolli di comunicazione interni ed esterni, customizzazione delle routine di sistema. •Lo sviluppo Hardware consiste nella realizzazione EX-NOVO o nella personalizzazione di Circuiti dedicati. Questo avviene quando non è possibile utilizzare componenti hardware già implementati quali microprocessori o microcontrollori •Le due fasi vengono svolte in stretto contatto tra di loro
  • 53. Esempi di Sistemi Embedded 29/10/2016 53 IoT e la piattaforma Arduino Ing. Francesco Pascale • Telefoni Cellulari (WAP, UMTS, ECC.) • Sottosistemi intelligenti per il controlo di funzionalità particolari di auto, treni o aerei (AUTOMOTIVE). Ad Esempio il sistena ABS, il sistema di controllo dei tergicristalli, sistema di espulsione degli AIRBAG o la centralina di bordo • Dispositivi e/o sensori collegati in rete per l’automazione di una casa (HOME AUTOMATION) • Riproduttori digitali di suoni portatile ES. Lettore MP3; • Telecamere di • Elettrodomestici intelligenti (MACCHINA DA CAFFÈ;FRIGORIFERO; CONDIZIONATORE; ECC.) • Dispositivi di automazione di macchine industriali
  • 54. Esempi di Sistemi Embedded 29/10/2016 54 IoT e la piattaforma Arduino Ing. Francesco Pascale https://www.youtube.com/watch?v=nfqEt4SSFsQ
  • 55. Arduino in Iot 29/10/2016 55 IoT e la piattaforma Arduino Ing. Francesco Pascale • Utilizzare la rete Internet per far comunicare tra di loro “oggetti” • Anche oggetti non strettamente elettronici possono essere collegati o “attuati” tramite Internet • Ponte tra il mondo reale e “virtuale” • Potenzialità cloud offerte dal Web (>=2.0) su oggetti che ne sono esclusi per natura
  • 56. Arduino in Iot 29/10/2016 56 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 57. Arduino in Iot 29/10/2016 57 IoT e la piattaforma Arduino Ing. Francesco Pascale • L'elemento di criticità di questo approccio é che sono pochi i tentativi di normalizzare i protocolli di comunicazione tra questi dispositivi - spesso chiusi - , impedendo di avere un approccio olistico nei confronti della domotica e degli oggetti che parlano alla rete • Arduino ha introdotto diversi devices in grado di parlare, in diversi modi, ad internet
  • 58. Problematiche sulla connessione alla rete 29/10/2016 58 IoT e la piattaforma Arduino Ing. Francesco Pascale 1. Co-processore • Soluzione adatta per MCU di fascia bassa (core a 8 bit) • Semplice e veloce per progetti non complessi • Arduino Ethernet Shield utilizza il coprocessore Wiznet W5100 • Layer di rete TCP/IP implementato in hardware nel chip • Layer applicativo a carico della MCU
  • 59. Problematiche sulla connessione alla rete 29/10/2016 59 IoT e la piattaforma Arduino Ing. Francesco Pascale 2. MCU con Ethernet • Si può trovare nelle MCU di fascia media (es. processori Cortex- M3 in su) • Layer di rete TCP/IP software nel firmware • Strato software consistente, ma permette ancora di svolgere compiti realtime
  • 60. Problematiche sulla connessione alla rete 29/10/2016 60 IoT e la piattaforma Arduino Ing. Francesco Pascale 2. MCU con Ethernet • Implementazione della crittografia (HTTPS) non banale • Crescente richiesta di utilizzo di API Web complesse (OAuth, OpenID, etc.) • Microcontroller non adatti a gestire questo tipo di applicazioni
  • 61. Problematiche sulla connessione alla rete 29/10/2016 61 IoT e la piattaforma Arduino Ing. Francesco Pascale 3. Embedded PC/SoC (System-on-a-Chip) • SoC con processori di fascia alta • Chipset dedicati per il networking • Software implementa tutti i livelli di rete e applicativi • Kernel multithread • Spesso utilizzato GNU/Linux per il vasto supporto e applicazioni disponibili
  • 62. Problematiche sulla connessione alla rete 29/10/2016 62 IoT e la piattaforma Arduino Ing. Francesco Pascale 3. Embedded PC/SoC (System-on-a-Chip) • La presenza del kernel non permette controlli realtime • Mancano (o sono molto complesse da utilizzare) le interfacce elettriche tipiche dei dispositivi elettronici (SPI, I2C...)
  • 63. Problematiche sulla connessione alla rete 29/10/2016 63 IoT e la piattaforma Arduino Ing. Francesco Pascale 4. Ibrido Soc + MCU • Modulo SoC affiancato da un microcontroller • Il micro si interfaccia ai dispositivi elettronici e svolge i task realtime • Il modulo SoC ha il ruolo di supervisione e si occupa della comunicazione internet
  • 64. Problematiche sulla connessione alla rete 29/10/2016 64 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 65. Arduino e la connessione alla rete 29/10/2016 65 IoT e la piattaforma Arduino Ing. Francesco Pascale Shield Ethernet (Co-processore)
  • 66. Arduino e la connessione alla rete 29/10/2016 66 IoT e la piattaforma Arduino Ing. Francesco Pascale #include <SPI.h> #include <Ethernet.h> // Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 1, 177); // Initialize the Ethernet server library // with the IP address and port you want to use // (port 80 is default for HTTP): EthernetServer server(80);
  • 67. Arduino e la connessione alla rete 29/10/2016 67 IoT e la piattaforma Arduino Ing. Francesco Pascale void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } // start the Ethernet connection and the server: Ethernet.begin(mac, ip); server.begin(); Serial.print(“Start Connection"); Serial.println(Ethernet.localIP()); }
  • 68. Arduino e la connessione alla rete 29/10/2016 68 IoT e la piattaforma Arduino Ing. Francesco Pascale void loop() { // listen for incoming clients EthernetClient client = server.available(); if (client) { Serial.println("new client"); while (client.connected()) { if (client.available()) { ……. } // give the web browser time to receive the data delay(1); // close the connection: client.stop(); Serial.println("client disconnected"); } }
  • 69. Arduino e la connessione alla rete 29/10/2016 69 IoT e la piattaforma Arduino Ing. Francesco Pascale https://www.youtube.com/watch?v=nYzEbEOMGuo
  • 70. Arduino e la connessione alla rete 29/10/2016 70 IoT e la piattaforma Arduino Ing. Francesco Pascale Arduino Yun (Ibrido Soc + MCU)
  • 71. Arduino e la connessione alla rete 29/10/2016 71 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 72. Arduino e la connessione alla rete 29/10/2016 72 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 73. Arduino e la connessione alla rete 29/10/2016 73 IoT e la piattaforma Arduino Ing. Francesco Pascale • Scheda in modalità Access Point alla prima accensione • Configurazione tramite WebPanel semplificato • Programmazione del microcontrollore tramite wireless e tramite Ethernet • La libreria Bridge consente la comunicazione tra Arduino e il sistema operativo (SoC) • Per poter comunicare si crea una connessione protetta tra Yún ed il computer via SSH • La classe Process consente al microcontrollore di richiamare processi eseguiti dal sistema operativo (SoC) • Sul processore di YUN è disponibile un server web. Per poterlo utilizzare bisogna inserire una scheda micro-SD e crearci sopra le cartelle “/arduino/www” e “/data” che saranno poi utilizzate dal webserver
  • 74. Arduino e Cyber Security 29/10/2016 74 IoT e la piattaforma Arduino Ing. Francesco Pascale • Uno dei problemi principali è quello di garantire la sicurezza dei dispositivi che si utilizzano • Spesso errori banali quali rendere l’IP pubblico o non utilizzare alcun sistema di crittografia dei dati sono alla base di possibili vulnerabilità • In generale ogni dispositivo ogni volta che aggiungiamo un dispositivo alla rete dobbiamo ricordarci che questo dovrà essere trattato come ogni altro oggetto già esistente, sicurezza inclusa. • La problematica della Cyber Security in ambito IoT è ad oggi molto dibattuta
  • 75. Problematiche generali 29/10/2016 75 IoT e la piattaforma Arduino Ing. Francesco Pascale • IP Pubblici • Comunicazioni non Criptate • Attacchi DDOS • Vulnerabilità di sistema • Credenziali di accesso • Mancanza di Firewall • Mancanza di Approccio Middleware (Esempio sistemi Scada) • …
  • 76. Come rendere sicuro Arduino come device IoT: Esempio DDOS 29/10/2016 76 IoT e la piattaforma Arduino Ing. Francesco Pascale • Verificare il comportamento le performance dei moduli di rete ethernet software TCP/IP e hardware TCP/IP nel caso di attacco di tipo DDOS • Questo è un caso molto comune al giorno d’oggi in quanto la saturazione della banda comporta una indisponibilità del sistema che nel caso di sistemi delicati potrebbe essere un grosso problema • Nell’esempio verranno valutate le prestazioni di 2 dispositivi in particolare: Hardware TCP/IP ethernet module - WIZ550io e Software TCP/IP ethernet module - ENC28J60 • Nell’esempio l’attacco verrà simulato via software tramite il programma DDOS attack tool : LOIC (Freeware)
  • 77. Come rendere sicuro Arduino come device IoT: Esempio DDOS 29/10/2016 77 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 78. Come rendere sicuro Arduino come device IoT: Esempio DDOS 29/10/2016 78 IoT e la piattaforma Arduino Ing. Francesco Pascale Verranno efettuati 4 test in questo modo: • 1. Hardware TCP/IP Ethernet module / no DDOS network attack • 2. Hardware TCP/IP Ethernet module / DDOS network attack • 3. Software TCP/IP Ethernet module / no DDOS network attack • 4. Software TCP/IP Ethernet module / DDOS network attack
  • 79. Come rendere sicuro Arduino come device IoT: Esempio DDOS 29/10/2016 79 IoT e la piattaforma Arduino Ing. Francesco Pascale https://player.vimeo.com/video/119504737
  • 80. Come rendere sicuro Arduino come device IoT: Esempio DDOS 29/10/2016 80 IoT e la piattaforma Arduino Ing. Francesco Pascale https://player.vimeo.com/video/119504736
  • 81. Come rendere sicuro Arduino come device IoT: Esempio DDOS 29/10/2016 81 IoT e la piattaforma Arduino Ing. Francesco Pascale https://player.vimeo.com/video/119504738
  • 82. Come rendere sicuro Arduino come device IoT: Esempio DDOS 29/10/2016 82 IoT e la piattaforma Arduino Ing. Francesco Pascale https://player.vimeo.com/video/119504739
  • 83. Come rendere sicuro Arduino come device IoT: Esempio DDOS 29/10/2016 83 IoT e la piattaforma Arduino Ing. Francesco Pascale
  • 84. Riferimenti 29/10/2016 84 IoT e la piattaforma Arduino Ing. Francesco Pascale • http://forum.arduino.cc/index.php?topic=36509.0 • http://thegeniusworkshop.forumcommunity.net/?t=29002947 • http://www.robot-italy.net/roboforum/archive/index.php?t-1429.html • http://www.baronerosso.it/forum/circuiti-elettronici/254907-linguaggio-c-nel-pic-e-nellarduino.html • http://electronics.stackexchange.com/questions/159857/how-does-the-arduino-compare-to-pic-and-avr-for-serious-learners • http://playground.arduino.cc/Italiano/Pobleminoti • http://it.emcelettronica.com/arduino-ai-raggi-x-cosa-fare-renderlo-professionale-prima-parte • http://ismanettoneblog.altervista.org/blog/lezione-13-arduino-si-connette-ad-internet-shield-ethernet-ufficiale/ • http://www.html.it/pag/48799/arduino-e-la-connessione-a-internet/ • http://www.html.it/pag/49123/iot-la-scelta-del-protocollo-http-vs-mqtt/ • http://ismanettoneblog.altervista.org/blog/lezione-13-arduino-si-connette-ad-internet-shield-ethernet-ufficiale/ • http://www.betterembedded.it/media/conference/slides/arduino-e-linternet-delle-cose.pdf • https://www.digital4.biz/executive/approfondimenti/internet-of-things-ecco-due-tecnologie-da-conoscere-di-cui-una- italiana_4367215615.htm • http://www.logicaprogrammabile.it/arduino-ethernet-shield-controllo-remoto-via-web-con-http/ • http://www.competere.eu/news_detail.php?id=338 • https://www.reddit.com/r/AskNetsec/comments/2sk0zp/cyber_security_and_arduino/ • http://www.scoop.it/t/cybersecurity-by-milos-constantin/?tag=Arduino • http://www.instructables.com/id/How-to-make-unattackable-secure-arduino-IoT-device/ • https://www.researchgate.net/publication/291956647_Network_Security_ARDUINO_Yun_Based_IDS • http://www.giordanicaserta.it/frapec/clang/yun.htm • http://www.slideshare.net/emcelettronica/come-rendere-arduino-professionale • http://www.alberti-porro.gov.it/wordpress/wp-content/uploads/2014/01/ProgrammareArduino.pdf • http://www.diee.unica.it/eolab2/ASE-0607/Lucidi-ASE-0607-A.pdf
  • 85. Grazie per l’attenzione Ing. Francesco Pascal Software Engineer francescopascale87@gmail.com