Programmazione
L’Arduino Uno può essere programmato con il (Arduino Software (IDE)). Seleziona “Arduino Uno dal menu Strumenti > Board (a seconda del microcontrollore sulla tua scheda). Per i dettagli, vedi il riferimento e i tutorial.
L’ATmega328 su Arduino Uno viene preprogrammato con un bootloader che ti permette di caricare nuovo codice su di esso senza l’uso di un programmatore hardware esterno. Comunica usando il protocollo originale STK500 (riferimento, file header C).
Puoi anche bypassare il bootloader e programmare il microcontrollore attraverso l’header ICSP (In-Circuit Serial Programming) usando Arduino ISP o simili; vedi queste istruzioni per i dettagli.
Il codice sorgente del firmware ATmega16U2 (o 8U2 nelle schede rev1 e rev2) è disponibile nel repository Arduino. L’ATmega16U2/8U2 è caricato con un bootloader DFU, che può essere attivato da:
- Sulle schede Rev1: collegando il ponticello a saldare sul retro della scheda (vicino alla mappa dell’Italia) e poi riscrivendo la 8U2.
- Sulle schede Rev2 o successive: c’è una resistenza che tira la linea HWB della 8U2/16U2 a terra, rendendola più facile da mettere in modalità DFU.
Si può poi usare il software FLIP di Atmel (Windows) o il programmatore DFU (Mac OS X e Linux) per caricare un nuovo firmware. Oppure puoi usare l’header ISP con un programmatore esterno (sovrascrivendo il bootloader DFU). Vedi questo tutorial contribuito dall’utente per maggiori informazioni.
Avvertenze
L’Arduino Uno ha un polifusibile resettabile che protegge le porte USB del tuo computer da cortocircuiti e sovracorrenti. Anche se la maggior parte dei computer fornisce la propria protezione interna, il fusibile fornisce un ulteriore livello di protezione. Se più di 500 mA vengono applicati alla porta USB, il fusibile interrompe automaticamente la connessione fino a quando il corto o il sovraccarico viene rimosso.
Differenze con altre schede
La Uno differisce da tutte le schede precedenti in quanto non utilizza il chip FTDI USB-to-serial driver. Invece, ha l’Atmega16U2 (Atmega8U2 fino alla versione R2) programmato come un convertitore USB-seriale.
Alimentazione
La scheda Arduino Uno può essere alimentata tramite la connessione USB o con un alimentatore esterno. La fonte di alimentazione viene selezionata automaticamente.
L’alimentazione esterna (non USB) può provenire da un adattatore AC-DC (wall-wart) o da una batteria. L’adattatore può essere collegato inserendo una spina centro-positiva da 2,1 mm nel jack di alimentazione della scheda. I cavi di una batteria possono essere inseriti nelle intestazioni dei pin GND e Vin del connettore POWER.
La scheda può funzionare con un’alimentazione esterna da 6 a 20 volt. Se alimentata con meno di 7V, tuttavia, il pin 5V potrebbe fornire meno di cinque volt e la scheda potrebbe diventare instabile. Se si utilizzano più di 12V, il regolatore di tensione può surriscaldarsi e danneggiare la scheda. Il range raccomandato è da 7 a 12 volt.
I pin di alimentazione sono i seguenti:
- Vin. La tensione in ingresso alla scheda Arduino quando sta usando una fonte di alimentazione esterna (in contrasto con i 5 volt dalla connessione USB o da un’altra fonte di alimentazione regolata). È possibile fornire tensione attraverso questo pin, o, se si fornisce tensione attraverso il jack di alimentazione, accedere attraverso questo pin.
- 5V.Questo pin emette un 5V regolato dal regolatore sulla scheda. La scheda può essere alimentata dal jack di alimentazione DC (7 – 12V), dal connettore USB (5V), o dal pin VIN della scheda (7-12V). Fornire tensione tramite i pin 5V o 3.3V bypassa il regolatore e può danneggiare la scheda. Non lo consigliamo.
- 3V3. Un’alimentazione a 3.3 volt generata dal regolatore di bordo. L’assorbimento massimo di corrente è di 50 mA.
- GND. Pin di terra.
- IOREF. Questo pin sulla scheda Arduino fornisce il riferimento di tensione con cui opera il microcontrollore. Uno shield correttamente configurato può leggere la tensione del pin IOREF e selezionare la fonte di alimentazione appropriata o abilitare i traduttori di tensione sulle uscite per lavorare con 5V o 3.3V.
Memoria
L’ATmega328 ha 32 KB (con 0.5 KB occupati dal bootloader). Ha anche 2 KB di SRAM e 1 KB di EEPROM (che può essere letta e scritta con la libreria EEPROM).
Input e Output
Vedi la mappatura tra i pin Arduino e le porte ATmega328P. La mappatura per l’Atmega8, 168, e 328 è identica.
PIN MAPPING ATmega328P
Ognuno dei 14 pin digitali dell’Uno può essere usato come ingresso o uscita, usando le funzioni pinMode(), digitalWrite(), e digitalRead(). Essi operano a 5 volt. Ogni pin può fornire o ricevere 20 mA come condizione operativa raccomandata e ha una resistenza di pull-up interna (scollegata per default) di 20-50k ohm. Un massimo di 40mA è il valore che non deve essere superato su qualsiasi pin I/O per evitare danni permanenti al microcontrollore.
Inoltre, alcuni pin hanno funzioni specializzate:
L’Uno ha 6 ingressi analogici, etichettati da A0 a A5, ognuno dei quali fornisce 10 bit di risoluzione (cioè 1024 valori diversi). Per default misurano da terra a 5 volt, anche se è possibile cambiare l’estremità superiore del loro range usando il pin AREF e la funzione analogReference(). Ci sono un paio di altri pin sulla scheda:
- AREF. Tensione di riferimento per gli ingressi analogici. Usato con analogReference().
- Reset. Porta questa linea a BASSO per resettare il microcontrollore. Tipicamente usato per aggiungere un pulsante di reset agli shield che bloccano quello sulla scheda.
Comunicazione
L’Arduino Uno ha una serie di strutture per comunicare con un computer, un’altra scheda Arduino o altri microcontrollori. L’ATmega328 fornisce la comunicazione seriale UART TTL (5V), che è disponibile sui pin digitali 0 (RX) e 1 (TX). Un ATmega16U2 sulla scheda canalizza questa comunicazione seriale su USB e appare come una porta com virtuale al software sul computer. Il firmware 16U2 usa i driver standard USB COM, e non è necessario alcun driver esterno. Tuttavia, su Windows, è necessario un file .inf. Il software Arduino (IDE) include un monitor seriale che permette di inviare semplici dati testuali da e verso la scheda. I LED RX e TX sulla scheda lampeggiano quando i dati vengono trasmessi tramite il chip USB-seriale e la connessione USB al computer (ma non per la comunicazione seriale sui pin 0 e 1).
Una libreria SoftwareSerial permette la comunicazione seriale su qualsiasi pin digitale della Uno.
L’ATmega328 supporta anche la comunicazione I2C (TWI) e SPI. Il software Arduino (IDE) include una libreria Wire per semplificare l’uso del bus I2C; vedi la documentazione per i dettagli. Per la comunicazione SPI, usa la libreria SPI.
Reset automatico (software)
Piuttosto che richiedere una pressione fisica del pulsante di reset prima di un caricamento, la scheda Arduino Uno è progettata in un modo che permette di essere resettata dal software in esecuzione su un computer collegato. Una delle linee di controllo del flusso hardware (DTR) dell’ATmega8U2/16U2 è collegata alla linea di reset dell’ATmega328 tramite un condensatore da 100 nanofarad. Quando questa linea è asserita (presa bassa), la linea di reset cade abbastanza a lungo per resettare il chip. Il software Arduino (IDE) usa questa capacità per permetterti di caricare il codice semplicemente premendo il pulsante di caricamento nella barra degli strumenti dell’interfaccia. Questo significa che il bootloader può avere un timeout più breve, poiché l’abbassamento del DTR può essere ben coordinato con l’inizio dell’upload.
Questa configurazione ha altre implicazioni. Quando l’Uno è collegato a un computer con Mac OS X o Linux, si resetta ogni volta che viene effettuata una connessione dal software (via USB). Per il seguente mezzo secondo circa, il bootloader è in esecuzione sull’Uno. Mentre è programmato per ignorare i dati malformati (cioè qualsiasi cosa che non sia un upload di nuovo codice), intercetterà i primi byte di dati inviati alla scheda dopo che una connessione è stata aperta. Se uno sketch in esecuzione sulla scheda riceve una configurazione unica o altri dati quando si avvia per la prima volta, assicuratevi che il software con cui comunica attenda un secondo dopo l’apertura della connessione e prima di inviare questi dati.
La scheda Uno contiene una traccia che può essere tagliata per disabilitare l’auto-reset. I pad su entrambi i lati della traccia possono essere saldati insieme per riattivarla. È etichettato “RESET-EN”. Si può anche essere in grado di disabilitare l’auto-reset collegando una resistenza da 110 ohm da 5V alla linea di reset; vedere questo thread del forum per i dettagli.
Revisioni
La revisione 3 della scheda ha le seguenti nuove caratteristiche:
- 1.0 pinout: aggiunti i pin SDA e SCL che si trovano vicino al pin AREF e altri due nuovi pin posti vicino al pin RESET, lo IOREF che permettono agli shields di adattarsi alla tensione fornita dalla scheda. In futuro, gli shield saranno compatibili sia con la scheda che utilizza l’AVR, che funziona con 5V, sia con Arduino Due che funziona con 3,3V. Il secondo è un pin non collegato, che è riservato per scopi futuri.
- Circuito RESET più forte.
- Atmega 16U2 sostituisce l’8U2.