arduino e l’internet delle cose - better embedded · arduino e l’internet delle cose firenze -...
TRANSCRIPT
Arduino e l’Internet delle cose
Cristian Maglie ([email protected])Firenze - 8 Luglio 2013
1
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Programmatore Freelance-Entusiasta utilizzatore di tecnologie Open-Collabora con Arduino da oltre 5 anni
Notizie sul relatore
2
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-È un framework opensource per la prototipazione rapida e l’apprendimento veloce dei principi fondamentali dell’elettronica e della programmazione
Cos’è Arduino
3
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Rendere l’elettronica affrontabile senza il bisogno di avere conoscenze specifiche-Semplificare, focalizzare sull’obiettivo eliminando il superfluo-Stimolare la voglia di “metterci le mani dentro”
Filosofia di Arduino
4
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
- Internet-Of-Things-Modalità di connessione a Internet-Arduino Yún
Di cosa parleremo
5
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Internet-Of-Things
6
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Utilizzare la rete Internet per far comunicare tra di loro “oggetti”-Anche oggetti non strettamente elettronici possono essere collegati o “attuati” tramite Internet
Internet-Of-Things
7
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Ponte tra il mondo reale e “virtuale”-Potenzialità cloud offerte dal Web (>=2.0) su oggetti che ne sono esclusi per natura
Internet-Of-Things
9
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Mettersi in rete!Ovvero: come ti faccio accedere a Internet
il mio microcontroller?
MCU Internet?10
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Soluzione adatta per MCU di fascia bassa (core a 8 bit)-Semplice e veloce per progetti non complessi
1. Co-processore
MCU Network Unit Internet
11
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Arduino Ethernet Shield utilizza il co-processore Wiznet W5100-Layer di rete TCP/IP implementato in hardware nel chip-Layer applicativo a carico della MCU
1. Co-processore
MCU W5100 Internet
12
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-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
2. MCU con Ethernet
MCU ETH Internet
13
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
- 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
Problemi con le MCU
MCU
15
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-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
3. Embedded PC/SoC
16
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
SoC
3. Embedded PC/SoC
CPU NetworkChipset
Internet
17
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Anche se sono disponibili GPIO, la presenza del kernel non permette controlli realtime-Mancano (o sono molto complesse da utilizzare) le interfacce elettriche tipiche dei dispositivi elettronici (SPI, I2C...)
Problemi
18
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-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
4. Ibrido Soc + MCU
19
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
4. Ibrido Soc + MCU
CPU NetworkChipset
MCU
LEDs / Lights
Relais
Motors
Pot. / Sliders
Sensors
Internet
20
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Riassumendo...Modalità Pro Contro
Co-processore -Firmware leggero-Facilità di integrazione
-Applicazioni Web2.0 medio/complesse non possibili
MCU con Eth integrato
-Elevata integrazione-Bassa latenza di rete
-Firmware complesso-Implementazione complessa
SoC -Sistema Operativo-Disponibiltà di applicativi
-Difficile utilizzo di dispositivi elettronici-Controllo realtime impossibile (o molto difficile)
IbridoSoC + MCU
-Tutti i PRO dei PC Embed-Collegamento con dispositivi elettronici e controllo realtime
-Comunicazione tra CPU e MCU-Bassa latenza di rete non facilmente ottenibile
21
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Ok ma... il WiFi?
) ) )22
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
WiFi (802.11b/g/n)MCU Network
Unit
MCU ETH
CPU NetworkChipset
Internet
Internet
Internet
23
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
WiFi (802.11b/g/n)MCU
MCU
CPU
Internet
Internet
Internet
))))))
)))
WiFi Unit
WiFi
WiFiChipset
23
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Layer di crittazione (WEP/WPA)-Disturbi elettromagnetici EMF (in particolare se il dispositivo andrà certificato)-Moduli WiFi, esistono ma costosi-Sicurezza nella prima configurazione
WiFi (802.11b/g/n)
24
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Arduino Yún
25
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Yún significa “nuvola” in Cinese-È un sistema ibrido-GNU/Linux embedded basato sul SoC MIPS Atheros AR9331-S.O. Linino (derivato da OpenWRT)-Microcontroller ATMega32u4 (lo stesso usato nell’Arduino Leonardo)
Arduino Yún
26
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
CPU
AR9331
Arduino Yún
32U4
WiFi
) ) )
ETH
UART
UART
GPI
O
USB
USB
27
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
CaratteristicheAR9331 Mega32U4
FlashRAM
CPU ClockUSBWiFiOS
16MB64MB DDR400MHz
Yes (Host)Yes
Linino (OpenWRT)
32KB2.5KB SRAM
16MHzYes (Device)
NoNo
28
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-La scheda viene programmata tramite l’IDE di Arduino-La scrittura degli sketch è molto simile alle altre schede Arduino-La comunicazione di rete viene delegata al lato MIPS-È possibile utilizzare la scheda esclusivamente tramite WiFi
Design della Yún
29
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Upload via WiFi
Arduino IDE
Serial Uploader
30
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Discovery
Discovery
Upload via WiFi
Arduino IDE
Serial Uploader
Network Uploader
30
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Discovery
Discovery
Upload via WiFi
Arduino IDE
Serial Uploader
Network Uploader
30
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Selezione della porta indipendente dalla modalità (seriale USB / rete)-Autodiscovery tramite zeroconf-Upload degli sketch via SCP-Riprogrammazione del chip tramite avrdude
Upload via WiFi
31
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Arduino Yún
CPU
WiFi
32U4
AR9331
ETH
USB
) ) )
USB
UART
UART ISP
GPIO
GPI
O
32
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Scheda in modalità Access Point alla prima accensione-Configurazione tramite WebPanel semplificato-Configurazioni avanzate disponibili tramite WebPanel di OpenWRT (luci) o da linea di comando
Configurazione rete
33
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Composta da due parti che comunicano: una libreria Arduino e un “demone” linux -Si occupa dello scambio di messaggi tra 32U4 e Atheros- I messaggi sono numerati e verificati da un CRC (no ripetizioni o messaggi persi)-Ad ogni messaggio inviato corrisponde un messaggio di risposta (anche vuoto)
Bridge
34
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-È un storage di coppie chiave-valore che risiede lato linux-Può essere letto e modificato dal 32U4-Può essere letto e modificato tramite chiamate REST
Key/Value storage
35
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Key/Value storage
K/V
REST endpoint:http://...../data/set/KEY/VALUEhttp://...../data/get/KEY
Bridge API:Bridge.put(“KEY”, “VALUE”);String value = Bridge.get(“KEY”);
36
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Permette di eseguire processi linux dal 32U4-Si possono lanciare processi standalone o usare linee di comando della shell-Cattura dello standard input/output
Process
37
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Process myproc;myproc.begin(“curl”);myproc.addParamater(“http://arduino.cc”);myproc.runAsynchronously();myproc.read(); // read std outputmyproc.write(“.....”) // write std inputmyproc.running();int res = myproc.exitValue();
Process
38
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-È una coda di stringhe di bytes (messaggi)-È possibile inviare o leggere messaggi dalla coda dal 32U4-È possibile inviare o leggere messaggi dalla coda tramite chiamate REST
Message
39
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
MessageMailbox Queue
Bridge API:Mailbox.writeMessage(“TURN_ON_LED”);String msg = Mailbox.readMessage();int len = Mailbox.messageAvailable();
write read
REST endpoint:http://....../message/send/TURN_ON_LED
40
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-Utilizzando Keystore, Message e Process è possibile costruire complesse catene di processing-È possibile interfacciarsi alle API dei servizi web più famosi utilizzando linguaggi di scripting o client linux dove già disponibili
3rd party API
41
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
3rd party APITwitter client
Facebook client
Linked-in client
42
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
-È un sito che offre un servizio cloud per accedere a API di terze parti-Libreria Arduino per accedere al servizio sviluppata in collaborazione con Temboo-Tutti i dettagli per interfacciarsi a API esterne sono già implementati da Temboo
Temboo
43
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
TembooTwitter client
Facebook client
Linked-in client
44
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Temboo
Temboo client
45
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Q&A
46
domenica 8 settembre 13
Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - [email protected]
Grazie!
47
domenica 8 settembre 13