Gam04 introduzione a-netduino_final

40
Template designed by Introduzione a Netduino Pierpaolo Paris [email protected] www.pierpaoloparis.it Template designed by

Transcript of Gam04 introduzione a-netduino_final

Page 1: Gam04   introduzione a-netduino_final

Template designed by

Introduzione a Netduino

Pierpaolo [email protected]

Template designed by

Page 2: Gam04   introduzione a-netduino_final

Template designed by

brought to you by

Page 3: Gam04   introduzione a-netduino_final

Template designed by

Programmatore in .NET.

Laureato in Ingegneria Informatica

Appassionato al connubio tra elettronica e informatica

Attualmente lavoro per Proge-Software S.r.L.

chi sono

Page 4: Gam04   introduzione a-netduino_final

Template designed by

Cos’è Netduino

Hardware

Programmazione

Netduino & Internet of Things

agenda

Page 5: Gam04   introduzione a-netduino_final

Template designed by

Cos’è Netduino

Una scheda elettronica di piccole dimensioni

Dotata di microcontrollore e circuiteria di contorno

Utile per creare dei prototipi per scopi hobbistici e didattici

Ne esistono varie versioni, ognuna con caratteristiche hardware (e quindi prezzo) differenti

Page 6: Gam04   introduzione a-netduino_final

Template designed by

Hardware

Netduino 2

Microcontrollore STMicro a 32 bit

Processore Cortex-M3 a 120 MHz

192 KB di spazio utilizzabile per il programma

60 KB di RAM

Page 7: Gam04   introduzione a-netduino_final

Template designed by

Hardware

Netduino Plus 2

Microcontrollore STMicro a 32 bit

Processore Cortex-M4 a 168 MHz

384 KB di spazio utilizzabile per il programma

100 KB di RAM

Page 8: Gam04   introduzione a-netduino_final

Template designed by

Hardware

Netduino Go

Microcontrollore STMicro a 32 bit

Processore Cortex-M4 a 168 MHz

384 KB di spazio utilizzabile per il programma

100 KB di RAM

8 porte GoBus

I/O addizionale con moduli di espansione

Page 9: Gam04   introduzione a-netduino_final

Template designed by

Hardware

Moduli per Netduino Go

Led RGB

Potenziometro

Shield base

Modulo per acquisizione dati

Display touch

Lista completa su http://wiki.netduino.com/List-of-all-GO-Modules.ashx

Page 10: Gam04   introduzione a-netduino_final

Template designed by

Da «Structured computer organization», di Andrew S. Tanenbaum:

“…programmers had to “squeeze” their programs to fit in small amount of memory”

Hardware

Page 11: Gam04   introduzione a-netduino_final

Template designed by

……quindi?

Cosa ci facciamo con tutti questi gingilli?

Semplificando molto la storia:Montiamo il nostro circuito

Leggiamo il valore da alcuni sensori

Sulla base del valore letto facciamo qualcosa

• accendiamo una lucina

• azioniamo un motore

• apriamo un rubinetto

• mandiamo i nostri dati in giro per internet

• ……

Page 12: Gam04   introduzione a-netduino_final

Template designed by

Devo essere un mago dell’elettronica?

Proprio un mago no, ma qualche conoscenza di base è fondamentale

Concetti come tensione, corrente, potenza, massa devono essere chiari

Se il circuito non è chiuso non è un circuito, non funzionerà mai

Se applico una tensione troppo alta a diodi, LED, transistor li rompo

Un qualunque libro di elettronica di base (anche del liceo) va più che bene

Page 13: Gam04   introduzione a-netduino_final

Template designed by

Come sviluppo su Netduino?

Abbiamo costruito il circuito che salverà il mondo. E ora?

Dobbiamo scrivere un programma per pilotarlo

Abbiamo bisogno di:Una qualunque versione di Visual Studio 2010 o 2012

• Anche la Express va benissimo

Il .NET Micro Framework

Netduino SDK

Page 14: Gam04   introduzione a-netduino_final

Template designed by

Come sviluppo su Netduino?

Una volta installato Visual Studio, il .NET MF e l’SDK andiamo a creare un nuovo progetto

Abbiamo una serie di template già pronti, a seconda di quello che vogliamo fare

Si programma in C#, anche se in versione «ridotta»

http://msdn.microsoft.com/en-us/library/ee435793.aspx

Page 15: Gam04   introduzione a-netduino_final

demoBlinking led

Page 16: Gam04   introduzione a-netduino_final

Template designed by

Abbiamo acceso e spento ripetutamente un LED

Attendere 1 secondo per continuare a eseguire il programma non è il massimo

Mentre attendiamo di accendere o spegnere il LED potremmo avere la necessità di fare altro

Netduino eccelle in responsività delle applicazioni, ma sta a noi fare in modo che questo accada

Entusiasmante, no?

Page 17: Gam04   introduzione a-netduino_final

Template designed by

Su Netduino possiamo usare i thread

In breve: suddividiamo il nostro programma in segmenti più o meno indipendenti

I segmenti vengono eseguiti in maniera concorrente (fin quando possibile)

La trattazione dei thread esula dagli scopi di questo speech

Thread

Page 18: Gam04   introduzione a-netduino_final

Template designed by

Cosa ci possiamo fare?

L’unico limite è la nostra fantasia

……e la sensatezza delle idee

Per farsi un’idea delle potenzialità di questo strumento potete fare riferimento a queste pagine:

http://netduino.com/projects/

http://forums.netduino.com/index.php?/forum/15-project-showcase/

Page 19: Gam04   introduzione a-netduino_final

demoAlcol test

Page 20: Gam04   introduzione a-netduino_final

Template designed by

Internet of Things

Si fa un gran parlare di Internet of Things, ma cos’è esattamente?

Page 21: Gam04   introduzione a-netduino_final

Template designed by

Estensione di internet ai dispositivi, di qualunque genere

Sensori, ma anche semafori, frigoriferi, lavatrici…..

I dispositivi comunicano i propri dati all’esterno, e usano dati aggregati provenienti da altri dispositivi

I dispositivi finora passivi diventano attivi

Big data + smart energy = love

Internet of Things

Page 22: Gam04   introduzione a-netduino_final

Template designed by

Netduino & IoT

La Netduino Plus 2 ha una porta Ethernet

Possiamo collegarla ad una rete

……quindi anche ad Internet

Collegando la scheda ad Internet possiamo dare il nostro piccolo contributo alla IoT

Come? In tanti modi, per esempio servendosi di Xively

Page 23: Gam04   introduzione a-netduino_final

Template designed by

Xively

E’ un PaaS

Offre un servizio di database online

Possiamo inviargli i dati provenienti dai nostri dispositivi e costruire applicazioni basate su questi dati

Possiamo monitorare i dati online, e se vogliamo può farlo chiunque

Page 24: Gam04   introduzione a-netduino_final

Template designed by

La nostra azienda ci tiene molto a far sapere al mondo la qualità (temperatura, umidità, silenzio, illuminazione) dei propri ambienti……

….oppure vuole far sapere al mondo che è attenta al risparmio energetico, e che di notte le luci sono tutte spente

Xively ci permette di fare tutto questo

Xively nel mondo reale

Page 25: Gam04   introduzione a-netduino_final

Template designed by

Xively

……e non finisce qui

Embedding di grafici e widget in siti web

Analisi dei dati storici

Invio di alert a script di controllo

In pratica

Misurazione del consumo energetico

Raccolta dati da stazioni meteo

Building monitoring system

Page 26: Gam04   introduzione a-netduino_final

Template designed by

Xively

Tutto quello che dobbiamo fare è registrarci

Aggiungere un dispositivo

Prendere nota delle chiavi (id del feed e API key)Servono a Xively per accettare i nostri dati

Una volta ottenute le chiavi possiamo dialogare con Xively attraverso semplici richieste e risposte HTTP

Si può comunque usare anche il protocollo MQTT

Page 27: Gam04   introduzione a-netduino_final

Template designed by

Netduino & Xively

Vediamo come far interagire Netduino e Xively

Se i videogiochi ci hanno insegnato qualcosa, ci hanno insegnato che il modo migliore per difenderci da un’invasione di Zombie è tenere sempre in forma le nostre piantine

Noi abbiamo molta cura delle nostre piante, gli diamo sempre l’acqua di cui hanno bisogno quando ne hanno bisogno….

….e vogliamo che il mondo lo sappia

Page 28: Gam04   introduzione a-netduino_final

demoNetduino contro Zombie

Page 29: Gam04   introduzione a-netduino_final

Template designed by

Cloud

La strabiliante potenza di calcolo non ci permette di fare analisi su una gran mole di dati

Non abbiamo neanche lo spazio fisico per immagazzinarli

Il cloud ci dà scalabilità e affidabilità

Possiamo creare un web service su Cloud che fa tutto quanto

Non dobbiamo fare altro che recuperare il risultato delle elaborazioni

Page 30: Gam04   introduzione a-netduino_final

Template designed by

Client o server?

Finora Netduino è stato un client di un servizio

Può rivestire anche il ruolo di server

Pensando ad un server pensiamo ad una macchina costosa, in un datacenter da qualche parte nel mondo

Non certo ad un PC dalle basse prestazioni

Figuriamoci se pensiamo che un device con 168 Mhz di CPU possa fare da server

Page 31: Gam04   introduzione a-netduino_final

Template designed by

Un server (o una batteria di server) ha tipicamente un IP pubblico, con cui tutti possono raggiungerlo

Netduino no (firewall, NAT….tutte cose che ci mettono i bastoni fra le ruote)

C’è comunque un modo molto semplice per trasformare Netduino in un server

In questo modo potremmo accendere i riscaldamenti di casa via internet, mentre siamo in viaggio

Netduino come server

Page 32: Gam04   introduzione a-netduino_final

Template designed by

Quello che ci serve è un relay tra Netduino e il client che vuole inviare comandi

Questo relay ha un nome (ma non un cognome): Yaler (www.yaler.org)

Richiede un sistema di autorizzazione simile a Xively

Mandiamo a Yaler le richieste che vogliamo mandare a Netduino («accendi i riscaldamenti», «c’è roba scaduta in frigo?»)

Yaler

Page 33: Gam04   introduzione a-netduino_final

Template designed by

Yaler

Page 34: Gam04   introduzione a-netduino_final

Template designed by

Connectivity as a service (accesso sicuro, via SSH, al nostro dispositivo)

Funziona con qualunque dispositivo che fornisce un socket TCP

Accesso tramite URL

Affidabilità e scalabilità garantite dall’infrastruttura di Yaler

Dobbiamo preoccuparci solamente della nostra applicazione

Yaler

Page 35: Gam04   introduzione a-netduino_final

Template designed by

Per approfondire

http://www.pierpaoloparis.it/category/netduino/

Page 36: Gam04   introduzione a-netduino_final

Template designed by

Letture utili

Getting started with Netduino(Chris Walker - O’ Reilly)

Page 37: Gam04   introduzione a-netduino_final

Template designed by

Letture utili

Getting started with Internet of Things(Cuno Pfister - O’ Reilly)

Page 38: Gam04   introduzione a-netduino_final

Template designed by

Letture utili

Netduino Home Automation Projects(Matt Cavanagh - Packt publishing)

Page 39: Gam04   introduzione a-netduino_final

Template designed by

/pierpaoloparis.it

/mugromatre

#netduino_dnc2014

The social slide

Page 40: Gam04   introduzione a-netduino_final

Template designed by

Grazie a tutti per la partecipazione

Riceverete il link per il download a slide e demo via email nei prossimi giorni

Per contattarmi

[email protected]

Grazie