Arduino UNO
Single board microcontroller
Che cos’è Arduino?
• Arduino è una piattaforma hardware basata su un microcontrollore, per lo
sviluppo di applicazioni che possono interagire con il mondo esterno.
• È un sistema facilmente programmabile con un ambiente di sviluppo
multipiattaforma (Windows, Linux, Mac)
• Può comunicare con un PC attraverso un semplice cavo USB
• È economico (20€ + iva)
• È open hardware e open software
• È supportato da un vasta comunità attiva in tutto ilmondo
• è stato progettato e sviluppato in I talia, a I vrea, dove si continua a
produrre la versione originale.
Un primo sguardo…
Ingressi/uscite digitali
Connettore USB
Tasto di RESET
Microcontrollore
Atmel ATmega328
Connettore per
alimentazione esterna
Ingressi analogici
I l cuore del sistema
• È il Microcontrollore Atmel ATmega 328P
• Un microcontrollore è un circuito integrato che comprende una CPU,
la memoria per i programmi e per i dati, e altri sottosistemi
(periferiche di input/ output programmabili)
• in pratica è un piccolo computer in un unico dispositivo, ed è
normalmente utilizzato per applicazioni specifiche (special purpose).
• È progettato per massimizzare l’autosufficienza funzionale ed il
rapporto prezzo/ prestazioni in uno specifico campo applicativo.
• Applicazioni tipiche: …li troviamo ovunque! Dall’automotive
(anche centinaia in un’autovettura), negli elettrodomestici,
nelle telecomunicazioni,ecc.
Atmel ATmega328P
• CPU a 8 bit
• Clock a 16 MHz
• Memoria: FLASH 32 kBytes, EEPROM 1KBytes, RAM 2 kBytes
• Capacità di calcolo decisamente limitate rispetto ai processori general
purpose (es. Desktop PC)…
• …ma:
– I ntegra la maggior parte delle funzioni in un singolo chip
– Consuma una potenza molto piccola
– Costa circa 1,5 € per 100 pezzi
Si può far qualcosa con un processore a 16MHz
con 32k di memoria??
Sonda Voyager 1 (1977)
• La sonda Voyager 1, lanciata
nel 1977, è tutt’ora in attività e
sta attraversando i confini del
sistema solare…
• Ha 3 sottosistemi di calcolo (di
comando, controllo assetto,
dati di volo), duplicati per
migliorare l’affidabilità, quindi 6
computer, per un totale di 32kB
di memoria
• La frequenza del clock
principale è di 4MHz (per le
CPU anche meno…)
• Circa 8000 istruzioni al
secondo. I n un cellulare di
ultima generazione ne abbiamo
14 miliardi (CPU a 1,5 GHz
quadcore)
Alcune considerazioni…
• Premesso che un microcontrollore a 8bit con 32k permette di realizzare
funzionalità piuttosto complesse:
• Un dispositivo deve essere scelto inbase alla funzione che deve svolgere:
utilizzare una CPU I ntel i7 per realizzare un telecomando o un allarme non
solo è uno spreco di risorse (soldi, energia…), ma è un errore di progetto.
• È bene ricordare che i processori sono macchine cheeseguono delle
istruzioni: l’intelligenza che attribuiamo ad un sistema è un riflesso
dell’intelligenza di chi lo programma…
I nterazioni con il mondo…
• Per poter interagire con il mondo circostante abbiamo bisogno di acquisire
dei dati dall’esterno e di poter rispondere in qualche modo, in base alle
regole contenute nel programma
I nostri occhi sul mondo
• SENSORE – dispositivo che trasforma una grandezza fisica d’interessa in
una grandezza elettrica
• I n commercio esistono innumerevoli tipi di sensoriper misurare diverse
grandezze fisiche
• Esempi: microfoni, termocoppie, fotodiodi, estensimetri, accelerometri…
• Parametri da considerare: range di misura, precisione, robustezza, peso,
integrabilità nel sistema, … e non ultimo il prezzo.
I l nostro braccio
• ATTUATORE: è in generale un dispositivo che trasforma una grandezza
fisica (nel nostro caso elettrica) in un’altra, agendo sull’ambiente.
• Esempio tipico: un motorino elettrico
• La grandezza fisica su cui interveniamo può essere di diversa natura: una
lampadina, un altoparlante, un interruttore, un’elettrovalvola…
Segnali analogici e digitali
Segnali elettrici (di solito in tensione) che variano nel tempo
• ANALOGI CO: variazione continua nel tempo. L’informazione d’interesse è
contenuta nel valore puntuale del segnale o nella relazione temporale (es.
temperatura) oppure dalla frequenza (es. audio)
• DI GI TALE: variazione discontinua. L’informazione d’interesse è legata allo
“stato” del segnale, cioè se il valore è maggiore o minore di determinate
soglie.
I ngressi/ uscite digitali
• Arduino UNO ha 14 pin che possono essereutilizzati come ingressi oppure uscite
digitali
• Un ingresso digitale leggerà un valore logico alto(1, HI GH) se la tensione al pin è di
5 volt, un valore logico basso (0, LOW) se la tensione è 0 volt (1 bit)
• Per un’uscita digitale la relazione è inversa.
I ngressi analogici
• Arduino UNO ha 6 pin che possono essere utilizzati come ingressi analogici.
• DOMANDA: come si può acquisire una grandezza elettrica continua nel tempo in un
processore capace di lavorare solo con numeri?
Convertitore analogico/ digitale
• Un convertitore analogico/ digitale (ADC) è un dispositivo elettronico che dà
un’uscita numerica (espressa in un certo numero di bit) in corrispondenza di
un valore di tensione al suo ingresso, secondo una relazione lineare.
• ADC dell’Arduino è un dispositivo a 10bit. Ciò implica che il numero fornito
in uscita sia compreso tra 0 e 1023, in corrispondenza rispettivamente di
una tensione nulla e una a 5V
Uscite analogiche
• I n realtà sono digitali… ma utilizzano una tecnica,detta PWM per
approssimare un segnale analogico (su 255 livelli)
• Corrispondono ai pin digitali contrassegnati dallatilde
Un po’ di elettronica…
• LEGGE DI OHM :
V= R I
• LEGGI DI KI RCHHOFFF
– Nodi: la somma delle correnti
entranti e uscenti in un nodo è
nulla
– Maglie: la somma delle cadute
di tensione in una maglia è
nulla
Componenti elettronici
Ambiente di programmazione
…vediamolo in funzione!!
Link utili:
• http://arduino.cc
• http://www.ladispe.polito.it/news/
• http://led.polito.it/utilities/utilities.asp