DUE ARDUINO COLLEGATI IN LAN
In questa pagina spiego come collegare tra di loro, in rete
locale, due Arduino dotati di shiel Ethernet, questo tipo di comunicazione non
e' ne peggiore ne migliore, in senso assoluto, delle tante altre possibili
(I^2Cbus, RS323, RS485...) ma e' solo un altro modo per far comunicare delle
periferiche usando il protocollo Ethernet. In questo contesto, data la
singolarita' del collegamento, ho chiamato gli Arduino con nomi inerenti alla
loro funzione e cioe' Master e Slave, il primo spedisce dei dati ed il secondo
li riceve e agisce di conseguenza, tutto qui.
In particolare il Master spedisce un carattere numerico (1, 2, 3...) che viene
incrementato ad ogni pressione di un tasto collegato al suo pin 2, lo
slave, una volta connesso, legge il carattere numerico ricevuto e con
questo cambia stato del pin corrispondente della porta A ed illumina il
led collegato ad esso.
Il programma e' assolutamente semplice e serve solo a dimostrare il meccanismo
di questo collegamento.
Ma veniamo alla descrizione particolareggiata del programma partendo da quello
del Master.
Come sempre consiglio di abilitare la visualizzazione del numero delle
righe nell'IDE di Arduino perche' faro' riferimento ad esse per la spiegazione.
Nella riga 3 c'e' la dichiarazione della stringa MAC, nella riga 4 quella
relativa all'indirizzo IP locale entrambi le due dichiarazioni sono relative
alla scheda Master, per ultima, nella riga 5, troviamo la dichiarazione
dell'indirizzo IP della scheda Slave.
Dalla riga 6 alla riga 13 troviamo queste istruzioni:
Le prime due sono delle semplici dichiarazioni di variabili, in void setup()
alla riga 10 c'e' l'istruzione per l'inizializzazione di Ethernet, alla
riga 10 c'e' quella per un ritardo di 1 sec occorrente all'hardware della
scheda Ethernet shield per inizializzarsi, alla riga 12 la messa in input del
pin 2 con pullup (dove sara' collegato un tasto attivo basso).
Dalla riga 14 alla riga 28 troviamo le seguenti istruzioni:
L'istruzione alla riga 16 controlla se il tasto collegato al pin 2 e' premuto
(livello basso), se non è stato premuto (livello alto grazie al pullup interno)
il programma ritorna ad void loop() senza eseguire alcuna operazione.
Nel caso che il tasto sia stato premuto la if esegue il suo corpo,
tralasciando per il momento le due istruzioni alla riga 18 e 19 (si suppone che
abbiamo appena acceso Arduino e la variabile "i" è a 1)
arriviamo all'istruzione alla riga 20 dove la if esegue il suo corpo solo
se lo slave è connesso, (con l'istruzione client.connect(server, 80) si attiva
la connessione tra il Master e lo Slave).
Una volta connesso il Master invia il carattere numerico contenuto nella
variabile "i" e successivamente lo incrementa. Alla riga 24 viene
interrotto il collegamento tra Master e Slave, alla riga 25 la for serve,
assieme al delay, a creare una sorta di antirimbalzo per il tasto,
infatti quando il tasto è premuto il pin 2 va basso e la for ripete se stessa
fino a quando il tasto viene rilasciato.
La variabile i viene incrementata fino al valore 9, dopo di che tramite la if
alla riga 18 viene azzerata..
Vediamo ora il programma dello slave.
Nella riga 3 c'e' la dichiarazione della stringa MAC , nella riga 4
quella relativa all'indirizzo IP locale entrambi le due dichiarazioni sono
relative alla scheda Slave, per ultima, nella riga 5, troviamo la
dichiarazione del server porta 80.
Alla riga 8 l'inizializzazione di Ethernet, alla riga 9 avverte il Master che
lo Slave si mette in ascolto, alla riga 10 imposta come uscita la porta
A, poi c'e' il solito ritardo.
Alla riga 15 il programma carica nella variabile client lo stato ritornato
dalla funzione server.available(), se è 1 (ovvero il Master e'
disponibile) la if alla riga 16 esegue il suo corpo se no il programma
non esegue alcuna operazione e torna, tramite void loop(), a controllare se il
master e' disponibile.
Alla riga 18 il while ripete il suo corpo fino fintanto che il Master e'
connesso, alla riga 20 la if esegue il suo corpo se un dato è pronto per essere
letto, nella riga 22 viene letto il dato.
Dalla riga 23 alla 43 la switch, in base al carattere letto, illumina il led
corrispondente. Alla riga 47 si interrompe il collegamento tra Master e Slave
e quest'ultimo torna ad ascoltare
Tenete conto che per il funzionamento del sistema non c'è bisogno del computer,
basta il router.
File
sorgente
Fabio