79

Introduzione Arduino by Semeraro Stefano

Embed Size (px)

DESCRIPTION

Una raccolta di slide per apprendere e approfondire le funzionalità di questo incredibile dispositivo made in Italy

Citation preview

  • 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: [email protected]