«

»

Apr 11

Stampa Articolo

Tutorial: Arduino Shield I/O

Tra le shield acquistate da robot-domestici.it c’era anche la I/O che ti permette di gestire  6 input analogici, 6 input digitali e 6 output digitali con relè a 12 volt. Sia gli input digitali sia gli output digitali dispongono anche di un led ciascuno come indicatore di stato.

Arduino shield I/O

Il vanttaggio di utilizzare la scheda I/O è che non devi preoccuparti di gestire componenti elettronici aggiuntivi o complessi sketch.

Per utilizzare un motore nel tuo progetto di un robot o per accendere di strisce di led o per acquisire i segnali esterni, sia analogici sia digitali, tutta l’elettronica che ti occorre è già sulla scheda.

In internet ci sono numerosi shield di esempio per utilizzarla, questo articolo inizia dall’assemblaggio e continua con un primo semplice sketch di test.

L’assemblaggio è molto semplice, occorre il kit della shield, un saldatore standard, dello stagno e un po’ di pratica, non ci sono componenti smd o particolarmente piccoli, ci sono solo molti componenti da assemblare, ti occorrerà qualche ora per eseguire un buon lavoro.

Inizia dall’osservazione della basetta:

Stampato shield I/O

disponi prima i componenti più bassi e piccoli da maneggiare: i diodi

Diodi montati orizzontalmente

passa al montaggio dei diodi verticali:

diodi verticali

quindi ai diodi zener, uno di fianco all’altro:

Diodi zener

A questo punto puoi passare al montaggio delle resistenze orizzontali, anche queste sono componenti piatti e quindi più facili da maneggiare e saldare in questa fase:

Resistenze orizzontali

poi passa al montaggio delle resistenze verticali:

Resistenze verticali

e quindi il momento di passare ai componenti più alti e che possono essere inserit facilemnte anche se non in ordine preciso, io ti consiglio di seguire comunque un ordine per semplificarti il montaggio:

Montare i transistor

monta il condensatore:

Montare un condensatore

e i led rossi e verdi:

Led rossi e verdi

manca poco, monta i relè ed i morsetti a cui collegare i contatti dei sensori per le entrate analogiche e digitali e gli attuatori sulle uscite digitali:

monta i relè e led

In ultimo, anche perchè prima avrebbe complicato il montaggio e infastidito tutta l’operazione, monta i contatti che consentono alla shield di collegarsi ad Arduino:

Pin di connessione ad Arduino

Ricorda che la shield si alimenta attraverso Arduino ricavando i +5v e la massa direttamente dal regolatore montato su Arduino e i 12v dall’alimentazione diretta di Arduino attraverso il pin Vin, questo significa che devi alimentare il tutto con una tensione di +12v per consentire ai relè di funzionare adeguatamente.

Prima di scrivere uno sketch di test è importante sapere che i pin digitali sono stati divisi 6 da utilizzare come INPUT e 6 da utilizzare come OUTPUT, per semplicità di realizzazione della sheda il progettista ha definito che i primi 6 pin digitali di Arduino (2-7) fossero utilizzabili come input e che i pin da 8 a 13 fossero dedicati all’uso come OUTPUT.

Se ti stai chiedendo come mai abbia evitato di utilizzare il pin 0 e 1 di Arduino è perchè tendenzialmente si evita di utilizzare questi pin in quanto riservati alla comunicazione seriale tra Arduino e il suo IDE; quindi a meno che non sia strettamente necessario utilizzarli si preferisce lasciarli liberi o impiegarli per la comunicazione seriale in alcuni shield, come vedrai nei prossimi articoli.

Lo sketch di esempio fa eseguire alla shield I/O:

  1. commuta in seguenza di tutti i relè;
  2. legge in sequenza tutti i segnali digitali;
  3. legge in sequenza tutti i segnali analogici;

Per verificare che la lettura sia corretta prendiamo come riferimento i morsetti non collegati a nulla, proveremo in un prossimo sketch ad eseguire comandi mirati e confrontare i segnali letti prima e dopo una operazione con un pulsante ad esempio.

Ecco lo sketch:

int in=0;
int out=0;
int an=0;

long interval = 1000;           // interval at which to blink (milliseconds)

void setup() {
  Serial.begin(9600);

  for (int in=2; in<=7; in++){
    pinMode(in, INPUT);
  }

  for (int out=8; out<=13; out++){
    pinMode(out, OUTPUT);
  }

  Serial.println("Setup Ok");
}

void loop()
{
  for (int out=8; out<=13; out++){
    digitalWrite(out, HIGH);
    delay(interval);
  }

  delay(interval);    

  for (int out=8; out<=13; out++){
    digitalWrite(out, LOW);
    delay(interval);
  }

  for (int in=2; in<=7; in++){
    Serial.print(in);
    Serial.print(" = ");
    Serial.println( digitalRead(in) );
    delay(interval);
  }

  delay(interval);    

  for (int an=0; an<=5; an++){
    Serial.print(an);
    Serial.print(" = ");
    Serial.println( analogRead(an) );
    delay(interval);
  }

  delay(interval);
}

Buon divertimento.

Permalink link a questo articolo: http://www.mauroalfieri.it/elettronica/tutorial-arduino-shield-io.html

16 comments

1 ping

Vai al modulo dei commenti

  1. Aldo

    Ciao!
    Grande guida (questa e non solo), complimenti.
    Un’unica domanda, probabilmente banale, ma sono alle prime armi. Per il montaggio dei LED rossi e verdi, come faccio a capire il corretto posizionamento per rispettare la polarità?
    Tenendo il circuito con gli ingressi analogici e digitali sul lato destro, mi sembra che:
    1) per i LED Verdi l’anodo vada a destra
    2) per i Led Rossi l’anodo vada in basso

    Se ho detto una “castroneria” chiedo venia, ma come detto, sono alle prime armi.
    Grazie!

    1. Mauro Alfieri

      Ciao Aldo,
      grazie per i complimenti.
      Non hai scritto una castroneria, effettivamente dalla serigrafia sulla scheda è difficile capire il verso dei led.

      Io a suo tempo ho seguito lo schema fornito dal produttore della shield e seguito la pista negativa sul circuito.

      Mauro

  2. federico

    ciao mauro,
    volevo chiederti per sicurezza dove devo collegare sulla scheda il 5v e il gnd di un sensore ds18b20.
    grazie

    1. Mauro Alfieri

      Ciao Federico,
      che tipo di sensore è?
      Qual’è il protocollo di comunicazione utilizzato?
      Hai verificato che il produttore non abbia rilasciato della documentazione in merito ?

      Mauro

  3. Daniel

    Ciao, dovrei fare un lavoro, ovvero comandare un motore con lo shield arduino i/o, potresti aiutarmi dandomi qualche consiglio?
    Sono alle prime armi e mi trovo in difficoltà. Grazie in aniticipo

    1. Mauro Alfieri

      Ciao Daniel,
      scrivi pure cosa non ti è chiaro dell’utilizzo di questa shield dopo averne compreso il funzionamento descritto nello sketch.
      Io cercherò di aiutarti rispondendoti.
      Se il problema non riguarda la scheda ma altre info puoi cercarle nel blog e verificare tra articoli e commenti se abbia già pubblicato qualche esempio che puoi adattare a questa shield per risolvere il tuo problema.

  4. Daniel

    Sono Daniel,non riesco a capire come fare il collegamento tra la shield è il motore.

    1. Mauro Alfieri

      Ciao Daniel,
      questa shield ti permette di controllare un motore tramite relay.
      Dovrai collegare il motore come se usassi degli interruttori per il controllo.

  5. Daniel

    MA è possibile fare marcia o arresto di un MAT con questa shield

    1. Mauro Alfieri

      Ciao Daniel,
      direi di si, dipende anche dal motore che vuoi controllare.

  6. Daniel

    Ciao, sono sempre io, ma devo proteggere Arduino se voglio alimentare un MAT? e se sI, cosa mi consigli?
    Grazie!

    1. Mauro Alfieri

      Ciao Daniel,
      penso tu volessi scrivere Mot ( abbreviativo di motore ), non so cosa sia un MAT ..
      Se usi questa shield devi far attenzione alle sole correnti spurie generate dai motori, se non sai cosa siano ti consiglio la lettura di qualche manuale base di elettronica.

  7. Daniel

    Mat sta per motore asincrono trifase, io so che i relè possono resistere al massimo 0.5 A e 125V mi pare, ma io ho 230 volt e non so cosa fare! Daniel

    1. Mauro Alfieri

      Ciao Daniel,
      devi cambiare modello di scheda o interporre dei relay differenti, anche se con i motori trifase il discorso penso sia più complesso, io non sono un esperto di tali tecnologie.

  8. Daniel

    Quindi posso collegare i relè di arduino a altri relè che lavorano a 230v e poi questi ultimi collegarli al motore?

    1. Mauro Alfieri

      Ciao Daniel,
      in linea teorica puoi mettere in cascata dei relay, come lo fai determina un corretto funzionamento o meno del sistema.
      Evita di far rientrare in arduino qualsiasi tensione superiore ai 5v

  1. Mauro Alfieri » Blog Archive » Tutorial: Shield I/O comandare luci esterne

    […] un precedente articolo dedicato alla shield I/O hai visto come assemblarla passo passo e provato un primo sketch […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>