electronics lab [with arduino] | day 1
DESCRIPTION
Electronics LAB [with Arduino] @ FLUSSI Media Arts Festival 2013 (disPLAYcement) - Teatro Carlo Gesualdo, Avellino, Italy. August 28 -> 31, 2013 Lecturers: Daniele Costarella and Salvatore CarotenutoTRANSCRIPT
ELECTRONICS LAB [WITH ARDUINO]
Daniele Costarella
Teatro Carlo Gesualdo / Casina Del Principe – Avellino – 28 > 31 agosto 2013
Salvatore Carotenuto
Rights to copy
Electronics LAB [with Arduino]28 > 31 agosto 2013 2
Attribution – ShareAlike 3.0 Unported
You are free:● to Share - to copy, distribute and transmit the work● to Remix – to adapt the work
Under the following conditions:
Attribution – You must attribute the work in the manner specified by the authors.
Share Alike – If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.
Your fair use and other rights are in no way affected by the above.To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/.
Filosofia del corso
MAKE! MAKE! MAKE!
Electronics LAB [with Arduino]28 > 31 agosto 2013 3
Il programma di oggi
Mattina• Presentazione del corso• Microcontrollori e introduzione ad Arduino• Elementi di programmazione
Pomeriggio• Cenni di elettronica• Primi passi con Arduino
Electronics LAB [with Arduino]28 > 31 agosto 2013 4
Di cosa parleremo?
In questo corso impareremo a costruire semplici oggetti elettronici in grado di interagire con gli esseri umani usando
sensori e attuatori controllati da dispositivi elettronici.
Electronics LAB [with Arduino]28 > 31 agosto 2013 5
Cos'è Arduino?
Il mondo Arduino, fondamentalmente,si compone di 3 componenti essenziali
Electronics LAB [with Arduino]28 > 31 agosto 2013 6
Cos'è Arduino?
1. Una scheda elettronica
Electronics LAB [with Arduino]28 > 31 agosto 2013 7
Cos'è Arduino?
1. Una scheda elettronica2. Un ambiente di sviluppo
semplificato
Electronics LAB [with Arduino]28 > 31 agosto 2013 8
Cos'è Arduino?
1. Una scheda elettronica2. Un ambiente di sviluppo
semplificato3. Una filosofia e una
comunità enorme
Electronics LAB [with Arduino]28 > 31 agosto 2013 9
A cosa serve?
Con Arduino è possibile creare circuiti per molte applicazioni nel campo della robotica, dell'automazione,
e nella realizzazione di effetti luminosi e sonori
E' inoltre un prodotto ideale per la protipazione rapida e per l'apprendimento delle basi dell'elettronica
e della programmazione
Electronics LAB [with Arduino]28 > 31 agosto 2013 10
Perché Arduino?
Electronics LAB [with Arduino]
• Artisti e designer
• Progettisti elettronici
• Open source hardware● Open Source Physical Computing Platform
• Open source● Aperto a modifiche, schemi sempre disponibili
• Community● Wiki, forum, tutorial
28 > 31 agosto 2013 11
Physical Computing?!
Electronics LAB [with Arduino]
“Physical Computing is about prototyping with electronics, turning sensors, actuators and microcontrollers into materials for designers and artists.”
“It involves the design of interactive objects that can communicate with humans using sensors and actuators controlled by a behaviour
implemented as software running inside a microcontroller.”
Massimo Banzi, Arduino Co-Founder
28 > 31 agosto 2013 12
CENNI DI ELETTRONICA
Segnali analogici e digitali
Electronics LAB [with Arduino]28 > 31 agosto 2013 14
Parleremo di “tensione” per indicare la differenza tra il potenziale elettrico di due punti dello spazio.
Una semplice analogia:• Acqua ↔ Carica• Pressione ↔ Tensione• Flusso ↔ Corrente
Corrente, tensione e resistenza
Electronics LAB [with Arduino]28 > 31 agosto 2013 15
Possiamo pensare all’ammontare di acqua che fluisce attraverso la condotta come la “corrente” che scorre in cavo elettrico
Il nostro modello:• Acqua ↔ Carica [Coulomb]• Pressione ↔ Tensione [Volt]• Flusso ↔ Corrente [Ampere]• Ampiezza tubo ↔ Resistenza [Ohm]
Corrente, tensione e resistenza
Electronics LAB [with Arduino]28 > 31 agosto 2013 16
La “resistenza elettrica” è una grandezza fisica che misura la tendenza di un corpo ad opporsi al passaggio di una corrente elettrica, quando sottoposto a una tensione elettrica.
Il nostro modello:• Acqua ↔ Carica [Coulomb]• Pressione ↔ Tensione [Volt]• Flusso ↔ Corrente [Ampere]• Ampiezza tubo ↔ Resistenza [Ohm]
Corrente, tensione e resistenza
Electronics LAB [with Arduino]28 > 31 agosto 2013 17
Riconoscere i componenti
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Resistori
18
Cenni di elettronicaResistori: codice colori
28 > 31 agosto 2013 Electronics LAB [with Arduino] 19
Cenni di elettronica
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Condensatori
20
Cenni di elettronica
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Diodi
21
Cenni di elettronica
28 > 31 agosto 2013 Electronics LAB [with Arduino]
LED (Light Emitting Diode)
22
Cenni di elettronica
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Switch
23
Cenni di elettronica
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Uso della breadboard ?!?
24
Cenni di elettronica
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Uso della breadboard
Una breadboard (o anche detta basetta sperimentale) è uno strumento utilizzato per creare prototipi di circuiti elettrici.
Non richiede saldature ed è completamente riusabile (è perciò utilizzata soprattutto per circuiti temporanei).
25
Cenni di elettronica
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Uso della breadboard: struttura
Tutte le breadboard hanno, generalmente, una struttura simile composta da linee di trasmissione (strips) che consistono in collegamenti elettrici tra i fori. Come in figura, si possono notare le linee di alimentazione, poste generalmente ai lati e collegate lungo tutto l’asse, e le linee dedicate ai componenti, collegate in posizione perpendicolare alle linee di alimentazione.
26
Cenni di elettronica
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Uso della breadboard !!!
27
Arduino: “Studiamo” l'hardware
USB
LEDRX/TX
LED Test (pin 13)
Alimentazione esterna
ATmega328
Pin di in/out digitaliPulsante direset
Power LED
Alimentazioni e massa Input analogici
Electronics LAB [with Arduino]28 > 31 agosto 2013 28
Caratteristiche tecniche
Giffoni HackLAB 2013
Parametro Valore
Microcontrollore ATmega328
Tensione operativa 5 V
Tensione di ingresso (raccomandata) 7-12 V
Tensione di ingresso (Limiti) 6-20 V
Pin di I/O digitali 14 (di cui 6 PWM)
Pin di ingresso analogici 6
Corrente DC per i pin di I/O 40 mA
Corrente DC per i pin a 3.3V 50 mA
Memoria Flash 32 kB (ATmega328) di cui 0.5 usata per il bootloader
SRAM 2 kB (ATmega 328)
EEPROM 1 kB (ATmega328)
Velocità del Clock 16 MHz
28 > 31 agosto 2013 29
Qualche termine strano
Giffoni HackLAB 2013
sketchIl programma che scrivete e fate girare sulla scheda Arduino
pinI connettori di input e output
digitalVuol dire che può assumere solo due valori: ALTO o BASSO, ON o OFF oppure 0 o 1
analogQuando i valori utili che rappresentano i segnali sono continui (infiniti)
28 > 31 agosto 2013 30
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino Leonardo
31
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino Due
32
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino YUN
33
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino Robot
34
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino Esplora
35
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino ADK
36
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino Ethernet
37
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino Mega 2560
38
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino Micro
39
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
LillyPad Arduino USB LillyPad Arduino Simple
40
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
LillyPad Arduino SimpleSnap
LillyPad Arduino
41
Hardware Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino Pro Arduino Fio
42
Arduino: gli Shield
28 > 31 agosto 2013 Electronics LAB [with Arduino] 43
Shield
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino GSM Shield
44
Shield
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino Ethernet Shield
45
Shield
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino WiFi Shield
46
Shield
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino SD Shield
47
Shield
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Arduino Motor Shield
48
PRIMI PASSI CON ARDUINO
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Installazione dell’ambiente di sviluppo
1. Scaricare l’IDE di Arduino dal sito web del progetto: arduino.cc
2. Collegare la board Arduino tramite il cavo USB
3. Installare i driver necessari
4. Riavviare il computer
5. Avviare il software di Arduino
50
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Installazione dell’ambiente di sviluppo
● Collegarsi al sito web del progetto: arduino.cc
● Nella sezione Getting Started scegliere il sistema operativo in uso: Windows, Mac OS X, Linux
● Scaricare il software di Arduino
51
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Installazione driver chip FTDI
● Collegarsi al sito web del progetto: www.ftdichip.com
● Download dei driver adatti alla propria piattaforma
● Installare i driver● Riavviare il sistema
52
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Collegare la board
● Collega Arduino al computer con un cavo USB
● Un LED di colore verde (PWR) si accede quando la scheda è alimentata correttamente
53
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Avvio dell'ambiente di sviluppo
54
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Impostazione dell’ambiente di lavoro: Tools > Board
55
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Impostazione dell’ambiente di lavoro: Tools > Serial Port
56
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
La semplice interfaccia
Verifica Carica Nuovo Apri Salva Monitor Seriale
57
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Il “ciclo” di sviluppo
58
Elementi di programmazione
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Esaminiamo, innanzitutto, un po’ di sintassi utile:
Simbolo Spiegazione
// Commento su una rigaEs. // questo è un commento
/* Inizio di un commento su più righe
*/ Chiusura di un commento su più righe
void Dichiarazione di una funzione senza nessun valore di ritorno: la funzione esegue tutte le istruzioni senza restituire alcun valore.
setup() E’ la funzione (obbligatoria in Arduino) dedicata alle impostazioni iniziali
59
Elementi di programmazione
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Esaminiamo, innanzitutto, un po’ di sintassi utile:
Simbolo Spiegazione
loop() Funzione obbligatoria in Arduino: costituisce il loop principale del programma
int Usato per dichiarare una variabile di tipo integer (intero)
pinMode(pin, mode) Configurazione dei pin di Arduino (INPUT o OUTPUT)
digitalWrite(pin, level) Comando di scrittura su un pin digitale
delay(seconds) Funzione che introduce un’attesa (espresso in millesimi di secondo)
60
Elementi di programmazione
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Un listato di esempio:
/* FLUSSI 2013 day 1 Esempio: lampeggio di un LED collegato al pin 13*/ int ledPin = 13; // LED connesso al pin 13 void setup(){ pinMode(ledPin, OUTPUT); // configura il pin come output} void loop(){ digitalWrite(ledPin, HIGH); // accende il LED delay(1000); // attende un secondo (ossia 1000 millisecondi) digitalWrite(ledPin, LOW); // spegne il LED delay(1000); // attende un secondo prima di ripartire}
61
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Input / Output di segnali digitali: LED blinking
62
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Input / Output di segnali digitali: lettura di un pulsante
63
Elementi di programmazione
28 > 31 agosto 2013 Electronics LAB [with Arduino] 64
Il costrutto if e if/else
Simbolo Spiegazione
if (condizione) { // esegue questo codice // se la condizione è vera }
Esecuzione condizionata: esegue un blocco di codice se e solo se la condizione espressa è verificata
if (condizione) { // esegue questo codice // se la condizione è vera }else { // esegue questo codice // se la condizione è falsa }
Se la condizione è vera esegue un blocco di codice; se la condizione non è vera viene eseguito il codice del blocco else
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Input / Output di segnali digitali
Il costrutto if
/* FLUSSI 2013 day 1: Accendiamo il LED con un pulsante*/
int led_pin = 13;int button_pin = 8;
int state = 0;int value = 0;
void setup() { pinMode(led_pin, OUTPUT); pinMode(button_pin, INPUT); }
[ Continua … ]
65
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Input / Output di segnali digitali
void loop() { value = digitalRead(button_pin); if (value == HIGH) { state = 1; } else { state = 0; } if (state == 1) { digitalWrite(led_pin, HIGH); } else { digitalWrite(led_pin, LOW); } }
66
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Lettura di segnali analogici
Il componente LDR (Light Dependent Resistor)
67
Elementi di programmazione
28 > 31 agosto 2013 Electronics LAB [with Arduino] 68
La funzione analogRead
Simbolo Spiegazione
int analogRead(pin)Legge la tensione applicata al pin di input analogico e restituisce un numero compreso tra 0 e 1023 che rappresenta una tensione tra 0 e 5V
val = analogRead(0)Esempio: legge l'analog input 0 e memorizza il risultato nella variabile val
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Lettura di segnali analogici
Il componente LDR (Light Dependent Resistor)
69
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
/* FLUSSI 2013 day 1: Lettura di un segnale analogico: LDR*/
const int SENSOR = 0;
int val = 0;
void setup() { Serial.begin(9600); }
void loop() { val = analogRead(SENSOR); Serial.println(val); delay(100); }
Lettura di segnali analogici
Il componente LDR
70
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
/* FLUSSI 2013 day 1: Lettura di un segnale analogico: LDR*/
const int SENSOR = 0;
int val = 0;
void setup() { Serial.begin(9600); }
void loop() { val = analogRead(SENSOR); Serial.println(val); delay(100); }
Lettura di segnali analogici
Il componente LDR
71
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
Lettura di segnali analogici: aggiungiamo un LED
72
Primi passi con Arduino
28 > 31 agosto 2013 Electronics LAB [with Arduino]
/* FLUSSI 2013 day 1: Regoliamo il lampeggio in base al valore analogico letto */
# define LED 13 // pin usato per il LED
int val = 0; // variabile usata per il// valore letto dall'LDR
void setup() { pinMode(LED, OUTPUT); }
void loop() { val = analogRead(0);
digitalWrite(13, HIGH); // accendi il LED delay(val); // attendi digitalWrite(13, LOW); // spegni il LED delay(val); // attendi }
Lettura di segnali analogici
Il componente LDR
73
FINE... PER OGGI