View
116
Download
1
Category
Preview:
Citation preview
Arduino è una piattaforma di prototipazione elettronica open-source , il progetto completamente italiano, è nato
ad Ivrea nel 2005 con lo scopo di ridurre i tempi di prototipizzazione dei prodotti elettronici ad un costo molto basso.
Questo progetto prevede una intera famiglia di board che si differenziano per capacità di elaborazione, tipologia di
connettività disponibile, dimensioni e dotazione software/firmware. Si va infatti dalla “Arduino Uno” considerata
come la entry level della famiglia alla “Arduino Yun” che attualmente rappresenta il top della gamma (con a bordo
Linux) passando per tante altre board adatte ad usi differenti.
Dove le periferiche a disposizione a bordo non bastino per i nostri progetti, potremmo acquistare una delle numerose “shield” attraverso le quali è possibile estendere le potenzialità della scheda elettronica di base.
Esistono moltissime shield ufficiali, ma anche di terze parti.
LE SHIELD
Arduino Ethernet Shield Arduino WiFi ShieldArduino GSM Shield
Store ufficiale Arduinohttp://store.arduino.cc/
E’ una board basata su un microcontrollore della Atmel, ATmega328, che ha a bordo tutta la memoria e lo storage necessario per i nostri sketch; in particolare abbiamo a disposizione:
● 32 KB di memoria Flash (di cui 0,5 KB sono occupati dal bootloader), la memoria Flash viene utilizzata per il
salvataggio dello “sketch” che abbiamo creato e sarà lanciato in esecuzione ad ogni avvio della board;
● 2 KB di SRAM (Static RAM), la memoria RAM è utilizzata a runtime (ad esempio per le variabili) ;
● 1 KB di EEPROM (Electrically Erasable Programmable ROM), che serve per salvare eventuali dati e parametri di
configurazione utili e/o necessari al nostro programma.
In termini di capacità di calcolo, stiamo parlando di un microcontrollore con architettura RISC (Reduced Instruction
Set Computer) ad 8-bit (e bene sì… avete letto proprio giusto! Solamente 8 bit contro i processori moderni a 32 e 64
bit) con una frequenza di clock di 16 Mhz (dimenticatevi i Ghz dei vostri PC e/o Smartphone). Anche se questi numeri
vi sembrano piccoli, vi posso assicurare che sarà possibile realizzare qualsiasi cosa.
Occhio sempre allo spreco dei bytes non necessari!
Arduino UNO
I pin del microcontrollore sono due connettori posti ai bordi della scheda. In particolare, sono disponibili: 14 pin digitali e 6 pin analogici, in quanto l’Atmega328 è dotato anche di un AD Converter (Analog to Digital) .
Ciascuno dei pin digitali può essere pilotato in maniera indipendente da software, impostandone il livello 1 (HIGH) o 0 (LOW), ed utilizzato come pin di GPIO (General Purpose Input Output);
I/O Arduino UNO
Alcuni di questi pin hanno funzionalità aggiuntive e se configurati in maniera opportuna possono diventare :
● Una porta seriale di tipo TTL (attenzione non RS232) caratterizzata dai soli segnali RX (Ricezione) e TX (trasmissione);● Due pin per segnalare (“triggerare”) un interrupt verso il microcontrollore, in corrispondenza del quale deve essere magari eseguita
una specifica elaborazione;● Segnali di output di tipo PWM (Pulse Width Modulation) per ottenere una tensione media variabile (che non sia solo HIGH o LOW);● Una porta SPI (Serial Peripheral Interface) utilizzata per l’interconnessione con device esterni attraverso il bus sincrono di tipo SPI;● Una porta I2C (Inter Integrated Circuit) che come l’SPI è utilizzata su un bus sincrono per la connessione ad altri device. Essa è anche
nota come TWI (Two Wires Interface) infatti è costituita da due soli segnali contro i quattro previsti dall’SPI;● Il pin che stabilisce la tensione di riferimento (AREF, Analog REFerence) per tutti gli input analogici. Essa è necessario per stabilire il
range di valori che l’AD Converter produce sulla base dei 10 bit a disposizione (in pratica esso fornirà un valore numerico compreso tra 0 e 1023, in corrispondenza ai valori di tensione da 0 a AREF Volts);
La board mette a disposizione due alimentazioni in uscita a 3,3V e 5V che possono alimentare uno o più dispositivi esterni, un segnale di RESET e un LED a bordo che viene identificato dal pin 13.
L’unica connettività con il mondo esterno è caratterizzata da un connettore USB che possiamo sfruttare per il collegamento al nostro PC di sviluppo.Il PC avrà a disposizione una porta seriale per poter comunicare con Arduino Uno, infatti, grazie a specifici driver da installare ed al convertitore “USB-to-serial” di cui la board è dotata (di fatto il microcontrollore non ha un’interfaccia USB nativa, ma utilizza sempre una comunicazione di tipo seriale).
I/O Arduino UNO
Il linguaggio di programmazione utilizzato per Arduino è il C/C++; è possibile utilizzare o meno il supporto per le classi che il C++ mette a disposizione. Il compilatore utilizzato è dedicato per i microcontrollori della famiglia AVR della Atmel e fa parte di una ben definita toolchain GCC.
I programmi che vengo realizzati per Arduino di chiamano SKETCH
L’ambiente di sviluppo (IDE)
Struttura
http://arduino.cc/en/Reference/HomePagePer maggiori informazioni
Uno Sketch è diviso in tre sezioni fondamentali:● Costrutti● Valori (variabili e costanti)● Funzioni.
Costrutti Valori Funzioni
setup()loop()
Costrutti di controllo
ifif...elseforswitch casewhiledo... whilebreakcontinuereturngoto...
Costanti
HIGH | LOW
INPUT | OUTPUT |
INPUT_PULLUP
LED_BUILTIN
true | false
integer constants
floating point
constants
...
Digitali I/O
pinMode()
digitalWrite()
digitalRead()
Analogici I/O
analogReference()
analogRead()
analogWrite() - PWM
...
Analisi struttura Sketch
setup()Questa funzione viene eseguita una ed una sola volta quando parte lo “sketch” all’accensione (o il reset della board). Viene utilizzata per effettuare le inizializzazioni necessarie al programma come ad esempio l’impostazione dei valori iniziali delle variabili, le modalità di uso dei pin (input, output, etc.) e l’inizializzazione delle librerie utilizzate.
loop()Questa funzione rappresenta il “loop” principale del programma. Ciò significa che le istruzioni contenute al suo interno vengono eseguite in mado ciclico (dalla prima all’ultima per poi ripartire dall’inizio).
I pin di Arduino
pinMode(pin, mode)
Per quanto riguarda il led a bordo della “Arduino Uno”, c’è da dire che esso è collegato al pin numero 13
del microcontrollore che altro non è che un pin digitale!
Come accennato, tutti i pin digitali di Arduino sono configurabili come input oppure come output, così
come alcuni di essi anche con funzioni molto più complesse (seriale TTL, bus SPI, bus I2C, …). La prima
operazione da fare consiste nell’impostare il pin 13 come output e per farlo possiamo avvalerci della
funzione pinMode, ecco la sintassi:
il numero del pin da
impostare
INPUT/OUTPUT
int led = 13;
void setup() {
// inizializzazione del pin in uscita
pinMode(led, OUTPUT);
}
digitalWrite(pin, modvaluee)
il numero del pin modificare il
valore
HIGH/LOW
void loop() { digitalWrite(led, HIGH); // accende il led digitalWrite(led, LOW); // spegne il led}
delay(ms) ritardo tra un’istruzione e l’altra
Sensori e Attuatori: il Physical Computing
SensoriEsistono numerosi sensori che possono essere utilizzati per acquisire grandezze fisiche nel mondo reale.
Attuatori
Gli attuatori vengono utilizzati per interagire con il mondo reale.Un motore è un attuatore, mette in movimento un oggetto (es. una ventola di raffreddamento) così come un relé che viene utilizzato come interruttore ad esempio per accendere una lampadina al cambiamento di stato di un sensore PIR.
Temperatura Umidità Luce (fotoresistenza)
Ultrasuoni Pir(Movimento)
Umidità
Servo-motore Relé 5V - 220V
http://arduino.cc/ - Sito ufficiale
http://playground.arduino.cc/Italiano/Tutorials - Molto materiale per iniziare
http://www.mauroalfieri.it/corso-arduino-on-line.html - Sito ricco di informazioni
UN PO’ DI LINK
/biagio.zingales
/+BiagioZingalesAlì
@biagio_zingales
Recommended