Arduino e l’Internet delle cose - Better Embedded · Arduino e l’Internet delle cose Firenze -...

Preview:

Citation preview

Arduino e l’Internet delle cose

Cristian Maglie (c.maglie@arduino.cc)Firenze - 8 Luglio 2013

1

domenica 8 settembre 13

Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

-È 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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

- 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 - c.maglie@arduino.cc

Internet-Of-Things

6

domenica 8 settembre 13

Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

- 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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

SoC

3. Embedded PC/SoC

CPU NetworkChipset

Internet

17

domenica 8 settembre 13

Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

Ok ma... il WiFi?

) ) )22

domenica 8 settembre 13

Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

Arduino Yún

25

domenica 8 settembre 13

Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

Upload via WiFi

Arduino IDE

Serial Uploader

30

domenica 8 settembre 13

Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

-È 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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

-È 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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

-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 - c.maglie@arduino.cc

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 - c.maglie@arduino.cc

-È 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 - c.maglie@arduino.cc

TembooTwitter client

Facebook client

Linked-in client

44

domenica 8 settembre 13

Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - c.maglie@arduino.cc

Temboo

Temboo client

45

domenica 8 settembre 13

Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - c.maglie@arduino.cc

Q&A

46

domenica 8 settembre 13

Arduino e l’Internet delle coseFirenze - 8 Luglio 2013 Cristian Maglie - c.maglie@arduino.cc

Grazie!

47

domenica 8 settembre 13

Recommended