- Introduzione
Cosa è arduino?
Cosa non è arduino?
Cosa si può fare?
- Descrizione di Arduino
Breve introduzione storica e curiosità
Hardware generico di Arduino
I vari modelli di Arduino
Hardware di Arduino UNO
Hardware di Arduino Micro
- Segnali
Segnali digitali
Segnali analogici
Sensori ed attuatori
- Software
Il linguaggio di programmazione
Breve descrizione e curiosità
Le funzioni setup() e loop()
L'IDE
Setup e funzioni principali
Codice di esempio incluso nell'IDE
- Hello world: blink sketch (Esempio di output digitale)
L'obiettivo
I LED
Richiami di elettronica
Legge di Ohm
Le resistenze
La breadboard
La basetta millefori
Coding step by step
Test
Modifica di parametri e i relativi effetti
- Button sketch (Esempio di input digitale)
L'obiettivo
Il pulsante
Resistenza di pull-up
Coding
Test
- Comunicazione seriale
- Twilight switch sketch (Esempio di input analogico)
L'obiettivo
La fotoresistenza
Coding
Test
- Variable light sketch (Esempio di output analogico)
L'obiettivo
PWM (Pulse width modulation)
Coding
Test
- Cos'altro posso fare?
Gli shield
Buzzer
LED Infrarossi
Orologio RTC
Display
Moduli a caratteri
Moduli grafici
Motori
Semplici
Passo passo
RFID
Sensori ambientali
Temperatura e umidità
Rilevatore di movimento
Sonar
Wifi
Internet of things
Relay elettromagnetici
- Esempi di progetti curiosi trovati su internet
- Siti di riferimento
3. 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.
4. 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!
5. 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.
6. Cosa NON è Arduino?
Introduzione 6
• NON è un computer, ma un physical computer.
• NON è un giocattolo.
• NON è costoso.
7. 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.
8. 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
9. 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.
10. 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.
11. Storia di Arduino
Introduzione 10
La “faccia” di Arduino è Massimo Banzi, Interaction
Designer che nel 2005 fonda ad Ivrea il team di
sviluppo originale insieme a David Cuartielles, Tom
Igoe, Gianluca Martino e Davide Mellis.
12. 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.”
13. 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.
14. 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.
15. 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)
16. 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.
17. 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.
18. 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.
19. 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.
21. 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
22. Arduino MICRO
Introduzione 21
Microcontroller ATmega32U4
Digital I/O Pins 20
PWM Channels 7
Analog Input
Channels
12
Flash Memory
32 KB
(ATmega32U4)
of which 4 KB
used by
bootloader
SRAM
2.5 KB
(ATmega32U4)
EEPROM
1 KB
(ATmega32U4)
Clock Speed 16 MHz
Length 48 mm
Width 18 mm
Weight 13 g
24. 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.
25. Il linguaggio
Introduzione 24
Linguaggio programmazione simile al C
• Derivato da Wiring
• Due funzioni principali:
• setup()
• loop()
• Facilmente espandibile
• Codice organizzato in «sketch»
33. 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.
34. 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?
35. 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?
36. Hello world! – Blink sketch
Esempio di output digitale
Introduzione 31
HANDS ON!
37. Hello world! – Blink sketch
Esempio di output digitale
Introduzione 32
38. 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?
39. 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.
41. 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
42. 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
43. 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
46. 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.
47. 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
58. 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
59. 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.
60. 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.
61. 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.
62. 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
63. 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
64. 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!
65. Esempio di input digitale
Button sketch code
Introduzione 51
const int buttonPin = 2; // the number of the pushbutton pin
const 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);
}
}
66. 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
67. Esempio di input analogico
Twilight switch sketch
Introduzione 53
68. 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 +
70. Let’s code!
Introduzione 56
const int LED = 13; // pin for LED
const 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 LED
delay(val); // wait (how long is determined by sensor value)
digitalWrite(LED,LOW); // turn off LED
delay(val);
}
71. 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
}
}
75. Let‘s code!
Introduzione 61
int ledPin = 9; // LED connected to digital pin 9
int 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);
}
76. Let‘s code!
Introduzione 61
int ledPin = 9; // LED connected to digital pin 9
int 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
77. Let‘s code!
Introduzione 61
int ledPin = 9; // LED connected to digital pin 9
int 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
78. 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.
79. 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.
80. 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
81. 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
82. 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.
83. 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!!!
88. 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.
89. Le shield non ufficiali
Introduzione 73
Arduino Wave Shield
90. 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);
}
91. 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
92. Display
Moduli a caratteri
Introduzione 76
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface
pins
LiquidCrystal 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);
}
95. 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.
96. 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
97. 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
98. Sensori ambientali
Temperatura e umidità
Introduzione 82
TMP36 - sensore analogico
Tensione 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
100. 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
101. 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);
}
102. 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.
104. 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.
106. …e tanto altro!
Introduzione 90
• GPS
• Bluetooth
• Infrarossi
• Zeebee
• NFC
• Schede GSM dati
• Trasmettitori/ricevitori wireless 433Mhz
• Schede di sintesi e riconoscimento vocale
• …
107. 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!
108. 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!
109. Uno sguardo sul web
Cat feeder
Introduzione 93
Componenti:
• Sensore di luce (LDR)
• 1 Micro Servomotore
• Resistenza da 10 Kohm
• Cellulare
111. 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 9
Serial.begin(9600); // La porta seriale è abilitata per
eventuale debug
while(digitalRead(8)) { // Il barattolo è chiuso fino
myServo.write(45); // alla ricezione della prima chiamata
first = 1;
}
}
112. 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 contenitore
else // altrimenti
myServo.write(120); // il servomotore apre il contenitore
}
}