Introduzione


Link utili:

Starter Kit per Arduino Flex

documentazione degli esperimenti con il mini inventor's kit



Il progetto Arduino si basa su un microcontrollore ATmel 328. Nel microcontrollore sono integrati la CPU e vari altri dispositivi.

la CPU (AVR core) dispone di un'unità di controllo in grado di eseguire un set istruzioni ridotto rispetto ad una CPU convenzionale, nell'area di Memoria sono stati riservati 32 registri. L'Arithmetic and Logic Unit (ALU) può accedere a due registri con una sola istruzione.

L'architettura RISC (Reduced Instruction Set Computer) consente di raggiungere un throughput di 1 Mips per MHz, cioè un'istruzione per ogni impulso di clock.

Il microcontrollore possiede le seguenti caratteristiche: una memoria Flash Programmabile della capacità massima di 8KB, e con la circuiteria che consente di applicare la tecnica Read-While-Write, una memoria EEPROM della capacità massima di 1KB, una SRAM capacità massima di 2KB, 23 linee di I/O, 32 registri a disposizione della CPU, tre Timer/Contatori, linee per interruzioni interne ed esterne, un dispositivo programmabile USART per la comunicazione seriale, una interfaccia seriale con protocollo byte-oriented , una porta seriale SPI, un convertitore analogico-digitale da 10 bit con 6 canali, un timer Watchdog programmabile con un oscillatore interno, e cinque modalità di risparmio energetico, selezionabili via software.

L'ISP consente di riscrivere l'area di memoria riservata al programma utilizzando un comune dispositivo "programmatore di memoria non volatile". In alternativa si può impiegare un programma di Boot che viene eseguito dalla CPU (AVR core). Il rpgramma di Boot può usare una qualsiasi interfaccia per scaricare il programma applicativo nell'area "Applicazione" della memoria Flash. Il programma nella sezione Boot della memoria Flash viene eseguito mentre viene aggiornata la sezione "Applicazione" della memoria Flash, sfruttando la caratteristica Read-While-Write della memoria. L'architetura RISC della CPU e l'abilità di autoprogrammazione del microcontrollore permettono di progettare sistemi embedded poco costosi e flessibili.

Caratteristiche della CPU

Allo scopo di massimizzare le prestazioni e il parallelismo, La CPU AVR è stata costruita secondo il modello Harvard - possiede un'area di memoria per i dati, un'area di memoria per il programma e i bus dati separatati per l'accesso a queste due aree. Le istruzioni nell'area di memoria del programma vengono eseguite con la tecnica del pipelining a due stadi e con la coda in grado di mantenere una sola istruzione: mentre un'istruzione viene eseguita, viene prelevata la successiva. L'area di memoria del programma risiede nella Flash memory.

Lo spazio della memoria Flash riservato al programma è suddiviso in due sezioni: l'area di boot e l'area applicazione.


Collegamento di Arduino al Computer.

  1. IDE per programmare Arduino

    Scaricare l'IDE (ambiente di sviluppo).

    Scompattare il file.

  2. Connettere la scheda Arduino.

    Connettere Arduino al computer tramite un cavo USB del tipo usato per la stampante. Il LED verde (PWR) si accende perchè Arduino preleva l'alimentazione dalla porta USB del computer.

  3. Installazione dei driver.

    Attendere che il sistema operativo inizi il tentativo di installare i driver. Windows segnala che non riesce a trovare i driver.
    Menu Avvio → Pannello di Controllo.
    clic su Sistema. Aprire la scheda Gestione dispositivi.
    In corrispondenza della voce Porte (COM & LPT) ci dovrebbe essere una riga "Arduino UNO (COMxx)"
    clic destro su questa riga e, dal menu contestuale, scegliere "Update Driver Software".
    Si apre un riquadro di dialogo che si aspetta di ricevere il percorso per raggiungere i driver. premere il pulsante "Sfoglia".
    Raggiungere la cartella in cui si è scelto di scompattare i file scaricati ed aprire la cartella "Drivers" e selezionare il file "arduino.inf". A questo punto il sistema operativo continua l'installazione.

  4. Lanciare l'applicazione.

    Avviare l'IDE.

    Per cambiare la lingua usare il comando "Preferences" nel menu "Environments".

  5. Verifica

    Lo sketch di prova, che non ha bisogno di componenti aggiuntivi, usa il led presente sulla scheda. Aprire lo sketch di esempio:
    File → Examples → 1.Basics → Blink.

  6. Scegliere la versione di Arduino

    Nel menu Tools scegliere il comando Board; si apre l'elenco delle versioni di Arduino. Scegliere

    Arduino UNO.

  7. Selezionare la porta seriale

    Il software comunica con le periferiche collegate ad una porta USB usando l'indirizzo hardware associato ad uno degli identificatori COM. Le porte seriali COM1 e COM2 dovrebbero essere riservare alle porte seriali eventualmente disponibili sul computer, quindi le porte USB sono disponibili a partire da COM3. Selezionare la porta seriale a cui è colelagto Arduino dal menu Tools | Serial Port. Per trovare la porta assegnata, scollegare Arduino e riaprire il menu; Adesso, dall'elenco delle porte seriali deve essere scomparsa la porta a cui era collegato Arduino. Ricollegare Arduino e selezionare la porta seriale.

  8. Caricare il programma

    Il programma aperto nell'IDE deve essere trqasferito nella memoria del programma di Arduino.
    clic sul pulsante "Upload" sulla barra degli strumenti dell'IDE. I due LED RX e TX lampeggiano, per indicare che c'è una comunicazione in corso sulla linea seriale (il trasferimento del programma). Al termine del trasferimento, nella barra di stato deve comparire il messaggio "Done uploading."
    Il programma di prova consiste nel far lampeggiare il LED sulla scheda Arduino.

Programma di prova

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* Blink Turns on a LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }

Commenti.

La variabile led, di tipo intero, viene inizializzata con il valore 13. Questo numero è il pin su cui è collegato il led sulla scheda di Arduino.

Nel programma sono presenti due funzioni: setup() e loop().

La funzione setup viene richiamata quando si preme il pulsante Reset sulla scheda oppure quando si alimenta la scheda. Quindi le istruzioni che essa contiene vengono eseguite per programmare le interfacce di Arduino. In questo caso il pin collegato al led viene programmato per funzionare in modalità output.

La funzione loop corrisponde ad un ciclo forever. In questo caso vengono svolte ripetutamente le operazioni:

  1. Invio di un livello Alto (+5V) sul pin 13, per accendere il led,

  2. attesa di un secondo,

  3. Invio di un livello Basso (0V) sul pin 13, per spegnere il led,

  4. attesa di un secondo,

Esercizi.

Creare un effetto di lampeggio in cui il ritardo diminuisce da 1000 a 800 ms con decremento 200, poi ritorna a 1000 ms con incremento di 200.

Far lampeggiare rapidamente il LED per 3 volte con un ritardo di 100ms, poi mantenere il LED spento per 1 secondo prima .