AA 2010/2011 Facoltà del Design - Politecnico di Milano

Slides:



Advertisements
Presentazioni simili
Gestione Input Output A. Ferrari.
Advertisements

Array multidimensionali
STRUTTURA DEL PERSONAL COMPUTER
PROGRAMMARE IN PASCAL (le basi)
PHP.
IL MICROCONTROLLORE ST6
Automazione a logica programmabile
Algoritmi e Programmazione
Università degli studi di Trieste – Tesi di laurea triennale in Ingegneria elettronica PROTOCOLLO DI COMUNICAZIONE TRA PC E MICROCONTROLLORE PER UN’INTERFACCIA.
DAL MICROPROCESSORE AI SISTEMI EMBEDDED Informatica per lAutomazione II (Informatica B o II) Anno accademico 2008/2009 Prof. Giuseppe Mastronardi Ing.
MICROCONTROLLORI Di Tiziano Ragazzi.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Introduzione agli stream e alle classi
Che cos'è un Microcontrollore?
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
IL MODEM Che cos’è? A cosa serve? Che problemi risolve? Come comunica?
Corso di PHP.
Informatica per medici
Tecnico hardware Di Adone Amaddeo
UNIVERSITA’ STUDI DI ROMA “FORO ITALICO”
2. Hardware Componenti di base di un computer
L'ambiente informatico: Hardware e Software
Piattaforma Arduino Arduino uno Arduino Mega.
PRESENTAZIONE di RICCARDO
STRUTTURA GENERALE DI UN ELABORATORE
L' ARCHITETTURA DI VON NEUMANN
Il computer: struttura fisica e struttura logica
CODIFICA Da flow-chart a C++.
Dimitri Caruso Classe 2^ Beat ISIS G. Meroni Anno Scolastico 2007/08
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
ARDUINO Arduino è una piattaforma hardware low-cost programmabile, con cui è possibile creare circuiti "quasi" di ogni tipo per molte applicazioni, soprattutto.
Per questo organizza un corso di Arduino per tutti i soci Amon e GMS.
Workshop Teachers For Teachers 23 – 24 settembre 2013
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
INFORMATICA = INFOrmazione + autoMATICA L’informazione una delle risorse strategiche più importanti della società moderna Capacità di gestire l’informazione.
WATCHDOG TIMER E’ un oscillatore interno al  C, ma indipendente dal resto dei circuiti, il cui scopo è quello di rilevare eventuali blocchi della CPU.
Introduzione a Javascript
INTERFACCE Schede elettroniche che permettono al calcolatore di comunicare con le periferiche, che possono essere progettate e costruite in modo molto.
Luglio 2004Generalità Hardware1 Luglio Generalità Hardware2 MACCHINA DI VON NEUMAN (1947) BUS Processore Elaborazione Controllo Memoria Ingresso.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Strutture di controllo Esercizi!. Utilizzare i metodi: I modi per poter richiamare un metodo, di una classe (ad esempio SavitchIn) sono due. 1) E’ sempre.
Arduino: introduzione alla programmazione
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Corsi di Laurea in Biotecnologie
Laboratorio Informatico
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
INFORmazione autoMATICA
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
MICROPROCESSORI Un processore è un circuito integrato in grado di effettuare operazioni di calcolo o di elaborazione dell'informazione Il circuito contiene.
Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTA’ DI INGEGNERIA ELETTRONICA
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
UNIVERSITÀ DI BERGAMO FACOLTÀ DI INGEGNERIA UNIVERSITÀ DI BERGAMO FACOLTÀ DI INGEGNERIA UNIVERSITÀ DI BERGAMO FACOLTÀ DI INGEGNERIA Dispositivi per il.
Internetworking V anno.
Concetti di base Computer, HW e SW
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Informazione e Informatica - presentazione dei concetti di base -
Conversione Analogico/Digitale Le grandezze fisiche che vogliamo misurare variano con continuità in un dato intervallo ed in funzione del tempo: sono descrivibili.
La struttura di un computer
Test di preparazione all’esame E.C.D.L. CONCETTI DI BASE DEL PC.
HI-TECH INNOVATION AT WORK. HI-TECH INNOVATION AT WORK 2 “EASY Programming & Testing tools” Apparecchiature di programmazione e collaudo.
Architettura del computer Il computer menù I L C O M P U T E R Il computer, quindi, é una macchina programmabile, cioè una macchina che può essere utilizzata.
I Microprocessori Unità 3 del libro Internet Working Sistemi e reti.
Tipi di Computer MainframeSupercomputerMinicomputerMicrocomputerHome Computer Personal Computer WorkstationMicrocontrollori Sistemi Barebone.
IL PLC AUTOMAZIONE INDUSTRIALE
Hands-On Arduino Come collegare i sensori ad Arduino P. Perego- Politecnico di Milano AA 2010/2011 Facoltà del Design - Politecnico di Milano 3.o anno.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Concetti informatici di base. Concetti informatici di base Il computer o elaboratore è una apparecchiatura costituita da un insieme di dispositivi di.
Struttura del Computer
ISTITUTO TECNICO – SETTORE TECNOLOGICO
Transcript della presentazione:

AA 2010/2011 Facoltà del Design - Politecnico di Milano 3.o anno – Disegno Industriale Hands-On Arduino Electronics for designers P. Perego- Politecnico di Milano

Che cos’è ARDUINO? Hardware, Software e prototipo di circuito. “Arduino is an open-source physical computing platform based on a simple i/o board and a development environment that implements the Processing / Wiring language. Arduino can be used to develop stand-alone interactive objects or can be connected to software on your computer.“ ( www.arduino.cc, 2006 )

Perché ARDUINO? Nano, Lilly, Fyo, Mini, Mega… Arduino è nato per la prototipazione da parte di non elettronici: robusto e immediato; E' orientato all'applicazione, non alla piattaforma in sé; Permette di provare, partendo dal piccolo e crescendo pezzo per pezzo (sviluppo modulare); Lo sviluppo è aiutato da una enorme community online con esempi e consigli. Economico Connessione USB

Com’è fatto Arduino Micro controllore: Arduino è basato su un microcontrollore, l’ATmega328 Il microcontrollore è il «cervello» di tutto il sistema, gestisce gli input, gli output, la comunicazione USB, la temporizzazione. Necessita quindi di istruzioni  deve essere programmato!!!

Microcontrollore: Approfondimento Il microprocessore è il nucleo centrale di un calcolatore; esso è l’unità di elaborazione dei dati e di controllo del funzionamento del calcolatore stesso e viene spesso indicato con la sigla CPU (Central Processing Unit). Posto da solo, il uP non è utilizzabile, infatti sia i dati che i programmi su cui il processore opera sono immagazzinati in un’unità di memoria esterna a causa della grande quantità di memoria richiesta. Per applicazioni particolari, tipiche del controllo industriale si fa invece uso dei così detti Microcontrollori (uC). Un microcontrollore è un sistema a microprocessore completo, integrato in un solo chip, progettato per ottenere la massima autosufficienza funzionale ed ottimizzare il rapporto prezzo-prestazioni per una specifica applicazione. I uC comprendono, oltre all’unità di calcolo, anche la memoria (RAM e ROM) e ulteriori periferiche di input/output (convertitori analogico/digitali, timer, interfaccia USB) a seconda dell’applicazione specifica. Il microcontrollore o il microprocessore sono il cervello del nostro cirucito elettrico digitale Il microprocessore è il nucleo centrale di un PC, è l’unità di elaborazione dei dati e di controllo di funzionamento. Un microcontrollore è invece un “sistema” a microprocessore; esso integra in un solo chip non solo l’unità di calcolo ma anche memoria e periferiche in input/output. I microprocessori sono sì più potenti, ma posti da solo, non sono utilizzabili. I microcontrollori sono invece progettati ed utilizzati per applicazioni particolari, tipiche dei controlli industriali.

Microcontrollore: Approfondimento 2 I vantaggi dell’utilizzo dei micro: Sono richiesti meno dispositivi “discreti” per la realizzazione di un sistema Il sistema ha dimensioni ridotte Diminuiscono i costi Diminuisce il consumo di potenza Diminuisce la sensibilità all’ambiente (temperatura, EM, …) Utilizza meno componenti, quindi più affidabile. Riconvertibilità del progetto (riprogrammabile) Protezione contro la copia Interfacciamento semplice con altri dispositivi (PC, LCD, …) Ma dove si usano??? Componenti PC: mouse, tastiere, modem, carica batterie… Orologi, calcolatrici Serrature per porte, sistemi d’allarme Automotive: in una BMW X5 sono contenuti più di 70 microcontrollori. In questa slide sono evidenziati i vantaggi principali dell’utilizzo di un microcontrollore in un progetto. Innanzitutto sono richiesti meno componenti discreti per la realizzazione del sistema rispetto all’utilizzo di una normale rete digitale; il sistema avrà quindi dimensioni ridotte ed una minore sensibilità alle variazioni ambientali. In questo modo possono essere diminuiti i costi, sia di produzione che di manutenzione in quanto l’affidabilità del sistema aumenta diminuendo il numero di componenti. Oltre alla possibilità di aggiornare il sistema, essendo riprogrammabile, è possibile proteggere il dispositivo dalla copia. Inoltre l’utilizzo di un microcontrollore da la possibilità di interfacciarsi facilmente con altri dispositivi come PC via usb, LDC… Anche se non se ne sente parlare, i microcontrollori sono i componenti più venduti ed utilizzati al mondo; sono utilizzati in miriadi di applicazioni: dai componenti dei PC (mouse, tastiere…), orologi, calcolatrici, serrature di porte. Arduino è basato su un microcontrollore, l’ATmega328 La grande community online e il fatto di essere OpenSource lo rendono molto più semplice ed intuitivo rispetto al normale utilizzo di microcontollori (PIC, ARM…)

Com’è fatto Arduino Alimentazione da USB Alimentazione da V-in (6 - 20V) Si consiglia una tensione tra 7 e 12V. Se utilizziamo un alimentatore esterno, sul pin Vin si troverà la tensione di alimentazione vera e propria senza regolazione. Arduino seleziona automaticamente la sorgente di alimentazione. Solo il vecchio Arduino diecimila necessita di un selettore. Alimentazione da Jack (6 - 20V)

Com’è fatto Arduino 14 Ingressi/Uscite digitali 6 Ingressi analogici Nota: Segnale analogico: è un segnale a tempo ed ampiezza continua. Segnale digitale o numerico: è un segnale a tempo discreto e ad ampiezza quantizzata. 14 Ingressi/Uscite digitali 6 Ingressi analogici

Alimentazione a batteria Dimensionamento della batteria Il dimensionamento della batteria è un aspetto fondamentale di un progetto. Arduino One, Mega e 2009, grazie al connettore esterno, permettono di alimentare il sistema per mezzo di batterie… ma quali usare? La batteria da utilizzare dipende da: 1. Tempo d’uso 2. Corrente richiesta dal sistema 3. Tensione richiesta dal sistema 4. Dimensione massima (in cm) della batteria Se per esempio abbiamo un circuito che necessità 3,3V, consuma 150mA e vogliamo che la batteria duri alemno 8 ore, dovremo scegliere un batteria con tensione maggiore di 3,3V (il circuito avrà un regolatore, come Arduino) e una ‘capacità’ di almeno 150mA*8*1,2 = 1440mAh 1,2 è un fattore di correzione per assicurarsi la durata voluta.

Pin Digitali: Generici ed specifici Ognuno dei 14 pin Digital I/O dell’Arduino può essere utilizzato sia come input che come output. I pin Digital I/O operano ad una tensione di 5V e possono fornire fino a 40mA di corrente Alcuni di questi pin hanno funzioni specifiche: Serial: pin 0 (RX) e pin 1 (TX). Sono rispettivamente il pin di trasmissione e ricezione per la comunicazione seriale. Lavorano a 5V e sono connessi con l’USB. Possono essere utilizzati per connettere un modulo bluetooth. In questo caso il modulo deve essere scollegato per permettere la scrittura del firmware attraverso l’USB. External Interrupts: pin 2 e 3. Questi pin possono essere configurati per la generazione di interrupt. Possono cioè essere configurati in modo che se il valore del pin cambia, l’esecuzione del codice viene interrotta momentaneamente per eseguire un’altra operazione, associata al cambiamento del pin

Pin Digitali: Generici ed specifici PWM: 3, 5, 6, 9, 10, e 11. Possono essere utilizzati come PWM a 8 bit. SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Questi pin possono essere utilizzati per la comunicazione SPI con alcuni dispositivi (SDCARD, Ethernet shield, GSM). LED: 13. Il pin 13 è collegato ad un led SMD presente sulla scheda. I2C: 4 (SDA) e 5 (SCL). Configurabile come I2C (TWI) (simile a SPI).

Pin Digitali: Pulse Width Modultation (PWM) La PWM – Pulse Width Modulation è una tecnica utilizzata per la generazione di un segnale analogica utilizzano un uscita digitale. Variando la lunghezza dell’impulso posso generare dei valori analogici da 0 a Vcc (5V per Arduino). Il duty-cycle è il rapporto tra il periodo dell’impulso al valore logico alto sul periodo in percentuale. La frequenza di lavoro del PWM di Arduino è circa 470Hz. Pilotando un led con questa tecnica posso far assumere diverse gradazioni di luminosità, l’occhio non percepisce il continuo on/off ma un livello differente di luminosità.

Pin Analogici: Convertitore Analogico-Digitale (ADC) Arduino ha inoltre 6 ingressi analogici (A0…A5) ognuno dei quali ha una risoluzione a 10bit (cioè riconosce 2^10 = 1024 intervalli di tensione differenti). Il convertittore analogico-digitale (ADC) interno di Aduino è settato di default per acquisire valori tra 0 e 5V. Questo vuol dire che l’intervallo di 5V sarà diviso in 1024 intervalli. E se volessimo acquisire un segnale tra 0 e 3,3V? Parte dei livelli di quantizzazione sarebbero Inutili. 0V 3,3V 5V

Pin Analogici: Convertitore Analogico-Digitale (ADC) 2 Per tale motivo è presente il pin AREF con il quale, per mezzo di una apposita funzione che vedremo in seguito, si può fissare il valore di riferimento (il valore massimo) per l’ADC Un altro pin molto utile è il RESET. Questo pin, se posto a 0, permette di resettare lo stato dell’arduino. È possible resettare Arduino sia per mezzo del pulsante presente sulla board, sia attraverso questo pin. Durante la programmazione questo pin è posto basso per resettae Arduino e permetterne la programmazione.

Programmazione di Base. Variabili. └ Array. Funzioni Programmazione di Base Variabili └ Array Funzioni Strutture di controllo Nota: Utile per Arduino e Processing Nota, se vogliono stampare non si capisce niente. Se facciamo accendere il led interno non mettere “collegare”.

Com’è fatto Arduino Programmazione da USB Nota: Firmware: Insieme di istruzioni che controllano il funzionamento di un microcontrollore. E’ il «programmino» che andremo a caricare sul nostro Arduino. Software: Insieme di istruzioni che controllano parte del nostro computer. Sono i programmi che girano sul nostro calcolatore (Word, Excel…). Incluso il software Arduino che avete installato, chiamato anche «Integrated Development Environment (IDE) Arduino». Procesing è un altro IDE che serve tuttavia a creare software per PC/MAC.

Programmazione di base Le Variabili Dichiarazione delle varibili: Tipo variabile NOME VARIABILE (= Valore iniziale); Tipi di variabili presenti: boolean: variabile binaria, può essere TRUE o FALSE; char: usa un byte di memoria e può contenere un qualsiasi carattere. Ad esso è assegnato un valore tra -127 e 128; byte: contiene 8 bit, valore tra 0 e 255; int: numero intero tra -32768 e 32767 (2 byte); word: contiene 16 bit, valore tra  0 e 65535; long: numero intero tra -2147483,648 e 2147483,647 (4 byte); float e double: numero con virgola mobile tra 3,4028235E+38 and as low as -3,4028235E+38 string: colonna di char; array: colonna di variabili (int, float…) int ledPin = 13; int ledPin1 = 10; float interval = 100.5; char carattere= ‘c’;

Programmazione di base Esempi di variabili boolean running = false; char myChar = 'A'; byte b = B00010010; int ledPin = 13; word w = 10000; long speedOfLight = 186000L; float sensorCalbrate = 1.117; STRING: char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'}; char* myStrings[]={"This is string 1", "This is string 2", "string 3"}; ARRAY: int myInts[6]; int myPins[] = {2, 4, 8, 3, 6}; int mySensVals[6] = {2, 4, -8, 3, 2}; char message[6] = "hello";

Esempi di variabili Gli array Si può immaginare un array come una sorta di casellario, le cui caselle sono dette celle dell'array stesso. Ciascuna delle celle si comporta come una variabile tradizionale; tutte le celle sono variabili di uno stesso tipo preesistente, detto tipo base dell'array. Si parlerà perciò di tipi come "array di interi", "array di stringhe", "array di caratteri" e così via. La dimensione dell'array (ovvero il numero celle di cui esso è composto) viene considerato parte della definizione del tipo array. Ciascuna delle celle dell'array è identificata da un valore di indice. L'indice è generalmente numerico e i valori che gli indici possono assumere sono numeri interi che partono da 0. Si potrà quindi parlare della cella di indice 0, di indice 1, e, in generale, di indice N, dove N è un intero compreso fra 0 e la dimensione dell’array. Dichiarazione di un array di 10 interi: int myArray[10]; Uso dell’array: myArray[0] = 10; myArray[1] = 5; …

Cosa sono le funzioni Le funzioni sono parti di codice a cui viene associato un nome. Le funzioni hanno principalmente tre funzioni: - Permettere una maggiore leggibilità del codice - Evitare di riscrivere lo stesso codice - Possibilità di costruire librerie da poter utilizzare in differenti progetti Una funzione ha solitamente questa struttura: Tipo_dato_uscita NomeFunzione(tipi_ingressi NomeVariabile…) { Corpo della funzione } Arduino permette sia l’utilizzo di funzioni da librerie, sia la creazione di nuove funzioni.

Strutture di controllo if…else Se la variabile corrisponde alla prima condizione eseguo azione 1, altrimenti eseguo l’azione due. if (condizione 1) azione 1; else azione 2; Ciclo for Serve per eseguire N volte le funzioni tra parentesi

Strutture di controllo Switch… case Il controllo switch si comporta come più if in cascata. È utilizzato per quei casi in cui la variabile può assumere più valori che devono essere controllati tutti (es. Che tasto ho premuto?) switch (var) { case 1: //do something when var equals 1 break; case 2: //do something when var equals 2 default: // if nothing else matches, do the default // default is optional }

Strutture di controllo Ciclo while Esegue continuamente le funzioni tra parentesi fino a che la condizione rimane invariata. while(var < 200) { // do something repetitive 200 times var++; } Ciclo Do… while È come il ciclo while, ma in questo caso la condizione è controllata alla fine. do x = readSensors(); // check the sensors } while (x < 100);