Archivi categoria: Arduino

Arduino per tutti stagione 2 Back to the basics puntata 1

Benvenuti.
Prima puntata fuori serie che approfondisce la nostra conoscenza della scheda Arduino e dei suoi componenti.
Sono infatti arrivate molte richieste sulla natura e la struttura del nostro micro controllore preferito, così iniziamo con questa puntata fuori serie una breve panoramica sulla struttura di Arduino, partendo dai numerosi collegamenti a disposizione.
Lo schema dei collegamenti di Arduino è il seguente:

Lo schema dei collegamenti della scheda Arduino
Lo schema dei collegamenti della scheda Arduino

Ovvero…
1. Connettore USB
Ha un duplice scopo, infatti, si usa per alimentare la scheda utilizzando i cinque volt presenti nelle porte USB, ma si può utilizzare anche per scambiare dati con Arduino (funzione molto utile per capire cosa accade a bordo).

2. Alimentazione
Su un angolo del circuito stampato trovate un piccolo barilotto di colore nero. Vi potete inserire un jack da cinque millimetri (con diametro interno da 2,1 mm) per alimentare la scheda. La tensione fornita sarà poi livellata a cinque volt da un regolatore di voltaggio. Molte persone collegano una batteria da nove volt con una clip fornita di jack, per alimentare Arduino quando non c’è un computer nelle vicinanze.

3. GND
GND significa Ground, cioè «terra» o «massa». È il polo negativo di alimentazione, anche chiamato il «comune» o «zero volt». Tra gli header di Arduino avete a disposizione ben tre posizioni in cui infilare delle connessioni a massa.

Arduino Uno
Arduino Uno

4. 5V
Questo pin fornisce la tensione a cinque volt regolata e stabilizzata da Arduino. Lo stabilizzatore interno può fornire fino a circa un ampere di corrente.

5. 3.3V
Molti chip e sensori moderni si alimentano a 3,3 volt, una tensione inferiore rispetto ai cinque volt, che produce meno calore. Non tutti hanno nel cassetto dei propri componenti un regolatore a 3.3 volt, ecco perché ne trovate uno su Arduino.

La scheda Arduino con i connettori bene in vista
La scheda Arduino con i connettori bene in vista

6. Vin
Questo pin è collegato direttamente all’ingresso di alimentazione e si può utilizzare per prelevare una tensione di alimentazione più elevata necessaria per far funzionare componenti collegati ad Arduino. Potreste avere dei motori che funzionano a dodici volt: per utilizzarli, alimenterete Arduino a dodici volt attraverso la presa di alimentazione e porterete la tensione di dodici volt ai motori, prelevandola dal pin Vin.

7. AREF
Arduino può leggere delle tensioni analogiche comprese tra zero e cinque volt che trasformerà poi in un numero tra zero e 1024. Il passo minimo, cioè la precisione della misura sarà pari a cinque volt diviso per 1024, cioè 4,88 millivolt. Arduino usa sempre una tensione di riferimento interna, prelevata dalla tensione di alimentazione che potrebbe non essere molto precisa e che dovrebbe valere cinque volt (ma potreste trovare 4,8 volt). Se volete misurare qualcosa con grande precisione, potreste usare una tensione di riferimento molto stabile e precisa che applicherete su AREF. Se la massima tensione analogica che volete leggere arriva a tre volt, potreste ottenere una maggiore precisione se, su AREF, applicaste tre volt. In questo modo il passo minimo sarà di tre volt diviso per 1024, e cioè di 2,93 millivolt. La tensione applicata a AREF non deve mai essere superiore a cinque volt, altrimenti si rischierebbe di danneggiare Arduino.

8. RESET
La scheda è dotata di un tasto per eseguire il reset. Se lo premerete, l’esecuzione del programma si fermerà e tutto ripartirà da capo, come se la Arduino fosse stato appena acceso. Potete collegare un pulsante esterno per pilotare il RESET.

9. PIN 0-13
Arduino ha quattordici pin che possono essere configurati per funzionare da ingressi o uscite. La configurazione si fa nel software. Arduino è un dispositivo digitale, quindi i pin possono generare o leggere un valore alto o basso, e quindi pari a zero o cinque volt. Un pin digitale configurato come uscita non potrà mai fornire, per esempio, un valore di 2,5 volt, ma unicamente zero o cinque volt. Alcuni pin riportano accanto al numero identificativo una piccola «serpentina» chiamata «tilde» (~): questi pin possono generare un segnale particolare molto utile per pilotare motori elettrici o per regolare a piacere l’intensità luminosa di un LED. Questo segnale elettrico speciale è chiamato pulse width modulation (PWM) e lo descriveremo più avanti. I pin in grado di fornire un segnale PWM sono: 3, 5, 6, 9, 10, 11.
I pin 0 e 1 sono contrassegnati anche con TX0 e RX0 e sono collegati alla porta seriale del chip: possono essere utilizzati per collegare Arduino a qualsiasi altro dispositivo che disponga di una porta seriale.

10. A0-A5
Arduino ha sei pin in grado di leggere livelli analogici e di convertirli in un numero che si potrà utilizzare all’interno degli sketch. Questi particolari ingressi sono posti a parte e contrassegnati dalle sigle: A0, A1, A2, A3, A4, A5.

11. ICSP
Vicino alla piccola scritta ICSP trovate sei piedini che si possono utilizzare per comunicare con l’ATMega328. I piedini costituiscono un’interfaccia seriale usata da periferiche e altri microcontrollori. I pin ICSP si possono usare per programmare direttamente Arduino (usando una speciale «pennetta»). Il sistema di comunicazione si chiama SPI, cioè Serial Peripheral Interface, e prevede un circuito principale che conduce la comunicazione (master) e uno o più periferiche (slave). Due dei sei pin sono utilizzati per l’alimentazione (cinque e zero volt), una linea serve per selezionare la periferica con cui comunicare e gli altri tre fili sono:
• MISO (Master In Slave Out) – per inviare dati al master,
• MOSI (Master Out Slave In) – su cui passano i dati per lo slave,
• SCK (Serial Clock) – il segnale di sincronizzazione (clock) per la comunicazione.
In modo non troppo intuitivo, per comunicare con uno slave, si deve mettere il suo piedino a livello basso (zero volt o GND).

12. ICSP2
Un secondo set di pin SPI è posto invece accanto al chip che viene usato per la gestione dell’interfaccia USB. Il chip è un piccolo microcontrollore e anche a lui serve un programma per pilotare la porta USB. Il programma di controllo è stato caricato utilizzando questi sei pin etichettati con “ICSP2”.

Bene, per questa puntata fuori serie è proprio tutto.
Alla prossima, gente…

Arduino per tutti stagione 2 puntata 2: il semaforo no…

Benvenuti nella seconda stagione della nostra rubrica Arduino per tutti.
Questa volta proveremo a portare un po’ in là quanto è stato fatto la volta scorsa.
Ma cosa succederebbe se, invece di un led, occorresse controllarne 8?
Utilizzare otto grandi LED rossi con un solo Arduino UNO senza dover rinunciare a 8 perno di uscita!

Continua la lettura di Arduino per tutti stagione 2 puntata 2: il semaforo no…

Arduino per tutti stagione 2 puntata 1: Un pulsante è per sempre…

Benvenuti nella seconda stagione della nostra rubrica Arduino per tutti.
In questa prima puntata, si vedrà come utilizzare un pulsante per accendere e/o spegnere un led.
Ecco, in breve, cosa serve per questo “esperimento”.

La lista della spesa, ovvero i componenti necessari

a) N. 1 Elegoo UNO R3
b) N. 1 Breadboard
c) N. 1 LED 5mm color rosso
d) N. 1 resistore da 220 ohm
e) N. 2 Interruttori a pulsante
f) N. 6 fili maschio-maschio

Continua la lettura di Arduino per tutti stagione 2 puntata 1: Un pulsante è per sempre…

Arduino per tutti parte decima: Fritzing, e la progettazione è fatta (graficamente, almeno)

benritorvati su questo blog.
La settimana scorsa abbiamo visto l’editor online per Arduino Arduino web editor realizzato dalla stessa fondazione che ha creato la scheda.
Oggi, invece, vedremo un editor gratuito per Arduino più tradizionale (solo desktop), ma dalle brillanti capacità: Fritzing.

Continua la lettura di Arduino per tutti parte decima: Fritzing, e la progettazione è fatta (graficamente, almeno)

Arduino per tutti parte nona: Arduino web editor parte prima

Bentrovati, e scusateci per il ritardo nella pubblicazione di questo post, che, eccezionalmente, esce di giovedì.
Questa volta, invece di analizzare un progetto per la nostra scheda Arduino, analizzeremo un’innovazione alla programmazione per schede Arduino compatibili, ovvero il web editor realizzato dalla stessa piattaforma Arduino: Arduino Web Editor.

Continua la lettura di Arduino per tutti parte nona: Arduino web editor parte prima

Arduino per tutti parte sesta: il semaforo è servito parte seconda (un led è meglio di tre)

Ed eccoci di nuovo qui, con la nostra puntata sull’uso di Arduino.
La volta precedente abbiamo visto come collegare alla nostra scheda Arduino un led e accenderlo. Ma il nostro obiettivo è costruire un prototipo di semaforo e collegare alla scheda di prototipazione tre led colorati, sebbene apparentemente semplice, rende più complessa la programmazione dei led.

Continua la lettura di Arduino per tutti parte sesta: il semaforo è servito parte seconda (un led è meglio di tre)

Arduino per tutti parte quinta: il semaforo è servito parte prima (un led è sempre un led)

Benritrovati.
Nella scorsa puntata, abbiamo visto come fare lampeggiare il led montato sulla scheda Arduino ed imparato come iniziare a scrivere un programma di base. Bene, tutto questo adesso non ci serve, perché il nostro progetto comincia dalle basi, ovvero l’accensione di un led rosso.

Continua la lettura di Arduino per tutti parte quinta: il semaforo è servito parte prima (un led è sempre un led)

Arduino per tutti parte quarta: si inizia a programmare (finalmente!)

Benritrovati nella rubrica Arduino per tutti che ritorna dopo una parentesi sul Raspberry. D’ora in poi, le due rubriche si alterneranno in modo abbastanza prevedibile al ritmo di un post a settimana (si spera…).
Finalmente, dopo la presentazione della scheda, l’installazione e la configurazione dell’IDE di Arduino, possiamo iniziare a programmare la nostra scheda di prototipazione.
Come inizia qualsiasi libri di programmazione che si rispetti? Ma con l’esempio base: l’”hello world” che tutti abbiamo imparato a conoscere (e temere).
In questo, Arduino e le schede consimili sono differenti, perché, ovviamente, non esiste “hello world”, nel senso che non è compito di una scheda di prototipazione produrre testi su un video. E allora?
L’equivalente nel mondo Arduino del programma hello world è Blink, ovvero l’accensione e lo spegnimento controllati del led della scheda stessa.

Prima di iniziare, diamo un’occhiata alla schermata dell’IDE che abbiamo già visto nella puntata precedente. Appena avviato, l’IDE apre in automatico un nuovo sketch. Appena aperto, lo sketch contiene sostanzialmente pochi elementi.

void setup() {
// put your setup code here, to run once:

}

void loop() {
// put your main code here, to run repeatedly:

}

Analizziamoli con calma.
Innanzitutto la dichiarazione “void” seguita da un identificativo (ad esempio setup()), è il nome con cui il linguaggio di programmazione “chiama” le variabili, cioè quegli elementi cui è possibile dare un valore di tipo statico (dato una volta e per sempre) o dinamico (il valore può essere assegnato durante l’esecuzione del codice). Qui ne troviamo due:
setup e loop.
La prima individua le operazioni che devono essere compiute una volta all’avvio del programma, l’altra quelle che devono essere compiute più volte in corso d’opera e più volte.
Il testo inserito dopo // invece è il commento del programmatore. Come si può vedere, ogni variabile ha un suo contenuto che deve essere appunto “contenuto” all’interno di due parentesi graffe {}.
Tutto qui. Come si vede, ci vuole poco.
E ora al nostro blink.
Molte schede Arduino contengono già preinstallato nel bootloader il blink. Tuttavia, sia nel caso non ci sia, sia nel cado ci sia, è bene osservare come sia possibile modificare la temporizzazione della scheda di prototipazione.
Innanzitutto, facciamo in modo che, all’avvio, la scheda si resetti e consenta di attivare il led (LED_BUILTIN, cioè il led preinstallato) e modificarne il comportamento (chiamando il comando OUTPUT). Inseriamo quindi nella void setup() il seguente codice:
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}

Ora, inizializzato il led, occorre stabilire la variabile loop().
Attiviamo il temporizzazione digitale passandogli, fra parentesi tonda, l’indicatore a cui collegare la temporizzazione e il comando da eseguire, avendo cura di chiudere la parentesi tonda e l’intera stringa con il punto e virgola (;). Ecco il codice relativo:
digitalWrite(LED_BUILTIN, HIGH);
HIGH si riferisce al voltaggio, indica che la corrente viene trasmessa al led che si accende. Similmente, per spegnere il led basterà sostituire, nell’istruzione più sopra, HIGH con LOW e il led, come per magia, si spegnerà. Ora, però, a noi serve fare in modo che il led lampeggi (to blink in inglese) non che si accenda e si spenga immediatamente.
Occorre quindi inserire la stringa che controlla la temporizzazione. Il comando per temporizzare un’azione del componente è delay(). Nella parentesi inseriamo il ritardo dell’operazione, in millisecondi (cioè, se vogliamo ritardare l’operazione di 1 secondo, occorre inserire nella parentesi 1000 e così via).
Dunque il nostro codice per il lampeggiare del led è:
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}

Ora il nostro sketch è pronto per l’uso, dobbiamo caricarlo sulla scheda perché si attivi all’avvio.
Fra le scelte rapide, premiamo il primo pulsante e verifichiamo che il nostro sketch funzioni (non si sa mai).
Ora bisogna inviare lo sketch sulla Arduino. Premiamo il pulsante “Carica” (il secondo da sinistra) e l’IDE procederà ad installare lo sketch sulla scheda. Ecco fatto, abbiamo finito.
Alla prossima…