ELECTRONICS LAB [WITH ARDUINO] Daniele Costarella Salvatore Carotenuto Teatro Carlo Gesualdo / Casina Del Principe Avellino
Rights to copy 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/. 2
Filosofia del corso MAKE! MAKE! MAKE! 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 4
5 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.
Cos'è Arduino? Il mondo Arduino, fondamentalmente, si compone di 3 componenti essenziali 6
Cos'è Arduino? 1. Una scheda elettronica 7
Cos'è Arduino? 1. Una scheda elettronica 2. Un ambiente di sviluppo semplificato 8
Cos'è Arduino? 1. Una scheda elettronica 2. Un ambiente di sviluppo semplificato 3. Una filosofia e una comunità enorme 9
10 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
Perché 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 11
12 Physical Computing?! 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
CENNI DI ELETTRONICA
Segnali analogici e digitali 14
Corrente, tensione e resistenza 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 15
Corrente, tensione e resistenza 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] 16
Corrente, tensione e resistenza 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] 17
Riconoscere i componenti Resistori 18
Cenni di elettronica Resistori: codice colori 19
Cenni di elettronica Condensatori 20
Cenni di elettronica Diodi 21
Cenni di elettronica LED (Light Emitting Diode) 22
Cenni di elettronica Switch 23
Cenni di elettronica Uso della breadboard?!? 24
Cenni di elettronica 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
26 Cenni di elettronica 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.
Cenni di elettronica Uso della breadboard!!! 27
28 Arduino: Studiamo l'hardware LED Test (pin 13) Pulsante di reset Pin di in/out digitali Power LED USB LED RX/TX ATmega328 Alimentazione esterna Alimentazioni e massa Input analogici
Giffoni HackLAB 2013 Caratteristiche tecniche Parametro Valore Microcontrollore ATmega328 Tensione operativa 5V 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 29
Giffoni HackLAB 2013 Qualche termine strano sketch Il programma che scrivete e fate girare sulla scheda Arduino pin I connettori di input e output digital Vuol dire che può assumere solo due valori: ALTO o BASSO, ON o OFF oppure 0 o 1 analog Quando i valori utili che rappresentano i segnali sono continui (infiniti) 30
Hardware Arduino Arduino Leonardo 31
Hardware Arduino Arduino Due 32
Hardware Arduino Arduino YUN 33
Hardware Arduino Arduino Robot 34
Hardware Arduino Arduino Esplora 35
Hardware Arduino Arduino ADK 36
Hardware Arduino Arduino Ethernet 37
Hardware Arduino Arduino Mega 2560 38
Hardware Arduino Arduino Micro 39
Hardware Arduino LillyPad Arduino USB LillyPad Arduino Simple 40
Hardware Arduino LillyPad Arduino SimpleSnap LillyPad Arduino 41
Hardware Arduino Arduino Pro Arduino Fio 42
Arduino: gli Shield 43
Shield Arduino GSM Shield 44
Shield Arduino Ethernet Shield 45
Shield Arduino WiFi Shield 46
Shield Arduino SD Shield 47
Shield Arduino Motor Shield 48
PRIMI PASSI CON ARDUINO
Primi passi con Arduino Installazione dell ambiente di sviluppo 1. 2. 3. 4. Scaricare l IDE di Arduino dal sito web del progetto: Collegare la board Arduino tramite il cavo USB Installare i driver necessari Riavviare il computer 5. Avviare il software di Arduino arduino.cc 50
Primi passi con 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 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 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 Avvio dell'ambiente di sviluppo 54
Primi passi con Arduino Impostazione dell ambiente di lavoro: Tools > Board 55
Primi passi con Arduino Impostazione dell ambiente di lavoro: Tools > Serial Port 56
57 Primi passi con Arduino La semplice interfaccia Verifica Carica Nuovo Apri Salva Monitor Seriale
Primi passi con Arduino Il ciclo di sviluppo 58
59 Elementi di programmazione Esaminiamo, innanzitutto, un po di sintassi utile: Simbolo Spiegazione // Commento su una riga Es. // 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
60 Elementi di programmazione 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)
Elementi di programmazione Un listato di esempio: /* FLUSSI 2013 day 1 Esempio: lampeggio di un LED collegato al pin 13 */ int ledpin = 13; void setup() { pinmode(ledpin, OUTPUT); } void loop() { digitalwrite(ledpin, HIGH); delay(1000); digitalwrite(ledpin, LOW); delay(1000); } // LED connesso al pin 13 // configura il pin come output // // // // accende il LED attende un secondo (ossia 1000 millisecondi) spegne il LED attende un secondo prima di ripartire 61
Primi passi con Arduino Input / Output di segnali digitali: LED blinking 62
Primi passi con Arduino Input / Output di segnali digitali: lettura di un pulsante 63
64 Elementi di programmazione Il costrutto if e if/else Simbolo if (condizione) { // esegue questo codice // se la condizione è vera } if (condizione) { // esegue questo codice // se la condizione è vera } else { // esegue questo codice // se la condizione è falsa } Spiegazione Esecuzione condizionata: esegue un blocco di codice se e solo se la condizione espressa è verificata 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 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 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 Lettura di segnali analogici Il componente LDR (Light Dependent Resistor) 67
Elementi di programmazione La funzione analogread Simbolo int analogread(pin) val = analogread(0) Spiegazione 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 Esempio: legge l'analog input 0 e memorizza il risultato nella variabile val 68
Primi passi con Arduino Lettura di segnali analogici Il componente LDR (Light Dependent Resistor) 69
Primi passi con Arduino Lettura di segnali analogici Il componente LDR /* 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); } 70
Primi passi con Arduino Lettura di segnali analogici Il componente LDR /* 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); } 71
Primi passi con Arduino Lettura di segnali analogici: aggiungiamo un LED 72
Primi passi con Arduino Lettura di segnali analogici Il componente LDR /* 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 } 73
FINE... PER OGGI