Arduino Logo
Cos’è Arduino
Arduino
è
una
schedina
elettronica
con
un microcontrollore e circuiteria di contorno, utile per
creare rapidamente prototipi e per scopi hobbistici e
didattici. Con Arduino si possono realizzare in maniera
relativamente rapida e semplice piccoli dispositivi come
controllori di luci, di velocità per motori, sensori di luce,
temperatura e umidità e molti altri progetti che
utilizzano sensori, attuatori e comunicazione con altri
dispositivi.
Dove nasce Arduino
Arduino è una piattaforma hardware sviluppata
presso l‘Interaction Design Institute, un istituto
di formazione post-dottorale con sede a Ivrea,
fondato da Olivetti e Telecom Italia. Il nome
della scheda deriva da quello di un bar di Ivrea
(che richiama a sua volta il nome di Arduino
d'Ivrea, (Re d'Italia nel 1002) frequentato da
a.lcuni dei fondatori del progetto
Chi sono i padri di Arduino
• Il team di Arduino è composto da Massimo Banzi, David
Cuartielles, Tom Igoe, Gianluca Martino, e David Mellis.
•
Il progetto prese avvio in Italia a Ivrea nel 2005, con lo scopo di
rendere disponibile, a progetti di Interaction Design realizzati da
studenti, un dispositivo per il controllo che fosse più economico
rispetto ai sistemi di prototipazione allora disponibili. I progettisti
riuscirono a creare una piattaforma di semplice utilizzo ma che, al
tempo stesso, permetteva una significativa riduzione dei costi
rispetto ad altri prodotti disponibili sul mercato.
• A ottobre 2008 in tutto il mondo erano già stati venduti più di
50.000 esemplari di Arduino.
Arduino team
Piattaforma di Arduino
La piattaforma hardware Arduino è
distribuita
in versione pre-assemblata,
acquistabile in internet o in negozi
specializzati. La particolarità del progetto è
che le informazioni sull'hardware e
soprattutto i progetti sono disponibili per
chiunque: si tratta quindi di un hardware open
source.
Caratteristiche di Arduino Uno
•
Arduino UNO è una scheda basata sul microcontrollore a 8 bit ATmega328.
•
Ha 14 Ingressi/uscite digitali (6 delle quali con PWM)
•
6 ingressi analogici,
•
un cristallo a 16 MHz,
•
una porta USB,
•
una presa di alimentazione,
•
una connessione ICSP,
•
Tasto di reset.
•
Alimentazione (max 12V)
•
A oggi sono state commercializzate 15 versioni dell'hardware Arduino.
Arduino UNO
Arduino UNO
•
•
•
•
•
•
•
•
•
•
•
Microcontroller : Atmega 328
Operating : Voltage 5V
Input Voltage (recommended) : 7-12V
Input Voltage (limits) : 6-20V
Digital I/O: 14 Pins (of which 6 provide PWM output)
Analog Input: 6 Pins
DC Current : per I/O Pin40 mA
DC Current : for 3.3V Pin50 mA
Flash Memory : 32 KB (ATmega328) of which 0.5 KB used by bootloader
SRAM : 2 KB (ATmega328)
EEPROM : 1 KB (ATmega328)Clock Speed16 MHz
Memorie di Arduino
• FLASH à la memoria dove viene salvato lo
sketch
• SRAM è la memoria dove lo sketch salva le
variabili
• EPROM è la memoria dove vengono salvate le
informazioni x lungo tempo
• Flash e Eprom sono memorie non volatili
Ethernet Shield
I/O Shield
GSM Shield
Blutooth Shield
Shield Stack
Arduino Mega
Microcontroller : Atmega2560
Operating voltage : 5V
Input voltage (recom) : 7-12v
Input voltage (limits) :6-20v
Digital I/O : 54 Pins (15 provide PWM output)
Analog input : 16 Pins
Flash memory : 256 KB of (8 KB used by bootloader)
SRAM : 8 KBEEPROM4 kb
Clock speed : 16 mhz
PINOUT Arduino Mega
Arduino Yun
Arduino Yun
•
•
•
•
•
•
•
•
•
•
Microcontroller: ATmega32u4
Operating Voltage: 5V
Input Voltage :5V
Digital I/O : 20 Pins
PWM Channels7
Analog : Input Channels12DC
Flash Memory : 32 KB (of which 4 KB used by bootloader)
SRAM2.5 KBEEPROM1 KB
Clock Speed16 MHzLinux
Microprocessor Atheros AR9331ArchitectureMIPS @400MHzOperating
VoEthernetIEEE 802.3 10/100Mbit/sWiFiIEEE 802.11b/g/n H
• ReaderMicro-SD onlyRAM64 MB DDR2
• Flash Memory16 MB
Ambiente di Sviluppo
L’ ambiente di sviluppo è integrato (IDE) e
multipiattaforma
(per
Linux,
Apple
Macintosh e Windows). Questo software
permette anche ai novizi di scrivere
programmi con un linguaggio semplice e
intuitivo derivato da C e C++ chiamato Wiring,
liberamente scaricabile e modificabile.
IDE
L'ambiente di sviluppo integrato (IDE) è
un'applicazione
multipiattaforma
scritta
in Java, ed è derivata dall'IDE creato per
il linguaggio di programmazione Processing e
per il progetto Wiring. È concepita per iniziare
alla programmazione artisti e altri neofiti, che
siano a digiuno di pratica nello sviluppo di
software.
Ambiente di Sviluppo Integrato
Linguaggio di programmazione
• Programmazione formalmente ispirata al linguaggio
C da cui deriva.
• I programmi in ARDUINO sono chiamati “Sketch”.
• Un programma è una serie di istruzioni che vengono
lette dall’alto verso il basso e convertite in eseguibile
e poi trasferite sulla scheda Arduino.
Struttura di uno Scketch
Dichiarazioni
void setup()
{
// istruzioni da eseguire una sola volta
}
void loop()
{
// istruzioni da eseguire ciclicamente
}
Istruzioni
• Le istruzioni di programma vanno terminate
con il punto e virgola.
• Un gruppo di istruzioni deve essere racchiuso
tra parentesi graffe.
• Le istruzioni del preprocessore NON vanno
terminate con il punto e virgola.
Esempio di programma
#define LED 13
int INGRESSO = 7;
void setup() {
pinMode(LED, OUTPUT);
pinMode(INGRESSO, INPUT);
}
void loop() {
if (digitalRead(INGRESSO)) digitalWrite(LED, HIGH);
if (!digitalRead(INGRESSO)) digitalWrite(LED, LOW);
}
Funzioni
•
Una funzione è un blocco di codice che ha un nome ben definito, quindi è un
blocco di istruzioni che vengono eseguiti quando la funzione viene chiamata.
•
Le funzioni sono utilizzate per eseguire operazioni ripetitive in modo da ridurre il
codice programma ed evitare quindi confusione nel programma stesso.
•
•
Le funzioni sono dichiarate all’inizio del programma e specificate dal tipo di
funzione.
La struttura della funzione è la seguente:
•
<Tipo del valore restituito> <nome funzione> ( <elenco dei parametri> )
•
Dopo il tipo, occorre dichiarare il nome dato alla funzione e tra parentesi i
parametri che vengono passati alla funzione.
Esempio di Funzione
int delayVal()
{
int v;
v = analogRead(1);
v = v / 4;
return v;
}
// funzione senza param.
// dichiaro la variabile
// funzione arduino
// espress. aritmetica
// valore di ritorno
Ingressi / Uscite digitali:
• - inMode (pin, mode)
Utilizzato in void setup (), serve per configurare un determinato pin
e stabilire se deve essere un ingresso o un'uscita.
• - digitalRead (pin)
L’istruzione permette di leggere lo stato di un pin di input e restituis
ce un valore HIGH se al pin è applicato un tensione o un valore LOW
se non è applicato nessun segnale. Il pin può essere specificato com
e una variabile o costante (0-13).
• - digitalWrite (pin, valore)
Attiva o disattiva un pin digitale, quindi l’istruzione pone il pin di usc
ita a livello logico HIGH o LOW. Il pin può essere specificato come un
a variabile o una costante (0-13)
Esempio pin I/O
pinMode(5, OUTPUT);
digitalWrite(5,HIGH);
pinMode(6, OUTPUT);
digitalWrite(6,HIGH);
pinMode(7, OUTPUT);
digitalWrite(7,HIGH);
pinMode(8, OUTPUT);
digitalWrite(8,HIGH);
//Rele 1
pinMode(30, INPUT);
pinMode(32, INPUT);
pinMode(34, INPUT);
pinMode(36, INPUT);
//Sensore 1
Ingressi / Uscite analogici:
• - analogRead (pin)
Legge il valore di tensione applicato ad un pin di input an
alogico con una risoluzione pari a 10 bit. Questa funzione
restituisce un numero intero
compreso tra 0 e 1023.
• - analogWrite (pin, value)
Cambia la percentuale della modulazione di larghezza di impul
so (Pulse Width Modulation - PWM) su uno dei pin contrasseg
nati dalla sigla PWM.
Segnali modulati su PSW
Principali Librerie di Arduino
•
•
•
•
•
•
•
•
•
•
•
•
•
EEPROM - reading and writing to "permanent" storage
Ethernet - for connecting to the internet using the Arduino Ethernet Shield
Firmata - for communicating with applications on the computer using a standard
serial protocol.
GSM - for connecting to a GSM/GRPS network with the GSM shield.
LiquidCrystal - for controlling liquid crystal displays (LCDs)
SD - for reading and writing SD cards
Servo - for controlling servo motors
SPI - for communicating with devices using the Serial Peripheral Interface (SPI) Bus
SoftwareSerial - for serial communication on any digital pins. Version 1.0 and later
of Arduino incorporate Mikal Hart'sNewSoftSerial library as SoftwareSerial.
Stepper - for controlling stepper motors
TFT - for drawing text , images, and shapes on the Arduino TFT screen
WiFi - for connecting to the internet using the Arduino WiFi shield
Wire - Two Wire Interface (TWI/I2C) for sending and receiving data over a net of
devices or sensors.
Sensori Arduino
Attuatori Arduino
Architettura della mia realizzazione
domotica
Modem
ADSL
INTERNET
Modem
ADSL
Router
Wi-Fi
Router
Wi-fi
Nano
Router
Attuatore
Sensore
Arduino
Sensore
Attuatore
PC
Sensori e Attuatori
Sensore
caldaia
Sensore
presenza
Sensore
Gas
Umidità
Sensore
Luce
Pressione
Barometrica
Temp.
Ambiente
Elettrovalvola
H2O
ARDUINO
Elettrovalvola
Irrigatore
Accensione
Caldaia
Temp.
Esterna
Elettrovalvola
Gas
Requisiti
• Gestione da Remoto con un client generico
• Server pre-caricato su Arduino
• Collegamento tra Client e Server attraverso
Internet
Assegnamento PIN I/O
pinMode(5, OUTPUT);
digitalWrite(5,HIGH);
pinMode(6, OUTPUT);
digitalWrite(6,HIGH);
pinMode(7, OUTPUT);
digitalWrite(7,HIGH);
pinMode(8, OUTPUT);
digitalWrite(8,HIGH);
//Rele 1
pinMode(inputPin, INPUT);
pinMode(ledPin, OUTPUT);
// pin 12 PIR
// pin 13 Led
pinMode(22, INPUT);
pinMode(21, INPUT);
pinMode(24, INPUT);
pinMode(23, INPUT);
pinMode(pinSpeaker, OUTPUT);
pinMode(30, INPUT);
pinMode(32, INPUT);
pinMode(34, INPUT);
pinMode(36, INPUT);
//sensore Ds18b20
//
//sensore temperatura DTHLL pin 23
// pin 25
// sensore 1
// sensore 2
// sensore 3
// sensore 4
//Rele 2
//Rele 3
//Rele 4
La prima implementazione
• Arduino Uno
• Shield Ethernet
• Shield I/O
Problemi emersi
Il codice prodotto per realizzare quanto
prefisso superava la capacità della FLASH (32
kbyte ) in cui lo Sketch sarebbe stato
memorizzato.
Work around
• Arduino Mega
• Ethernet Shield
• I/0 Shield
L’ idea si perfeziona
• Arduino Mega
• Ethernet Shield with SD Card
• Web Server in SD Card
WEB Server su SD
Linguaggi utilizzati per realizzare WebServer
• HTML
• JavaScript
• AJAX
Home Remote Control
Il prototipo
Arduino si integra coi servizi di Rete
• I valori rivelati dai sensori di Arduino vengono
memorizzati su un server di terze parti
(Temboo)
• E’ possibile visualizzare i dati registrati e avere
un andamento grafico
Data Logger
EMONCMS
Attuatori
Arduino
Sensori
INTERNET
INTERNET
Emoncms
• Emoncms è un potente open-source web-app
per memorizzare , visualizzare ed elaborare i
dati ricevuti
• L'interfaccia grafica è personalizzabile.
Interfaccia grafica di Emoncms
Emoncms Dashboard
La prossima piattaforma
• Arduino Yun o Arduino Due
• Deve fare tutto quello che fa ora Arduino
Mega
• Integrerà i servizi offerti da Temboo
Arduino Yun
Arduino YUN
•
•
•
•
•
•
•
Caratteristiche tecniche principali:
MCU: Atmel ATmega32U4 a 16 MHz
Memoria Flash (programma): 32 kB (4 kB sono riservati al bootloader)
Memoria SRAM (per le variabili del programma): 2,5 kB
Memoria EEPROM (per salvataggio di impostazioni o altro): 1 kB
Comunicazione: 1 I2C, 1 Seriale, 1 SPI
Tensione operativa: 5 V
•
•
•
•
•
•
•
•
•
•
•
SoC: Atheros AR9331(MIPS) a 400 MHz
Memoria Flash (contiene la distribuzione Linux): 16 MB
Memoria DRAM (per l’esecuzione dei programmi): 64 MB DDR2
Ethernet: IEEE 802.3 10/100 Mbs
WiFi: IEEE 802.11b/g/n
USB: USB 2.0 host/device
Tensione operativa: 3,3 V
Pin di I/O: 20, di cui 8 I/O digitali e 12 usabili I/O digitali oppure come input analogici
PWM: 7 pin
ADC: 12 canali a 10 bit
Tensione accettata sui pin di I/O: 5 V
Confronto fra schede
UNO
Flash
SRAM
Eprom
32k (512 byte)
2048 byte
1024 b
MEGA
DUE
YUN
256 k
512
32k
8k
96k
2.5 kb
4k
Arduino DUE è un controllore a 32 bit
PIATTAFORMA TEMBOO
Temboo è un’ambiente “ scalable” e fault
tolerant che permette di interagire con una
grande quantità di servizi WEB attraverso le
API dei servizi stessi.
TEMBOO
richiede una sottoscrizione e
funziona a consumo, è gratuito fino ad una
certa quantità di messaggi.
Temboo
• Permette di salvare i valori rilevati dai sensori
di Arduino Yun su uno Spreadsheet di Google
Drive
• Permette di inviare una mail quando in valore
rivelato da un sensore supera una data soglia.
• Invia un SMS quando si rivela il superamento
di una data soglia
Caratteristiche di Tamboo
Cinque o sei righe di codice di Temboo sulla
scheda Arduino sono equivalenti a 200 linee di
codice nella nube.
Choreos
Abbreviazione di "coreografie" - sono il cuore della
piattaforma Temboo. Sono piccoli pezzi di codice riutilizzabili
che interfacciano le API pubbliche tramite HTTP per
recuperare i dati aziendali, l'invio di messaggi di posta
elettronica automaticamente e l'aggiornamento dei record in
un database SQL, per citarne solo alcuni.
Temboo
Twilio
Arduino & Temboo: How It Works
Esempio 1/2
Esempio 2/2
Arduino YUN o Arduino DUE ???
•
•
•
•
•
•
•
Arduino Yun integra i servizi di rete
Arduino Yun integra il modulo wi-fi
Arduino Yun utlizza i servizi di Linino
Arduino Yun carica lo sketch da remoto
Arduino Yun è meno perfor. di Arduino Due
Arduino Due è un microcontrollore a 32 bit
Arduino Due richiede più codice
Grazie
Scarica

Domotica_Arduino_20-2-2014