ARDUINO

foto1
foto1
foto1
foto1
foto1
.

GPS Tracker

Mappatura percorso con Arduino GPS

ARDUINO

Come nasce

 

La progettazione di Arduino avvenne nel 2005 a Ivrea, il team di ricerca era composto da cinque persone tra cui Massimo Banzi, David Cuartelles, Tom Igoe, Gianluca Martino e David Mellis. Il nome della scheda deriva da quello del bar di Ivrea.

Il loro scopo fu quello di realizzare una piattaforma economica rispetto ai prodotti allora disponibili sul mercato. Già tre anni dopo ovvero nell’ottobre del 2008 in tutto il mondo erano stati venduti più di 50.000 esemplari di Arduino.

 

Cos’è Arduino?

    Arduino è un sistema basato sul microcontrollore ATMEL.

 

Il Microcontrollore o Microcontroller o MCU è un dispositivo elettronico integrato su singolo chip, nato come evoluzione alternativa al Microprocessore. E' progettato per interagire direttamente con il mondo esterno tramite un programma residente nella propria memoria interna e mediante l'uso di pin specializzati o configurabili dal programmatore. Sono disponibili in 3 fasce di capacità elaborativa (ampiezza del bus dati): 8 bit, 16 bit e 32 bit. L'ampia gamma di funzioni di comando e controllo disponibili, sia analogiche che digitali, integrate sullo stesso chip, permette l'impiego delle MCU in sostituzione di schede elettroniche cablate tradizionali ben più complesse e costose. Per i microcontrollori sono rilasciati sistemi di sviluppo amatoriali e professionali anche in modalità open source. L'architettura del Microcontrollore prevede un insieme di moduli fissi, comuni a tutti i modelli, e una serie di possibili estensioni in funzione del costruttore, del prezzo e della fascia applicativa):

 Unità di elaborazione (CPU o Core)

 Memoria di programma (ROM, OTP, EPROM, FLASH)

 Memoria dati (RAM e EEPROM)

 Porte di I/O configurabili

 Gestione Interrupt

 Oscillatore interno o esterno 

 Moduli aggiuntivi

 Contatori e temporizzatori

 Moduli di comunicazione: (USART, I2C, SPI, USB, Ethernet,IrDA, CAN, Wi-Fi, Zigbee) 

 Interfacce analogiche o tecnologia mista: ADC, DAC, PWM, Comparatori analogici

 Interfacce di visualizzazione e controllo: (LCD, Touch sensor) Da quanto fin qui esposto risulta evidente quale sia la differenza tra un microprocessore e un microcontrollore: il primo contiene esclusivamente l'unità centrale di calcolo (CPU) e quindi per poter funzionare necessita di una memoria ROM esterna nella quale viene scritto il programma, di una RAM per i dati e di alcuni integrati per l'interfacciamento; nei microcontrollori tutto ciò è contenuto all'interno di un singolo chip. Il principio di funzionamento di un microcontrollore è molto semplice, e coincide con quello di un computer o elaboratore elettronico e può essere riassunto in solo tre operazioni eseguite dalla CPU:

 1. Legge l'istruzione contenuta nella memoria programma;

 2. La interpreta;

 3. La esegue.

 Il microcontrollore è un dispositivo che raggruppa su un unico chip tutto il necessario per un sistema a microprocessore.

1. CPU (core)

2. Memoria RAM

3. Memoria EPROM, EEPROM, OTP

4. Porte I/O

5. Timers e contatori

6. Porte di comunicazione seriale speciali ("Bus CAN","Bus I2C")

7. Convertitori A/D                                                                                                                           

Arduino è una piccola scheda elettronica programmabile open source in grado di connettere dispositivi elettrici con quelli digitali. La scheda è composta da una piattaforma hardware per il physical computing sviluppata presso l’Interaction Design Institute.

 

Questa scheda si basa su un circuito stampato che integra un  microcontrollore con pin connessi alle porte I/O, un regolatore di tensione e un interfaccia USB che permette la comunicazione con il computer. All’hardware viene affiancato un ambiente di sviluppo integrato multipiattaforma ( Linux, Apple, Macintosh e Windows). Arduino viene programmato con un linguaggio derivato dell C/C++ chiamato Wiring, i programmi si chiamano sketch.

La piattaforma di Arduino viene distribuita in versione pre-assemblata, la particolarità di questo progetto è che le informazioni sull’hardware e soprattutto i progetti sono disponibili a tutti, in questo modo chi lo desidera può legalmente costruirsi un clone di Arduino o una versione modificata. Questa possibilità ha consentito lo sviluppo di un enorme quantità di schede Arduino compatibili. Grazie alla base software comune è stato possibile sviluppare programmi per connettere più o meno qualsiasi oggetto elettronico.

Una scheda Arduino consiste di un microcontrollore a 8 bit AVR prodotto dalla Atmel, con l’aggiunta di componenti complementari che ne facilitano l’utilizzo con gli altri circuiti. Molte schede includono un regolatore lineare di tensione a 5 volt ed un oscillatore a quarzo da 16 MHz. Le schede di Arduino dispongono di molti connettori di Input/Output usabili quale estensione per altri circuiti esterni. L’ambiente di programmazione integrato (IDE) di Arduino è un’applicazione multipiattaforma scritta in Java, ed è derivata dall’IDE creato per il linguaggio di programmazione Processing e adattato al progetto Wiring. È concepito per introdurre alla programmazione hobbisiti e neofi ti, a digiuno di pratica nello sviluppo di software. Per consentire la stesura del codice sorgente, il programma include un editor di testo dotato di alcune particolarità, come il syntax highlighting, il controllo delle parentesi e l’identifi cazione automatica delle istruzioni. L’editor è inoltre in grado di compilare e lanciare il programma eseguibile in una sola passata e con un singolo click. In genere non c’è bisogno di creare dei Makefi le o far girare programmi dalla riga di comando.

 

Programmazione di Arduino

 

Questa parte è un commento:

 se il commento si estende su più righe inizia con /* e termina con */

 se il commento si estende su una sola riga, inizia con // Imposta una variabile di nome led e all’interno memorizza il numero 13 Corrisponde la numero del Pin relativo al LED “L” void setup() void indica ad Arduino che stiamo dichiarando una funzione di nome setup(), cioè un porzione di codice che esegue un’operazione specifica La parentesi { aperta indica dove inizia il codice. pinMode(led, OUTPUT) imposta il pin digitale indicato dalla variabile led (pin n.13) come output. pinMode è un’istruzione che dice ad Arduino come usare un determinato pin. Tra parentesi tonde vengono specificati gli argomenti che possono essere numeri e lettere. I pin digitali possono essere utilizzati sia come INPUT che come OUTPUT. Nel nostro caso poiché vogliamo far lampeggiare il diodo LED dobbiamo definire il pin di OUTPUT. Le parole INPUT e OUTPUT sono costanti definite, che non variano mai nel linguaggio di Arduino. La parentesi }graffa chiusa indica la fine della funzione setup(). void loop() Indica la sezione di codice principale, il nucleo del programma, che verrà ripetuto all’infinito fino a quando non si spegne la scheda. La parentesi { aperta indica dove inizia il codice. digitalWrite(LED, HIGH) accende il LED L’istruzione digitalWrite possiede due argomenti, il primo definisce il pin, il secondo indica lo stato. digitalWrite è un’istruzione in grado di impostare un pin definito come OUTPUT ad un valore HIGH o ad un valore LOW, in modo più semplice permette di accendere o spegnere un led connesso al pin specificato nel primo argomento, nel nostro caso LED. HIGH= +5V LOW=0V delay(1000) aspetta un secondo delay() interrompe per un determinato tempo l’esecuzione del programma. L’argomento, indica il numero di millisecondi di attesa. Nel nostro caso, 1000, ovvero 1 secondo. digitalWrite(LED, LOW) spegne il LED delay(1000) aspetta un secondo La parentesi }graffa chiusa indica la fine della funzione loop().

La presenza delle parentesi graffe si usano per raggruppare diverse linee di codice e si rivelano particolarmente utili quando si vuole assegnare un nome a un gruppo di istruzioni. Nell’esempio, potete notare che sono definiti in questo modo due blocchi di codice void setup () e void loop (). Dove void setup () è la preparazione, void loop () è l'esecuzione. void setup() { istruzioni che devono essere eseguite una sola volta all’inizio del programma; Viene utilizzato per inizializzare i pin del microcontrollore e quindi stabilisce i pin di ingresso e di uscita, e/o inizializza la comunicazione seriale. } void loop() { ciclo in cui viene racchiuso il programma vero e proprio che deve essere eseguito ripetutamente finché la scheda non viene spenta; }

 

Il programma di Arduino può essere sudiviso in tre parti principali: Struttura, Valori (Variabili e Costanti) e Funzioni.

 

 

STRUTTURA VARIABILI FUNZIONI
SRUTTURA DI CONTROLLO COSTANTI I/O DIGITALI
ULTERIORI SINTASSI TIPO DI DATI I/I ANALOGICI
OPERATORI ARITMETICI CONVERSIONE DUE&ZERO ONLY
OPERATORI DI CONFRONTO

VARIABILI DI SCOPO

E QUALIFICAZIONE

I/O AVANZATI
OPERATORI BOLEANI UTILITà TEMPO
PUNTI OPERATORI DI ACCESSO   MATEMTICA
OPERATORI BITWISE   TRIGONOMETRIA
OPERATORI COMPOSTI   NUMERI RANDOM
    BIT E BYTE
    INTERRUPTS ESTERNI
    INTERRUPTS
    COMUNICAZIONI
    USB 32u4

 

Per ulteriori approfondimenti sulla sinassi del linguaggio di Arduino andare sul sito ufficiale:http://www.arduino.cc/en/Reference/HomePage

 

Un piccolo esempio del programma:

 

#define LED_PIN 13a

 
void setup () {
  pinMode (LED_PIN, OUTPUT);   // abilita il pin 13 per l'output digitale
}
 
void loop () {
  digitalWrite (LED_PIN, HIGH); // accende il LED
  delay (1000);         // aspetta 1 secondo (1000 millisecondi)
  digitalWrite (LED_PIN, LOW);  // spegne il LED
  delay (1000);         // aspetta un secondo
}