Post on 07-Dec-2014
description
Arduino, quando un aperitivo avvicina elettronica ed informatica
Filippo Matteo Riggio
filippo.riggio@intesys.it – Intesys S.r.l.
Sommario1. Introduzione
2. Storia
3. Arduino in profondità
4. Semplicità
5. Il nostro progetto
6. Arduino e il mobile
7. Conclusioni
Introduzione
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
4
La mia esigenza – Perchè ho scelto Arduino.Il problemaOgni esigenza nasce sempre da un bisogno, un problema.Nel mio caso è il desiderio di non creare solamente prodotti virtuali, ma ottenere qualcosa di più tangibile.L'aspetto peggiore del lavoro di un programmatore è proprio quello di non creare qualcosa dimateriale e tangibile, che possa dimostrare le sue vere capacità a persone che non sono dell'ambiente IT.
Fino a qualche anno fa non esisteva la possibilità di programmare ad alto livello alcun tipo dihardware in modo semplice.
Arduino dà questa possibilità: un programmatore può creare dispositivi e programmarli.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
5
L'esigenza di Massimo Banzi
Massimo Banzi è un ex docente dell'Interaction Design Institute
di Ivrea, istituto in cui i designer devono apprendere basi di
elettronica per poter creare prototipi interattivi.
Il problema
La piattaforma che veniva utilizzata per creare questi prototipi
(Basic Stamp) aveva una serie di difetti, i principali:
- il costo elevato
- il funzionamento solo con pc Windows
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
6
Che cos'è Arduino?
Arduino è una piccola scheda elettronica che permette di programmare facilmente un microcontrollore (“processore”).
Per farlo ci viene in supporto un ambiente di sviluppo(IDE) creato ad hoc.
Ogni software creato si chiama sketch.Ogni sketch viene caricato sulla scheda tramite l’IDE ed un cavo USB.
Il progetto è completamente open-source.
Storia
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
8
Un po' di storia.
2001 Olivetti e Telecom avviano un master biennale all’istituto di Interaction Design.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
9
Un po' di storia.
2001 Olivetti e Telecom avviano un master biennale all’istituto di Interaction Design.
1° semestre 2002
Banzi crea Programma 2003 che usa il linguaggio JAL.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
10
Un po' di storia.
2001 Olivetti e Telecom avviano un master biennale all’istituto di Interaction Design.
1° semestre 2002
Banzi crea Programma 2003 che usa il linguaggio JAL.
2° semestre 2002
Banzi contatta Bill Verplank e Casey Reas.
Quest’ultimo consiglia Processing come linguaggio.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
11
Un po' di storia.
2001 Olivetti e Telecom avviano un master biennale all’istituto di Interaction Design.
1° semestre 2002
Banzi crea Programma 2003 che usa il linguaggio JAL.
2° semestre 2002
Banzi contatta Bill Verplank e Casey Reas.
Quest’ultimo consiglia Processing come linguaggio.
2003 H.Barragan crea Wiring, un derivato da Processing e dal C. Costo ancora alto (70/80 €).
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
12
Un po' di storia.
2001 Olivetti e Telecom avviano un master biennale all’istituto di Interaction Design.
1° semestre 2002
Banzi crea Programma 2003 che usa il linguaggio JAL.
2° semestre 2002
Banzi contatta Bill Verplank e Casey Reas.
Quest’ultimo consiglia Processing come linguaggio.
2003 H.Barragan crea Wiring, un derivato da Processing e dal C. Costo ancora alto (70/80 €).
2003/04 Gianluca Martino testa la piattaforma sugli studenti con risultati soddisfacenti.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
13
Un po' di storia.
01-05/2005
La scheda dovrà costare circa 20 euro.Entrano nel team David Cuartielles e David Mellis.Massimo decide che è ora di dare un nome vero e proprio alla piattaforma: Arduino, il nome del bar dove il team si riuniva a fare l’aperitivo dopo il lavoro.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
14
Un po' di storia.
01-05/2005
La scheda dovrà costare circa 20 euro.Entrano nel team David Cuartielles e David Mellis.Massimo decide che è ora di dare un nome vero e proprio alla piattaforma: Arduino, il nome del bar dove il team si riuniva a fare l’aperitivo dopo il lavoro.
06/2005 Nel team anche Tom Igoe, che porta Arduino negli States.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
15
Un po' di storia.
01-05/2005
La scheda dovrà costare circa 20 euro.Entrano nel team David Cuartielles e David Mellis.Massimo decide che è ora di dare un nome vero e proprio alla piattaforma: Arduino, il nome del bar dove il team si riuniva a fare l’aperitivo dopo il lavoro.
06/2005 Nel team anche Tom Igoe, che porta Arduino negli States.
11/2005 Primo workshop a Londra e nascita della community.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
16
Un po' di storia.
01-05/2005
La scheda dovrà costare circa 20 euro.Entrano nel team David Cuartielles e David Mellis.Massimo decide che è ora di dare un nome vero e proprio alla piattaforma: Arduino, il nome del bar dove il team si riuniva a fare l’aperitivo dopo il lavoro.
06/2005 Nel team anche Tom Igoe, che porta Arduino negli States.
11/2005 Primo workshop a Londra e nascita della community.
10/2008 Più di 50.000 copie di Arduino vendute.
Arduino in profondità
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
18
Caratteristiche tecnicheMicrocontrolloreATMega (168 o 328) a 16Mhz
AlimentazioneUSB (5 volt) o spinotto da 12V6 Pin per l'alimentazione
Input/Output14 pin digitali6 pin analogiciFTDI USB Chip / ICSP HeaderDebug LED (13) / Data Trasfer LED (RX+TX)
Memoria16 KB (ATmega168) o 32 KB (ATmega328) dei quali 2 KB usati per il bootloader
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
19
Modelli di ArduinoArduino in questi anni è stato migliorato. Sono uscite nuove versioni sempre basate sul progetto originale.
Arduino UNO Lilypad Arduino MEGA Arduino MINI
Arduino BT Arduino Ethernet Arduino FIO Arduino Nano
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
20
Estensioni di ArduinoOltre ai vari modelli della scheda, esistono dei “plugin” detti shield, che permettono di rendere Arduino veramente poliedrico.
Arduino Wireless Shield con SD Arduino Wireless Shield senza SD
Arduino Ethernet Shield Arduino Motor Shield Arduino Proto Shield
Semplicità
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
22
Sensori ed AttuatoriI sensori sono piccoli componenti elettronici che misurano grandezze naturali (temperatura, suono, luminosità,ecc.) per trasformarlo in un segnale elettrico interpretabile da Arduino.Ad esempio i sensori semplici variano la propria resistenza elettrica al variare delfenomeno fisico (aumento di temperatura, di luminosità, ecc.).
All'opposto dei sensori esistono gli attuatori.Gli attuatori ricevuto un segnale elettrico, lo tramutano in un fenomeno fisico:un semplice LED, un motore elettrico, ecc.
Sensore di temperatura LM35 Fotoresistenza LEDs
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
23
Ambiente di sviluppoL'IDE è dispobibile per MacOS, Windows e Linux.
Sul sito www.arduino.cc trovate anche i driver.
E' importante ricordarsi di impostare, dal menù Tools, il modello della propria scheda e su quale porta è attualmente connessa.
Dopo aver scritto lo sketch, l'IDE crea un eseguibileper il processore AVR ed esegue l’upload.
Utile in fase di debug, lo strumento Serial Monitor, che permette di andare a leggere lo stream della porta.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
24
Fritzing!Fritzing è un software free per la progettazione di schemi elettronici, dalla breadboard al circuito stampato.
Questo software nasce con lo stesso spirito di Arduino, fornendo ulteriori servizi onlinecome la community e la realizzazione del circuito vero e proprio.
E’ rivolto soprattutto ai “non-ingegneri”, che generalmente utilizzano software come AutoCAD per il disegno di circuiti e prototipi.
Potete scaricarlo da http://fritzing.org/
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
25
Uno sketch di esempioIl codice per uno sketch è molto semplice, si basa su 2 funzioni principali: setup() e loop().
#define LEDPIN 13
void setup() { pinMode(LEDPIN, OUTPUT); // inizializzo il pin in // modalità OUTPUT}
void loop() { digitalWrite(LEDPIN, HIGH); // accendo il led delay(1000); // aspetto un secondo digitalWrite(LEDPIN, LOW); // spengo il led delay(1000); // aspetto un secondo}
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
26
Un semplice esempioUn esempio della semplicità di Arduino è il display LCD.Oltre ad Arduino, abbiamo bisogno di:- display LCD compatibile con i driver Hitachi HD44780- potenziometro da 10 kOhm- breadboard e cavetti
Come funziona l'LCD?L'LCD ha un suo microcontrollore interno che associaad un intero passatogli un carattere da stampare, carattere che è una matrice di 5x8 pixel (variabile da LCD a LCD).
Oltre al microcontrollore interno, l'LCD è dotato di alcuni registri per la gestione di scrittura/lettura, istruzioni in coda, ecc.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
27
Un semplice esempio (codice)La semplicità di Arduino è il suo vero punto di forza.Con poche righe di codice riusciamo a stampare su un display LCD del testo.
// includiamo la libreria, con l'IDE basta andare su Sketch > Import > Library#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // istanziamo l'oggetto lcd
void setup() { lcd.begin(16, 2); // imposto il numero di caratteri e righe lcd.print("hello, world!"); // Stampo una stringa di prova}
void loop() { lcd.setCursor(0, 1); // cursore al carattere 0 della seconda riga lcd.print(millis()/1000); // numero di secondi dall'inizio del ciclo}
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
28
Altre funzionipinMode(idPin, {INPUT || OUTPUT}); // imposta la modalità in cui deve essere un pin
Serial.begin(valore); // istanzia una trasmissione seriale // di n bit al secondo
int sensorValue = digitalRead(idPin); // legge un valore da un pin digitale (restituisce LOW || HIGH)
int sensorValue = analogRead(A0); // legge un valore da un pin analogico, // convertito da Arduino in un decimale tra 0 e 1023
digitalWrite(idPin, valore); // scrive un valore (HIGH e LOW) sui pin digitali
Serial.println(sensorValue, DEC); // scrive sulla porta seriale un valore
unsigned long currentMillis = millis(); // la funzione millis restituisce il tempo trascorso // dall'inizio dell'esecuzione del programma
Il nostro progetto
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
30
Intesys TalkDa circa un anno Intesys porta avanti un'iniziativa interna: i talk.
I talk sono un occasione per favorire la condivisione della conoscenza all’interno di Intesys, stimolando il confronto libero e motivante tra i dipendenti.
Ogni settimana viene presentato un argomento inerente o meno al settore IT.I dipendenti possono decidere se partecipare o meno (essendo in orarioextra-lavorativo), in base all’interesse che hanno rispetto all’argomento.
Alcuni di questi talk hanno avuto molta risonanza a livello interno.Sono state adottate parecchie tecnologie e sono nate idee da sviluppare come Arduino meeting room.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
31
Arduino Meeting RoomDopo il talk, vista la facilità di sviluppo di progetti elettronici, si è deciso di creare qualcosa che prevedeva Arduino. Pur essendo un progetto extra-lavorativo, si è deciso di sviluppare un dispositivo che fornisse qualche beneficio aziendale.
Una delle esigenze aziendali prevedeva la necessità di venire a conoscenza della presenza o meno di persone nelle sale riunioni.
Le funzionalità da sviluppare quindi erano :- percepire la presenza di persone in una stanza;- comunicare questo dato agli altri dispositivi;- segnalare visivamente questo dato sia sul dispositivo che sull’intranet aziendale.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
32
Arduino Meeting RoomLa presenza delle persone all’interno della
stanza viene verificata tramite un
sensore audio (microfono), amplificato
e passato ad arduino.
La comunicazione agli altri dispositivi e
all’intranet interna viene fatta tramite un
ethernet shield.
La visualizzazione visiva invece viene
fatta tramite dei led RGB.
Trovate codice e schema su github: http://github.com/gariggio/arduino/
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
33
Arduino Meeting Room – Comunicazione#include <Ethernet.h>#include <Udp.h>
char inBuffer[UDP_TX_PACKET_MAX_SIZE]; // Buffer dei pacchetti in arrivo
void setup(){ // Start Ethernet and UDP Ethernet.begin(mac_address, ip_address); // il server si mette in waiting di connessioni Udp.begin(port); // inizializza la libreria ethernet UDP e le impostazioni di rete // [other code]}void loop(){ int packetSize = Udp.available(); // controlla se ci sono connessioni da client if (packetSize) {
// il pacchetto viene scritto sul buffer (limitato nelle dimensioni)
// mentre vengono restituiti IP e porta del mittente. Udp.readPacket(inBuffer, UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort); } // [other code]}
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
34
Altri progetti sviluppati con Arduino
Serratura RGB
Sismografo
Microfono etilometro
Rilevatore di gas Gameboy Dj Controller
Drone aereo Controller per barche ed aerei.
Pianoforte ad acqua
Wandering Tank
Arduino e il mobile
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
36
Arduino e il mobileNegli ultimi anni sono nate alcune interfaccie
capaci di connettere Arduino con gli
smartphone più diffusi.
Nel maggio 2011, Google ha presentato
ADK (Android Open Accessory Development Kit),
un kit di sviluppo per far comunicare lo
smartphone Android con Arduino tramite USB e Bluetooth.
Per iOS non sono state rilasciate librerie ufficiali, ma ne esistono molte free.
Il connubio tra Arduino e il mondo mobile ha fatto si che molti sviluppatori si divertissero
con la domotica, creando impianti di climatizzazione, risparmio energetico, cancelli, ecc.;
controllabili tramite lo smartphone e Arduino. Un esempio è Giarduino.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
37
GiarduinoGiarduino è un dispositivo che permette di gestire il
proprio giardino tramite smartphone o tablet.
Permette di conoscere temperatura, umidità e
luminosità in tempo reale ovunque ci si trovi.
Con una valvola elettrica è possibile gestire
anche l'impianto di irrigazione.
Schemi di costruzione e codice sono reperibili online su GitHub.
Esiste inoltre un servizio online che permette, tramite un codice univoco, di usare il proprio
giarduino.
Conclusioni
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
39
ConclusioniArduino è un “ponte” tra elettronici ed informatici, che si è imposto per via del suo punto di
forza, la semplicità.
E’ ormai una pietra miliare in quello che è il movimento dei makers e secondo me è la svolta di
quello che è una volta era un mondo chiuso, come quello elettronico.
Con Arduino siamo passati dal software open-source all’hardware open-source.
Lo consiglio a tutti quelli che hanno avuto idee e non riuscivano a svilupparle a causa di
conoscenze che non riuscivano a coprire questi 2 ambiti.
E per il futuro?
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
41
Gli atomi sono i nuovi bit.Internet era solo l’inizio.
La collaborazione di massa, il crowdsourcing e i contenuticreati dagli utenti hanno cominciato ad avere un ruolo fondamentaleanche nel mondo reale, fatto di atomi.
Una novità interessante è MakerBot, una stampante 3D dal basso costo.
E’ nata anche Raspberry PI, un piccolo computer, facilmente programmabile, che sta spopolando nelle scuole elementari inglesi.
Siamo ormai nell’era del Garage 2.0, dove milioni di potenziali “inventori della domenica” stanno per diventarel’industria del futuro.
Filippo Matteo Riggiofilippo.riggio@intesys.it – Intesys S.r.l.
42
RisorseOnline
http://www.arduino.cc il sito ufficiale dove si trova quasi tutto sull’argomento
http://scuola.arduino.cc ottimi articoli e corsi dal livello base a quello avanzato
http://arduino.cc/forum/ il forum della community
http://arduino.cc/playground la wiki, contenente molte voci relative a librerie, hardware e interfaccie particolari
Ebook
Arduino Cookbook O’Reilly un ottimo manuale, abbastanza completo sull'argomento
30 Arduino Projects for the Evil Genius un buon libro, con esempi e progetti interessanti
Riviste
Wired ogni mese lo stesso Massimo Banzi propone un’idea da mettere in pratica
IoProgrammo ogni mese pubblica piccoli progetti e spunti interessanti
Software
Fritzing Alpha un software free per la creazione degli schemi elettrici/elettronici (http://fritzing.org)
Minibloq un software free che permette di programmare Arduino tramite interfaccia grafica (http://blog.minibloq.org/)
Grazie per l’attenzioneFilippo Matteo Riggio
filippo.riggio@intesys.it – Intesys S.r.l.