+ All Categories
Home > Engineering > Introduzione a Arduino

Introduzione a Arduino

Date post: 12-Feb-2017
Category:
Upload: pietro-aiuola
View: 383 times
Download: 1 times
Share this document with a friend
116
Introduzione a Arduino Pietro Aiuola [email protected]
Transcript
Page 1: Introduzione a Arduino

Introduzione a Arduino

Pietro Aiuola

[email protected]

Page 2: Introduzione a Arduino

Benvenuti!

Introduzione 2

• Cosa è Arduino?

• Cosa si può fare?

• La sua storia

• Com’è fatto?

• Come si usa?

• Esempi pratici

Page 3: Introduzione a Arduino

Cosa è Arduino?

Introduzione 3

Arduino, come tutte le invenzioni di successo,

è la risposta ad un problema.

E’ uno strumento open source che semplifica la

progettazione e la prototipazione elettronica

offrendo a studenti, insegnanti, artisti o semplici

appassionati una piattaforma hardware e software

per l’implementazione rapida di progetti interattivi,

multimediali e multidisciplinari.

Page 4: Introduzione a Arduino

Cosa è Arduino?

Introduzione 4

• Piattaforma Open-source per la prototipazione elettronica

• Composta da una parte di hardware ed una di software open-source

• Artisti, designers, hobbisti, CHIUNQUE!

Page 5: Introduzione a Arduino

Cosa è Arduino?

Introduzione 5

Una PIATTAFORMA di PROTOTIPAZIONE ELETTRONICA OPEN SOURCE:

PIATTAFORMA: Architettura hardware con un framework

software su cui fare girare un programma software.

PROTOTIPO: Un modulo iniziale che può servire come base o

modello per la creazione di altre cose.

ELETTRONICA: Tecnologia che fa uso del movimento

controllato di elettroni attraverso differenti media.

OPEN SOURCE: Risorse possono essere usate, redistribuite o

riscritte gratis.

Page 6: Introduzione a Arduino

Cosa NON è Arduino?

Introduzione 6

• NON è un computer, ma un physical computer.

• NON è un giocattolo.

• NON è costoso.

Page 7: Introduzione a Arduino

Cosa NON è Arduino?

Introduzione 6

• NON è un computer, ma un physical computer.

• NON è un giocattolo.

• NON è costoso.

Mini-elaboratori elettronici adibiti al

controllo di oggetti nel mondo reale.

Page 8: Introduzione a Arduino

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.

Cosa si puo fare?

Introduzione 7

Page 9: Introduzione a Arduino

Storia di Arduino

Introduzione 8

Il progetto nasce da Wiring, una piattaforma per la

prototipazione elettronica semplificata, destinata ad

artisti, architetti e altri professionisti digiuni di

elettronica, realizzata da Hernando Barragán per la

sua tesi di laurea (di cui Banzi era relatore) presso

l’Interaction Design Institute di Ivrea.

Arduino ha di fatto ereditato i presupposti

e gli scopi originali di Wiring, espandendo

la portata e il potenziale del progetto.

Page 10: Introduzione a Arduino

Storia di Arduino

Introduzione 9

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 alcuni dei fondatori del progetto.

Page 11: Introduzione a Arduino

Storia di Arduino

Introduzione 10

La “faccia” di Arduino è Massimo Banzi, InteractionDesigner che nel 2005 fonda ad Ivrea il team di sviluppo originale insieme a David Cuartielles, Tom Igoe, Gianluca Martino e Davide Mellis.

Page 12: Introduzione a Arduino

Storia di Arduino

Introduzione 11

La vera svolta per il progetto è arrivata grazie all’appoggio globale negli ambienti di quello che è ormai all’unanimità chiamato Maker Movement, la “sottocultura” degli hobbisti tecnologici del 21-esimo secolo.

I maker “non sono nerd, anzi sono dei tipi piuttosto fighi che

si interessano di tecnologia, design, arte, sostenibilità, modelli

di business alternativi. Vivono di comunità online, software e

hardware open source ma anche del sogno di inventare

qualcosa da produrre autonomamente, per vivere delle

proprie invenzioni. In un momento di crisi si inventano il loro

lavoro invece che cercarne uno classico.”

Page 13: Introduzione a Arduino

Storia di Arduino

Introduzione 12

Pubblicazioni su internet e

riviste come Make e promozioni

di iniziative come la Maker Faire

hanno ulteriormente promosso

il movimento.

Page 14: Introduzione a Arduino

Storia di Arduino

Introduzione 13

A ottobre 2008 erano già stati venduti più di 50.000

esemplari di Arduino in tutto il mondo.

Arduino ha ricevuto una menzione d'onore nella

sezione Digital Communities del 2006 Ars

Electronica Prix.

Page 15: Introduzione a Arduino

Hardware generico di Arduino

Introduzione 14

Arduino è, di fatto, un’interfaccia semplificata per un microcontrollore, che è dunque il cuore di ogni “board”.

Un “microcontroller” è un dispositivo elettronico integrato su un unico chip, progettato appositamente per interagire con input esterni, analogici o digitali, e restituire output analogici o digitali derivati dalle operazioni di processamento interno determinate da un programma caricato nella memoria del chip.

Physical computer 8-bit a 16MHz con 32kb di memoria(l’equivalente circa di un computer desktop degli anni 80)

Page 16: Introduzione a Arduino

Hardware generico di Arduino

Introduzione 15

Nei primi modelli Banzi e il suo team utilizzarono un microcontrollore Atmel a 8-bit AVR, per poi passare a soluzioni più potenti con le versioni successive.

Page 17: Introduzione a Arduino

Hardware generico di Arduino

Introduzione 16

Per permettere agli Arduino di comunicare con un computer tramite USB e renderne semplice la programmazione, ogni scheda integra un ulteriore chip per la conversione del segnale digitale da USB a seriale.

Page 18: Introduzione a Arduino

Hardware generico di Arduino

Introduzione 17

Quasi tutte le schede Arduino integrano altri componenti, alcuni specifici a seconda del modello, quali ad esempio un oscillatore ceramico, un pulsante di reset che fa ripartire la scheda in caso di stallo del programma in memoria, un jack per la connessione dell’alimentazione diretta.

Su ogni board Arduino sono presenti infine dei pin (“piedini”) di input e output attraverso i quali il microcontrollore riceve le “informazioni” in ingresso e restituisce all’ambiente un segnale in uscita.

Page 19: Introduzione a Arduino

Hardware generico di Arduino

Introduzione 18

E’ un hardware open source, distribuito nei termini della licenza Creative Commons Attribution-ShareAlike 2.5.

In questo modo, chi lo desidera può legalmente auto-costruirsi un clone di Arduino o derivarne una versione modificata, scaricando gratuitamente lo schema elettrico e l'elenco dei componenti elettronici necessari. Questa possibilità ha consentito lo sviluppo di prodotti Arduino compatibili da parte di piccole e medie aziende in tutto il mondo: è quindi divenuto possibile scegliere tra un'enorme quantità di schede Arduino-compatibili.

Page 20: Introduzione a Arduino

I vari modelli di Arduino

Introduzione 19

Page 21: Introduzione a Arduino

Arduino UNO

Introduzione 20

Microcontrollore: ATmega328

Numero di Input/Output digitali: 14 (di cui 6 output PWM)

Numero di Input Analogici: 6

Memoria: 32KB; 2KB SRAM; 1KB EEPROM

Velocità di Clock: 16MHz

Page 22: Introduzione a Arduino

Arduino MICRO

Introduzione 21

Microcontroller ATmega32U4

Digital I/O Pins 20

PWM Channels 7

Analog Input

Channels12

Flash Memory

32 KB

(ATmega32U4)

of which 4 KB

used by

bootloader

SRAM2.5 KB

(ATmega32U4)

EEPROM1 KB

(ATmega32U4)

Clock Speed 16 MHz

Length 48 mm

Width 18 mm

Weight 13 g

Page 23: Introduzione a Arduino

Arduino Lilypad

Introduzione 22

• Indossabile

• Lavabile

Page 24: Introduzione a Arduino

Arduino YUN

Introduzione 23

The Arduino Yun is a MIPS board based on

the Atheros AR9331 and the ATmega32u4.

The Atheros processor supports Linino, a

Linux distribution based on OpenWRT. The

board has built-in Ethernet, 802.11 g/b/n

WiFi support, USB-A port, micro-SD card slot,

20 digital input/output

pins(of which 7 can be

used as PWM outputs

and 12 as analog

inputs), a

16 MHz crystal

oscillator, a micro

USB connection, an

ICSP header, and 3

reset buttons.

Page 25: Introduzione a Arduino

Il linguaggio

Introduzione 24

Linguaggio programmazione simile al C

• Derivato da Wiring

• Due funzioni principali:

• setup()

• loop()

• Facilmente espandibile

• Codice organizzato in «sketch»

Page 26: Introduzione a Arduino

L’ambiente di sviluppo

Introduzione 25

setup()

loop()

Page 27: Introduzione a Arduino

Sensori e attuatori

Introduzione 26

Page 28: Introduzione a Arduino

Segnali

Introduzione 27

SEGNALI

Page 29: Introduzione a Arduino

Segnali

Introduzione 27

SEGNALI

ANALOGICI

Page 30: Introduzione a Arduino

Segnali

Introduzione 27

SEGNALI

ANALOGICI

DIGITALI

Page 31: Introduzione a Arduino

Segnali analogici

Introduzione 28

Un segnale analogico può assumere qualsiasi valore (all'interno di un range noto).

Page 32: Introduzione a Arduino

Segnali digitali

Introduzione 29

01001000 01100101 01101100 01101100 01101111 Hello

La quantità può essere SOLO di

valori specifici

Page 33: Introduzione a Arduino

Come viene letto un segnale

Analogico o Digitale?

Introduzione 30

• Un segnale analogico deve essere campionato, ovvero

convertito in una sequenza di bit che ne esprime l'ampiezza

affinchè possa essere letto ed elaborato da Arduino,

• Un segnale digitale è immediatamente "leggibile" non

appena ne è stato discriminato il livello (High/Low).

• Del segnale analogico interessa leggere il valore istantaneo,

opportunamente campionato.

• Del segnale digitale occorre sapere solo lo stato alto o

basso.

Page 34: Introduzione a Arduino

Come viene letto un segnale

Analogico o Digitale?

Introduzione 30

• Un segnale analogico deve essere campionato, ovvero

convertito in una sequenza di bit che ne esprime l'ampiezza

affinchè possa essere letto ed elaborato da Arduino,

• Un segnale digitale è immediatamente "leggibile" non

appena ne è stato discriminato il livello (High/Low).

• Del segnale analogico interessa leggere il valore istantaneo,

opportunamente campionato.

• Del segnale digitale occorre sapere solo lo stato alto o

basso.

Arduino come riconosce se un

segnale è di ingresso o di uscita?

Page 35: Introduzione a Arduino

Come viene letto un segnale

Analogico o Digitale?

Introduzione 30

• Un segnale analogico deve essere campionato, ovvero

convertito in una sequenza di bit che ne esprime l'ampiezza

affinchè possa essere letto ed elaborato da Arduino,

• Un segnale digitale è immediatamente "leggibile" non

appena ne è stato discriminato il livello (High/Low).

• Del segnale analogico interessa leggere il valore istantaneo,

opportunamente campionato.

• Del segnale digitale occorre sapere solo lo stato alto o

basso.

Come leggo o scrivo sui PIN?

Arduino come riconosce se un

segnale è di ingresso o di uscita?

Page 36: Introduzione a Arduino

Hello world! – Blink sketch

Esempio di output digitale

Introduzione 31

HANDS ON!

Page 37: Introduzione a Arduino

Hello world! – Blink sketch

Esempio di output digitale

Introduzione 32

Page 38: Introduzione a Arduino

I LED

Introduzione 33

I LED standard sono in grado di assorbire fra 1,2V e 3,8V (dipende dal colore)

I pin di Arduino erogano fino a 5V!

Come assorbire la tensione in eccesso?

Page 39: Introduzione a Arduino

Richiami di elettronica

Introduzione 34

Intensità di corrente

La quantità di carica

elettrica che attraversa

la sezione di un

conduttore entro

un'unità di tempo; si

misura in ampere (A).

Tensione

E’ il dislivello elettrico a

cui vengono mantenuti

gli elettroni e si misura

in volt (V). Questo

dislivello è creato dal

generatore di corrente.

Resistenza

E’ la capacità di un

conduttore di opporsi al

passaggio di corrente; si

misura in ohm (Ω) e

dipende dal materiale,

dalla sezione e dalla

lunghezza del conduttore.

Page 40: Introduzione a Arduino

Legge di Ohm

Introduzione 35

Page 41: Introduzione a Arduino

Legge di Ohm

Introduzione 36

Ecco a cosa possono servire le resistenze!

La luminosità del led è proporzionale all’intensità della corrente che lo attraversa

I led sopportano una corrente di circa 20mA = 0,02A

Come assorbire la tensione in eccesso? Esempio: Led giallo da 2,1V

• Devo assorbire 5V – 2,1V = 2,9V => 2,9 = 0.02*R

• R = 2,9/0.02 = 145 Ohm

I valori standard sono limitati, devo prendere il valore superiore più vicino (150 Ohm)

Normalmente per essere sicuri, usare 220 Ohm e si possono evitare i calcoli, al più il led è meno luminoso

Page 42: Introduzione a Arduino

Legge di Ohm

Introduzione 36

Ecco a cosa possono servire le resistenze!

La luminosità del led è proporzionale all’intensità della corrente che lo attraversa

I led sopportano una corrente di circa 20mA = 0,02A

Come assorbire la tensione in eccesso? Esempio: Led giallo da 2,1V

• Devo assorbire 5V – 2,1V = 2,9V => 2,9 = 0.02*R

• R = 2,9/0.02 = 145 Ohm

I valori standard sono limitati, devo prendere il valore superiore più vicino (150 Ohm)

Normalmente per essere sicuri, usare 220 Ohm e si possono evitare i calcoli, al più il led è meno luminoso

Page 43: Introduzione a Arduino

Legge di Ohm

Introduzione 36

Ecco a cosa possono servire le resistenze!

La luminosità del led è proporzionale all’intensità della corrente che lo attraversa

I led sopportano una corrente di circa 20mA = 0,02A

Come assorbire la tensione in eccesso? Esempio: Led giallo da 2,1V

• Devo assorbire 5V – 2,1V = 2,9V => 2,9 = 0.02*R

• R = 2,9/0.02 = 145 Ohm

I valori standard sono limitati, devo prendere il valore superiore più vicino (150 Ohm)

Normalmente per essere sicuri, usare 220 Ohm e si possono evitare i calcoli, al più il led è meno luminoso

Page 44: Introduzione a Arduino

Le resistenze

Introduzione 37

Page 45: Introduzione a Arduino

Le resistenze

Introduzione 37

Page 46: Introduzione a Arduino

La breadboard non

richiede saldature ed è

completamente riusabile

(e perciò utilizzata

soprattutto per circuiti

temporanei).

Prototyping: la breadboard

Introduzione 38

Lo sviluppo di un circuito è un processo iterativo e richiede molte modifiche possibilmente in modo dinamico e veloce.

Page 47: Introduzione a Arduino

Prototyping: la basetta millefori

Introduzione 39

Si tratta di una piastra di vetronite (solitamente), che può essere di varie misure, caratterizzata da una griglia di fori regolari a distanza di 2,54 mm (cioè un decimo di pollice) l'uno dall'altro.

Adatta per costruire

circuiti elettronici

definitivi

Page 48: Introduzione a Arduino

Let’s code!

Introduzione 40

Page 49: Introduzione a Arduino

Let’s code!

Introduzione 40

Commenti

multilinea

Page 50: Introduzione a Arduino

Let’s code!

Introduzione 40

Commenti

multilinea

Commenti linea singola

Page 51: Introduzione a Arduino

Let’s code!

Introduzione 41

Dichiarazione variabile

Page 52: Introduzione a Arduino

Let’s code!

Introduzione 41

Dichiarazione variabileTipi di dato comuni

boolean isSaturday = true;

int myNumber = 1;

float pi = 3.14;

char firstInitial = 'P';

char myName[] = "Pearl";

String myName = "Pearl Chen“

int myPins[] = {2, 4, 8, 3, 6};

Page 53: Introduzione a Arduino

Let’s code!

Introduzione 42

Funzione

Page 54: Introduzione a Arduino

Let’s code!

Introduzione 42

Funzione

Page 55: Introduzione a Arduino

Let’s code!

Introduzione 43

Richiamo di funzione

Page 56: Introduzione a Arduino

Let’s code!

Introduzione 44

SPERIMENTIAMO!

Page 57: Introduzione a Arduino

Esempio di input digitale

Button sketch

Introduzione 45

Page 58: Introduzione a Arduino

Il pulsante

Introduzione 46

Corrente MAX sul pin di input: 40mA

Buona norma: 20mA

R=V/I ossia 5/0.02 => 250 ohm

Resistenza standard più vicina 330 ohm

ON oppure OFF

Page 59: Introduzione a Arduino

Ingresso indeterminato

Introduzione 47

PROBLEMA:

Quando il pulsante non è premuto non c’è nulla che “dica” al circuito di restare a livello LOW, infatti interferenze elettromagnetiche, correnti statiche o quant’altro potrebbero far alzare il livello della tensione sino ad arrivare ad un livello HIGH.

Page 60: Introduzione a Arduino

Resistenza di pull-down

Introduzione 48

• Quando il pulsante non è

premuto le due resistenze

sono messe in serie ed il pin

leggerà zero, ossia il valore di

massa.

• Quando andiamo a premere il

pulsante la corrente seguirà la

via a minor resistenza che è

quella verso il pin, impedendo

perciò di creare un

cortocircuito fra 5V e massa.

Page 61: Introduzione a Arduino

Resistenza di pull-up

Introduzione 49

• A pulsante non premuto c’è

costantemente corrente che passa

attraverso le due resistenze e

giunge al pin, infatti UP significa

alto, come il segnale (5V).

• Quando invece andiamo a premere

il pulsante la corrente seguirà la via

a minor resistenza per cui passerà

dalla resistenza di 10k al pulsante,

alla massa.

Page 62: Introduzione a Arduino

Resistenza di pull-up interna

Introduzione 50

void setup() {// dichiara che il "pushButton" è un input:pinMode(pushButton, INPUT_PULLUP);

// dichiara che il "led" è un output:pinMode(led, OUTPUT);

}

Per attivare la resistenza di pull-up interna di 20kΩ è

sufficiente indicarlo nella funzione di setup

Page 63: Introduzione a Arduino

Resistenza di pull-up interna

Introduzione 50

void setup() {// dichiara che il "pushButton" è un input:pinMode(pushButton, INPUT_PULLUP);

// dichiara che il "led" è un output:pinMode(led, OUTPUT);

}

Per attivare la resistenza di pull-up interna di 20kΩ è

sufficiente indicarlo nella funzione di setup

Page 64: Introduzione a Arduino

Resistenza di pull-up interna

Introduzione 50

void setup() {// dichiara che il "pushButton" è un input:pinMode(pushButton, INPUT_PULLUP);

// dichiara che il "led" è un output:pinMode(led, OUTPUT);

}

Per attivare la resistenza di pull-up interna di 20kΩ è

sufficiente indicarlo nella funzione di setup

ATTENZIONE!

Se fate un errore nella

programmazione, il

pin non sarà protetto

dalla resistenza!

Page 65: Introduzione a Arduino

Esempio di input digitale

Button sketch code

Introduzione 51

const int buttonPin = 2; // the number of the pushbutton pinconst int ledPin = 13; // the number of the LED pin

int buttonState = 0; // variable for reading the pushbutton status

void setup() {pinMode(ledPin, OUTPUT);pinMode(buttonPin, INPUT);

}

void loop() {buttonState = digitalRead(buttonPin);

if (buttonState == HIGH) {digitalWrite(ledPin, HIGH);}else {digitalWrite(ledPin, LOW);}

}

Page 66: Introduzione a Arduino

Comunicazione seriale

Introduzione 52

Abilita seriale

Stampa in

console

Arduino può utilizzare la connessione seriale

(USB) non solo per l’alimentazione…

Ma anche per comunicare con il computer

host

• Scambio dati

• Debug

Page 67: Introduzione a Arduino

Esempio di input analogico

Twilight switch sketch

Introduzione 53

Page 68: Introduzione a Arduino

La fotoresistenza

Introduzione 54

La fotoresistenza è un componente elettronico la cui resistenza è inversamente proporzionale alla quantità di luce che lo colpisce.

Si comporta come un tradizionale resistore, ma il suo valore in ohm diminuisce mano a mano che aumenta l’intensità della luce che la colpisce.

Ciò comporta che la corrente elettrica che transita attraverso tale componente è proporzionale all'intensità di una sorgente luminosa

0v, 1.2v, 1.2435v, 3.4323v,

4.34332v, 4.34333v5v +

Page 69: Introduzione a Arduino

Let’s code!

Introduzione 55

Page 70: Introduzione a Arduino

Let’s code!

Introduzione 56

const int LED = 13; // pin for LEDconst int photoResistor = A0; // pin for photo resistor

int val = 0; // variable used to store value coming from sensor

void setup() {pinMode(LED,OUTPUT); // LED is an output// * analogue pins are automatically set as inputs

}

void loop() {val = analogRead(photoResistor);digitalWrite(LED,HIGH); // turn on LEDdelay(val); // wait (how long is determined by sensor value)digitalWrite(LED,LOW); // turn off LEDdelay(val);

}

Page 71: Introduzione a Arduino

Let’s code!

Introduzione 57

const int LED = 13; // pin for LED

const int photoResistor = A0; // pin for LED

const int soglia = 500;

int val = 0; // variable used to store value coming from sensor

void setup() {

pinMode(LED,OUTPUT); // LED is an output

// * analogue pins are automatically set as inputs

}

void loop() {

val = analogRead(photoResistor);

if (val<soglia){

digitalWrite(LED,HIGH); // turn on LED

}

else{

digitalWrite(LED,LOW); // turn off LED

}

}

Page 72: Introduzione a Arduino

Esempio di output analogico

Variable light sketch

Introduzione 58

Page 73: Introduzione a Arduino

PWM

Introduzione 59

Page 74: Introduzione a Arduino

PWM

Introduzione 60

Page 75: Introduzione a Arduino

Let‘s code!

Introduzione 61

int ledPin = 9; // LED connected to digital pin 9int photoResistor= A0; int val = 0; // variable to store the read value

void setup(){pinMode(ledPin, OUTPUT); // sets the pin as output

}

void loop(){val = analogRead(photoResistor);

analogWrite(ledPin, val / 4);

}

Page 76: Introduzione a Arduino

Let‘s code!

Introduzione 61

int ledPin = 9; // LED connected to digital pin 9int photoResistor= A0; int val = 0; // variable to store the read value

void setup(){pinMode(ledPin, OUTPUT); // sets the pin as output

}

void loop(){val = analogRead(photoResistor);

analogWrite(ledPin, val / 4);

}

analogRead restituisce valori da 0 a 1023

Page 77: Introduzione a Arduino

Let‘s code!

Introduzione 61

int ledPin = 9; // LED connected to digital pin 9int photoResistor= A0; int val = 0; // variable to store the read value

void setup(){pinMode(ledPin, OUTPUT); // sets the pin as output

}

void loop(){val = analogRead(photoResistor);

analogWrite(ledPin, val / 4);

}

analogRead restituisce valori da 0 a 1023

analogWrite accetta valori da 0 a 255

Page 78: Introduzione a Arduino

Altri componenti

Condensatore

Introduzione 62

Un condensatore è un dispositivo che può accumulare e rilasciare energia in un circuito. Tipicamente un condensatore è formato da due lastre cariche con un materiale isolante tra esse il quale ha il compito di evitare che si perda la carica elettrica accumulata.

Page 79: Introduzione a Arduino

Altri componenti

Induttore

Introduzione 63

Un induttore è un dispositivo che immagazzina energia elettrica in un campo magnetico. Un induttore è

formato da un cavo a spirale. Quando viene fatta passare corrente elettrica attraverso il cavo viene generato un campo magnetico. Quando la corrente aumenta, viene immagazzinata più energia nel campo magnetico; quando la corrente diminuisce l'energia è rilasciata come potenza elettrica.

Page 80: Introduzione a Arduino

Altri componenti

Diodo

Introduzione 64

Un diodo è un dispositivo che permette il passaggio della corrente elettrica in una sola direzione. Questi componenti sono spesso usati per isolare l'effetto di un componente su un altro.

Alcuni tipi di diodi:

• Diodo che emette luce (LED, Light Emitting Diode)

• Fotodiodo, rileva la luce

• Diodo laser, emette un fascio di luce laser

• Diodo Zener, impedisce il flusso di corrente sopra una certa soglia

Page 81: Introduzione a Arduino

Altri componenti

Transistor

Introduzione 65

Un transistor è un dispositivo che limita o facilita il passaggio di corrente tra i suoi due contatti in base alla presenza o assenza di corrente su un terzo contatto. I pin di un transistor sono quindi tre: Collettore, Emettitore e Base.

il Collettore e l'Emettitore sono in pratica l'input e l'output del transistor

la Base, in pratica è l'innesco

Page 82: Introduzione a Arduino

Altri componenti

Transistor

Introduzione 66

I due tipi di transistor più comuni sono:

PNP - questo transistor lascia passare corrente (dall'Emettitore al Collettore) se la tensione alla Base è minore della tensione dell'Emettitore

NPN - lascia passare corrente (dal Collettore all'Emettitore) se la tensione alla Base è maggiore della tensione dell'Emettitore

Gli usi più comuni dei transistor sono relativi all'uso come interruttori attivati dalla corrente elettrica, oppure come amplificatori della corrente in uscita.

Page 83: Introduzione a Arduino

Relay elettromagnetici

Introduzione 67

Interruttori azionati elettronicamente

• Per attivare e disattivare apparecchi ad alte tensioni (lampadari, cancelli automatici, ventilatori, etc.)

• Attenzione a lavorare con la 220V!!!

Page 84: Introduzione a Arduino

Le shield

Introduzione 68

Un Arduino 2009 trasformato in WebServer grazie a due shield.

Page 85: Introduzione a Arduino

Le shield ufficiali

Introduzione 69

Arduino Proto Shield - fronte e retro

Page 86: Introduzione a Arduino

Le shield ufficiali

Introduzione 70

Arduino Motor Shield

Page 87: Introduzione a Arduino

Le shield ufficiali

Introduzione 71

Arduino Wifi Shield e Arduino Ethernet Shield

Page 88: Introduzione a Arduino

Le shield non ufficiali

Introduzione 72

• Così come Arduino, le shield sono hardware open source: le schematiche di ogni scheda si possono scaricare e modificare a piacimento.

• Le shield attualmente in commercio sono centinaia. Talmente tante che si è resa necessaria la creazione di un database online per mettere ordine e raccogliere schematiche e caratteristiche tecniche di ognuna.

Page 89: Introduzione a Arduino

Le shield non ufficiali

Introduzione 73

Arduino Wave Shield

Page 90: Introduzione a Arduino

Buzzer

Introduzione 74

#define PIEZO 3

int del = 500;

void setup(){

pinMode(PIEZO, OUTPUT);

}

void loop(){

analogWrite(PIEZO, 128); // 50 percent duty cycle delay(del);

digitalWrite(PIEZO, LOW); // turn the piezo off

delay(del);

}

Page 91: Introduzione a Arduino

Display

Moduli a caratteri

Introduzione 75

Sono display LCD capaci di visualizzare solo caratteri. Vengono commercializzati display completi di controllore di varie dimensioni a partire da 8x1, costituito da una riga di 8 caratteri, fino a dimensioni più grandi più tra cui 8x2, 16x2, 20x2, 16x4, 20x4, ecc

Controller Hitachi HD44780

Page 92: Introduzione a Arduino

Display

Moduli a caratteri

Introduzione 76

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interfacepinsLiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {// set up the LCD's number of columns and rows:lcd.begin(16, 2);// Print a message to the LCD.lcd.print("hello, world!");

}

void loop() {// Turn off the display:lcd.noDisplay();delay(500);// Turn on the display:lcd.display();delay(500);

}

Page 93: Introduzione a Arduino

Display

Moduli grafici

Introduzione 77

Controller

Philips PCD8544

• 48 righe

• 84 colonne

• economico

• basso consumo

Page 94: Introduzione a Arduino

Motori semplici

Introduzione 78

Page 95: Introduzione a Arduino

Servomotori

Introduzione 79

I servomotori sono composti da un motore elettrico meccanicamente collegato ad un potenziometro. I componenti elettronici al suo interno traducono il segnale PWM in ingresso in una posizione. I componenti elettronici al suo interno traducono il segnale PWM in ingresso in una posizione.

Quando si da il comando di rotazione, il motore si accende fino a quando il potenziometro raggiunge i valori corrispondenti alla posizione richiesta.

Analog 180° Micro Servo

module è un servomotore di

alta qualità che può essere

connesso direttamente al

Sensor Shield.

Page 96: Introduzione a Arduino

Orologio RTC

Introduzione 80

Un real-time clock (RTC), orologio in tempo reale, è un dispositivo con funzione di orologio, costituito da un processore a circuito integrato specializzato per questa funzione, il quale conteggia il tempo reale anche quando l'utilizzatore viene spento

Page 97: Introduzione a Arduino

RFID

Introduzione 81

Un sistema RFID utilizza un tag, o un etichetta, che viene attaccata all’oggetto che deve essere identificato. Il lettore, invia un segnale al tag in attesa di una risposta, ovvero le informazioni memorizzate all’interno del tag.

Mifare RC522

Page 98: Introduzione a Arduino

Sensori ambientali

Temperatura e umidità

Introduzione 82

TMP36 - sensore analogicoTensione di alimentazione: 2.7 - 5.5 VDC

Fattore di conversione: 10mV/°C

Accuratezza di ±2°C su tutta la scala

Linearità ±0.5°C

Range di misura: -40°C +125°C

3.3-6V Input

1-1.5mA measuring current

40-50 uA standby current

Humidity from 0-100% RH

-40 - 80 degrees C temperature range

+-2% RH accuracy

+-0.5 degrees C

DHT22 – sensore digitale

Page 99: Introduzione a Arduino

Sensori ambientali

Rilevatori di movimento

Introduzione 83

Sensore PIR SEN0018 con e senza cupola di diffusione

Trimmer delay

Page 100: Introduzione a Arduino

Sensori ambientali

Rilevatori di movimento

Introduzione 84

Il funzionamento è semplice: quando rileva un movimento l’uscita del segnale passa da LOW ad HIGH, secondo le specifiche del costruttore l’uscita passa da 0,4v a 4v, quindi da una soglia inferiore ai 2,5v ad una superiore. Il sensore presenta anche un potenziometro per regolare il tempo di eccitazione dopo aver rilevato il

movimento, ossia il tempo in cui il pin del segnale digitale resta a HIGH prima che, in assenza di movimento, torni a LOW

Page 101: Introduzione a Arduino

Sensori ambientali

Rilevatori di movimento

Introduzione 85

int signal = 3;int ledGreen = 4;int ledRed = 5;

void setup(){

pinMode( ledGreen, OUTPUT );pinMode( ledRed, OUTPUT );

digitalWrite( ledGreen, LOW );digitalWrite( ledRed, LOW );

}

void loop(){

int pirSignal = digitalRead( signal );int pirSignal2= (pirSignal == HIGH)? LOW:HIGH;

digitalWrite( ledGreen, pirSignal );digitalWrite( ledRed, pirSignal2 );

delay(100);}

Page 102: Introduzione a Arduino

Sensori ambientali

Sonar

Introduzione 86

Un sensore a ultrasuoni come il HC SR 04 misura il tempo impiegato dalle onde sonore emesse da un sorgente a ritornarvici dopo aver incontrato un ostacolo che le riflette.

Page 103: Introduzione a Arduino

Sensori ambientali

Sonar

Introduzione 87

Page 104: Introduzione a Arduino

Wifi

ESP-8266

Introduzione 88

L’ESP8266 è un modulo

WiFi molto economico

che offre la possibilità di

essere connesso

facilmente ad un micro

controllore, come

arduino, mediante 2 pin

seriali Tx ed Rx ed

interagire con lo sketch

mediante comandi AT.

Page 105: Introduzione a Arduino

Wifi

ESP-8266

Introduzione 89

Page 106: Introduzione a Arduino

…e tanto altro!

Introduzione 90

• GPS

• Bluetooth

• Infrarossi

• Zeebee

• NFC

• Schede GSM dati

• Trasmettitori/ricevitori wireless 433Mhz

• Schede di sintesi e riconoscimento vocale

• …

Page 107: Introduzione a Arduino

Uno sguardo sul web

Cat feeder

Introduzione 91

Sei in giro, lontano da casa, ed hai dimenticato di dar da

mangiare al tuo tenero gatto? Chiedi aiuto al Cat Feeder!

Page 108: Introduzione a Arduino

Uno sguardo sul web

Cat feeder

Introduzione 92

Funzionamento:

Un piccolo sensore di luce

(LDR: light dependant resistor)

fissato sullo schermo di un

cellulare, ne rileva il

cambiamento di luminosità e

permette, tramite un micro

servomotore, di aprire un

barattolo contenente del cibo

per gatti. Basterà una chiamata

per attivare il Cat Feeder e

lasciar cadere i croccantini!

Page 109: Introduzione a Arduino

Uno sguardo sul web

Cat feeder

Introduzione 93

Componenti:

• Sensore di luce (LDR)

• 1 Micro Servomotore

• Resistenza da 10 Kohm

• Cellulare

Page 110: Introduzione a Arduino

Uno sguardo sul web

Cat feeder

Introduzione 94

Page 111: Introduzione a Arduino

Uno sguardo sul web

Cat feeder

Introduzione 95

#include <Servo.h>

Servo myServo; // viene creato un oggetto "servomotore"int sensorValue, first = 0;

void setup() {myServo.attach(9); // Il servomotore è controllato dal pin 9Serial.begin(9600); // La porta seriale è abilitata per

eventuale debugwhile(digitalRead(8)) { // Il barattolo è chiuso fino myServo.write(45); // alla ricezione della prima chiamatafirst = 1;

}}

Page 112: Introduzione a Arduino

Uno sguardo sul web

Cat feeder

Introduzione 96

void loop() {if(first){sensorValue = digitalRead(8);if(sensorValue) // Se il sensore ldr rileva della luce

myServo.write(45); // il servomotore chiude il contenitoreelse // altrimenti

myServo.write(120); // il servomotore apre il contenitore}

}

Page 113: Introduzione a Arduino

Siti di riferimento

Introduzione 97

• Arduino Books

http://www.arduinobooks.com/

• Arduino Projects @ Instructables

http://www.instructables.com/id/Arduino-Projects/

• Arduino Tutorials

http://arduino.cc/playground/Main/TutorialList

• Electronics Technique Resources

http://arduino.cc/playground/Main/ElectroInfoResources

• PLAYGROUND

http://arduino.cc/playground/

• Linguaggio

https://www.arduino.cc/en/Reference/HomePage

Page 114: Introduzione a Arduino

Siti di riferimento

Introduzione 98

Page 115: Introduzione a Arduino

Domande?

Introduzione 99

Page 116: Introduzione a Arduino

Al prossimo

incontro… GRAZIE!

Introduzione 100


Recommended