Tutorial: Relay Shield

Ricorsi la Relay Shield arrivata con l’ultimo ordine? Dopo la presentazione del sensore PIR ho estratto dalla scatola magica la Relay Shield:

Relay Shield

Rispetto all’altra relay shieldla I/O Shield, che ho avuto modo di provare e testare per un po’ di tempo questa presenta alcune differenze:

  1. non è una shield di Input Output ma solo di tipo OUTPUT
  2. ha 4 relay che possono pilotare carichi di 250VAC e fino a 300W di potenza
  3. è di progettazione e fabbricazione Italiana, leggi il datasheet
  4. viene venduta già assemblata e non in kit

Ma la caratteristica principale è dotata di un connettore per moduli XBee in grado di rendere questa scheda ideale in impianti di domotica controllati a distanza mediante il protocollo XBee.

Collegandovi un Arduino Uno, o similare, un modulo Xbee ed alimentando il tutto a 12v hai già pronto una scheda di attuazione a distanza da inserire nel tuo impianto domotico.

Siccome i moduli XBee comunicano con Arduino attraverso i terminali Tx ed Rx presenti sui piedini 0 ed 1 ed anche il caricamento dello sketch avviene sfruttando questi pin è presente sulla relay shield un microinterruttore:

micro interrutttore relay shield

con cui puoi definire quando arduino è in fase di programmazione ( PROG ) e quando è in attività ( RUN ), senza dover rimuovere la relay shield o il modulo XBee dalla scheda per riprogrammare arduino.

In questo primo articolo vedrai come utilizzare questa shield connessa ad Arduino per inviare semplici comandi da 4 pulsanti che accendono 4 led connessi ciascuno in modo indipendente ad uno dei relay della shield.

Lo Schema di collegamento della Relay Shield

Come sempre un’immagine vale più di mille parole:

collegamenti della relay shield

I pulsanti presentano tutti una resistenza di pull-down ( verso GND ) per evitare che il segnale sia ballerino sulle uscite digitali di Arduino.

I led, non mostrati nello schema, sono puoi collegarli a massa atraverso una resistenza da 470ohm e ogni anodo ( positivo del led ) lo colleghi ad un canale della relay shield sull’apposita morsettiera.

I led sono alimentati a 5v, prelevando questa tensione direttamente dal pin +5v di Arduino.

Pin utilizzati dalla Relay Shield

la relay shield non ti permette di decidere su quali pin vuoi che i relay siano connessi, essi sono stabiliti all’origine secondo questo schema:

relay shield

per cui un segnale HIGH al pin 5 di arduino comporterà l’eccitazione del relay OUT-1, pin 6 -> OUT-2, ecc…

Lo sketch di test della Relay Shield

Puoi realizzare tutti gli sketch che vuoi conoscendo i pin riservati alla relay shield, io ti suggerisco questo semplice sketch di test per provare la shield, nei prossimi articoli potrai sperimentare sketch più complessi:

#define out1 5
#define out2 6
#define out3 7
#define out4 8

#define inp1 9
#define inp2 10
#define inp3 11
#define inp4 12

void setup() {

  pinMode( out1,OUTPUT );
  pinMode( out2,OUTPUT );
  pinMode( out3,OUTPUT );
  pinMode( out4,OUTPUT );

  pinMode( inp1,INPUT );
  pinMode( inp2,INPUT );
  pinMode( inp3,INPUT );
  pinMode( inp4,INPUT );

  digitalWrite( out1,LOW );
  digitalWrite( out2,LOW );
  digitalWrite( out3,LOW );
  digitalWrite( out4,LOW );

}

void loop() {

  if ( digitalRead(inp1) == HIGH ) { digitalWrite( out1,HIGH ); } else { digitalWrite( out1,LOW ); }
  if ( digitalRead(inp2) == HIGH ) { digitalWrite( out2,HIGH ); } else { digitalWrite( out2,LOW ); }
  if ( digitalRead(inp3) == HIGH ) { digitalWrite( out3,HIGH ); } else { digitalWrite( out3,LOW ); }
  if ( digitalRead(inp4) == HIGH ) { digitalWrite( out4,HIGH ); } else { digitalWrite( out4,LOW ); }

}

Non ci sono parti difficili, per la maggior parte di tratta di setting dei pin e di livelli HIGH o LOW che devi inviare ai pin corretti per ottenere l’eccitazione del relay corrispondente.

Con le linee 01-04 definisci i pin a cui è collegata la relay shield, sai che sono pin stabiliti, quindi questa parte dello sketch non può cambiare;

linee 06-09: definisci quali soni i pin a cui collegherai i 4 pulsanti come nello schema, nell’esempio ho collegato i pulsanti ai pin 9,10,11 e 12;

linee 13-21: imposti mediante il comando pinMode() la modalità in cui ciascun pin deve funzionare, i pin definiti alle linee 01-04 saranno di tipo OUTPUT quelli definiti alle linee 06-09 saranno di tipo INPUT;

linee 23-26: utilizza il comando digitalWrite( pin,valore ) per impostare tutti i pin di OUTPUT in stato LOW ossia non eccitato;

linea 32: verifica che il pin relativo al primo pulsante sia stato premuto, il suo valore letto mediante il comando digitalRead( pin ) diventerà HIGH e la condizione di IF è verificata portando la relativa uscita a livello alto ed eccitando il relay. In caso di segnale LOW entri nella condizione di else e quidi disecciti il relay.

Le linee 33,34 e 35 sono identiche alla 32 con la sola eccezione dei pin di INPUT e OUTPUT.

Il funzionamento ti sarà già chiaro: ogni volta che premi un pulsante si eccita il relay corrispondente ed ogni volta che lo rilasci ritorna in condizione normale.

Buona sperimentazione !!!

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/tutorial-relay-shield.html

40 pings

Skip to comment form

  1. […] 4 settori, ciascuno dotato di irrigatori ed elettrovalvole a 12v, ho deciso quindi di utilizzare la relay shield presentata in questo […]

  2. […] la keypad LCD è incompatibile con la Relay Shield scelta in precedenza per il progetto in quanto la utilizzano entrambe i pin 5,6,7,8 per controlli […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.