Sei sulla pagina 1di 39

Introduzione

 a  Arduino  

Gianpaolo  Gonnelli  
gianpaolo.gonnelli@gmail.com  
Arduino 1
Contenu7  
l  Cosa  è?  
l  Da  cosa  è  composto?  
l  Alcuni  componen7  u7li  
l  Programmare  Arduino  
l  Esperimen7  
l  Comunicare  col  PC  
l  Schede  ARM  

Arduino 2
Cosa  è?  
•  Arduino  è  una  scheda  eleBronica  che  ci  
permeBe  di  programmare  in  maniera  
“semplice”  un  microcontrollore  

•  ProgeBo  Italiano:  Massimo  Banzi  ex-­‐docente  


all’Interac7on  Design  Ins7tute  di  Ivrea  

•  Arduino  è  il  nome  di  un  pub  

Arduino 3
Applicazioni    

Arduino 4
Modelli  di  Arduino  

Arduino 5
Arduino  Shields  

Arduino 6
A  cosa  serve  
•  Arduino  può  essere  visto  come  una  centralina  
di  controllo  

•  U7lizzato  per  la  creazione  di  sistemi  


embedded  (una  volta  caricato  il  codice,  
occorre  solo  l’alimentazione)  

Arduino 7
Da  cosa  è  composto  
•  Il  cuore  di  Arduino:  il  Microcontrollore  

•  Il  risuonatore  ceramico  

•  La  porta  seriale  e  l’alimentazione  

•  Componen7  eleBronici  

Arduino 8
Microcontrollore  Atmel  Atmega328  

•  Computer  on  chip    

•  Programmazione  a  basso  livello    

•  Bootloader  

Arduino 9
Porte  e  alimentazione    

l  Seriale  USB  per  la  programmazione  e  


l'alimentazione  5v  

l  Ingresso  alimentatore  

Arduino 10
Caratteristiche di Arduino
Microcontroller     ATmega328  
Opera7ng  Voltage     5V  
Input  Voltage  (recommended)   7-­‐12V  
Input  Voltage  (limits)   6-­‐20V  
Digital  I/O  Pins   14  (of  which  6  provide  PWM  output)  
Analog  Input  Pins     6  
DC  Current  per  I/O  Pin     40  mA  
DC  Current  for  3.3V  PinFlash       50  mA  
Memory   32  KB  (ATmega328)  of  which  0.5  KB  bootloader  
SRAM   2  KB  (ATmega328)  
EEPROM     1  KB    (ATmega328)  

Clock  Speed     16  MHz  

Arduino 11
Digital vs Analog vs Digital PWM

•  Digital  
–  Due  livelli  0-­‐1  (basso  –  alto)    

•  Analog  
–  Misura  la  tensione    

•  Digital  PWM  
–  Simula  l’analogica  

Arduino 12
PWM di Arduino
Pulse Width Modulation ed è una tecnica per simulare la
variazione di tensione

Tensione a step discreti tra 0 e i 5V

Il rapporto fra i livelli viene variato all’interno del


singolo ciclo(duty cicle) per simulare una
variazione di tensione

Per inviare un segnale pwm, analogWrite invia


la il rapporto tra basso e alto rimappato su
valori interi da 0 a 255.

La funzione writemicroseconds per


specificare per quanto tempo il segnale rimarrà
alto

Arduino 13
Alcuni  Componen7  u7li  
l  Breadboard  
l  Resistenze  
l  Led  
l  Potenziometri  
l  Fotoresistenze  
l  Servo  motori  
l  Panoramica  sensori  
l   (I  soli7:  condensatori,  diodi,  transistor  etc..)  
Arduino 14
La  breadboard:  proto7pazione  circui7  

Standard Schema di collegamenti

Arduino 15
Resistenze:  come  leggerle    
Normalmente le resistenze sono caratterizzate da 4 strisce colorate:
per conoscere l’ordinamento delle strisce si guarda dove si trova
quella che dista di più dalle altre (che nell’ordinamento sarà l’ultima)

Significato dato dall’ordine:


•  1a e 2a: valore numerico
•  3a: moltiplicatore (normalmente in ohm)
•  4a: tolleranza (percentuale)

NOTA: Esistono anche resistenze a 6 strisce dette di precisione il loro significato è lo


stesso di quelle presentate solo che anche la 3° è un valore numerico la 4° il moltiplicatore
la 5° la tolleranza e la 6° la variazione di tolleranza a seconda della temperatura
Arduino 16
Resistenze:  come  leggerle    
Significato del colore

Prima e seconda striscia Terza striscia Quarta striscia

Valore = <rosso><nero>*<rosso>=20*100=2 Kohm


Tolleranza = <oro>= 5%
Arduino 17
Light  Emiing  Diode:  LED  
Sfruttano la proprietà di alcuni semiconduttori di
emettere fotoni (solitamente giunzioni p/n) grazie
all’effetto noto come emissione spontanea

I più comuni hanno due terminali: anodo e catodo.


Solitamente l’anodo è più lungo del catodo oppure il catodo
presenta una piegatura

Per il collegamento:
•  Anodo al polo positivo
•  Catodo al polo negativo
•  Resistenza in serie all’alimentazione(limita la corrente in ingresso al led)

Calcolo della resistenza: R = (V-Vled)/I


Vled è la caduta di tensione nel led stesso che è proporzionale alla frequenza
emessa
Arduino 18
Light  Emiing  Diode:  LED  
Valori  nominali  
•  LED  rossi  =  1,6  V   Calcolo della resistenza:
•  LED  giallo  =  2,2V   R = (V-Vled)/I

•  LED  verde  =  2,4  V  


•  LED  bianco  =  3,0  V  (  warm  o  sunny  )  
•  LED  bianco  (  cold  )  o  blu  =  3,5  V  
 
Valori  standard  
I  valori  di  corrente  sono  intorno  ai  10/15mA  
 
Esempio  (LED  rosso)  
R=(V-­‐Vled)/I=(5-­‐1,6)/0,016=218.77  ohm          220ohm  (standard)  
 
Arduino 19
Potenziometri
Il potenziometro è equivalente ad un partitore di tensione variable

Il potenziometro è un dispositivo con


un contatto strisciante sulla reistenza
interna

Permette la variazione della tensione


letta in uscita (attuato manualmente)

Applicazioni:
Joystick, robot, interruttori etc..

E’ caratterizzato da tre terminali ed una manopola, i terminali più esterni vanno


connessi all’alimentazione (+ e - intercambili) mentre da quello centrale è
possibile leggere la tensione che varia ruotando la manopola.

Arduino 20
Fotoresistenze  
Componente elettronico la cui resistenza è inversamente
proporzionale alla quantità di luce lo colpisce

un potenziometro attuato con la luce

Applicazione principale:
Interruttore crepuscolare

Arduino 21
Servo comandi
Attuatori con controllo di posizione integrato

Da cosa sono composti


•  Motore DC
•  Potenziometro
•  Riduttore di giri
•  Elettronica di controllo

Come funzionano
Comandati in tensione (ingresso segnale analogico o PWM) a seconda del
valore in ingresso si posizionano ad un angolo preciso angolo. L’elettronica
interna è necessaria per fermare il motore quando ha raggiunto l’angolo
(controllo lineare)

E’ presente una “mappatura” tra valori di tensione ed angoli che dipende


dalle specifiche del servocomando
Arduino 22
Panoramica sensori

Cosa  misurare   Tipo  sensore  

Posizione  angolare   Potenziometro,  encoder..  

Accelerazione   Accelerometro,giroscopio..  

Forza  e  pressione   Estensimetri,  estensimetri  a  fibra  


oica  

Luce   fotoresistenze,  diodi..  

Temperatura   Termoresistenze..  

Distanza   Laser,  ultrasuoni..  

Localizzazzione   GPS..  

Arduino 23
Arduino  Solware  

l  Ambiente  di  sviluppo  

l  Funzioni  principali  

l  Librerie  u7li  

Arduino 24
Ambiente di sviluppo
Sviluppato in java

•  Codice c-like

•  Validazione del codice

•  Compilazione

•  Upload su scheda

•  Monitor Seriale

Guida installazione:
-  http://arduino.cc/en/Guide/HomePage

Arduino 25
Funzioni  principali  
La funzione setup() La funzione loop()
Chiamata all’inizio del nostro programma Chiamata subito dopo la setup questa
(sketch), serve per inizializzare le variabili, funzione, cicla costantemente eseguendo
i vari pin e per iniziare ad usare le librerie. ad ogni ciclo le istruzioni presenti nel suo
Questa funzione viene eseguita solo una blocco.
volta.

int buttonPin = 3;
void loop()
void setup() {
{ if (digitalRead(buttonPin) == HIGH)
Serial.begin(9600); Serial.write('H');
pinMode(buttonPin, INPUT); else
} Serial.write('L');

void loop() delay(1000);


{ }
// ...
}
Arduino 26
Alcune funzioni e librerie utili
Librerie
Serial
Usata per la comunicazione seriale di arduino mette a disposizione delle funzioni molto
utili come:
read(),write(),available() etc..
Servo
Usata per la gestione di servo comandi.

Funzioni
pinMode(<numero pin>,<modo>)
permetta la configurazione dei pin tra input e output
DigitalWrite(<alto o basso>)
permette di settare il pin tra HIGH e LOW (0V – 5V)
DigitalRead()
legge il valore del pin (HIGH o LOW)
AnalogRead()
legge il valore di tensione in ingresso su di un pin analogico.
AnalogWrite()
scrive il valore di tensione desiderato su un pin pwm.
Map()
mappa un range numerico su un altro. Poi esempio pratico

Arduino 27
Riferimenti: http://arduino.cc/en/Reference/HomePage
Con  le  mani  in  pasta  

l  Esperimento1  
l  Esperimento2    
l  Esperimento3  

Arduino 28
Esperimento 1
Accendiamo un LED

Codice: Collegamenti

int ledPin = 10;


void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
}
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);

Arduino 29
Esperimento2
Utilizziamo un sensore
Come collegare la fotoresistenza. Tensione nominale fotoresistenza 10kOhm
Partitore di tensione.

V out = (R2*I)/(R2+R1)

Arduino 30
Lo schema di colllegamento

Arduino 31
Codice  
int fotorValue = 0;
int fotorPin = 0;
int ledPin = 10;

void setup(){
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("Setted up");
}

void loop(){
fotorValue=analogRead(fotorPin);

if(fotorValue >600){
int val = map(fotorValue,600,1023,0,255);
Serial.println(val);
analogWrite(10,val);
}else{
analogWrite(10,0);
}
}
Arduino 32
Esperimento  3  
Robot Planare 2R (più o meno)

Schema di collegamento

Arduino 33
Codice Esperimento  3  
Robot Planare 2R (più o meno)
#include <Servo.h>
char buffer[10];
int stat = 1300;
int count=0;
int pot1=0;
int pot2=1;
Servo servo2;
Servo servo;

void setup() Viene utilizzata la libreria Servo


{
servo.attach(3); ed il suo metodo writeMicroseconds
servo2.attach(5);
Serial.begin(9600);
Serial.flush();
servo.writeMicroseconds(50);
servo2.writeMicroseconds(50);
}
void loop()
{
int angle1 = analogRead(pot1);
int angle2 = analogRead(pot2);
angle1=map(angle1, 0, 1023, 1000, 2500);
angle2=map(angle2, 0, 1023, 1000, 2500);
Serial.print(angle1);
Serial.print(" - ");
Serial.print(angle2);
Serial.println();
servo.writeMicroseconds(angle1);
servo2.writeMicroseconds(angle2); Arduino 34
}
Trasmissione  PC  -­‐  Arduino  

Arduino 35
Esperimento  4    
La  testa  robo7ca  
l  Face  tracking  

Arduino 36
Schede  con  microprocessore  (ARM)  
Raspberry pi

Arduino 37
Altre  Schede  
ACME systems

Aria
Fox

Arduino 38
Altre  schede  
Nvidia

Arduino 39