Introduzione ad Arduino del Maker DevLab

Biagio (Gino) Zingales Alì
Biagio (Gino) Zingales AlìBiagio (Gino) Zingales Alì
Biagio (Gino) Zingales Alì
Introduzione ad Arduino
http://arduino.cc/
Introduzione ad Arduino
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 Shield
Arduino GSM Shield
Store ufficiale Arduino
http://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/HomePage
Per maggiori informazioni
Uno Sketch è diviso in tre sezioni fondamentali:
● Costrutti
● Valori (variabili e costanti)
● Funzioni.
Costrutti Valori Funzioni
setup()
loop()
Costrutti di controllo
if
if...else
for
switch case
while
do... while
break
continue
return
goto
...
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
Sensori
Esistono 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
Fate viaggiare la vostra fantasia!
1 of 13

Recommended

Alfabeto di Arduino - lezione 1 by
Alfabeto di Arduino - lezione 1Alfabeto di Arduino - lezione 1
Alfabeto di Arduino - lezione 1Michele Maffucci
559K views84 slides
Arduino lezione 01 - a.s 2010-2011 by
Arduino lezione 01 - a.s 2010-2011Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011Michele Maffucci
604.7K views67 slides
Alfabeto di Arduino - lezione 2 by
Alfabeto di Arduino - lezione 2Alfabeto di Arduino - lezione 2
Alfabeto di Arduino - lezione 2Michele Maffucci
552K views102 slides
Arduino basic workshop by
Arduino basic workshopArduino basic workshop
Arduino basic workshopDaniele Iori
6.9K views164 slides
Corso Arduino Base - Basi Pratiche con Arduino Genuino by
Corso Arduino Base - Basi Pratiche con Arduino GenuinoCorso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino GenuinoMauro Alfieri
2.4K views59 slides
Lezione 1 arduino - corso 20 ore by
Lezione 1 arduino - corso 20 oreLezione 1 arduino - corso 20 ore
Lezione 1 arduino - corso 20 oreMirko Mancin
3.3K views36 slides

More Related Content

What's hot

Introduzione a Arduino by
Introduzione a ArduinoIntroduzione a Arduino
Introduzione a ArduinoPietro Aiuola
1.6K views116 slides
Corso Arduino Base - MUST by
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUSTOPS Italia
5.2K views75 slides
Lezione 2 arduino - corso 20 ore by
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 oreMirko Mancin
2.8K views29 slides
Alfabeto di Arduino - lezione 6 by
Alfabeto di Arduino - lezione 6Alfabeto di Arduino - lezione 6
Alfabeto di Arduino - lezione 6Michele Maffucci
373.5K views58 slides
Alfabeto di Arduino - lezione 5 by
Alfabeto di Arduino - lezione 5Alfabeto di Arduino - lezione 5
Alfabeto di Arduino - lezione 5Michele Maffucci
394.8K views89 slides
Electronics LAB [with Arduino] | DAY 1 by
Electronics LAB [with Arduino] | DAY 1Electronics LAB [with Arduino] | DAY 1
Electronics LAB [with Arduino] | DAY 1Daniele Costarella
2.4K views74 slides

What's hot(20)

Introduzione a Arduino by Pietro Aiuola
Introduzione a ArduinoIntroduzione a Arduino
Introduzione a Arduino
Pietro Aiuola1.6K views
Corso Arduino Base - MUST by OPS Italia
Corso Arduino Base - MUSTCorso Arduino Base - MUST
Corso Arduino Base - MUST
OPS Italia5.2K views
Lezione 2 arduino - corso 20 ore by Mirko Mancin
Lezione 2 arduino - corso 20 oreLezione 2 arduino - corso 20 ore
Lezione 2 arduino - corso 20 ore
Mirko Mancin2.8K views
Alfabeto di Arduino - lezione 6 by Michele Maffucci
Alfabeto di Arduino - lezione 6Alfabeto di Arduino - lezione 6
Alfabeto di Arduino - lezione 6
Michele Maffucci373.5K views
Alfabeto di Arduino - lezione 5 by Michele Maffucci
Alfabeto di Arduino - lezione 5Alfabeto di Arduino - lezione 5
Alfabeto di Arduino - lezione 5
Michele Maffucci394.8K views
Alfabeto di Arduino - lezione 3 by Michele Maffucci
Alfabeto di Arduino - lezione 3Alfabeto di Arduino - lezione 3
Alfabeto di Arduino - lezione 3
Michele Maffucci536.4K views
Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo... by Luigi Francesco Cerfeda
Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...
Workshop: Arduino for makers - Cenni di progettazione elettronica ed utilizzo...
Presentazione Arduino by Antonio Serra
Presentazione ArduinoPresentazione Arduino
Presentazione Arduino
Antonio Serra3.9K views
CoderDojo - Scratch 4 Arduino by Mirco Piccin
CoderDojo - Scratch 4 ArduinoCoderDojo - Scratch 4 Arduino
CoderDojo - Scratch 4 Arduino
Mirco Piccin1K views
Intro to Arduino by trevisoAUG
Intro to ArduinoIntro to Arduino
Intro to Arduino
trevisoAUG3.6K views
Lezione 4 arduino - corso 20 ore by Mirko Mancin
Lezione 4 arduino - corso 20 oreLezione 4 arduino - corso 20 ore
Lezione 4 arduino - corso 20 ore
Mirko Mancin3.5K views
Alfabeto arduino model expo italy by Michele Maffucci
Alfabeto arduino   model expo italyAlfabeto arduino   model expo italy
Alfabeto arduino model expo italy
Michele Maffucci13.6K views
Lezione introduttiva su Arduino by Mirko Mancin
Lezione introduttiva su ArduinoLezione introduttiva su Arduino
Lezione introduttiva su Arduino
Mirko Mancin2.7K views
Arduino&Raspberry by Mirko Mancin
Arduino&RaspberryArduino&Raspberry
Arduino&Raspberry
Mirko Mancin1.2K views
Arduino prima spiegazione by Flaviano Fior
Arduino  prima spiegazioneArduino  prima spiegazione
Arduino prima spiegazione
Flaviano Fior6.7K views
Arduino: breve introduzione & progetti by Mirco Piccin
Arduino: breve introduzione & progettiArduino: breve introduzione & progetti
Arduino: breve introduzione & progetti
Mirco Piccin2.3K views

Viewers also liked

Introduzione alla programmazione con Arduino by
Introduzione alla programmazione con ArduinoIntroduzione alla programmazione con Arduino
Introduzione alla programmazione con ArduinoFabrizio Passerini
823 views18 slides
Mdc technology it 2011 v1.8 by
Mdc technology it 2011 v1.8Mdc technology it 2011 v1.8
Mdc technology it 2011 v1.8mdctech
238 views8 slides
SIcities 1 ottobre 2014 - Maker Faire Roma by
SIcities 1 ottobre 2014 - Maker Faire RomaSIcities 1 ottobre 2014 - Maker Faire Roma
SIcities 1 ottobre 2014 - Maker Faire RomaVincenzo Di Maria
1.3K views13 slides
DIY wind turbine - VentolONE @ fablab torino 2014 by
DIY wind turbine - VentolONE @ fablab torino 2014DIY wind turbine - VentolONE @ fablab torino 2014
DIY wind turbine - VentolONE @ fablab torino 2014mario milanesio
911 views28 slides
Maker come mio nonno Twintip fablab by
Maker come mio nonno Twintip fablabMaker come mio nonno Twintip fablab
Maker come mio nonno Twintip fablabInSide Training
722 views23 slides
MEGATREND 2015 RIDOTTO by
MEGATREND  2015 RIDOTTOMEGATREND  2015 RIDOTTO
MEGATREND 2015 RIDOTTOmarcella bellocchio
1.1K views121 slides

Viewers also liked(18)

Introduzione alla programmazione con Arduino by Fabrizio Passerini
Introduzione alla programmazione con ArduinoIntroduzione alla programmazione con Arduino
Introduzione alla programmazione con Arduino
Fabrizio Passerini823 views
Mdc technology it 2011 v1.8 by mdctech
Mdc technology it 2011 v1.8Mdc technology it 2011 v1.8
Mdc technology it 2011 v1.8
mdctech238 views
SIcities 1 ottobre 2014 - Maker Faire Roma by Vincenzo Di Maria
SIcities 1 ottobre 2014 - Maker Faire RomaSIcities 1 ottobre 2014 - Maker Faire Roma
SIcities 1 ottobre 2014 - Maker Faire Roma
Vincenzo Di Maria1.3K views
DIY wind turbine - VentolONE @ fablab torino 2014 by mario milanesio
DIY wind turbine - VentolONE @ fablab torino 2014DIY wind turbine - VentolONE @ fablab torino 2014
DIY wind turbine - VentolONE @ fablab torino 2014
mario milanesio911 views
Maker come mio nonno Twintip fablab by InSide Training
Maker come mio nonno Twintip fablabMaker come mio nonno Twintip fablab
Maker come mio nonno Twintip fablab
InSide Training722 views
Estratto il manuale_del_maker by Fabio Grassi
Estratto il manuale_del_makerEstratto il manuale_del_maker
Estratto il manuale_del_maker
Fabio Grassi530 views
Corso Arduino - Presentazione e Introduzione by Stefano Franco
Corso Arduino - Presentazione e IntroduzioneCorso Arduino - Presentazione e Introduzione
Corso Arduino - Presentazione e Introduzione
Stefano Franco264 views
Silent Bee Italian Honeycomb by Richard OBrien
Silent Bee Italian HoneycombSilent Bee Italian Honeycomb
Silent Bee Italian Honeycomb
Richard OBrien419 views
Programmazione degli ATTiny - Il computer nella scarpa by Paolo Aliverti
Programmazione degli ATTiny - Il computer nella scarpaProgrammazione degli ATTiny - Il computer nella scarpa
Programmazione degli ATTiny - Il computer nella scarpa
Paolo Aliverti1.1K views
Laura De Benedetto - Make Tank - Startup Saturday Europe - 5 luglio 2014 by StartupSaturdayEurope
Laura De Benedetto - Make Tank - Startup Saturday Europe - 5 luglio 2014Laura De Benedetto - Make Tank - Startup Saturday Europe - 5 luglio 2014
Laura De Benedetto - Make Tank - Startup Saturday Europe - 5 luglio 2014
AMA Annual Report 2015-2016 by Alisa Sutton
AMA Annual Report 2015-2016AMA Annual Report 2015-2016
AMA Annual Report 2015-2016
Alisa Sutton339 views
7 кроків щоб зробити наступний рік особливим by Univero
7 кроків щоб зробити наступний рік особливим7 кроків щоб зробити наступний рік особливим
7 кроків щоб зробити наступний рік особливим
Univero218 views

Similar to Introduzione ad Arduino del Maker DevLab

Arduino galileo edison_udoo by
Arduino galileo edison_udooArduino galileo edison_udoo
Arduino galileo edison_udooVincenzo Virgilio
663 views16 slides
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11 by
Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11Ionela
120 views2 slides
Arduino ICT2016 [IT] by
Arduino ICT2016 [IT]Arduino ICT2016 [IT]
Arduino ICT2016 [IT]Francesco Pascale
202 views85 slides
Open Hardware: Arduino, un prodotto italiano by
Open Hardware: Arduino, un prodotto italianoOpen Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italianoRiccardo Lemmi
1.8K views38 slides
Arduino & raspberry pi - Un connubio stimolante by
Arduino & raspberry pi - Un connubio stimolanteArduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolanteMirco Sbrollini
2.7K views13 slides
Csp@scuola uav corso1_lez2 by
Csp@scuola uav corso1_lez2Csp@scuola uav corso1_lez2
Csp@scuola uav corso1_lez2CSP Scarl
646 views20 slides

Similar to Introduzione ad Arduino del Maker DevLab(20)

Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11 by Ionela
Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11Review4 u arduino duemilanove scheda di sviluppo compatibile   2010-11-11
Review4 u arduino duemilanove scheda di sviluppo compatibile 2010-11-11
Ionela 120 views
Open Hardware: Arduino, un prodotto italiano by Riccardo Lemmi
Open Hardware: Arduino, un prodotto italianoOpen Hardware: Arduino, un prodotto italiano
Open Hardware: Arduino, un prodotto italiano
Riccardo Lemmi1.8K views
Arduino & raspberry pi - Un connubio stimolante by Mirco Sbrollini
Arduino & raspberry pi - Un connubio stimolanteArduino & raspberry pi - Un connubio stimolante
Arduino & raspberry pi - Un connubio stimolante
Mirco Sbrollini2.7K views
Csp@scuola uav corso1_lez2 by CSP Scarl
Csp@scuola uav corso1_lez2Csp@scuola uav corso1_lez2
Csp@scuola uav corso1_lez2
CSP Scarl646 views
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ... by Sardegna Ricerche
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Il cuore di Arduino: Un sistema di sviluppo basato su microcontrollore Atmel ...
Sardegna Ricerche5.2K views
Microcontrollori by samu97
MicrocontrolloriMicrocontrollori
Microcontrollori
samu97888 views
Presentazione by cesario
PresentazionePresentazione
Presentazione
cesario212 views
Guida al computer - Lezione 2 - I componenti by caioturtle
Guida al computer - Lezione 2 - I componentiGuida al computer - Lezione 2 - I componenti
Guida al computer - Lezione 2 - I componenti
caioturtle 1.7K views
LinoLab - Laboratorio di Arduino by Matteo Troìa
LinoLab - Laboratorio di Arduino LinoLab - Laboratorio di Arduino
LinoLab - Laboratorio di Arduino
Matteo Troìa733 views
Arduino & Smartphone by dega1999
Arduino & SmartphoneArduino & Smartphone
Arduino & Smartphone
dega19991.8K views
Arduino wifi logger node by Mirco Piccin
Arduino wifi logger nodeArduino wifi logger node
Arduino wifi logger node
Mirco Piccin988 views

More from Biagio (Gino) Zingales Alì

Google Assistant + IFTTT: come potenziare il vostro assistente vocale. by
Google Assistant + IFTTT: come potenziare il vostro assistente vocale.Google Assistant + IFTTT: come potenziare il vostro assistente vocale.
Google Assistant + IFTTT: come potenziare il vostro assistente vocale.Biagio (Gino) Zingales Alì
456 views16 slides
Organizzare un evento gdg by
Organizzare un evento gdgOrganizzare un evento gdg
Organizzare un evento gdgBiagio (Gino) Zingales Alì
70 views25 slides
Esempi Arduino come poter iniziare nel mondo IoT by
Esempi Arduino come poter iniziare nel mondo IoTEsempi Arduino come poter iniziare nel mondo IoT
Esempi Arduino come poter iniziare nel mondo IoTBiagio (Gino) Zingales Alì
180 views10 slides
Google Local Guides by
Google Local GuidesGoogle Local Guides
Google Local GuidesBiagio (Gino) Zingales Alì
162 views38 slides
Cloud next 17 - Google Cloud Platform by
Cloud next 17 - Google Cloud PlatformCloud next 17 - Google Cloud Platform
Cloud next 17 - Google Cloud PlatformBiagio (Gino) Zingales Alì
99 views17 slides
Internet delle cose by
Internet delle coseInternet delle cose
Internet delle coseBiagio (Gino) Zingales Alì
1K views20 slides

Introduzione ad Arduino del Maker DevLab

  • 1. Biagio (Gino) Zingales Alì Introduzione ad Arduino http://arduino.cc/ Introduzione ad Arduino
  • 2. 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.
  • 3. 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 Shield Arduino GSM Shield Store ufficiale Arduino http://store.arduino.cc/
  • 4. 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
  • 5. 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
  • 6. 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
  • 7. 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)
  • 8. Struttura http://arduino.cc/en/Reference/HomePage Per maggiori informazioni Uno Sketch è diviso in tre sezioni fondamentali: ● Costrutti ● Valori (variabili e costanti) ● Funzioni. Costrutti Valori Funzioni setup() loop() Costrutti di controllo if if...else for switch case while do... while break continue return goto ... 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 ...
  • 9. 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).
  • 10. 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
  • 11. Sensori e Attuatori: il Physical Computing Sensori Esistono 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
  • 12. 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
  • 13. Fate viaggiare la vostra fantasia!