electronics lab [with arduino] | day 1

74
ELECTRONICS LAB [WITH ARDUINO] Daniele Costarella Teatro Carlo Gesualdo / Casina Del Principe – Avellino – 28 > 31 agosto 2013 Salvatore Carotenuto

Upload: daniele-costarella

Post on 30-Aug-2014

749 views

Category:

Documents


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Electronics LAB [with Arduino] | DAY 1

ELECTRONICS LAB [WITH ARDUINO]

Daniele Costarella

Teatro Carlo Gesualdo / Casina Del Principe – Avellino – 28 > 31 agosto 2013

Salvatore Carotenuto

Page 2: Electronics LAB [with Arduino] | DAY 1

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/.

Page 3: Electronics LAB [with Arduino] | DAY 1

Filosofia del corso

MAKE! MAKE! MAKE!

Electronics LAB [with Arduino]28 > 31 agosto 2013 3

Page 4: Electronics LAB [with Arduino] | DAY 1

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

Page 5: Electronics LAB [with Arduino] | DAY 1

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

Page 6: Electronics LAB [with Arduino] | DAY 1

Cos'è Arduino?

Il mondo Arduino, fondamentalmente,si compone di 3 componenti essenziali

Electronics LAB [with Arduino]28 > 31 agosto 2013 6

Page 7: Electronics LAB [with Arduino] | DAY 1

Cos'è Arduino?

1. Una scheda elettronica

Electronics LAB [with Arduino]28 > 31 agosto 2013 7

Page 8: Electronics LAB [with Arduino] | DAY 1

Cos'è Arduino?

1. Una scheda elettronica2. Un ambiente di sviluppo

semplificato

Electronics LAB [with Arduino]28 > 31 agosto 2013 8

Page 9: Electronics LAB [with Arduino] | DAY 1

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

Page 10: Electronics LAB [with Arduino] | DAY 1

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

Page 11: Electronics LAB [with Arduino] | DAY 1

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

Page 12: Electronics LAB [with Arduino] | DAY 1

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

Page 13: Electronics LAB [with Arduino] | DAY 1

CENNI DI ELETTRONICA

Page 14: Electronics LAB [with Arduino] | DAY 1

Segnali analogici e digitali

Electronics LAB [with Arduino]28 > 31 agosto 2013 14

Page 15: Electronics LAB [with Arduino] | DAY 1

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

Page 16: Electronics LAB [with Arduino] | DAY 1

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

Page 17: Electronics LAB [with Arduino] | DAY 1

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

Page 18: Electronics LAB [with Arduino] | DAY 1

Riconoscere i componenti

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Resistori

18

Page 19: Electronics LAB [with Arduino] | DAY 1

Cenni di elettronicaResistori: codice colori

28 > 31 agosto 2013 Electronics LAB [with Arduino] 19

Page 20: Electronics LAB [with Arduino] | DAY 1

Cenni di elettronica

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Condensatori

20

Page 21: Electronics LAB [with Arduino] | DAY 1

Cenni di elettronica

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Diodi

21

Page 22: Electronics LAB [with Arduino] | DAY 1

Cenni di elettronica

28 > 31 agosto 2013 Electronics LAB [with Arduino]

LED (Light Emitting Diode)

22

Page 23: Electronics LAB [with Arduino] | DAY 1

Cenni di elettronica

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Switch

23

Page 24: Electronics LAB [with Arduino] | DAY 1

Cenni di elettronica

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Uso della breadboard ?!?

24

Page 25: Electronics LAB [with Arduino] | DAY 1

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

Page 26: Electronics LAB [with Arduino] | DAY 1

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

Page 27: Electronics LAB [with Arduino] | DAY 1

Cenni di elettronica

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Uso della breadboard !!!

27

Page 28: Electronics LAB [with Arduino] | DAY 1

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

Page 29: Electronics LAB [with Arduino] | DAY 1

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

Page 30: Electronics LAB [with Arduino] | DAY 1

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

Page 31: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino Leonardo

31

Page 32: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino Due

32

Page 33: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino YUN

33

Page 34: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino Robot

34

Page 35: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino Esplora

35

Page 36: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino ADK

36

Page 37: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino Ethernet

37

Page 38: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino Mega 2560

38

Page 39: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino Micro

39

Page 40: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

LillyPad Arduino USB LillyPad Arduino Simple

40

Page 41: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

LillyPad Arduino SimpleSnap

LillyPad Arduino

41

Page 42: Electronics LAB [with Arduino] | DAY 1

Hardware Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino Pro Arduino Fio

42

Page 43: Electronics LAB [with Arduino] | DAY 1

Arduino: gli Shield

28 > 31 agosto 2013 Electronics LAB [with Arduino] 43

Page 44: Electronics LAB [with Arduino] | DAY 1

Shield

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino GSM Shield

44

Page 45: Electronics LAB [with Arduino] | DAY 1

Shield

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino Ethernet Shield

45

Page 46: Electronics LAB [with Arduino] | DAY 1

Shield

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino WiFi Shield

46

Page 47: Electronics LAB [with Arduino] | DAY 1

Shield

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino SD Shield

47

Page 48: Electronics LAB [with Arduino] | DAY 1

Shield

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Arduino Motor Shield

48

Page 49: Electronics LAB [with Arduino] | DAY 1

PRIMI PASSI CON ARDUINO

Page 50: Electronics LAB [with Arduino] | DAY 1

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

Page 51: Electronics LAB [with Arduino] | DAY 1

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

Page 52: Electronics LAB [with Arduino] | DAY 1

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

Page 53: Electronics LAB [with Arduino] | DAY 1

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

Page 54: Electronics LAB [with Arduino] | DAY 1

Primi passi con Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Avvio dell'ambiente di sviluppo

54

Page 55: Electronics LAB [with Arduino] | DAY 1

Primi passi con Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Impostazione dell’ambiente di lavoro: Tools > Board

55

Page 56: Electronics LAB [with Arduino] | DAY 1

Primi passi con Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Impostazione dell’ambiente di lavoro: Tools > Serial Port

56

Page 57: Electronics LAB [with Arduino] | DAY 1

Primi passi con Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

La semplice interfaccia

Verifica Carica Nuovo Apri Salva Monitor Seriale

57

Page 58: Electronics LAB [with Arduino] | DAY 1

Primi passi con Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Il “ciclo” di sviluppo

58

Page 59: Electronics LAB [with Arduino] | DAY 1

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

Page 60: Electronics LAB [with Arduino] | DAY 1

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

Page 61: Electronics LAB [with Arduino] | DAY 1

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

Page 62: Electronics LAB [with Arduino] | DAY 1

Primi passi con Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Input / Output di segnali digitali: LED blinking

62

Page 63: Electronics LAB [with Arduino] | DAY 1

Primi passi con Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Input / Output di segnali digitali: lettura di un pulsante

63

Page 64: Electronics LAB [with Arduino] | DAY 1

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

Page 65: Electronics LAB [with Arduino] | DAY 1

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

Page 66: Electronics LAB [with Arduino] | DAY 1

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

Page 67: Electronics LAB [with Arduino] | DAY 1

Primi passi con Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Lettura di segnali analogici

Il componente LDR (Light Dependent Resistor)

67

Page 68: Electronics LAB [with Arduino] | DAY 1

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

Page 69: Electronics LAB [with Arduino] | DAY 1

Primi passi con Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Lettura di segnali analogici

Il componente LDR (Light Dependent Resistor)

69

Page 70: Electronics LAB [with Arduino] | DAY 1

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

Page 71: Electronics LAB [with Arduino] | DAY 1

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

Page 72: Electronics LAB [with Arduino] | DAY 1

Primi passi con Arduino

28 > 31 agosto 2013 Electronics LAB [with Arduino]

Lettura di segnali analogici: aggiungiamo un LED

72

Page 73: Electronics LAB [with Arduino] | DAY 1

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

Page 74: Electronics LAB [with Arduino] | DAY 1

FINE... PER OGGI