Post on 16-Dec-2015
description
Arduino
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
cos cosa si pu realizzare Arduino: un successo italiano nel mondo componenti elettronici e pinout ATmega328: il cuore (e molto altro) di Arduino
generalit e caratteristiche schema a blocchi del microcontrollore descrizione dei singoli componenti
architettura AVR introduzione e principio di funzionamento datapath dellarchitettura fasi del ciclo istruzione diagramma a stati finiti
Arduino
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
esempio di ADD, STOREWORD e JUMP implementazione pipeline
indici di prestazione e consumi come programmare il microcontrollore C: il linguaggio nativo dellAtmega328 lambiente di sviluppo (IDE) di Arduino DEMO: blinking led introduzione agli interrupts DEMO: ultrasonic proximity sensor comunicare col mondo esterno: la seriale DEMO: Android bluetooth comunication varianti di Arduino e relativi costi quando Arduino non basta: Raspberry Pi e i minicomputer
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware
and software. it's intended for artists, designers,
hobbyists and anyone interested in creating
interactive objects or environments.
arduino.cc
Arduino pu:
interfacciarsi allambiente tramite sensori (luminosit,temperatura, suoni, campi elettromagnetici, ),interruttori, telecomandi,
effettuare elaborazione dei dati interagire col mondo esterno tramite led, emettitori
acustici, motori, servomotori, pompe idrauliche,
segnali radio o infrarossi, comunicare con altri dispositivi elettronici attraverso
la porta seriale
Tutto ci fa s che Arduino sia largamento usato in
ambiti quali la robotica, lautomazione, lentertainment,il modellismo e in generale nella maggior parte dei
settori ingegneristici.
3D rgb led cube
liquid lifebar
quadcopter
Un successo italiano nel mondo
NellXI sec la pittoresca citt diIvrea era famosa per il suo re, il
marchese Arduino di Dadone,
che nel 1002 venne eletto re
dItalia, posizione che mantennefino al 1014, quando fu
spodestato da re Federico II.
Pochi anni fa (2005), il Bar del Re
Arduino, a Ivrea, fu il luogo
dove Massimo Banzi, ingegnere
e professore universitario, ebbe
unicredibile idea:
creare una piattaforma per facilitare i propri studenti nello studio
dellInteraction Design (la disciplina che studia linterazione tra esseriumani e sistemi informatici)
(dopo qualche birra di troppo) Nacque Arduino.
Benzi rese pubblici tutti gli schemi (per laspetto elettronico) ei sorgenti (per laspetto informatico) del suo prototipo,autorizzandone la riproduzione e la modifica libera.
Poco dopo apr, assieme ad un ristretto gruppo di
collaboratori, un piccolo laboratorio ai piedi delle Alpi Graie
dove poter produrre Arduino per proporlo al mercato italiano.
La scheda completa viene venduta per meno di 30.
Il successo fu spaventoso e
immediato: Arduino fa il giro
del mondo nel giro di pochimesi e numerose industrie di
calibro internazionale
realizzano copie della scheda.
Lentusiasmo dimostrato dallacomunit di utenti ha aperto
un vero e proprio nuovo
settore commerciale, quello
dei microcontrollori hobbistici.
Componenti elettronici e
pinout
AREF valore massimo di riferimento per lADC
USB PLUG connettore usb per il collegamento al PC
ATmega16U2 integrato per la conversione da USB a
seriale (RS232): permette al
PC di dialogare con Arduino
simulando una connessione
seriale (vedi dopo)
GROUND riferimento di massa
DIGITAL IO pin digitali di ingresso e uscita (i pin
3,5,6,9,10,11 possono
simulare un uscita analogica
tramite funzionamento PWM)
SERIAL IN E OUT pin di ricezione (RX) e trasmissione
(TX) dellinterfaccia seriale
VOLTAGE REGULATOR regolatore di tensione che fornisce una 5V stabile
EXT POWER / VOLTAGE IN connettore/pin per lalimentazione esterna
RESET PIN / RESET BUTTONpin/pulsante per il reset di Arduino
3.3V / 5V pin per alimentare altri componenti (MAX 200ma!)
GROUND riferimento di massa
ANALOG IN pin per la lettura di grandezze analogiche (possono essere usati anche come pin digitali I/O non PWM)
ISP interfaccia per la scrittura diretta della FLASH del microcontrollore
ATmega328 di tutto e di pi (vedi dopo)
Arduino
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
ATmega328: il cuore (e molto altro) di Arduino generalit e caratteristiche schema a blocchi del microcontrollore descrizione dei singoli componenti
Atmel ATmega328
Specifiche 8-bit AVR RISC-based (RCISC) CPU memoria flash da 32kb con read while write SRAM da 2kb EEPROM da 1kb 23 registri general purpose 23 linee di I/O general purpose 3 contatori (timers) interrupts interni ed esterni Interfaccia seriale bifilare 6 canali ADC a 10-bit whatchdog interno programmabile 5 modalit di risparmio energetico
Grazie alla sua natura di componente tuttofare questopiccolo microcontrollore risulta essere il candidato
migliore per un dispositivo come Arduino, che deve essere
al servizio della creativit degli sviluppatori.
E nonostante le sue enormi potenzialit, lATmega328costa meno di 3!
LA
Tme
ga
32
8
all
inte
rno
di
Ard
uin
o
Schema a blocchi di alto livello
Diagramma
a blocchi
approfondito
FLASHMemoria a stato solido,
autoprogrammabile, da 32kb.
Pu essere cancellata e riscritta
circa 10000 volte.
E la memoria che contiene le istruzioni che devono essere eseguite dalla CPU
Mantiene le informazioni anche in assenza
di alimentazione.
SRAM (static random access memory)Da 2kb. E una memoria volatile con bassi tempi di lettura e consumo ridotto.
Qui vengono mantenute tutte le variabili e i
dati necessarie allesecuzione del programma.
NON maniente i dati in caso di mancanza
di alimentazione.
CPU (central processing unit)Esegue le istruzioni contenute nella flash.
Supporta una frequenza massima di 20Mhz.
Larchitettura implementata quella AVR (approfondita nel seguito).
Clock generation circuitE il componente che, datoin ingresso il segnale proveniente
da un oscillatore (ceramico in questo caso),
produce il segnale di clock necessario alla
sincronizzazione delle operazioni.
WatchdogDi tipo programmabile con oscillatore
interno.
Permette, una volta programmato dallo
sviluppatore, di intercettare loop infiniti o
situazioni di deadlock.
Power supervisionE il componente responsabile dellalimentazione dellintegrato. Tra le sue funzioni evidenziamo: 1) il mantenimento
della CPU in condizione di RESET fino al
raggiungimento di tensione richiesto 2) il
tamponamento della tensione in presenza
di glitch temporanei sullalimentazione.
EEPROM (electrically erasable programmable read-only memory)
Da 1kb. E un tipo di memoria NONvolatile riscrivibile (~100000 scritture) in cui
ogni cella (1 bit) costituita da 2 transistor
MOS.
E utilizzata per salvare delle informazioni a runtime, ad esempio per riottenere lo stato
del programma dopo un riavvio.
Timers / counters3 contatori separati, 2 da 8-bit e 1 da 16-bit,
con modalit di comparazione.
Sono utilizzati per realizzare le uscite PWM
(pulse with modulation, con duty cycle
variabile) o come trigger per richiamare
porzioni di codice ad intervalli prefissati
(timer).
In modalit PWM i contatori da 8-bit
raggiungono una frequenza massima di
31250 Hz, contro i 62500 Hz di quello a 16-bit.
A/D converterE un convertitore analogico /digitale a 6 canali, ognuno
da10-bit.
Permette di effettuare letture di
segnali analogici, avendo a disposizione
un valore di riferimento fornito dal pin
AREF.
Internal bandgapIn assenza di un livello di tensione sul pin
AREF produce un riferimento stabile,
indipendente da variazioni
nellalimentazione, nel carico e nella temperatura di funzionamento, da fornire
al convertitore analogico digitale.
Analog comparatorPermette di generare un interrupt
(esecuzione asincrona di porzioni di
codice, vedi dopo) nel caso in cui un
segnale analogico supera una soglia
impostata dallo sviluppatore.
USART (universal syncronusasyncronous receiver-trasmitter)
Costituisce linterfaccia serialedellATmega328 e pu raggiungere velocit prossime a 1Mbps in modalit
FULL DUPLEX.
Verr approfondita in seguito.
SPI (in-system programmer)Permette di scrivere direttamente la flash
del microcontrollore, attraverso lausilio di un programmatore ISP.
Verr approfondito nel seguito.
TWI (two wire interface)Indica linterfaccia I2C, ovvero un sistema di comunicazione seriale
sincrono HALF DUPLEX con struttura
master-slave. Non utilizzato in Arduino.
PortsCostituiscono le porte di I/O del microcontrollore. La D corrisponde ai
pins 0-7 di Arduino, la B ai pins 8-13, la C ai pins (analogici) A0-A5.
Arduino
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
architettura AVR introduzione e principio di funzionamento datapath dellarchitettura fasi del ciclo istruzione diagramma a stati finiti
Arduino
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
esempio di ADD, STOREWORD e JUMP implementazione pipeline
Larchitettura AVRLAVR unarchitettura hardware RISC a 8-bit nata sulla basedellarchitettura Harvard nel 1996 ad opera di 2 studenti del NorwegianInstitute of Technology, Alf-Egil Bogen e Vegard Wollan e
successivamente venduta ad ATmel.
E stata una delle prime architetture ad utilizzare una memoria flashon-chip per limmagazzinamento delle istruzioni, in opposizione alle ROM,EPROM ed EEPROM usate solitamente nei microcontrollori.
Le origini del nome sono incerte, alcuni lo attribuiscono ad AdvancedVirtual RISC (in quanto pu vantare di un maggior numero di istruzionirispetto ad unarchitettura RISC standard), altri alle iniziali dei suoi ideatori,seguite dalla lettera R di RISC.
I componenti principali
PROGRAM COUNTER
INSTRUCTION REGISTER
INTRUCTION DECODER
REGISTERS
ALU
SRAM MEMORY
STATUS CONTROLLER
Particolarit dellAVR
Per massimizzare
le prestazioni e
permettere di
aumentare il
numero di azioni
compiunte
parallelamente,
larchitettura AVR utilizza
memorie e bus
seprati per il
programma e
per i dati.
Particolarit dellAVR
Tutte le istruzioni
dellarchitettura AVR sono composte da un
numero di bit multiplo
di 16
(la maggior parte
sono esattamente da
16-bit).
Un potente sistema di
indirizzamento
permettere di
raggiungere
qualunque istruzione
del programma attraverso le istruzioni
di JUMP e BRANCH.
ALU e registri ad eccesso rapido
Il banco registri contiene
32 registri a 8-bit.
Il sistema a doppio bus
consente di poter
leggere 2 locazioni di
memoria e
contemporaneamente
scriverne una terza.
Questo consente di
effettuare la maggior
parte delle operazioni
logico/matematiche in
un singolo ciclo di clock.
One instruction: one clock!
Come si potuto notare il sistema a doppio bus consente un
notevole vantaggio in termini di prestazioni: da un lato permette
di eliminare le fasi del ciclo istruzioni successive alla EXECUTE,
dallaltro permette allunit di decodifica dellistruzione dioperare durante la stessa fase EXECUTE, rendendo superflua una
separata fase di ISTRUCTION DECODING.
Questo punto sar chiarito meglio nel seguito con lanalisi deldatapath.
Risulta evidente che le uniche 2 fasi interessate nellesecuzionedi una istruzione sono la FETCH e la EXECUTE.
Un (non troppo complesso) sistema di PIPE completa
larchitettura, accodando le 2 fasi e permettendo cos ad unprocessore AVR di completare la maggior parte delle istruzioni in
un singolo ciclo di clock!
Il registro di stato
Il registro di stato permette di
interrompere lesecuzione del programma in presenza di interrupt esterni, di mantenere
il risultato delloperazione logica pi recente per
permettere le istruzioni di salto condizionato senza impiegare
nuovamente lALU per la verifica della condizione e di
verificare la presenza di eccezioni (divisione per 0,
ecc) che modificano il
normale flusso del programma.
Vista
din
siem
ed
el d
ata
pa
th
Componenti del datapath
Registri
Program counter Registro istruzione Registro dellindirizzo di memoria Prossimo valore program counter
Componenti del datapath
Memorie
Memoria del programma Memoria dei dati
Componenti del datapath
ALU
Componenti del datapath
Unit di
allineamento(e di controllo)
Traduce i bit dellistruzione neisegnali necessari al il datapath
Componenti del datapath
Logica di
indirizzamento dei registri
Fornisce gli indirizzi di scrittura e lettura per iregistri a partire dal codice operativo, dallospiazzamento e dai numeri di registrocontenuti nellistruzione
Componenti del datapath
Banco registri a 2 canali
Componenti del datapath
Sommatore del program counter
Permette di calcolare il successivoindirizzo del program counter in casodi istruzioni di tipo JUMP o BRANCH
Diagramma a stati finiti
Tabella degli stati
Implementazione multiciclo
Ogni istruzione attraversa una e una sola
fase FETCH.
Ogni istruzione attraversa una o pi fasi
EXECUTE.
La maggior parte di esse (secondo
alcune statistiche l80% delle istruzionieseguite comunemente rientrano in
questa categoria) attraversano una sola
fase fetch.
Fase FETCH
Fase EXECUTE
La fase EXECUTE dipende dallo
specifico tipo di istruzione da
eseguire: in base ad esso infatti
verranno attivate diverse sezioni
del datapath.
In generale possiamo suddividere
le istruzioni in 3 categorie:
Logico/aritmetiche (tipo R) Trasferimento di dati (tipo I) Salto condizionato (JUMP) e
incondizionato (BRANCH)
Esempio: istruzione ADD
Esempio: istruzione LOADWORD (1)
Esempio: istruzione LOADWORD (2)
Esempio: istruzione JUMP (1)
Esempio: istruzione JUMP (2)
Da
tap
ath
co
mp
leto
(e re
ale
)
Segnali di controllo
Implementazione pipeline
Durante (lultima) la fase EXECUTE dellistruzione precedenteavviane la fase FETCH dellistruzione successiva.Questo accorgimento permette di, superato un clock di
ritardo iniziale, eseguire la maggior parte delle istruzioni in
un singolo ciclo di clock.
Implementazione pipeline
Particolarit dellistruzione BRANCH: viene ipotizzato che lacondizione di BRANCH non sia mai verificata, caricando
sempre listruzione immediatamente successiva. Se lipotesirisulta errata viene effettuato un nuovo FETCH dellistruzionecorretta, assegnando cos una penalizzazione di un ciclo di
clock.
Arduino
SEMERARO STEFANO
CALCOLATORI ELETTRONICI - 2014
INGEGNERIA DELLINFORMAZIONE UNIVERSITA DEL SALENTO
indici di prestazione e consumi come programmare il microcontrollore C: il linguaggio nativo dellAtmega328 lambiente di sviluppo (IDE) di Arduino DEMO: blinking led introduzione agli interrupts DEMO: ultrasonic proximity sensor comunicare col mondo esterno: la seriale DEMO: Android bluetooth comunication varianti di Arduino e relativi costi quando Arduino non basta: Raspberry Pi e i minicomputer
Indici di prestazione e
consumi dellATmega328
Frequenza di clock massima: 20Mhz Frequenza di clock di default: 16Mhz
Valore di throughput: 1 MIPS per Mhz(16 MIPS alla frequenza di clock di
default)
Consumo di corrente a 1Mhz e 25C: Modalit attiva: 0,2mA Modalit power-save: 0,75A Modalit power-down: 0,1A
Programmare lArduino: USB vs ISP
Linterfaccia ISP (in-system programmer) permette di scrivere direttamente la memoria
flash di Arduino, senza scomodare la CPU.
Uno dei (pochi) vantaggi di questa tipologia di
programmazione la possibilit di riprogrammare
il bootloader (la porzione di istruzioni che esegue
il bootstrap, ovvero lavvio del dispositivo), negata con la programmazione USB.
Di contro richiedere un programmatore ed un
cavo ISP ed quindi in generale pi scomoda.
Programmare lArduino: USB vs ISP
La programmazione tramite USB avviene, invece, nel seguente modo:
lintegrato ATmega16U2 funziona come convertitore USB-RS232 facendocredere al computer collegato ad Arduino di avere a che fare con
uninterfaccia seriale.Lintegrato, inoltre, dopo aver ricevuto uno specifico segnale di inizioprogrammazione, resetta il microcontrollore ATmega328.
Il bootloader di questultimo, una volta avviato, rimane per pochimillisecondi in ascolto di un secondo segnale di inizio programmazione.
Nel caso in cui questo segnale venga effettivamente ricevuto,
lATmega328 risponde con un segnale di acknowledgment che raggiungeil computer e fa partire la programmazione vera e propria.
Con questa tipologia di programmazione si ha quindi bisogno di un
secondo integrato (lATmega16U2) ed il microcontrollore principale(lATmega328) deve funzionare attivamente, attivando cio la sua CPU.
C: il linguaggio nativo di Arduino
Arduino un dispositivo pensato principalmente per gli hobbisti e gli
sviluppatori indipendenti. E stato quindi obbligatorio scegliere unintegrato pensato e realizzato per eseguire codice di alto livello.
Banzi ha pensato che il C, un linguaggio di programmazione ideato
da Dennis Ritchie nel 1972, assicurava un buon livello di astrazione
senza compromettere la consapevolezza di avere a che fare con unapiattaforma hardware con risorse tuttaltro che illimitate.
Anche in questo caso lintegratoATmega si rivelata la scelta pi
indicata. Il team AVR di Atmel ha
invitato esperti di C (da IAR System)
a partecipare alla progettazione
del microcontrollore.
Dopo un percorso di miglioramenti
e rifiniture, lATmega328 pu oraeseguire codice C con una
velocit simile a quella di un
codice nativamente assembler.
Lambiente di sviluppo (IDE)
Carica
su Arduino
Salva
Apri
Controlla
codice
Nuovo
Apri console
seriale
DEMO 1:
blinking led
Pin collegato
al LED LED integrato
Gli interrupts e la ISR
Gli interrupts permettono di interrompere il normale flusso del
programma nel caso in cui si verifichino condizioni predefinite
(triggers) per eseguire dei blocchi di codice con priorit superiore,
prima di ritornare al programma principale.
Interrupts interni ed esterni
Nella maggior parte dei microcontrollori si distinguono 2tipologie di interrupts:
INTERNI: sono indipendenti dai dispositivi connessi epossono essere scatenati da eccezioni (divisione per0, overflows, ), timers e whatchdogs.
ESTERNI: si verificano solo in presenza di dispositiviesterni connessi e sono scatenati da cambiamenti nellivello logico di un pin (pins digitali) o superamento dilivelli di tensione di soglia (pins analogici).
DEMO 2: ultrasonic
proximity sensor
DEM
O 2
: ultra
son
ic
pro
xim
ityse
nso
r
Pin trigger
Pin echo
(agganciato
allinterrupt)
Linterfaccia seriale
Linterfaccia seriale di Arduino uninterfaccia FULLDUPLEX bifilare, in cui il PIN 0 rappresenta il ricevitore e il
PIN 1 rappresenta il trasmettitore.
Essa permette di comunicare con altri dispositivi
elettronici che utilizzano lo stesso protocollo di
comunicazione (che prende il nome di RS-232)
La comunicazione attraverso linterfacciaseriale :
SERIALE (non mi dire): i bit vengonotrasmessi in sequenza, uno dietro laltro;
ASINCRONA: non c un segnale di clockche sincronizza la comunicazione (
necessario che i dispositivi si accordino
sulla velocit di trasferimento);
POINT-TO-POINT: ad ogni trasmettitore associato un solo ricevitore.
Linterfaccia seriale
Lunit di misura che (spesso) viene usata per indicare lavelocit di trasferimento su di uninterfaccia seriale ilbps (che nel caso in questione di comunicazione binaria
coincide col baudrate) che corrisponde allinverso delperiodo che intercorre tra un bit e laltro.
I valori di baudrate che vengono usati comunemente
sono 9600, 19200, 38400, 57600, 115200 e 1.8432M per
motivi storici legati alle trasmissioni tra telegrafisti.
DEMO 3:Android
bluetoothcommunication
Magic
box
Bluetooth
adapter HC-06
La DEMO andata a
buon fine?
SI NO
Come doveva andare
Alcune varianti di Arduino
NOME BOARD UNO REV.3 MEGA 2560 INTEL GALILEO
PREZZO UFFICIALE 24 47 66
PREZZO STREET 8 (clone) 12 (clone) 60
Quando Arduino non basta
I cosiddetti minicomputer, tra i quali si distingue leconomico Raspberry PI,sono unaltra categoria di dispositivi che si scostano di poco daimicrocontrollori: essi possiedono componenti tipici di un computer quali
unuscita video e audio, una o pi porte USB, una scheda di rete (spessowireless) e unarchitettura adatta a sistemi operativi pi complessi.Vengono spesso affiancati ad un microcontrollore per colmare la scarsit di
I/O (soprattutto di tipo analogico).
RiferimentiVideo introduttivi: https://www.youtube.com/watch?v=SyuLhEUImng /
w2itwFJCgFQ / ywfZsYApj_MStoria di Arduino: http://spectrum.ieee.org/geek-life/hands-on/the-making-of-
arduinoATmega328 (datasheet): http://www.atmel.com/Images/doc8161.pdfArchitettura AVR: https://coefs.uncc.edu/sjkuyath/files/2012/04/Topic_3-
AVRarch.pdfDatapath AVR:
http://web.engr.oregonstate.edu/~sinky/teaching/4.AVR_Microarchitecture.pdf
AVR su Arduino: http://www.atmel.com/technologies/cpu_core/avr.aspx
Tutte le altre informazioni sono frutto di brevi ricerche su
Google o Wikipedia e di esperienza personale.
Si ringrazia la mia fidanza Roberta per laiuto nella realizzazione della Magic Box (cos contenta).
Per info e chiarimenti: semeraro.stefano@hotmail.it